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
Прошу написать подобные характеристики!


бобомен   (2004-09-12 09:51:00) [61]

может тебе "Война и Мир" пересказать?, короче купи книжку а лучше на курсы запишшись, доморощенные "специалисты" сакс...


cyborg   (2004-09-12 09:40:00) [62]


> криво сделано.

В чём это заключается? Что понимается под "нормально"?


бобомен   (2004-09-12 09:31:00) [63]

криво сделано. попробуй написать нормальное что нибудь


cyborg   (2004-09-12 09:26:00) [64]


> [11] бобомен   (12.09.04 09:25)

Чего?


бобомен   (2004-09-12 09:25:00) [65]

во лоло взял скорость к фыпсам прописал...


cyborg   (2004-09-12 09:05:00) [66]

Ни у кого нету компьютеров со слабыми видеокартами чтоли? :)
У других игр жаловались, что у них видео плохое, поэтому не играет, а тут одни гефорсы да ривы, нашёлся бы кто с 2-4 мегабайтовой карточкой :)


Magikan   (2004-09-12 05:05:00) [67]

При отключенной синхронизации:
в меню 1000 фпс, в игре 758 фпс
При включеной:
и в меню и в игре 33 фпс

Duron 1200, 256 Mb DDR, GeForce FX5200 64Mb, DirectX9.0b, WinXP


Sapersky   (2004-09-11 22:44:00) [68]

Меню - 560 FPS, игра - примерно 440 FPS.
CPU Celeron 500, 256Mb, GF2MX400(200/150) 64 Mb, DirectX8.1, Win98.

И, кстати, не надо наезжать на интегрированные карты. Если говорить об интеловских чипсетах (начиная с i810), то там стоят вполне себе ускорители, которые неплохо тянут игры уровня Quake 2, MDK 2, MechWarrior 3 - по современным меркам не ахти, но всё же гораздо круче, чем спрайтовые танчики :)


Ландграф Павел   (2004-09-11 18:57:00) [69]

Just3r>???
на моем AthlonXP-1800+, 64mb GF4MX440, 256DDR 835 fps в игре, в меню 1042


cyborg   (2004-09-11 17:37:00) [70]


> [5] Just3r   (11.09.04 17:34)

Виндовс какой забыл написать? ;)
Чего-то маловато, винамп наверное играл? :)


Just3r   (2004-09-11 17:34:00) [71]

При отключенной задержке (nowait.bat) игра выдает 480fps в среднем.
AthlonXP-2500, 128mb FX5200


cyborg   (2004-09-11 14:33:00) [72]


> Все движется слишком быстро, просто летает.

Оно так и должно, игра на 33 кадра рассчитана.


> У тебя многовато поверхностей

Что в видео не влезает, то в оперативке создаётся.


NikeOLD   (2004-09-11 10:58:00) [73]

Резюме можно заключить в одно слово, а именно: переделывай!
Машина Intel PIII 550/64MB/Riva TNT2 Ultra 16MB/DX 9.0b/Win98

При отключенной вертикальной синхронизации:
В меню 295 FPS
В игре 246-248 FPS, но! Все движется слишком быстро, просто летает.

Включена синхронизация:
В меню 60 FPS
В игре 33 FPS, модели двигаются с нормальной скоростью.

