С нуля до разработчика игр: как начать создавать видеоигры, если у вас нет опыта. часть 1
Содержание:
- Инструментарий
- Настройка интерфейса
- Второй этап — непосредственно создание игры, код
- Компоненты распознавания и печати штрих-кодов Промо
- Мотивация
- Инструменты Android-разработчика
- Совет №1. Не стремитесь к идеалу
- Untrusted
- Изменение размера консоли
- Rust
- Изменение размеров окна рендеринга
- Как написать собственный игровой движок на C++
- Работа со скриптами
- UNITY
- Вывод
- Итог
Инструментарий
Сначала я использовал самописный кусок кода на JavaScript, которым я через регулярные выражения парсил определения переменных, массивов и функций. Затем, я использовал бесплатную версию «VB to C++ Converter» от Tangible Software Solutions, чтобы относительно точно преобразовывать куски кода в C++ (Я пользовался режимом Snifit, поскольку конвертер был ориентирован на VB.NET, значительно отличавшийся от VB6. Также не обошлось без огромного числа дополнительных ручных манипуляций и макросов). Часть кода была переписана мною вручную, особенно на начальных этапах. Много модулей я писал с нуля (либо заимствовал из других моих проектов), чтобы обеспечить конечный проект всей необходимой функциональностью. Весь процесс разработки я вёл на Linux Mint, используя среду разработки Qt Creator, параллельно с CLion. Также, я использовал виртуальные машины с Windows XP и Windows 7 для запуска некоторых зависимых инструментов, а также VisualStudio Code для просмотра VB6-проекта игры из под Linux-системы.
Настройка интерфейса
В стандартном интерфейсе проекта шесть элементов рабочей области:
- Верхняя панель инструментов — в ней находятся стандартные вкладки File, Edit, Help, как во многих других интерфейсах, а также вкладки Assets, GameObject, Components и Window.
- Scene — окно сцены, в котором выстраивается игровое пространство (элементы игрового мира, текстуры, фигурки персонажей и прочее).
- Games — это окно игры, в котором можно посмотреть глазами пользователя, как будут двигаться элементы и работать игровые механики.
- Hierarchy — окно иерархии, в нем перечислен список всех элементов (GameObject), которые помещены в окно Scene.
- Project — это система папок, в которых хранятся ассеты по категориям (текстуры, шрифты, звуки и т.д.).
- Inspector — окно для изменения элементов игры, их размера, цвета, положения в пространстве и других характеристик.
Второй этап — непосредственно создание игры, код
Главная и основная часть создания игры — собственно говоря её создание, написание кода. Тут всё зависит от среды и программы, в которой вы игру делайте, однако в Game Maker и для новичков существует система drug and drop — перетаскивай и бросай.
Подобная система есть не только в GM, а так-же она есть например в редакторах карт и конструкторах для популярных игр. Кстати, именно с модов для популярных игр я рекомендую вам начать делать игры.
С чего начать разработку игр
Чтобы сделать свою первую игру с нуля вам не обязательно знать язык программирования, достаточно использовать систему drug and drop, которая выглядит примерно вот так:
Как конструкторЗамечательная особенность Game Maker Studio 2 в том, что там все эти элементы автоматически расшифровываются в программный код, который видит разработчик.Это позволяет постепенно учить код и переходить от drug and drop к кодингу.Конкретные вопросы типа: как сделать движение, как сделать выстрел, какие бывают эффекты и всё такое прочее, вы сможете найти на моём ютуб канале в виде специальных уроков по основам создания игр.
Компоненты распознавания и печати штрих-кодов Промо
Комплект программного обеспечения для реализации функций оптического распознавания штрих-кодов различных систем при помощи обычной web-камеры, а также их отображения в печатных формах. Программы могут работать в составе конфигураций, созданных на базе платформ «1С-Предприятие» версий 7.7, 8.2, 8.3. Компонент чтения кодов реализован в виде внешней компоненты 1С с COM-интерфейсом. Компонент отображения создан по стандартной технологии ActiveX для Windows, и может быть встроен в любое приложение, поддерживающее встраивание ActiveX элементов управления, например в документ Word или Excel, или форму VBA.
P.S. Добавлена новая версия программы распознавания. Новые функции: обработка видео в реальном режиме (а не по таймеру, как раньше), добавлена возможность распознавания штрих-кодов из графических файлов JPEG, PNG, GIF, BMP, а также передавать для распознавания картинки из 1С, теперь можно получить в 1С захваченное с камеры или файла изображение, как с выделением мест, содержащих коды, так и без, а также отдельные фрагменты изображений, содержащие код. Добавлены новые свойства и методы для программирования. Обновлена документация.
10 стартмани
Мотивация
Зачем так делать?
Чтобы научиться программировать. А точнее — чтобы научиться переносить человеческие мысли в код. Обычные задания по программированию плохо тренируют этот навык потому что они скучные. Признаюсь честно, я намеренно готовил скучные задания для своих студентов. Нудные задания на превращение двух чисел в третье неизбежны, чтобы освоить базовые концепции. Такие задания помогут вам спуститься по горной реке, заполненной острыми камнями синтаксиса и водоворотами новых концепций. Проблема в том, что простые понятные задания однажды бросят вас в бескрайнем океане возможностей. Тогда вы обнаружите, что можете плыть куда угодно. Однако никто не подскажет вам верное направление. Ни одна платформа с автоматической проверкой решений не сможет проверить творческую работу и поставить оценку. Это может сделать либо живой преподаватель, либо живой напарник.
В статье ничего не будет про создание конкретной игры. Потому что конкретная игра — конкретные правила. А правила вы должны придумать сами. Дайте волю своему воображению, вспомните свою любимый жанр и сделайте хорошую попытку. Единственное ограничение — мы не будем рисовать красивую картинку. Потому что красивая картинка займет слишком много сил и будет только отвлекать нас от упоения кодом. Скажу по секрету, как только вы сделаете свою игру с помощью символов в черном окошечке, то сможете воплотить ваш замысел на любой другой платформе. Интересная игра будет интересна даже в консоли.
Почему C++?
Главная причина в том, что я сейчас веду индивидуальные занятия по C++ у одного талантливого студента. Его успехи вдохновили меня, а его вопросы показали о чем вообще нужно написать. C++ до сих пор рекомендуют как «язык для обучения». Это вселяет надежду, что статья будет полезна многим. Может быть когда-нибудь я напишу такую же статью и для других языков или для Linux, но не рассчитывайте на это. Если вы напишете сами подобный сборник советов для другого языка, то сообщите мне личным сообщением. Я добавлю ссылку на ваш труд.
Что нужно знать, чтобы понять статью?
Если вы понимаете концепцию циклов, массивов и функций, то вам должно быть достаточно. Предупреждаю сразу, в статье будут магические конструкции, которые я не буду объяснять. У меня нет цели сделать всеобъемлющий курс по C++. Цель — писать код и радоваться тому, как оно почти магически заработает. Когда закончите с основной целью или когда встретитесь с непреодолимыми проблемами, тогда и углубляйтесь.
Инструменты Android-разработчика
Началом массовой разработки под Android считается 2008 год. Тогда появился магазин приложений Android Market (в 2012 его переименовали в Google Play). Здесь разработчики выставляют свои приложения.
Сперва их создавали в среде Eclipse с установленным плагином ADT (Android Development Tools). Этот плагин страдал от брешей в безопасности. С конца 2016 года он больше не поддерживается.
Сегодня официальная среда разработки для Android — это Android Studio. Она появилась в 2013 году и здорово ускорила создание приложений.
Среда Android Studio
Это основной инструмент андроид-разработчика, бесплатный и совместимый со всеми операционными системами. Скачать Android Studio можно с официального сайта.
Среда позволяет разрабатывать приложения на любых компьютерах. Этим Google Android отличается от iOS (Apple хочет, чтобы разработчики покупали маки и кодили только на них).
C Android Studio разработчику даже не нужны собственные гаджеты на Android, ведь там есть быстрый многофункциональный эмулятор и шаблоны для многих устройств (смартфоны, планшеты, часы, смарт-приставки, телевизоры и так далее).
Полный список возможностей Android Studio с описанием каждой смотрите в официальном гайде.
Языки разработки
Под Android можно писать приложения почти на любом языке программирования: C/C++, Assembler, Fortran, Python, JavaScript. Однако есть языки, которые позволяют использовать все возможности мобильной операционной системы и получать моментальный доступ к новым функциям.
Это официально поддерживаемые языки. Для Android таковыми являются Java и Kotlin:
Java — традиционный язык разработки. На нём написано большинство Android-приложений, в том числе онлайн-банки. Это хорошо развитый язык с множеством библиотек, модулей и готовых решений.Кроме того, за языком стоит большое международное сообщество, и если у программиста возникает вопрос по Java, ему легче найти ответ.
Kotlin — молодой язык программирования, который разработала питерская компания JetBrains.Он полностью совместим с Java (джавишный код можно вызвать из Kotlin естественным способом, а котлиновский — использовать в Java без особых сложностей).При этом код на Kotlin крайне лаконичен:
Один и тот же код на Java и Kotlin
В 2019 Google объявила Kotlin приоритетным в андроид-разработке. Похоже, что произошло это из-за долгой судебной тяжбы с компанией Oracle — создателем Java. Oracle уже 10 лет пытается получить с Google несколько миллиардов за нарушение авторских прав. Суды ещё идут, но Google от греха подальше решила перейти на другой язык.
Kotlin удобнее пользоваться, он решает ряд проблем Java, и изучить его можно намного быстрее. А ещё он сразу входит в Android Studio. Так зачем нам учить Java, если уже есть Kotlin?!
Не всё так однозначно (пока что)
Начинающему разработчику важно изучать оба языка, но упор делать всё-таки на Java. Почему?
- Сегодня Kotlin ещё недостаёт готовых решений. Документация языка неполная, поэтому поиск конкретного ответа иногда занимает кучу времени. Чтобы быстрее решить возникшую проблему или даже просто вникнуть во все нюансы документации, нужно знать Java.
- Kotlin активно развивается, разработчики исправляют его недостатки, аудитория языка неуклонно растёт. Новые приложения, особенно небольшие, пишутся на Kotlin. Однако большинство прежних написаны на Java. Их нужно кому-то поддерживать. К тому же многие компании отдают предпочтение Java как языку более развитому и предсказуемому.
- На мобильной разработке свет клином не сошёлся. Такие языки программирования, как Java, C/C++, Swift, очень похожи между собой — и изучение Java позволит быстрее разобраться в других, а вот Kotlin — нет.
Совет №1. Не стремитесь к идеалу
Не повторяйте ошибку тех, кто пытается сразу сделать игру своей мечты.
Многие берутся за разработку в надежде воплотить в жизнь свои блестящие идеи. Иногда у новичков выходит The Stanley Parable — но куда чаще их задумки гибнут ещё на первых этапах разработки, погребённые под грузом амбиций.
Не потому что у вас нет таланта — просто для этого нужны опыт, знания и, если речь идёт о хоть сколько-нибудь большой игре, команда профессионалов. Вашей целью поначалу должен быть не хороший продукт, а что-то, что вы сможете быстро собрать и так же быстро начать тестировать.
Иными словами, смотрите на свои первые проекты как на обучающие упражнения. Ведь это они и есть.
Untrusted
Приключения доктора Эвала!
Untrusted – это приключенческая онлайн-игра, предназначенная для людей, которые хотят попрактиковаться и проверить свои навыки в JavaScript . В этой игре от вас требуется направлять доктора Эвала через машинный континуум и изменять его реальность, чтобы получить свободу. Игра предоставляет вам игровую среду, похожую на мошенническую, и окно консоли с JavaScript-кодом. У вас будет доступ ко всем исходным кодам, но, чтобы спастись, вам нужно внести необходимые изменения в этот код.
В игре есть несколько уровней, таких как cellBlockA, где вы будете генерировать и удалять стены, theLongWayOut, в котором вам нужно создать новый выход, и многое другое. Игра – довольно увлекательное путешествие, если вы обладаете хорошими знаниями концепций и программирования JavaScript. Интерфейс игры выглядит так:
Изменение размера консоли
По умолчанию у меня в консоли помещается 80 символов в высоту и 50 в ширину. Это примерно треть моего экрана, поэтому захотелось увеличить количество символов в строке консоли хотя бы до 200.
Изменение размера окна консоли тоже оказалось задачкой с подвохом. Первый запрос был тривиальным «c++ change size of console window». Первый ответ на него подробно объяснял как сделать это с помощью настроек окна консоли на уровне операционной системы. То есть не из самой игры, а со стороны пользователя. Прикладывать эту инструкцию к игре я посчитал неправильным. Нужен способ сделать это из самой программы. Второй и последующие ответы описывали изменение размера окна консоли с помощью функции MoveWindow. Фактическое количество текста при этом не менялось. Если окно становилось слишком маленьким, то появлялись полосы прокрутки.
Следующая попытка была «c++ set console size». Два первых ответа вели на известные советы с функцией MoveWindow. Зато дальше пошли ссылки на документацию. А именно — на функцию SetConsoleScreenBufferSize. Судя по описанию, она меняет не размер видимого окна, а внутренний размер буфера. В качестве аргументов она принимает поток вывода и структуру с желаемыми размерами буфера.
На тот момент я не знал точно, какие размеры стандартные и что я могу туда поставить. Поэтому указал 20 на 20. Для проверки размеров окна я также вывел прямоугольник из цифр от 0 до 9 шириной 20 на 20. Получился вот такой код:
Заполнение экрана символами и изменение размера консоли
Вывод получился вот таким
Поскольку это работа на уровне WinAPI, в результате получился код ошибки. Я в основном работаю с java стеком и обычно вижу стектрейсы и тексты исключений. Несмотря на это, принцип решения проблемы не изменился. Для расшифровки кода ошибки нужно воспользоваться официальной документацией. Она легко ищется запросом «getlasterror error codes». Кодов ошибок описано около девяти тысяч на нескольких страницах. Для моего случая подойдет первая страница https://docs.microsoft.com/en-us/windows/win32/debug/system-error-codes—0-499-
Ошибка гласит ERROR-INVALID-PARAMETER 87 (0x57) The parameter is incorrect.
Маловато объяснений. Тогда я проверил как другие пишут этот код. Запрос «SetConsoleScreenBufferSize incorrect argument» привел меня вот на этот вопрос на SO https://stackoverflow.com/questions/12900713/reducing-console-size
В ключевых аспектах код ответа был похож на мой
Но в нем содержалось важное дополнение «If you call SetConsoleScreenBufferSize with illegal value in COORDS (e.g. too little height/width) then you get an error, usually 87 ‘invalid argument’.»
Потом я посмотрел в документацию к функции SetConsoleScreenBufferSize https://docs.microsoft.com/en-us/windows/console/setconsolescreenbuffersize и увидел что на размеры буфера наложены ограничения. Получается, что я передал слишком маленькие значения. У меня не было необходимости перебирать значения для получения точных минимальных размеров. В конце концов цель — увеличить размеры буфера, а не уменьшить. Поэтому показалось логичным отталкиваться от текущих размеров окна. Раз у нас есть функция SetЧтототам, значит должна быть и функция GetЧтототам. GetConsoleScreenBufferInfo действительно нашлась https://docs.microsoft.com/en-us/windows/console/getconsolescreenbufferinfo С помощью неё и отладчика MSVS я выяснил, что размеры буфера на моей машине по умолчанию 80 на 50. Ширину я увеличил примерно в три раза, а высоту в полтора. При инициализации структуры size значением X = 200 и Y = 80 в высоту появились полосы прокрутки. Здесь и пригодилась функция MoveWindow.
Исходный код был видоизменен вот так:
Вывод при этом получился таким
Rust
Rust начал создаваться в 2006 году разработчиком Грейдоном Хором, который хотел соединить в нем скорость C++ и надежность Haskell. В 2009-ом к нему присоединилась Mozilla, и год спустя его презентовали на Mozilla Summit. Сейчас Rust является одним из самых популярных среди разработчиков кроссплатформенных приложений.
Преимущества:
- Безопасная синхронизация с памятью, не допускающая ошибок в сегментации и утечки данных.
- Ошибки во время компиляции видны сразу + предлагаются варианты исправления.
- Сопоставим по скорости с C++.
- Надёжный API для организации сетевого взаимодействия с использованием библиотек.
- Система выполняет сразу несколько вычислений одновременно и обеспечивает их взаимодействие друг с другом.
Недостатки:
- Относительно новый и быстро развивается, поэтому нет подходящей литературы и выбора специалистов.
- Строгий компилятор, который требует самостоятельного заполнения большого объема данных и замедляет процесс разработки.
Изменение размеров окна рендеринга
Первоначальные параметры рендеринга (визуализации): размер спрайта заднего фона и камера проецирования, по размеру, точно соответствуют размерам окна приложения. При изменении пользователем размеров окна игры эти параметры становятся неподходящими и автоматически они не подгоняются. Чтобы визуальная и координатная точность всегда соответствовала размерам окна визуализации необходимо создать метод, корректирующий эти параметры. При событии изменения размеров окна для параметра заднего фона вычисляется вектор масштабирования и спрайт заднего фона корректируется под новые размеры. Для параметра камера вида вновь назначается ширина и высота размера проецирования.
Как написать собственный игровой движок на C++
В последнее время я занят тем, что пишу игровой движок на C++. Я пользуюсь им для создания небольшой мобильной игры Hop Out. Вот ролик, записанный с моего iPhone 6. (Можете включить звук!)
Your browser does not support HTML5 video.
Hop Out — та игра, в которую мне хочется играть самому: ретро-аркада с мультяшной 3D-графикой. Цель игры — перекрасить каждую из платформ, как в Q*Bert.
Hop Out всё ещё в разработке, но движок, который приводит её в действие, начинает принимать зрелые очертания, так что я решил поделиться здесь несколькими советами о разработке движка.
С чего бы кому-то хотеть написать игровой движок? Возможных причин много:
- Вы — ремесленник. Вам нравится строить системы с нуля и видеть, как они оживают.
- Вы хотите узнать больше о разработке игр. Я в игровой индустрии 14 лет и всё ещё пытаюсь в ней разобраться. Я даже не был уверен, что смогу написать движок с чистого листа, ведь это так сильно отличается от повседневных рабочих обязанностей программиста в большой студии. Я хотел проверить.
- Вам нравится ощущение контроля. Организовать код именно так, как вам хочется, и всегда знать, где что находится — это приносит удовольствие.
- Вас вдохновляют классические игровые движки, такие как AGI (1984), id Tech 1 (1993), Build (1995), и гиганты индустрии вроде Unity и Unreal.
- Вы верите, что мы, индустрия игр, должны сбросить покров таинственности с процесса разработки движков. Мы пока не очень-то освоили искусство разработки игр — куда там! Чем тщательнее мы рассмотрим этот процесс, тем выше наши шансы усовершенствовать его.
Игровые платформы в 2017-ом — мобильные, консоли и ПК — очень мощные и во многом похожи друг на друга. Разработка игрового движка перестала быть борьбой со слабым и редким железом, как это было в прошлом. По-моему, теперь это скорее борьба со сложностью вашего собственного произведения. Запросто можно сотворить монстра! Вот почему все советы в этой статье вращаются вокруг того, как сохранить код управляемым. Я объединил их в три группы:
- Используйте итеративный подход
- Дважды подумайте, прежде чем слишком обобщать
- Осознайте, что сериализация — обширная тема.
Эти советы применимы к любому игровому движку. Я не собираюсь рассказывать, как написать шейдер, что такое октодерево или как добавить физику. Я полагаю, вы и так в курсе, что должны это знать — и во многом эти темы зависят от типа игры, которую вы хотите сделать. Вместо этого я сознательно выбрал темы, которые не освещаются широко — темы, которые я нахожу наиболее интересными, когда пытаюсь развеять завесу тайны над чем-либо.
Работа со скриптами
За поведение игровых объектов отвечают присоединенные к ним компоненты (Components). Базовый компонент любого объекта — Transform, он отвечает за положение элемента в окне Scene, возможность поворачивать и масштабировать его. К базовому компоненту можно добавить, например, Renderer, который меняет цвет, или RigidBody, который отвечает за массу и физику объекта. Но кроме базовых компонентов, объектам можно задавать особые условия, и для этого как раз используются скрипты.
Создать новый скрипт можно в окне Project, кликнув мышкой на Assets –> Create –> C# Script.
Двойным кликом мыши скрипт открывается в текстовом редакторе. Скрипты, как и все остальное в Unity, прописываются на С#, так что для создания сложных проектов разработчикам все же придется освоить этот язык.
Базовые элементы скриптов — это:
- using — элемент в коде, который подключает библиотеки;
- public class — в этой строке обычно прописан класс MonoBehaviour, он содержит набор функций, необходимых для работы скрипта;
- void — те самые функции, с их помощью прописываются действия, происходящие в игре.
Рассмотрим, например, функцию start. Любое действие в ней произойдет только один раз, когда запустится игра. Пропишем здесь print (“Hi”).
И можно заметить, что в консоли это слово выводится один раз.
Функция update — повторяющаяся, ее можно использовать, например, для передвижения объекта. Для этого в скрипте задается переменная int i = 0, она выводится на экран с помощью функции print (i) и увеличивается на одну единицу за каждый шаг с помощью i++.
В консоли можно будет заметить, что апдейт действительно срабатывает каждый фрейм и объект, к которому применен этот скрипт, плавно движется.
UNITY
Кроссплатформенный коммерческий игровой движок, разработанный Unity Technologies. Он использовался для таких игр, как Untitled Goose Game, Ori and Will of the Wisps и Hollow Knight.
Фото: epicgames.com
Для разработки: 2D- и 3D-игр.
Платформы: Windows, macOS и Linux.
Языки программирования: C#.
Стоимость: Бесплатно для личного пользования предоставляется студентам и любителям, а также небольшим компаниям, которые зарабатывают менее 100 000 долларов в год. Помимо этого, существуют годовые планы, начинающиеся с 399 долларов в год или 40 долларов в месяц.
Обучение: Unity предоставляет некоторые бесплатные ресурсы, чтобы помочь новичкам начать работу с движком. Но в рамках программы Unity Learn Premium она предоставляет гораздо больше возможностей, включая курсы, учебные пособия и даже сертификаты. Unity Learn Premium в настоящее время бесплатна до 10 июня 2020 года, но обычно стоит 15 долларов в месяц.
Начало работы: https://learn.unity.com/tutorial/create-your-first-unity-project
Вывод
Многие из представленных в этом обзоре игр смогут реально помочь Вам улучшить понимание основного инструмента разработчика – языка программирования. Мы включили в этот обзор как игры, полезные при изучении языков программирования, так и те из них, что помогут лучше запомнить конструкции CSS, HTML, SQL. В некоторых играх вы будете выполнять готовые задачи, зарабатывая баллы и играя «против компьютера», некоторые игры позволят вам соревноваться с другими разработчиками в поиске решений чужих задач и предложении встречных задач.
Бесплатные вебинары по схожей тематике:
Какие алгоритмы должен знать программист?
Евгений Волосатов
Memory Game на JavaScript за 2 часа
Ярослав Вовченко
Как стать PHP разработчиком?
Артем Кондранин
Учитесь, играючи и обучайтесь во время игры! Мы надеемся, что наша подборка игр поможет вам в этом. Также всем, кто изучает программирование, мы рекомендуем использовать интерактивный тренажер навыков ITVDN.
В тренажере вас ждут задания, которые нужно выполнять, используя навыки программирования. За правильные решения вы будете получать баллы. В случае ошибки, вы сможете воспользоваться подсказками, но за использование подсказок будут сниматься баллы. Итак, ваша задача – выполнить все задания на тренажере, набрав максимальное количество баллов!
На ITVDN доступны интерактивные тренажеры по таким языкам программирования и технологиям:
- HTML5&CSS3 (уровень Starter и Essential)
- JavaScript (уровень Essential и Advanced)
- Python (уровень Starter и Essential)
- Java Starter
- C# (уровень Starter и Essential)
- SQL Essential
- C++ (уровень Starter и Essential)
Итог
В результате проделанной работы, в течении первых двух-трёх недель после выпуска исходных кодов игры, получилась полноценная и кроссплатформенная реплика игры, крайне похожая по поведению на оригинал (настолько, что люди до сих пор находят в ней баги 10-летней давности). Однако, вместе со старыми багами, местами появились и новые, в результате ошибок, допущенных при преобразовании кода или из-за упущенных различий в работе VB6 и C++, либо из-за опечаток. Большая часть подобных ошибок уже была исправлена мною в течении месяца, и после, в марте 2020го года я представил обновлённую и стабильную игру вместе со всеми исходными кодами. Далее, в течении последнего года, дорабатывал игру, исправляя баги и улучшая функционал.
Проект движка я назвал TheXTech по принципу: «The Super Mario Bros. X Tech».
Главное меню игры Super Mario Bros. X на базе TheXTech 1.3.5.2
В итоге, игра, изначально созданная жёстко под Windows на платформозависимом языке и на процессорах x86, превратилась в кроссплатформенную игру, которая работает не только на других операционных системах (Windows, Linux, macOS, Haiku, Android, Emscripten), но и на других процессорах (ARM, PowerPC, MIPS, и др.). Вместе с этим, игра наконец получила полноценную поддержку 64-битных процессоров и ARM-архитектуры. Энтузиасты также портируют игру на консоли (уже есть примеры, реализованные на 3DS и PS Vita).
В новом движке игры я не стал реализовывать встроенный редактор, и не стал реализовывать начальную форму для запуска игры или редактора, где показывалась веб-страница с новостями проекта (ныне просто сайт Nintendo), а также, была возможность отключить звук и пропуск кадров. Вместо этого, я решил реализовать интерфейс для настройки игры через аргументы командной строки, а также выделить конфигурационный INI-файл, который легко отредактировать, чтобы настроить игру под себя. А для создания новых уровней и эпизодов я решил рекомендовать девкит из набора Moondust Project, редактор которого я доработал, чтобы обеспечить его тесной интеграцией с игрой (поддержка специфичных полей, прямой запуск теста уровня, и т.п.).
Созданный проект я продолжаю развивать, улучшать, добавлять новые функции, стабилизировать.