![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Хочу написать игру лоде-рунер(с редактором карт)на движке DelphiX [Delphi, delphiX, Windows]
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 в норме?(