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

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

Прошу потестировать cyborgengine2d


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

cyborg ©   (2004-09-11 09:35:00) 

Прошу потестировать на скорость спрайтовый движок cyborgengine2d.dll.
Особенно интересует скорость на старых компьютерах и на плохих видеокарточках (встроенные или старые с 1-4 мегабайтами видеопамяти) с целью узнать минимальные системные требования.

Прошу над графикой не смеяться, она в паинте нарисована :). Игра Танчики.

http://www.cyborghome.ru/download/temp/thanchiki2.rar
230 килобайт.

Требования DirectX7 и выше, виндовс любая 32 битовая, интересно на вин 95 потестить, не знаю заработает ли.

Для максимального FPS запустите noWait.batили саму программу с любым параметром.

В меню нажать Enter для процеса игры. Escape - выход в меню или из программы.

В игре левая кнопка мышки - генерировать карту, правая - взорвать танки противника.

У меня в меню около 1000 FPS, в игре около 600 FPS.
CPU Duron 800, PC133 384Mb., GF FX5200 128 Mb. AGP4x, DirectX9, WinXP
Прошу написать подобные характеристики!


NikeOLD   (2004-09-16 17:09:00) [21]

Но AV по Alt+F4 это факт.
Устраняй!


cyborg   (2004-09-16 14:40:00) [22]


> [52] Micah'GF ©   (16.09.04 14:33)

Действительно ненормально :), на такой тачке 30 секунд запускаться, подозрения у меня, что ты там чего-то намутил :).


cyborg   (2004-09-16 14:37:00) [23]

Нарисовал полноценный пример, игра "Мухи", типа той, что на денди была, пуляешь там летающие объекты. В примере: создание и обработка сцен "Меню", "О программе" и "Игра"; анимация объектов и динамическая работа с ними - противник, пули, взрывы. Выстрелы противника делать не стал, лень, хватит выстрелов игрока, противнику также делать, как и игроку, там даже функцию создания пульки противника сделал.

Плюс в библиотеке добавил функции получения контекста устройства поверхности и получение доступа к пикселям поверхности, не проверял как работает, но должно работать, по идее :)

ftp://cyborghome.ru/CyborgEngine2D/CyborgEngine2D.zip
166 килобайт

Для компиляции примеров нужно скопировать файлы: CyborgEngineHeader.pas и cyborgengine2d.dll в папку с примером. Для работы вашей программы нужно помещать в папку программы файл cyborgengine2d.dll.

В архиве есть скомпилированный пример "Мухи" на Дельфи и на Фрипаскале, почувствуйте разницу ;), кроме размера ничем не отличается. Люди переходите на Фрипаскаль! :)


Micah'GF   (2004-09-16 14:33:00) [24]

- запускалась она у меня несколько длительно ~30сек. Думаю это не нормально.
- сделай чтобы клавиши обрабатывались исключительно. Т.е. в винде у меня назначено несколько комбинаций клавиш, связанных с Ctrl и стрелками, и при нажатии комбинации в игре все просто встает. При попытке переключиться в другую задачу или закрыть по Alt-F4 выдает "Приложение выполнило недопустимую операцию".
- поиграть так и не удалось.

WinXP, p4-2.4, 512, GF4-Ti4200


Darthman   (2004-09-15 12:21:00) [25]

>>Header-ом обойдёшься :)
Тоже стыдно за свои каляки-маляки? Потому и прячешь, угадал? :)))))

Если по существу:
Помимо функции заменяющей три обычные - можно же сделать дополнительно функции и классы позволяющие быстро все сделать, может быть и с большими ограничениями. Иногда это удобнее.


cyborg   (2004-09-15 11:25:00) [26]

http://robowarz.cyborghome.ru/


MANGOL   (2004-09-15 11:20:00) [27]

а шо за RoboWarz?


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


> [47] Magikan ©   (15.09.04 10:19)

Header-ом обойдёшься :)
Нужны исходники - собирай: статьи на моём сайте+исходники RoboWarz+фантазия ;)


Magikan   (2004-09-15 10:19:00) [29]

Даешь исходники в массы!!!


cyborg   (2004-09-15 09:12:00) [30]


> [43] cyborg ©   (15.09.04 08:52)
> На вывод спрайта влияют поля: X,Y,W,H и SrcRect

Забыл UseScreenOfset ещё в этот список добавить


cyborg   (2004-09-15 09:05:00) [31]


> [44] cyborg ©   (15.09.04 09:02)

Только пока с этим глюки имеются, если спрайт за границу экрана уходит, то размеры меняются :). На данный момент так можно фон на весь экран растягивать.


cyborg   (2004-09-15 09:02:00) [32]

Кстати, картинки можно растягивать, в третьем примере замените:


 //Спрайт мышиного курсора:
 SpriteMouse :=CreateSpr(0,0,100,100, SurfaceMouse , nil, 0, false, lDown, false);
 SpriteMouse^.W:=200;
 SpriteMouse^.H:=200;


и

 //Отобразить спрайт мышки:
  ShowSprite(SpriteMouse, nil);


cyborg   (2004-09-15 08:52:00) [33]


>  [41] Колбасьев ©   (14.09.04 20:41)
> 1. Лучше сделать какой-то универсальный формат хранения спрайтов

Чем BMP не универсальный формат спрайта? Лбой редактор поддерживает этот формат.

