Якісь заповзятливі люди встановили в нашій школі пару ДВК-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).