В далеком 1988 году, будучи шестиклассником, я впервые познакомился с компьютером. Тем, кто не знает ─ это был ДВК-3М с интегрированным черно-белым дисплеем и двумя пятидюймовыми дисководами. Но сейчас не о нём. Мое первое знакомство состоялось с играми от ASP corp. ─ тройке ребят-программистов, которые специализовались на компьютерах семейства ДВК.
Какие-то предприимчивые люди установили в нашей школе пару ДВК-3М и закрепили тариф в 1 советский рубль за 1 игровой час. Мы экономили на обедах, а кое-кто клянчил деньги у родителей, чтобы поиграть после уроков в Звездный патруль, Тетрис, Зону, Cat, Garden, Sheriff и конечно же LAND! С тех пор я испытываю сентиментальные чувства ко всему связанному с теми играми и компьютерами, прямо как Джон Коннор к Терминатору первой модели.
Особенной популярностью пользовалась игра LAND. Это был такой себе вариант Lode Runner, но мы были в восторге! Прошло много лет, эти компьютеры безнадежно устарели и перестали встречаться в природе, но ностальгические чувства периодически давали о себе знать и появлялось желание вспомнить детство и поиграть.
Цель игры LAND состоит в том, чтобы собрать все сундуки на данном уровне и добраться до двери на следующий уровень. Остерегайтесь демонов и биомассы. Вы можете бегать, взбираться по лестницам, уничтожать кирпичные стены, стреляя в них. Обратите внимание, что разрушенные кирпичи восстанавливаются со временем. Демоны не могут быть убиты. Если демон умирает от попадания в биомассу, в верхней части экрана появляется новый.
Идея сделать Windows версию меня посещала достаточно давно и неоднократно, но все как-то не доходили руки. В итоге я твердо решил воплотить задуманное в жизнь и, первое что сделал ─ я попытался связаться с авторами игры, в надежде раздобыть хотя бы спрайты и тайминги всех актеров. Мне удалось связаться с хабраюзером Александром Гречишкиным, автором игры, но, к сожалению, никаких исходников не сохранилось. Игра была написана в 1986 году на ассемблере, поэтому даже наличие исходников мне врядли помогло бы. Хочу предупредить заранее, что далее я не буду глубоко вдаваться в технические детали.
Немного поразмыслив, я принял решение снимать скриншоты с эмулятора УКНЦ (совместимый с ДВК советский микрокомпьютер), самостоятельно резать спрайты и переносить уровни игры вручную, отрисовывая их в текстовом редакторе.
В качестве платформы для разработки игры был выбран XNA framework 4.0. Не секрет, что Microsoft отказался от дальнейшего развития этого фреймворка, но его open source реализация MonoGame живет и процветает. От себя добавлю, что несмотря на некоторые незначительные ошибки в MonoGame, я за 10 минут успешно перевел проект с XNA на MonoGame. Так же XNA оказался очень простой и понятной штукой, что касается 2D.
Скриншоты с эмулятора я обрабатывал в Photoshop, увеличивая нарезанный материал в 2 раза. Проект содержит 2 набора одинаковых спрайтов, под белый и черный фон, как было сделано в оригинальной игре.
Карты локаций представляют из себя массив 50 x 16 знакомест. Все карты хранятся в текстовых файлах и, при необходимости, могут быть отредактированы в текстовом редакторе с шрифтом фиксированной ширины. Так же я добавил возможность самостоятельно генерировать свои наборы карт и подключать их к игре. Для этого нужно создать свой банк карт в папке Content/Maps и наполнить картами по шаблону из файла map.template, который лежит там же. Игра включает 2 набора карт от оригинальных игр, которые встречаются в интернете.
Фактически, вся игра — это отображние изменяющейся во времени копии массива уровня, а актеры — комната, биомасса, демоны, пуля и герой, влияют на состояние этого массива. Независимо двигаются только демоны, пуля и герой.
Тайминги актеров пришлось подбирать вручную, «на глазок». Но получилось достаточно приближенно к оригиналу.
Управление простое, как во всех подобных играх:
- Клавиши управления курсором — движение героя;
- Z,X — выстрел влево и вправо;
- Q — начать игру с начала;
- R — начать уровень с начала с потерей одной жизни;
- ; — следующий уровень;
- F10 — переключиться на следующий набор карт;
- F12 — игра в полный экран;
Видео гемплея
Исходники можно найти на github или скачать инсталятор с собранной игрой (к исходникам прошу сильно не придираться, писалось Just4Fun).
Ну, а теперь приглашаю всех ностальгировать вместе со мной.