Еще в 1980-х годах я начал играть в серию текстовых приключенческих игр для Apple II под названием Wonderful World of Eamon. Это смесь интерактивной фантастической игры, такой как Colossal Cave Adventure, и компьютерной ролевой игры. Эамон уникален тем, что вы можете создать персонажа в «Главном зале» и пройти десятки различных автономных квестов разных авторов, улучшая характеристики и собирая лучшие предметы и золото. Итак, если вам нравится интерактивная фантастика, а также вам нравилось убивать орков, сражаться с пиратами и иногда сражаться лицом к лицу с такими, как Дарт Вейдер, это отличное времяпрепровождение.

Но Apple II давно умер, и для игры в оригинальный Eamon теперь требуется эмулятор. Кроме того, мой монитор немного больше, чем разрешение 280x192 у Apple II. Я должен видеть более 40 столбцов текста.

Что, если бы я мог переписать Эймона для современных компьютеров? В частности, как я могу заставить его работать в веб-браузере?

Зачем это делать? Во-первых, мне нравится идея сохранить некоторые из наших «семейных программ» для будущих поколений. Во-вторых, я знаю немало людей, которые до сих пор любят текстовые приключенческие игры и играют в них. В-третьих, проект дал мне возможность поэкспериментировать с некоторыми новыми веб-технологиями.

Во-первых, немного истории

Классический Эамон

Первая версия «Удивительного мира Эймона», состоящая из Главного зала и первого приключения, «Пещеры для начинающих», была написана примерно в 1979–1980 годах Дональдом Брауном, который также является автором некоторых из самых ранних приключений. Я буду называть эту версию «Classic Eamon» для ясности.

Движок игры был написан на Applesoft BASIC. Данные об игре и игроках хранились в наборе «текстовых» файлов Apple II, которые в основном представляли собой плоские базы данных с фиксированной длиной записи.

За прошедшие годы многие новые авторы добавили приключений, и в игровой движок было добавлено много новых функций. Кроме того, у Apple II не было много оперативной памяти, и авторы часто переписывали части игрового движка, чтобы обойти ограничения памяти.

Классический Eamon также был одним из первых примеров некоммерческого программного обеспечения. В те дни не существовало таких вещей, как лицензии на открытый исходный код, но текст в начале исходного кода основной программы гласил: «Некоммерческое распространение поощряется».

Эамон Делюкс

В 1990-х автор Eamon Фрэнк Блэк портировал Eamon на ПК и назвал новый порт Eamon Deluxe. Фрэнк преобразовал движок в Microsoft BASIC и добавил в движок несколько новых функций, таких как улучшенный Main Hall и цветной текст. В целом он сохранил ту же программную логику и структуру базы данных в виде плоских файлов, аналогичную исходной.

Несмотря на то, что это обновление версии Apple II, Eamon Deluxe по-прежнему требует эмулятора для игры и по-прежнему имеет графические ограничения, типичные для компьютеров DOS.

Фрэнк перенес всю логику игры и десятки приключений в Eamon Deluxe. По этой причине я решил сделать его работу основой моей новой версии.

Введите «Eamon Remastered».

Если бы я собирался переписать Иамона для Интернета, как именно мне это сделать?

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

Кроме того, чтобы снизить барьеры для начала, я решил черпать вдохновение в таких играх, как BrowserQuest, где вы можете просто загрузить страницу и начать играть. Создание учетной записи или вход в систему не требуется. Просто назовите своего игрока и вперед. Чтобы это работало, моей новой версии Eamon нужно было бы хранить некоторые данные игрока прямо в браузере.

Классический Иамон включал служебный диск «Дизайнер подземелий», который позволял дизайнерам приключений писать свои собственные приключения. По сути, это был интерфейс базы данных для редактирования комнат, объектов («артефактов» на жаргоне Иамона) и «монстров» (включая NPC) в приключении. Вы можете создать полноценное приключение только с помощью конструктора и даже реализовать несколько специальных эффектов, таких как секретные двери. Но вам нужно было написать код, чтобы сделать что-нибудь более сложное. Чтобы предоставить Eamon Remastered аналогичную функциональность, мне нужно было бы разработать интерфейс для редактирования приключений и простой опыт разработчика для написания кода специальных эффектов.

