[эксперимент второй] Minecraft, Lua, MCP

Добавлен , опубликован
Уже довольно давно я занимаюсь тем, что в свободное время ковыряюсь во внутренностях Minecraft-а. Вначале исключительно с познавательным интересом, затем - в качестве технического администратора небольшого сервера. Так что темой второго "эксперимента" будет Minecraft с точки зрения программиста, а также различные извращения на его основе.
Что касается MCP - это самый популярный инструмент для декомпиляции майнкрафта, так что было бы странно не упомянуть его в заголовке.
Ну а теперь о самом интересном - каким же боком Lua относится к этой теме? Да никаким, по крайней мере на данный момент. Как некоторые, возможно, знают - сейчас в mojang ведется активная довольно вялая работа над официальным Plugin API. Если коротко, то это что-то похожее на буккит или даже на spoutcraft, но намного лучше - код в плагинах будет предназначен для сервера, а клиент получает пакет "ресурсов", преимущественно состоящий из текстур, звуков и характеристик объектов. Таким образом, с чистым клиентом можно зайти на любой сервер, а за счет ресурспака все нестандартные объекты будут правильно отображаться и работать.
К сожалению, пока еще очень далеко до реализации этой утопической идеи, да и после останется масса неразрешимых проблем, вызванных принципом "клиенту доверять нельзя - вся логика на сервере". К примеру, нестандартный UI потребует обработки действий игрока на стороне сервера, что приводит к задержке и прочим неприятным вещам (представьте выпадающий список, открывающийся и закрывающийся по пол секунды).
Одним из способов решения этой и некоторых других проблем может стать использование легковесного скриптованого языка с поддержкой сандбоксинга. Текст скрипта на таком языке заслуженно займет свое место среди ресурсов, а значит будет доставлен на клиент, а за счет полной изоляции скрипта от системных функций устраняется опасность заражения компьютера чем-нибудь венерическим по вине недобросовестных админов сервера.
Думаю, все уже поняли к чему я клоню - именно Lua полностью соответствует выдвинутым требованиям и даже превосходит их. Для начала это будет любительский проект для личного потребления, а дальше, чем черт не шутит, может даже удастся заинтересовать парней из mojang.
Прежде чем переходить к серьезным вещам вроде интеграции Lua с майнкрафтом и самопальной системы динамического назначения id блокам, я собираюсь осветить несколько тем по проще:
  • Новый лаунчер от mojang.
  • Изменения протокола авторизации.
  • Процедурная генерация мира и предгенерация, как альтернатива генерации "на лету".
Итак, второй эксперимент объявляется открытым. Предметная область - программирование, объект исследования - Minecraft.
Cледующая запись: Minecraft, новый лаунчер