Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Хочу написать игру лоде-рунер(с редактором карт)на движке DelphiX [Delphi, delphiX, Windows]


Страницы:   1 2 3 4 5 6 7

Jus ©   (2004-09-21 06:10:00) 

Я вот хочу написать игру лоде-рунер (с редактором карт) на движке DelphiX.
Разрешение 800х600

Там каждый спрайт 32х32.

Карта 800х512, т.е. максимальное кол-во спрайтов на карте 400шт.

Я в Form1.Create вывожу эти спрайты по массиву.
(пример без массива):

procedure TForm1.FormCreate(Sender: TObject);
begin
TLestnica.Create(SE.Engine); // лестница
...и т д
end;

и FPSпадает до 0:((

в DXTimere у меня

procedure TForm1.DXTimerTimer(Sender: TObject; LagCount: Integer);
begin
IF not DXDraw.CanDraw Then exit;
DXDraw.Surface.Fill(0);
DXSpriteEngine.Move(1000 div 60);
DXSpriteEngine.Dead;
DXSpriteEngine.Draw;
With DXDraw.Surface.Canvas Do
   Begin
     Brush.Style := bsClear;
     Font.Color := clWhite;
     Font.Size := 8;
     Textout(10, 10, 'FPS: ' + inttostr(DXTimer.FrameRate));
     Release;
   end;
DXDraw.Flip;
end;


1)Может для некоторых объектов которые нужно один раз вывести на экран отдельный DXSpriteEngine сделать, например
DXSpriteEngine 2,  и не выводить в таймер DXSpriteEngine 2.Draw, а вывести при создании формы после создания всех объектов которые нужно вывести 1 раз?или так неполучится?:(

2)Или как оно делается правильно, ведь кроме лестниц и других объектов будут ещё и всякие монстры, которых надо "отображать" в таймере и FPS упадёт снова?

3)Как повысить FPS?!


NikeOLD   (2004-09-21 09:58:00) [121]


> Jus   (21.09.04 07:41) [3]

Дело не в названии, а в идее. Запатентовано было и название и идея. :(


cyborg   (2004-09-21 09:56:00) [122]

Исходников танчиков не будет ;).
Сейчас могу только скриншот показать
http://www.cyborghome.ru/images/screenshot/Thanchiki2/Thanchiki2.jpg
Рисунок 175 килобайт


Jus   (2004-09-21 09:56:00) [123]

щас скачаю на дискету твои длл и экземпли и возьму на работу, там поразбираться будет думаю время, сегодня с 20:00 на работу. Часовой пояс у меня как в Екатерибкрге +5:00.А сейчас спать:)


Jus   (2004-09-21 09:43:00) [124]


> Танчики я уже убрал.

Жаль

Можешь положить?+ исходники (чисто для обучающего примера) или на мыло,плиз!


Jus   (2004-09-21 09:40:00) [125]

никакие таймеры в игре не нужны, это раз

А как будет делатся анимация, через фор чтоли)?


> И главное, начни сначала с простого, за написание игры сразу
> не берись. Для начала можно сделать просто вывод карты на
> экран.

Я попробую разобраться в твоём движке, но досадно DelphiX забросить.

Игра то по идее в голове готова, но единственная проблема, которую я в этой ветке расписал. В игре я всё продумал, чё да как, и анимацию прикольную и объекты интересные( всего 42 различных объекта) продумал весь код до мелочи, но произошла загвозтка такая в этом.

Cyborg:
Еслиб ты мне помог в...

> > Обновлять только те места, где картинка изменялась,
>
> 1)т.е. как? экран же полностью обновляется по таймеру!?
> Было б конечно хорошо если б знать как!:)

я был бы рад, а потом бы может быть перешёл бы на твой движок и не возвращался бы к делфиХ, ведь цель так близка, неохота перестраиватся перед "финешем", помогите!

Благодарю)


cyborg   (2004-09-21 09:28:00) [126]

Танчики я уже убрал.


cyborg   (2004-09-21 09:27:00) [127]

Моё мнение такое (может же у меня быть своё мнение :), никакие таймеры в игре не нужны, это раз. Два - дельфикс можно использовать только для просмотра примеров, ну не удобен он, не понравился мне, я даже честно два раза примеры смотрел :).
Я тебе говорил, попробуй мою библиотеку, гораздо легче и удобнее Дельфикса ;). За основу можешь взять пример "Мухи", в игровой сцене очисти код, и пиши свой. Можно даже меня спрашивать, чего там непонятно будет ;).
И главное, начни сначала с простого, за написание игры сразу не берись. Для начала можно сделать просто вывод карты на экран.