На 95 протестировать возможности не представилось :(. Работать будет, вопрос в скорости. У тебя многовато поверхностей для карточек с 1-4 метрами, особенно если эти поверхности большие (сравнимы с первичной по размерам, но не больше (иначе вообще не будет работать).


cyborg   (2004-09-11 09:51:00) [74]

Работало во Фрипаскале и в Дельфи.
Но, на прошлой неделе вносил дополнения, вожможны глюки с Дельфи, потом проверю как нибудь.

Приведу список функций чего есть, так сказать возможности:

//Инициализация, вызывается перед началом использования библиотеки:
//AppWndHandleRes - Возвращаемый идентификатор созданного окна
//ScreenWidth - ширина экрана
//ScreenHeight - высота экрана
//ScreenBitDepth - глубина цвета (8, 16, 24, 32)
//RefreshRate - частота обновления монитора (0 - по умолчанию, или: 60, 75, 85, 100 и т.д.)
//VSinc - Учитывать видеосинхронизацию при рендеринге
//FPS - Требуемое кол-во кадров в секунду
Procedure CyborgEngineInit (Var AppWndHandleRes : Cardinal; ScreenWidth, ScreenHeight, ScreenBitDepth, RefreshRate : Cardinal; Fullscreen : Longbool; VSinc : LongBool; FPS : Cardinal); StdCall;

//Освобождение ресурсов, вызывается после окончания работы с библиотекой:
Procedure CyborgEngineDeInit; StdCall;

//Обновить информацию о нажатых клавишах:
Procedure CyborgEngineReadDirectInputData; StdCall;

//Отобразить объекты на экране:
Procedure CyborgEngineRender; StdCall;

TYPE
 TProcessProgramFunc = function : Boolean;
//Обработка сообщений окна программы и выполнение функции ProcessProgramProc
//которая должна вернуть флаг выхода из цикла, если True, то цикл завершается
//ProcessProgramFunc - это адрес вашей главной функции программы в которой
//обрабатываются объекты всей игры в цикле. В этой функции нужно вызывать
//процедуры CyborgEngineReadDirectInputData и CyborgEngineRender:
Procedure CyborgEngineProcessWindowsMessages(ProcessProgramFunc : TProcessProgramFunc); StdCall;

TYPE
 TKeyEvent        = procedure(key : cardinal); StdCall;
 TMouseShellEvent = procedure(Val : LongInt); StdCall;
//Процедуры устанавливающие обработчики событий нажатых клавиш:
Procedure SetEventKeyDown (Proc : TKeyEvent); StdCall;
Procedure SetEventKeyUp (Proc : TKeyEvent); StdCall;
Procedure SetEventMouseDown (Proc : TKeyEvent); StdCall;
Procedure SetEventMouseUp (Proc : TKeyEvent); StdCall;
Procedure SetEventMouseShell (Proc : TMouseShellEvent); StdCall;

//Функция ыозвращает состояние нажатых кнопок мышки (от 0 до 7):
Function MousePressed (Button : Cardinal) : LongBool; StdCall;
//Функции возвращающие состояние нажатых специальных клавиш:
Function ShiftPressed : LongBool; StdCall;
Function CtrlPressed : LongBool; StdCall;
Function AltPressed : LongBool; StdCall;

//Процедура возвращает координаты мышки:
Procedure GetMouseCoord(Var X,Y : Longint); StdCall;

//Процедура возвращает название нажатой клавиши:
Procedure GetKeyName(Var KeyName : String; Key : Byte); StdCall;

//Упаковка фрагментированной видеопамяти:
Procedure CompactVidMem; StdCall;

//Процедура получения параметров движка:
Procedure GetSystemData(Var GetFPS : Extended; Var GetNumSprites, GetNumSurfaces : Longint; Var VideoMem, VideoMemFree : Cardinal; Var GetRenderAllTime, GetRenderTime : int64); StdCall;
//Вкл/выключение показа FPS (системной информации) по координатам X,Y, Enable-вкл/выкл:
Procedure CyborgEngineShowFPS(X,Y : Cardinal; Enable : LongBool); StdCall;

//Смещение координат экрана для вывода спрайтов с учётом смещения:
Procedure SetScreenOffset(OfsX,OfsY : Longint); StdCall;
//Процедура устанавливает пользователь скую вызываемую функцию при рендеринге:
TYPE
 TRendererProcProcess = Procedure;
Procedure SetRendererProc(Proc : TRendererProcProcess); StdCall;
//Процедура очищения экрана:
Procedure ClearScreen(Color : Cardinal; Surface : Pointer); StdCall;
//Процедура очищения прямоугольной области экрана:
//Rect - указатель на структуру TRect
Procedure ClearRect(Color : Cardinal; Rect : PRect; Surface : Pointer); StdCall;
//Создание данных поверхности:
Function CreateSurfaceFromBMPFile(VideoMemory : LongBool; Transparent : LongBool; ColorKey : Cardinal; BMPFileName : PChar) : Pointer; StdCall;
TYPE
 TSurfaceUserFillProc = Procedure (Var Surface : Pointer); StdCall;
Procedure CreateSurfaceUser(Var Surface : Pointer; W,H : Cardinal; VideoMemory : LongBool; Transparent : LongBool; ColorKey : Cardinal; SurfaceUserFillProc : TSurfaceUserFillProc); StdCall;
//Создание текстовой поверхности:
Procedure CreateSurfaceText(Var Surface : Pointer; VideoMemory : LongBool; Transparent : LongBool; FontSize, TextColor, BackColor : Cardinal; FontName : PChar; Text : PChar; Bold, Italic, Underline : LongBool); StdCall;
//Создание поверхности шрифта:
Procedure CreateSurfaceFont(Var Surface : Pointer; VideoMemory : LongBool; Transparent : LongBool; FontSize, TextColor, BackColor : Cardinal; FontName : PChar; Bold, Italic, Underline : LongBool); StdCall;

//Освобождает загруженную графику поверхности:
Procedure ReleaseSurface(Var Surface : Pointer); StdCall;
//Освобождает ресурсы занимаемые поверхностью:
Procedure FreeSurface(Var Surface : Pointer); StdCall;
//Установить цветовой ключ из указанной точки X,Y поверхности:
Procedure SetColorKeyXY(Var Surface : Pointer; X,Y : Longint); StdCall;
//Отобразить на экране спрайт:
Procedure ShowSprite(Var Sprite : PSprite; Surface : Pointer); StdCall;
Procedure ShowSpriteFast(Var Sprite : PSprite; Surface : Pointer); StdCall;
//Отобразить на экране цепочку со спрайтами:
Procedure ShowChain(Chain : PChainSprite; Surface : Pointer); StdCall;
Procedure ShowChainFast(Chain : PChainSprite; Surface : Pointer); StdCall;

//Показать текст заданным шрифтом:
Procedure ShowText(Var FontSprite : PSprite; Surface : Pointer; X,Y : Longint; Const Text : PChar; UseScreenOfset : LongBool); StdCall;

//МЕНЕДЖЕР СПРАЙТОВ/ОБЪЕКТОВ:
//Создание спрайта:
//Chain - Указатель на цепочку объектов/спрайтов, куда нужно добавить
//DataSize - размер дополнительных данных, если требуются или = 0, если не нужно
Function CreateSprite(Chain : PChainSprite; DataSize : Longint) : PSprite; StdCall;
//Удаление спрайта из цепочки
Procedure DelSprite(Var Sprite : PSprite); StdCall;
//Процедура освобождения объектов/спрайтов в указанной цупочке:
Procedure ClearChain(Chain : PChainSprite); StdCall;
//Функция возвращает значение счётчика кол-ва всех созданных спрайтов/объектов:
Function GetNumSprites : Longint; StdCall;


cyborg   (2004-09-11 09:47:00) [75]

Танчики без исходников.

Если кого заинтересует этот движок, в дальнейшем планирую выложить на сайте, описание и пример только нужно будет нарисовать.

Умеет:
Легко программировать с его помощью.
Инициализация и закрытие одной строчкой.
Встроенный объектный менеджер на record-ах, обработка объектов самим движком или вашей программой, доступ ко всем объектам.
Автоматическое восстановление поверхностей (из BMP файла, пользовательской поверхности, шрифта).
Создание спрайтов из BMP-файлов (8,24 бит), пользовательский спрайт, спрайт шрифта (создание спрайта с текстом или создание спрайта шрифта с последующим выводом текста этим шрифтом).
Обработка мышки и клавиатуры с помощью DirectInput - нажатие, отжатие клавиши, прокрутка колёсика мышки, получение имени нажатой клавиши, получение состояния нажатых Shift, Ctrl, Alt.

Ещё может чего забыл :)


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

Наверх

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