По пункту 2 не правильная у тебя мысль, массивы зачем-то прилепить, видимо у тея никогда небыло задачи работать с множеством разных объектов и обрабатывать их. Это не сишные замашки - работать с данными, это рутинная работа программиста на любом языке ;). Если ты этого никогда не использовал, то попробуй поработать так, тебе понравится :).


> 3. ... так как все приходиться делать самому, даже утомительные
> рутинные операции.


Если ты возьмёшся за игру, с движком, у которого всё фиксировано - конкретный формат не дающий тебе ничего лишнего сделать, то через месяц-другой ты начнёшь плеваться, что не можешь сделать того-то и того-то, потому, что у тебя нет возможности использовать объект так, как тебе хочется. У меня же сделано так, что с объектом ты можешь делать всё, что тебе угодно. Единственные поля, которые нельзя трогать (изменять значения) в PSprite это Pred, Next, Chain, DataSize и Data, остальное рули как хочешь. На вывод спрайта влияют поля: X,Y,W,H и SrcRect остальные поля под твоё усмотрение, как хочешь их, так и используй.


Kind   (2004-09-14 21:47:00) [34]

ATHLON 600; RAM 384; TNT2 16MB
На WIN98 и ХР FPS в меню 550 в игре 427
На WIN2000 FPS равен refresh rate монитора

95 недавно удалил, а в 3.11 пробовать не стал :)


Колбасьев   (2004-09-14 20:41:00) [35]


> > [28] Servelat ©   (13.09.04 18:00)
> Почти всё, что ты написал, там есть :)
> И тайлы и анимации, только это нужно делать ВАМ!
> Если бы я сделал всё в движке, то о движке как таковом небыло
> бы и речи, я ведь не знаю какой формат хранения спрайтов
> вам понадобится и как кадры будут в нём расположены, как
> у меня - кадры горизонтально и направления вертикально (танк
> например так в игре сделан) или как-то по другому.


Хочу заметить, что DirectX например поддерживает .X файлы (думаю известный факт) - которые являются более-менее сбалансированными в плане объем-скорость_загрузки-функциональность. Для подавляющего большинства задач этого хватает. А написанные "свои" форматы часто являются дописками к .X.

Но DX - это даже не движок в данном понимании этого слова. Движки пишуться над ним.

Поэтому пару советов, уважаемый cyborg:
1. Лучше сделать какой-то универсальный формат хранения спрайтов + поставлять функции (и программу) для преобразования из BMP, например, в него. Остальные функции библиотеки будут с ним работать.

2. Добавить дополнительное "место" в спрайт для хранения разной информации - очень хорошо придумано. Но правильней этого бы не делать, так как для организации объектов игры можно использовать список(массив)-запись (создаваемую программистом игры), где один из полей - спрайт. Тогда работ по указателю будет меньше, как и приобразований типов, что возможно на Си выглядит и неплохо, но в Delphi - уродует код (с моей точки зрения - я всегда стораюсь написать элегантней и поменьше).

3. Вот все это и будет движок. А так больше похоже на оболочки для функций API DX сгруппированные по 2 по 3. Несильно помогает, так как все приходиться делать самому, даже утомительные рутинные операции.

Желаю успехов в совершенствовании. Хочется видеть в этом более "мощьный" продукт.


Magikan   (2004-09-14 10:50:00) [36]

Что-то до боли знакомая ситуация с обработчиками событий...
Верное решение. Одобряю ;)


cyborg   (2004-09-14 09:39:00) [37]


>  [38] NikeOLD ©   (14.09.04 09:33)

Ты неправильно понял, мухи отдельно, котлеты отдельно.


NikeOLD   (2004-09-14 09:33:00) [38]


> cyborg ©   (14.09.04 09:20) [36]

Я движок не смотрел, некогда, но вопрос, у тебя как, я понял, каждый спрайт на своей поверхности? Зря это, лучше бы на одной...


cyborg   (2004-09-14 09:30:00) [39]


> А то с установкой событий и писанием процедур их обработки,
> писать становится не удобно.

Наоборт это очень удобно ;)
Для меню ставим один обработчик, для игры другой.

Например нужно в рекордах сделать ввод имени:
1) Ставим обработик нажатий клавиш на обработчик сцены рекордов.
2) Если игрок побил рекорд, то ставим обработчик на функцию ввода имени в строку
3) Исли в обработчике ввода имени нажали Enter, то записываем введённое имя в рекорды и устанавливаем обработчик сцены рекордов.

Так же при выходи из процесса игры:
1) В игре нажали ESCAPE
2) ставим обработчик запроса на выход
3) если нажали ESCAPE - отмену, то возвращаем обработчик игры
  если нажали ENTER, то выходим из текущей сцены

Только не забывайте при изменении сцен все обработчики нажатий обнулять:
 SetEventKeyDown (@EventProcessKeyDownDummy); //Тут, например, обработчик выхода из программы по нажатию ESC
 SetEventKeyDown   (nil);
 SetEventKeyUp     (nil);
 SetEventMouseDown (nil);
 SetEventMouseUp   (nil);
 SetEventMouseShell(nil);

иначе у вас будет вызываться старые обработчики другой сцены :)


cyborg   (2004-09-14 09:20:00) [40]

UseScreenOfset можно использовать для прокручиваемой карты, и соответственного рисования объектов с учётом смещения.


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

Наверх

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