![]() |
![]() ![]() |
![]() |
TarasBer |
![]()
Сообщение
#1
|
![]() Злостный любитель ![]() ![]() ![]() ![]() ![]() Группа: Пользователи Сообщений: 1 755 Пол: Мужской Репутация: ![]() ![]() ![]() |
Игра писалась для конкурса 64кб-игр, там было важно уложиться в определённый размер. Самый простой способ уложиться - это выбрать Delphi 7, он умеет компилировать довольно компактно (за счёт абсолютного неумения в инлайн гы-гы). Сколько я на этом потерял в производительности - вопрос отдельный и... я измерил, на сколько именно.
Итак, картинки: ![]() ![]() ![]() ![]() Прохождение игры: http://www.youtube.com/watch?v=NAn1t39eG9A Сама игра: ![]() Исходники игры для Дельфи-7: ![]() А теперь - самый главный вопрос: насколько это дело тормозное по сравнению со старыми движками, написанными великими людьми? Я для сравнения брал Quake и Unreal на типичных для этих игр сценах (для Unreal сцена получилась не самая простая, да) в разных разрешениях, запускал всё это на своём динозавре в процессором Селерон-600. Код Q U TB(D7) TB(FPC) TB(C++03) TB(ICC) TB(GCC (SSE)) 1024х768 22 11 9 9 10 9 11 (12) 800х600 28 15 14 12 14 12 16 (18) 640х480 36 20 20 17 20 18 24 (25) 640х400 42 22 23 20 24 21 29 (30) 512х384 47 24 26 25 29 25 35 (47) 400х300 53 30 33 30 41 35 44 (58) 320х240 56 35 47 42 58 47 66 (66) 320х200 58 35 51 48 65 56 66 (66) Да-да, я портировал игру на С++, проверив её в Студии (которая слишком многое прощает и из-за этого много ошибок коварно затаилось), и выдав исходники другим людям, пересобравшим её на Intel C++ Compiler и GCC 4.8.1. Да, в процессе работы с GCC я на своей шкурой узнал, что strict aliasing - это больно (но я таки с ним справился! +50 к крестокунфу "стиль параноика"), что одно и то же вещественное выражение может приниматься разные значения внутри цикла и после цикла (когда все промежуточные переменные любовно распиханы оптимизатором по 10-байтовым регистрам сопроцессора, и что проиходит, когда эти числа сохраняются в 4-байтные ячейки памяти). Насколько выросла производительность благодаря всем мыслимым наворотам разных компиляторов, совместимых с моим железом, видно в таблице. -------------------- |
![]() ![]() |
![]() |
Текстовая версия | 11.09.2024 8:15 |