![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Прошу потестировать cyborgengine2d
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.
Ещё может чего забыл :)