Игра писалась для конкурса 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-байтные ячейки памяти). Насколько выросла производительность благодаря всем мыслимым наворотам разных компиляторов, совместимых с моим железом, видно в таблице.