Поностальгируем: Мясорубка

в 2:04, , рубрики: game development, quake, мясорубка, ностальгия, метки:

Поностальгируем: МясорубкаПост навеян этим вопросом в q&a. Вопрос хоть и не мой, но поностальгировать тоже захотелось.

Из описания к игре:
Двухмерная аркада с видом сверху, в которой присутствуют все оружие и многие вещи из QuakeII. Играть пока можно только по hotseat (два игрока за одним компьютером) и против бота. Есть разные карты (на 1 и 4 экрана), Вы сами можете их (карты) делать с помощью мэпедитора. Есть несколько моделей игроков (их Вы тоже сами можете делать с помощью mmodeler'a). Можно записывать и проигрывать реплэи игры.

Предыстория
Учился я в то время в школе, не помню уже, по какому поводу познакомился я в интернете с Константином Мухопад aka 3d[power]. После того, как он начал разработку своей игры Need For Kill, мне тоже захотелось сделать что-нибудь подобное. Недолго думая, я решил делать такую же игру, но с видом сверху. Вот только компьютер у меня был слабый и Q3 на нем не шел, поэтому делать я стал игру по мотивам quake 2.

В то время постоянного интернета у меня не было и информацию по разработке игр приходилось собирать по крупицам. Очень помог вникнуть в тему мой очень хороший товарищ Денис Унтевский.

Начало
Начиналось все с рисования на канвасе. На каждый тик таймера все объекты на карте рисовались прямо на канвасе формы. Все это конечно очень тормозило, но я был раз до безобразия, что хоть что-то работает и можно уже бегать и стрелять.

Ни скриншотов, ни исходников тех времен у меня не сохранилось, но тогда в качестве персонажей были моделька орка-воина из второго варкрафта, а в качестве карты нагромождение квадратов.

Первой оптимизацией, которая существенно увеличила фпс, была рисование всех объектов на виртуальном канвасе, а потом вывод этого канваса на канвас формы.

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

Потом был переход на библиотеку DelphiX, которая еще больше увеличила фпс за счет использование DirectX вместо тормознутого канваса.

Дальше была идея сделать карты не из блоков, а картинками, что позволило разнообразить уровни, но и внесло несколько дополнительных проблем – движение вдоль стенок и угол отскока гранат от кривых стенок.

Поностальгируем: Мясорубка
Для отскока гранат я брал квадрат 5х5, центром которого бала точка соприкосновения гранаты и стены, после этого я строил хорду по крайним точкам стены. Эта хорда была примерно параллельна касательной к стене в точке соприкосновения, и относительно ее угла уже рассчитывался угол отражения. Уже позже, в универе на мат. анализе нам давали теорему, объясняющую, почему это так. Я тогда был очень горд собой, что сам придумал решение.

Хоть игра делалась по мотивам Quake 2, модели от нее не слишком подходили для Мясорубки. Пришлось искать альтернативы и, в итоге, я стал использовать модельки из Контер-страйка.

Поностальгируем: Мясорубка

И вот, наконец, первая публичная версия:
20.06.02 — МЯСОРУБКА доступна для скачивания (раздел «МЯСОРУБКА — download»)

Скачать ее сейчас можно и сейчас по ссылке.

Боты
Следующим этапом было написание бота для того, чтобы можно было и одному играть. Хоть, в результате, ИИ бота был достаточно туп, играть было все равно интересно.

Для каждой карты в редакторе карт строилось по точкам несколько замкнутых маршрутов. После респавна бот ходил по случайному маршруту, увидев другого игрока, он бежал к нему и стрелял. Если игрок уходил из поля зрения или был убит, то бот возвращался к следующей точке маршрута, при этом он нередко утыкался в стену, т.к. обходить препятствия он не умел. На картинке точки — вэйпойнты.

Поностальгируем: Мясорубка

Версия с ботами:
31.08.02 — Новая версия МЯСОРУБКи (download).

Сейчас скачать ее можно тут.

Примерно в это время ко мне обратились с предложением о покупке исходников игры. Предлагали около 2000 р. Мне показалась сумма маленькой и желание развивать игру еще было, поэтому я не продал.

Большие карты и реплэи.
Дальше были карты на несколько экранов. В основном это был задел для планируемой в будущем сетевой игры, т.к. играть по хотсит на таких картах было невозможно – был виден только один игрок.

В реплэях я так и не смог реализовать запись только изменений. Как я ни старался, все равно иногда проходили рассинхронизации. Тогда я решил сделать в лоб – записывал каждый тик таймера полную информацию обо всех объектах на карте. Реплэи были больше по размеру, но работало все корректно.

31.03.03 – последняя версия Мясорубки http://qwrtp.narod.ru/mr/mr003.zip

Поностальгируем: Мясорубка

Несостоявшиеся планы на будущее
Сначала я планировал добавить сетевую игру, перейти на 3д эффекты, но потом интерес был потерян и проект заброшен.

Поностальгируем: Мясорубка

Послесловие
Сейчас я занимаюсь разработкой приложений под WEB, но все равно с трепетом вспоминаю свой опыт геймдева и всегда с большим интересом читаю подобные воспоминания других людей, периодически появляющиеся на хабре.

Ну и кому интересно — qwrtp.narod.ru/ — моя домашняя страничка того времени, там доступны для скачивания мясорубка и некоторые мои программки того времени.

Автор: quantum


* - обязательные к заполнению поля


https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js