[Из песочницы] Игра «LAND» для ДВК-3. Реинкарнация под Windows

2ac3bc984bb55ee682ebd841b9af814e.pngВ далеком 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×14 знакомест. Все карты хранятся в текстовых файлах и, при необходимости, могут быть отредактированы в текстовом редакторе с шрифтом фиксированной ширины. Так же я добавил возможность самостоятельно генерировать свои наборы карт и подключать их к игре. Для этого нужно создать свой банк карт в папке Content/Maps и наполнить картами по шаблону из файла map.template, который лежит там же. Игра включает 2 набора карт от оригинальных игр, которые встречаются в интернете.

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

Тайминги актеров пришлось подбирать вручную, «на глазок». Но получилось достаточно приближенно к оригиналу.

Управление простое, как во всех подобных играх:

Клавиши управления курсором — движение героя; Z, X — выстрел влево и вправо; Q — начать игру с начала; R — начать уровень с начала с потерей одной жизни; ; — следующий уровень; F10 — переключиться на следующий набор карт; F12 — игра в полный экран; Видео гемплея[embedded content]Исходники можно найти на github или скачать инсталятор с собранной игрой (к исходникам прошу сильно не придираться, писалось Just4Fun).

Ну, а теперь приглашаю всех ностальгировать вместе со мной.

© Habrahabr.ru