Выбор языка программирования

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

Еще в 1980-х годах BASIC был языком, который знали большинство программистов. Он поставлялся с каждым Apple II, не требовал компилятора, и его было легко начать. 10 PRINT "HELLO WORLD" и так далее.

Перенесемся в 2015 год, и BASIC в основном устарел. Какой язык вместо этого знает большинство программистов? JavaScript!

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

В итоге я решил использовать Angular 2 для создания игрового движка. Он предоставляет множество функций, которые мне нужны прямо из коробки, например, взаимодействие с пользователем и запрос данных из API. Кроме того, TypeScript позволяет мне использовать многие современные функции ES6 и ES7, не дожидаясь, пока браузеры их поддержат. Эймон широко использует такие концепции, как наследование на основе классов и ракетные функции, которые поддерживает TypeScript.

Angular нужен внутренний API для предоставления данных о приключении и игроке. Для этого я выбрал Django, потому что:

  1. Превосходный Django Rest Framework предоставляет простой API REST
  2. Встроенный сайт администратора Django предоставит быстрый и простой способ редактировать данные приключения и создавать новое приключение, так что мне не нужно будет писать собственную программу Dungeon Designer.
  3. Мне нравится программировать на Python

Основной и специальный код

Одна из причин, по которой я был взволнован перед ремастерингом Эймона, заключалась в том, что это была проблема архитектуры программного обеспечения. Первоначальная версия была забавной, но с точки зрения архитектуры это был «большой ком грязи». Весь код BASIC находился в одном файле, Main Program, с сотнями операторов GOTO. У каждого приключения была своя собственная полная копия основной программы, и чтобы добавить специальные эффекты, разработчик приключений должен был изменить свой код. В то время это имело смысл, но нарушает мантру «не взламывать ядро» современной разработки программного обеспечения.

Кроме того, эта база данных появилась раньше современных СУБД, вместо того, чтобы состоять из запутанной структуры плоских файлов с записями фиксированной длины. Это означало, что для чтения данных из этих файлов в начале приключения требовалось много кода, а для редактирования данных требовалось специальное программирование.

Итак, что с этим делать?

Я решил, что Eamon Remastered будет иметь только один набор основного кода, который будет использоваться всеми приключениями. Он будет содержать такие функции, как перемещение в разные комнаты, сбор предметов, поиск секретных дверей, боевую логику и так далее. Каждое приключение сможет расширить базовую функциональность и добавить специальные эффекты с помощью комбинации двух систем:

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

Пользовательские команды - это специальные приключенческие «глаголы», которые можно добавить к основному набору команд. Примерами могут быть ИГРАТЬ на музыкальном инструменте или ВЫКРЫТЬ дыру - команды, доступные только в некоторых приключениях.

Готовый продукт - Eamon Remastered!

Вы можете попробовать Eamon Remastered на официальном сайте eamon-remastered.com. Чтобы начать играть, требуется всего несколько минут, и вы можете исследовать мир Eamon, не выходя из своего веб-браузера.

Играйте в Eamon Remastered прямо сейчас!

Возможности включают:

  • Создайте нового персонажа за считанные минуты
  • Покупайте оружие и заклинания в главном зале
  • Отправьтесь в приключение (сначала попробуйте Пещеру для начинающих или Лес для начинающих!)
  • На момент написания этой статьи в Eamon Remastered было 16 отдельных приключений, 15 из которых являются портами классических приключений Eamon или Eamon Deluxe.
  • Сохраните свой плеер прямо в веб-браузере, не создавая учетной записи. Вернитесь в любое время в том же браузере, чтобы продолжить с того места, где вы остановились!

Код

Обновление семейного программного обеспечения - это не только игра. Частью продукта является сам код. Он должен быть новым и свежим, сохраняя при этом игровой процесс максимально похожим на оригинал.

Этот пост является первым из серии, посвященной «созданию» Eamon Remastered. Я покажу вам некоторые из моих дизайнерских решений и то, как все это устроено. Плюс множество примеров кода Angular!

А пока исходный код также доступен на Github.

А энтузиастам ретрокомпьютинга также может понравиться этот проект по римейку Colossal Cave Adventure на современном C.

Загляните в ближайшее время, чтобы увидеть следующие части этого сериала!