Jus   (2004-09-21 09:26:00) [128]

Примерно представляю, но помогите кодом где все спрайты рисуются в один большой?

> В танчиках я так сделал, работает быстро, как вы убедились
> в той ветке. Если прямо перерисовывать всю карту, будет
> слишком медленно, в танчиках это 900 клеток земли нужно
> было бы рисовать каждый кадр, плюс ещё лес сверху.

кстати, я твои танчики не увидел, страница не может открытся.(Ошика 404). Но я еще раз попробую, там есть исходники?


Jus   (2004-09-21 09:21:00) [129]


> Обновлять только те места, где картинка изменялась,

А где надо прописывать те места которые надо обновлять и вообще чё тогда в тимере написать?


Jus   (2004-09-21 09:11:00) [130]

Ах да, я наверное не прав на счёт последего, ну тогда и на счёт "большой поверности..." если можно по подробнее...


Jus   (2004-09-21 09:10:00) [131]


> Обновлять только те места, где картинка изменялась,

1)т.е. как? экран же полностью обновляется по таймеру!? Было б конечно хорошо если б знать как!:)


> либо создать одну большую поверхность, куда нарисовать уровень,
> и при изменении какого-то участка, перерисовать только этот
> участок. А на экран выводить эту большую поверхность.


Ведь дело в том, что не в самих изображениях спрайтов дело, а в объектах. Когда их много, то начинает "тормозить". Ведь если не выводить объекты "по отдельности"(а иначе никак), то как ИГРОК будет взаимодействовать с ними. Если я чёто не понял, объясните по подробнее.


Jus   (2004-09-21 08:56:00) [132]


> OSG   (21.09.04 08:27) [7]
> А ты используй не DelphiX, а PowerDraw3 ( http://turbo.gamedev.net)
> или Omega ( http://www.delphisanctuary.com). Они получше
> будут

PowerDraw3 я скачал давно, но не могу инфу достать по ней.


OSG   (2004-09-21 08:27:00) [133]

А ты используй не DelphiX, а PowerDraw3 ( http://turbo.gamedev.net) или Omega ( http://www.delphisanctuary.com). Они получше будут


cyborg   (2004-09-21 08:25:00) [134]

Тыт надо хитро делать, два варианта:
Обновлять только те места, где картинка изменялась, либо создать одну большую поверхность, куда нарисовать уровень, и при изменении какого-то участка, перерисовать только этот участок. А на экран выводить эту большую поверхность. В танчиках я так сделал, работает быстро, как вы убедились в той ветке. Если прямо перерисовывать всю карту, будет слишком медленно, в танчиках это 900 клеток земли нужно было бы рисовать каждый кадр, плюс ещё лес сверху.


Jus   (2004-09-21 08:02:00) [135]

Щас проверил. На экране 400 объектов. FPS=1;

На моей машине
Pentium4C/2600, 512Ram, geForce4 128mb.


Jus   (2004-09-21 07:44:00) [136]


> А методы спрайта DoMove ты перегрузил? И не забудь про inherited.

что значит перегрузка в методах DoMove? там ничего особенного.
про inherited не забыл


Jus   (2004-09-21 07:41:00) [137]


> Кстати, когда соберешся продавать свое творение не забудь
> про авторские отчисления владельцам зарегистрированной марки
> Lode-Runner, если патент уже не закончился. :) Это будет
> дорого.
:)
Я назову Lode-Runer по другому


NikeOLD   (2004-09-21 07:22:00) [138]

А методы спрайта DoMove ты перегрузил? И не забудь про inherited.

Кстати, когда соберешся продавать свое творение не забудь про авторские отчисления владельцам зарегистрированной марки Lode-Runner, если патент уже не закончился. :) Это будет дорого.


Jus   (2004-09-21 06:14:00) [139]

"Отображаться"(DXSpriteEngine.Draw;) должны в таймере все объекты постоянно, на сколько я знаю, но как сделать чтоб и объекты были все и FPS в норме?(


Страницы:   1 2 3 4 5 6 7

Наверх

Титульная страница Поиск, карта сайта Написать письмо