A2XT по-русски

Русскоязычное описание вселенной A2XT

Инструменты пользователя

Инструменты сайта


lunadll

LunaDll - хакерский мод-расширение для игры Super Mario Bros. X, созданный участником сообщества Talkhaus, Kil, с целью расширить возможности движка. Впервые представлен 9 мая 2013 года.

История

9 мая 2013 года, пользователь kil3 выпустил в свет хакерский модуль, который рашриряет возможности движка Super Mario Bros. X. Позже, этот модуль был назван «LunaDll» (имя происходит от названия уровня - «Luna Tower», который создал Kil для «Прелюдии Глупости»). С помощью DLL-инъекции, он заставляет игру загружать сторонний код из созданного им DLL-модуля. В ранних версиях имелось всего два перехвата: на загрузке уровня, и на каждый кадр во время работы уровня. Позже был реализован собственный скриптовой язык, названный «Автокодом», который позволяет вносить различные модификации в игру. Более сложная логика писалась на C++ непосредственно и выстраивалась в сам модуль-расширение, загружаясь в зависимости от имени файла уровня. Практически все подобные подмодули были созданы в рамках проекта «Аналогового Фанка», за исключением одного уровня, созданого к первому конкурсу «Make a Good Level», и то не используемого.

LunaLua

В конце 2014 года, Kevsoft реализовал поддержку скриптовой системы на языке lua, из-за чего модуль был переименован в LunaLua, а встроенный язык «Автокод» был признан устаревшим.

LunaScript

Начиная с 30 января 2022 года, поддержка языка «Автокод» была реализована в последней тестовой сборке движка TheXTech в качестве штатной части движка с целью запускать старые проекты, созданные с использованием оригинального LunaDll, на движке TheXTech. В отличии от оригинального LunaDll, реализация на базе движка TheXTech (названная как «LunaScript») является встроенной и платформонезависимой частью самого движка, а не сторонним модулем, вклиниваемым извне.

Из-за принципиального различия структуры памяти оригинального SMBX и TheXTech, все функции, работающие с памятью, эмулируются, что позволяет скриптам «думать», что они по прежнему работают с памятью SMBX, но на деле, все известные адреса памяти сопоставлены с внутренними переменными и обновлённой структурой TheXTech. Это также позволяет запускать игры даже на процессорах отличных от x86 и имеющих другой порядок байт (например, на PowerPC или на MIPS). Возможности работы с памятью сильно ограничены встроенными в движок таблицами правил, эмулирующих память движка Super Mario Bros. X. Это сделано из соображений упрощения, безопасности, а также следованием цели поддерживать старые проекты, нежели создавать новые на основе «Автокода», что в прочем тоже применяется как временная мера до тех пор, пока не будет реализована полноценная скриптовая система на языке lua.

Возможности

  • Расширение функционала уровней с помощью скриптов и встраиваемых подмодулей на C++, позволяя вносить ранее невозможные изменения.
  • Упрощение задач, ранее считавшихся сложными.
  • Полный контроль над игрой.

Ограничения

  • Скриптовой язык является низкоуровневым и менее гибким, чем другие языки. У него не было таких важных компонентов, как переменные. Из-за чего приходилось реализовывать более сложную логику в виде встроенных подмодулей на C++, наглухо встраиваемых в само расширение.
  • Требует навыков прямой манипуляции с памятью.

Проекты

На базе оригинального модуля LunaDll было выпущено по крайней мере два проекта по вселенной A2XT.

  • A2MBXT, Episode 1: Analog Funk - первый и наиболее известный проект, созданный и выпущенный с использованием LunaDll v7 в 2014м году.
  • Superb Demo Sisters - небольшая игра, спин-офф по вселенной A2XT, использовала чуть более новую версию LunaDll, но со временем, основная игра получала обновления.

Ссылки

lunadll.txt · Последнее изменение: 2023/05/07 19:37 — wohlstand