DonHomka в день релиза .026 задал вопрос и изъявил желание помочь, но т.к. вопрос был в основной теме, а обычным юзерам это будет не интересно, лучше отвечу здесь.
я не стал отвечать сразу, т.к. мне ещё до этого самому хотелось осветить дальнейшие планы более развернуто.
в общем, первое, о чём надо сказать сразу - мне придётся отложить работу над мунлоадером на неопределённый срок, т.к. накопилось много других дел, которые были запланированы уже давно. версия 026, как бы иронично это не звучало в связи с проблемами после релиза, должна быть самой стабильной из всех. я продолжу выпускать исправления, если обнаружатся какие-то серьёзные баги, но не более.
второе: следующий релиз мунлоадера будет не про новые фичи, он будет полным рефакторингом с последующим переходом в опенсорс.
третье: после релиза 026 я собирался сделать ещё несколько вещей, касающихся муна, но из-за многочисленных проблем обновление сильно затянулось и теперь времени на них нет. поэтому хочу сделать что-то одно из этого, но не могу определиться, что нужнее...
входило в планы:
- дополнить вики информацией о всех изменениях 026; добавить описание типов; в колонку "опкод", на странице списка функций, выводить опкоды, которые были замены встроенными функциями, с отличающимся оформлением. это я в любом случае сделаю, но помощь была бы очень кстати.
- улучшить плагин для атома - переписать на javascript (т.к. весь атом переводят на js), заменить atom-space-pen-views на atom-select-list (т.к. он оптимизированный и весь атом тоже переводят на него), рассмотреть возможность использования LSR для автокомплита и других фич, это помогло бы заменить заброшенный автором atom-autocomplete-lua. проблемы: я совсем не знаю js и апи атома, делал плагин для атома почти вслепую, поэтому делать это придётся практически с нуля.
- рассмотреть смену атома на vs code, т.к. атом стал заметно тормознутее, как бы ни старались его оптимизировать. проблемы похожие: typescript я знаю ещё меньше, для vs code вообще ничего не делал, а главное, что история с атомом может повториться и с vs code.
- обновить moon imgui. с момента релиза imgui один раз обновлялся и сейчас автор работает над довольно крупным обновлением. хотелось бы обновить moon imgui на него, с улучшением луа биндингов для более удобного использования, и открыть исходный код. проблемы две: обновление ещё не готово, а изменения в биндингах могут привести к несовместимости версий.
- написать объёмный гайд (не вместо дефолтного), освещающий все подробности разработки под мунлоадер. нацеленный не только на тех, кто уже что-то знает и умеет, но и на новичков. проблемы: гайды у меня получаются так себе и их почти никто не читает.
в ближайшие планы не входило, но очень нужно мунлоадеру:
- менеджмент зависимостей: это уже стало больной темой, никто не хочет таскать с собой либы, потому что юзеры не умеют их устанавливать, потому что это лишние файлы, потому что... но использовать либы удобно и от них никуда не деться, поэтому с этим надо что-то делать. последней (но не окончательной) идеей на текущий момент является взятие пакетного менеджера LuaRocks за основу, с некоторыми изменениями под свою базу библиотек и автоматический запуск через мунлоадер, посредством перехвата вызова функции script_dependencies и автоматической установкой всех зависимостей. с помощью костылей это можно попробовать реализовать прямо сейчас без введения изменений в сам мунлоадер, могу описать подробнее, если это кому-то интересно.
- хуки скриптов. концепция такова: Lua-скрипты, исключительно с открытым исходным кодом, с определенным расширением (или в определённой поддиректории) внедряются в окружение каждого загружаемого скрипта и могут подменить любые вызовы, значения, события. при этом сами скрипты не имеют доступа к окружению хуков, если хуки сами этого не позволят. эта функция даст возможность реализовать многое: системы защиты от вредоносных скриптов на основе прав доступа, универсальные системы автообновления, менеджмента зависимостей, инструменты для отладки и т.д.
- улучшенная документация и документация на английском для привлечения большего количества разработчиков.
мечты:
- поддержка других игр серии и разных версий, с максимизированной совместимостью скриптов.
- классный сайт на каком-нибудь хипстерском домене, служащий лицом мунлоадера. ну и вообще, отдельный сайт полезен по многим причинам. когда увидел сайт Grav мне стало очень грустно, грустно потому, что это не сайт мунлоадера. что за grav вообще? оформление этого сайта создано под мун, а не какой-то там grav!
SAMP.Lua:
наконец, о самп.луа. я опишу то, чем он должен быть, а не то, что я собирался с ним сделать. над ним я тоже не смогу работать в ближайшее время.
в первую очередь, в нём должны быть события для всех существующих RPC и пакетов. затем, он должен стать лёгкой заменой сф, только с функциями сампа, ну и конечно же, тем самым перестать использовать сф. поддержка сампа должна быть мультиверсионной без установки каких-то отдельных версий библиотеки для разных версий сампа, всё это очень легко реализуемо в луа, но это нужно учесть сразу, даже если изначально делать поддержку только одной версии.
если кто-то действительно готов этим заняться, я готов помогать и предоставить реализацию необходимых функций, адреса и структуры из сф.
ну и разумеется, я накатал столько текста не ради того, чтобы излить душу, я жду фидбека и бурных обсуждений. особенно от (порядок рандомный)
@AppleThe,
@DonHomka,
@legend2360,
@randazzo,
@Boris Yeltsin,
@LUCHARE,
@Garrus,
@romacaddy,
@imring,
@deddosouru.