A2XT по-русски

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

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

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


lunadll

Различия

Показаны различия между двумя версиями страницы.

Ссылка на это сравнение

Предыдущая версия справа и слеваПредыдущая версия
Следующая версия
Предыдущая версия
lunadll [2023/05/06 05:18] – [LunaLua] wohlstandlunadll [2023/05/07 19:37] (текущий) – [Ограничения] wohlstand
Строка 2: Строка 2:
  
 ====== История ====== ====== История ======
-9 мая 2013 года, пользователь kil3 выпустил в свет хакерский модуль, который рашриряет возможности движка Super Mario Bros. X. Позже, этот модуль был назван "LunaDll" (имя происходит от названия уровня - "Luna Tower", который создал Kil для "[[an_smbx_thing_prelude_to_the_stupid|Прелюдии Глупости]]"). С помощью DLL-инъекции, он заставляет игру загружать сторонний код из созданного им DLL-модуля. В ранних версиях имелось всего два перехвата: на загрузке уровня, и на каждый кадр во время работы уровня. Позже был реализовано собственный скриптовой язык, названный "Автокодом", который позволяет вносить различные модификации в игру.+9 мая 2013 года, пользователь kil3 выпустил в свет хакерский модуль, который рашриряет возможности движка Super Mario Bros. X. Позже, этот модуль был назван "LunaDll" (имя происходит от названия уровня - "Luna Tower", который создал Kil для "[[an_smbx_thing_prelude_to_the_stupid|Прелюдии Глупости]]"). С помощью DLL-инъекции, он заставляет игру загружать сторонний код из созданного им DLL-модуля. В ранних версиях имелось всего два перехвата: на загрузке уровня, и на каждый кадр во время работы уровня. Позже был реализован собственный скриптовой язык, названный "Автокодом", который позволяет вносить различные модификации в игру. Более сложная логика писалась на C++ непосредственно и выстраивалась в сам модуль-расширение, загружаясь в зависимости от имени файла уровня. Практически все подобные подмодули были созданы в рамках проекта "Аналогового Фанка", за исключением одного уровня, созданого к первому конкурсу "Make a Good Level", и то не используемого.
  
 ===== LunaLua ===== ===== LunaLua =====
Строка 8: Строка 8:
  
 ===== LunaScript ===== ===== LunaScript =====
-Начиная с 30 января 2022 года, поддержка языка "Автокод" была реализована в последней тестовой сборке движка [[TheXTech]] в качестве штатной части движка с целью запускать старые проекты, созданные с использованием оригинального LunaDll, на движке TheXTech. В отличии от оригинального LunaDll, реализация на базе движка TheXTech (названная как "LunaScript") является встроенной и платформонезависимой частью самого движка а не сторонним модулем+Начиная с 30 января 2022 года, поддержка языка "Автокод" была реализована в последней тестовой сборке движка [[TheXTech]] в качестве штатной части движка с целью запускать старые проекты, созданные с использованием оригинального LunaDll, на движке TheXTech. В отличии от оригинального LunaDll, реализация на базе движка TheXTech (названная как "LunaScript") является встроенной и платформонезависимой частью самого движкаа не сторонним модулем, вклиниваемым извне.
- +
-Все функцииработающие с памятью, эмулируются, что позволяет запускать игры даже на процессорах отличных от x86 и имеющих другой порядок байт (например, на PowerPC или на MIPS). Возможности работы с памятью сильно ограничены встроенными в движок таблицами правил, эмулирующих память движка Super Mario Bros. X.+
  
 +Из-за принципиального различия структуры памяти оригинального SMBX и TheXTech, все функции, работающие с памятью, эмулируются, что позволяет скриптам "думать", что они по прежнему работают с памятью SMBX, но на деле, все известные адреса памяти сопоставлены с внутренними переменными и обновлённой структурой TheXTech. Это также позволяет запускать игры даже на процессорах отличных от x86 и имеющих другой порядок байт (например, на PowerPC или на MIPS). Возможности работы с памятью сильно ограничены встроенными в движок таблицами правил, эмулирующих память движка Super Mario Bros. X. Это сделано из соображений упрощения, безопасности, а также следованием цели поддерживать старые проекты, нежели создавать новые на основе "Автокода", что в прочем тоже применяется как временная мера до тех пор, пока не будет реализована полноценная скриптовая система на языке lua.
 ====== Возможности ====== ====== Возможности ======
-  * Расширение функционала уровней с помощью скриптов, позволяя вносить ранее невозможные изменения.+  * Расширение функционала уровней с помощью скриптов и встраиваемых подмодулей на C++, позволяя вносить ранее невозможные изменения.
   * Упрощение задач, ранее считавшихся сложными.   * Упрощение задач, ранее считавшихся сложными.
   * Полный контроль над игрой.   * Полный контроль над игрой.
  
 ====== Ограничения ====== ====== Ограничения ======
-  * Скриптовой язык является низкоуровневыми менее гибок, чем другие языки. У него не было таких важных фнукций, как переменные.+  * Скриптовой язык является низкоуровневым и менее гибким, чем другие языки. У него не было таких важных компонентов, как переменные. Из-за чего приходилось реализовывать более сложную логику в виде встроенных подмодулей на C++, наглухо встраиваемых в само расширение.
   * Требует навыков прямой манипуляции с памятью.   * Требует навыков прямой манипуляции с памятью.
 +
 +====== Проекты ======
 +На базе оригинального модуля LunaDll было выпущено по крайней мере два проекта по вселенной [[A2XT]].
 +  * [[asmbxt_episode1_analog_funk_a2xt1|A2MBXT, Episode 1: Analog Funk]] - первый и наиболее известный проект, созданный и выпущенный с использованием LunaDll v7 в 2014м году.
 +  * [[superb_demo_sisters|Superb Demo Sisters]] - небольшая игра, спин-офф по вселенной [[A2XT]], использовала чуть более новую версию LunaDll, но со временем, основная игра получала обновления.
  
 ====== Ссылки ====== ====== Ссылки ======
   * [[https://talkhaus.raocow.com/viewtopic.php?f=54&t=13469|Самое первое обсуждение, в котором представлена первая реализация LunaDll]]   * [[https://talkhaus.raocow.com/viewtopic.php?f=54&t=13469|Самое первое обсуждение, в котором представлена первая реализация LunaDll]]
 +  * [[https://wohlsoft.ru/pgewiki/LunaDLL|Описание модуля LunaDll на английском языке]]
  
lunadll.1683339494.txt.gz · Последнее изменение: wohlstand