Я специально написал этот топик здесь, потому что просто хочу высказаться.
Вспомните классическую roadmap любого популярного языка программирования. Всё начинается с основ: общая информация, примитивы, базовые встроенные инструменты. Потом изучение парадигм под конкретный язык. И, наконец, переход к теме проектирования.
Короче, это объясняет любой курс/плейлист по Java, C++, C#, JavaScript и так далее. Даже отдельные фреймворки объясняют через общепринятые в продакшене решения.
Но с luau-обучением происходит что-то явно не то. Как в русском сообществе, так и зарубежном. Почему программисты на этом языке так упорно игнорируют архитектурные вопросы?
Обучение выглядит так: вот есть переменные такие-то. Потом функции. Вот чуть-чуть ООП на прототипах. И всё! Дальше в открытое плавание.
По моему болезненному опыту — это убивает будущего скриптера. Любой первый проект чуть сложнее кликера превращается в адские мучения. Сначала они могут быть не видны. Но чем дальше в лес — тем больше шкибиди доп-доп йес-йес. Любое задание геймдизайнера приводит в кромешный ужас. Конечно, перед такой-то раздутой кодовой базой…
И казалось бы, посмотри решение на DevForum. Но аааааа! Там часто нет объяснения. Разве что пару топиков про ООП подходы. Не больше. Шаблонов проектирования — нет. SOLID – нет. Или я плохо искал? ![]()
Остаётся просто гуглить. Однако вы ничего не найдёте. Вас обязательно закинет в мир других языков программирования. Вы становитесь зависимы от уроков на Java, C++ и любом другом языке. Причём эти языки принципиально отличаются от luau.
Я долгое время изучал базовые архитектуры по типу MVP и MVC исключительно на JavaScript примерах. Стоит напомнить, что такие вещи используют 90% крупных проектов на Roblox. Просто никто особо не задумывается.
Так что молодому скриптеру придётся освоить механизм транслирования. А это головная боль…Luau не имеет многих инструментов популярных языков. Так что приходится выдумывать костыли.
Лично я таким способом изучал всю ООП-составляющую. Спойлер: до сих пор не доучил до конца из-за запутанной реализации на выходе. Сюда же паттерны из моего поста про книгу.
Про ECS вообще промолчу. Везде пишут про библиотеки на luau, например, jecs. Но никто не говорит, как это работает изнутри. Я видел только одну статью от моего знакомого на DevForum. Но честно, она объясняет просто принцип. Не более. Так что мне пришлось лезть в самые дебри C++ gamedev разработки.
Читать код библиотек — не вариант с моей точки зрения. Вы просто не поймёте, что за монолитным кодом скрываются какие-то идеи по типу архетипов.
Получение знаний превращается в: найди решение, изучи кратко другой язык, протранслируй знания в luau, реши проблему на luau.
Абсолютным peak является то, что эти шаблоны/паттерны являются базовыми. Их изучают в начале junior-разработчики. На любом собеседовании в IT-компанию на Java, C++, C# вас будут дрючить этими подходами.
Проблема трансляции, конечно, исправляется обучением какого-нибудь roblox-ts. Да, его синтаксис близок ко многим ООП-языкам. Но давайте честно…Сколько % roblox ребят его использует? Из моего окружения: Tesmi и cr1zied.
Окей. Обойдёмся без ООП-парадигмы. Всё-таки luau у нас не особо предназначен для таких задач. Но и тут облом! Обучение фишкам функционального/процедурного программирования опять находится в тени luau-обучения. Как так-то? Приходится лазить в похожие языки и опять заниматься трансляцией.
Так что мой главный вопрос: не слишком ли много действий приходится совершать, чтобы решить базовую проблему?