• Из-за обновления GTA 5 (был добавлен новый патч) может временно не работать вход в RAGE Multiplayer.

    ERROR: Your game version is not supported by RAGE Multiplayer.

    Данная ошибка говорит о том, что GTA V обновилась до новой версии (GTA Online тоже). Вам необходимо обновить саму игру в главном меню вашего приложения (Steam / Epic Games / Rockstar Games).
    Если после этого RAGE:MP все равно не работает - вам нужно дождаться выхода патча для самого мультиплеера (обычно это занимает от нескольких часов до нескольких дней).

    Новости и апдейты Rockstar Games - https://www.rockstargames.com/ru/newswire/
    Статус всех служб для Rockstar Games Launcher и поддерживаемых игр: https://support.rockstargames.com/ru/servicestatus


    Grand Theft Auto 5 (+ GTA Online) последний раз были обновлены:

Урок Roadmap под платформу RageMp [1/2]

MoonFusion

Гуру
Автор темы
high coder
14 Июн 2021
308
249
123

Не думал что вам так зайдёт прошлая статья, по этому ловите ещё одну, но на другую тему.

* Смайликом ( :durka_r: ) обозначена ирония/самоирония, постарайтесь не воспринимать эти тезисы в серьёз.
Я чутка решил разбавить скучный текст своими припадками шизофрении, надеюсь это поможет более легко воспринимать информацию, все же я не робот и не пишу свои темы с каменным лицом, по этому будет забавно почитать мои мысли во время написания этого шедевра топика.

Все так-же как и в прошлый раз, в этой теме я не пытаюсь преподнести контент как единственно верную истину, и не заставляю следовать этим советам, это лишь мой опыт, то что пришлось изучить мне на пути становления Senior Ragemp Developer ( :durka_r: ), прислушиваться к этому или нет - ваш выбор, я вполне адекватно воспринимаю объективную и даже субъективную критику, по этому добро пожаловать в комментарии.
Данная тема это некое руководство/roadmap для начинающих в этой сфере, я постараюсь довольно детально расписать необходимый стек технологий, аргументирую их выбор ( :durka_r: ), и расскажу про ресурсы с помощью которых можно будет все это изучить и которыми пользовался лично я, так же не хочу рассказывать вам о том что нужно больше практики, сколько нужно уделять времени в миллисекундах в день, не буду рассказывать про оптимальный подход к обучению, эта тема о другом. Не будем ходить вокруг да около, приступим.



Основы программирования ( + Теория программирования ):

Сразу же дам спойлер, далее по теме мы будем рассматривать связку NodeJS + TypeScript ( Server ) / JavaScript + TypeScript ( Client ), но есть небольшая проблема, JavaScript сам по себе очень плохой выбор для начала вашего пути в программировании, он может привить вам плохие привычки, и не даст понять что такое статическая типизация при его базовом изучении без TypeScript, по этому я крайне рекомендую выбрать другой язык для изучения основ.

Я не буду сейчас нести всякую чушь о том что вам нужно начать с низкого уровня, выучить С++, разобраться с контролем памяти, понять как работают процессоры, написать свой компилятор и потом пойти писать проект на платформе RageMp ( :roflanebalo: ), но все же начать следует с чего то, что соответствует следующим параметрам: компилируемый, со статической типизацией, мультипарадигмальный ( что бы это не значило :durka_r: ), под это описание полностью подходит C#, именно его я рекомендую использовать для изучения основ программирования.

С чего начать? Все просто - научится гуглить, да да, основы программирования начинают изучать именно с этого, в интернете давно существует огромное количество информации по интересующим вам темам, и в первую очередь научитесь искать информацию самостоятельно, рекомендую далее по ходу этой темы гуглить все неизвестные вам термины и тезисы.

После того как вы изучили вдоль и поперёк поисковую строку google.com дам вам несколько зацепок и направлений который нужно изучить в первую очеред

  • Тык - тут простым языком вам расскажут об основах программирования, используя "псевдо язык" ( :j3r: )
  • Тык - отличный материал по языку C#, с упором на синтаксис
  • Тык - здесь вам объяснят что такое client-server взаимодействие
  • Тык - ООП парадигма, очень важно хорошенько понять эту тему ( я не понял :durka_r: )
Сразу оговорюсь, я бы посоветовал вам какие-то книжки, но увы, после прочтение книги Герберта Шилдта о С++, у меня психологическая травма :durka_r:, по этому я впитываю информацию с других источников, если кому то более интересно и более продуктивно получать информацию из книг - гуглите "топ 10 аниме книг по тема" и читайте первые две.

И только после того как вы поняли базу-фундамент на примере C#, следует идти дальше в наш любимый JavaScript :peppe_roller:, о чем мы и будем говорить далее.



JavaScript ( + TypeScript ):

Да бы не сильно растягивать тему ( я знаю что я мог сэкономить буквы вырезав предыдущую тему, так-как её и так скипнут, но я все же надеюсь на благоразумие начинающих Senior Ragemp Developer'oв :durka_r:), я не буду разделять все эти темы, а постараюсь лаконично вместить все сюда.

JavaScirpt + TypeScript


После изучение основ я крайне рекомендую использовать все же связку JavaScript + NodeJS/TypeScript для работы в этой сфере, аргументирую я это следующим:

  • Больше ресурсов и документации для RageMp
  • Более щадящий синтаксис, много сахара ( что по моему профессиональному :durka_r: мнению все же плюс )
  • Существование TypeScript ( если бы его не было, я бы посоветовал C# )
Расскажу про изучение, сам по себе JavaScript является интерпретируемым языком с не строгой типизацией, что доставит нам сложностей на этапе разработки, таких как:
  • Сложность деббага ( JavaScript не имеет своего статического анализатора, что усложняет поиск потенциальных ошибок ), сейчас много кто пойдёт писать гневный коментарий про ESLint, или JSHint, но это не решает всех проблем с трудностями деббага.
  • Отсутствие статической типизации ( вот вам и проблема, которую не решает ESLint ) что явно приведёт вас к куче проблем, особенно если вы планируете где-то работать в команде.
  • Ошибки на стадии выполнения, если вы не дай бог где то допустили ошибку в коде, интерпретатор JS не сможет вам её отобразить на этапе интерпретации, он просто транслирует ваш код вместе с потенциальными ошибками, в следствии чего вы получите ошибки на этапе выполнения, и если в процессе разработки это не так критично, хоть и не удобно, то на этапе релиза вашего кода это может стать причиной вашего увольнения с Atom Community :durka_r: + :roflanebalo:.

И так, все три проблемы решает чудо инженерной мысли, гениальное творение человека который не смог придумать оригинальное название для своего инструмента - TypeScript, он буквально решает все проблемы JS и позволяет комфортно писать код на этом языке.

TypeScript - это расширение над JavaScript, по сути это обёртка, которая добавляет вам типы, компилирует ваш TS код в JS код, при этом не даст вам просто так скомпилировать код с ошибками, он будет ругать вас за неправильное использование типов, объявление констант без значений, неправильный набор аргументов для функций/методов и много чего ещё.

Что же, выше была аргументация выбора именно этих технологий, теперь же перейдём к самому процессу изучения.
Стоит начать с изучения синтаксиса JS, даже на примерах Web сферы, разницы нет, синтаксис останется неизменным и в NodeJS/TS.
Для этого я крайне рекомендую ресурс - learn.javascript.ru, он проведёт вас в мир грёз и фантазий, научит всему чему надо и даже немного поводит своим event(za)Loop по вашим eventLips ( :durka_r: )

Далее, как я и сказал ранее, нам понадобится TypeScript, я думаю вы уже познакомились с сайтом metanit, на нём так же есть подробный гайд на TypeScript и я крайне рекомендую прочитать его, я вас уверяю, если вы изучали C# - изучение TypeScript займёт у вас неделю, а то и меньше ( когда я прошел собеседование на Atom Community я знать не знал о TypeScript, а мне задали сделать тестовое на нём, с чем я вроде как неплохо справился за день ).

Изучили? Не стоит задерживается, идём дальше.



NodeJS ( Серверная часть ):

Что такое NodeJS? Представьте себе JavaScript, который выполняется не в браузере, а скажем у вас на ПК, либо на сервере, вот это по сути и есть NodeJS.
Он позволяет выполнять код написанный на JavaScriptна серверной стороне, как он это делает? Если интересно - гуглите, тема не об этом.

Стоит упомянуть некоторые важные детали для более глубокого понимания:

  • Асинхронность - Node.js использует неблокирующий ввод/вывод ( I/O ), что означает, что операции ввода/вывода не блокируют исполнение других операций, это позволяет эффективно обрабатывать большое количество запросов и обеспечивать высокую производительность.
  • EventLoop и однопоточность - то за что многие НЕ любят NodeJS, так как ни черта не понимают, дело тут в том что NodeJS не поддерживает многопоточность, а в место этого использует EventLoop для обработки асинхронных операций и управления потоком ( обязательно почитайте об этом, это важно, иначе как вы заткнете рот этому наглому HRу, который набрался словечек по типу многопоточность )
  • Серьёзный недостаток связанный с однопоточностью - NodeJS не любит сложных вычислений, так называемых "high load CPU", это единственная причина по которой стоит отказаться от NodeJS в сторону того же C#, который умеет в многопоток. ( но мы тут вообще то пишем на платформе RageMp, это нас вообще волновать не должно :super_klass:).
Выше я уже писал почему мы используем JavaScript ( client ) + NodeJS ( server ), а не C#, но стоит кое что добавить, не столько значительное что бы перечислять в аргументации, но достойное упоминание - если вы выбираете NodeJS, ваш проект будет использовать JavaScript окружение как на клиенте, так и на сервере, что в разы облегчит вам сборку проекта и упростит работу с окружением.

Впитали в себя эту информацию, двигаемся дальше, к изучению NodeJS, по сути изучать тут почти нечего, так как мы не будем использовать всю мощь этого инструмента для задач под платформу RageMp, по этому идём на сайт metanit, и читаем про NodeJS поверхностно, там же узнаём как все это дело развернуть у себя на ПК и запустить свой первый сервак для общего развития.

Далее быстро пробегаемся по таким вещам как пакетный менеджер npm, и читаем про npx.
Все, вы почти Junior Backend Developer ( нет :j3r: ), идём дальше.

Webpack/Esbuild/Parcel ( сборщики ):

И так, у нас тут на проекте уже NodeJS ( server-side ) / JavaScript ( client-side ) / NPM пакеты, да ещё и TypeScript сверху, как все собрать в кучу, да так что бы все работало? Использовать сборщик на любой цвет и вкус, они нужны для сборки вашего сложного проекта с кучей разных файлов, технологий, модулей в просто билд для релиза. Как? Я уже устал объяснять что тема не об этом, если интересно - гуглим.

Но как и с NodeJS давайте обговорим важные моменты связанные со сборщиками, что они умеют и как их использовать, а главное, какой выбрать, ведь их существует огромное количество, на любой вкус, цвет и длительность сборки ( привет webpack :j3r: ):

  • Первая и самая основная работа сборщика - собрать все ваши файлы разных типов ( будь то картинки, .ts, .js, .json, и т.д. ) в один, или несколько так называемых "бандлов" учитывая все зависимости собираемых файлов, в процессе оптимизируя и сжимая код.
  • Сжатие ( минификация ) - как упоминалось выше, ваш код не только собирается в один, или несколько бандлов, подтягивая все зависимости но и оптимизируется/сжимается, что это значит? Сборщик буквально проходится по вашему коду, убирая комментарии, пробелы, переходы на новую строку, заменяет имена переменных на символьные что уменьшает объём файлов и полностью убивает их читабельность ( это дополнительно защищает ваши билды, если они попадут не в те руки, так нежелательные персоны не получают весь исходный код )
  • Оптимизация - сщуествует огромное количество инструментов которые позволяет так или иначе оптимизировать код: сжатие файлов, кэширование ресурсов, оптимизация изображений и т.д., мы не будем рассматривать в это, но вы можете погуглить.
  • Обфускация - дополнительно сборщик может провести так называемую "обфускацию" ( найс слово, еле загуглил :durka_r: ), по сути это почти то же самое что и минификация, только это уже целенаправленное усложнение ревёрс-инженеринга вашего кода, с дополнительным шифрованием участков кода.

Теперь когда мы знаем что это такое, встаёт вопрос какой выбрать? На самом деле в большинстве проектов вы встретите Webpack, это мощнейший инструмент, самый популярный сборщик, но у такой силы есть своя цена..


1686306026362.png


Да, я говорю про время сборки, то чувство когда поставил билдиться фронтенд, покакал, покушал, а он все ещё билдится, да это мощный инструмент, но довольно сложный в настройке из-за изобилия функционала, и неприятный на вид, аналоги не сильно отличаются, но именно webpack завоевал основную долю в проектах ( webpack был разработан ещё в далёком 2012 году, думаю отсюда и такая популярность ).

Скажу честно, в последнем проекте я решил избавится от webpack и попробовать относительно новый и свежий esbuild ( был разработан в 2020 году ), я был в восторге, файлик с настройкой содержал в себе 15 строк кода и все прекрасно работало, но вот нашему фронтенд разработчику esbuild оказался непреодолимым барьером, то ли он ленивый алкаш, то ли esbuild не предоставляет тех инструментов, которые ему были нужны.

Справедливости ради я сам столкнулся с проблемой, у меня не работали декораторы с esbuild, и так как на тот момент у меня не было ни сил ни времени разбираться в чем проблема, я просто накатил webpack :super_klass:

Вроде разобрались какой выбрать ( любой, если кто не понял ), теперь перейдём к его изучению, тут все проще простого, выбираем для себя сборщик, заходим на его официальный сайт, переходим в раздел документации и читаем, это наверное единственно правильный подход при изучении подобных инструментов, ведь тут нет определённых договорённостей и общих спецификаций, никто не расскажет вам как правильно настроить сборщик именно под ваш проект. По этому изучаем инструмент и пользуемся.

Для примера, документация Webpack 5;
Все, идём дальше.



Далеко собрались? Тема то не резиновая, да и я вам не печатная машинка, хочу кушать и все такое.
А если серьёзно, тут и так довольно много контента для изучения, по этому я решил не грузить вас огромной темой на триллион символов, я разделил эту тему на две части, во второй мы изучим ещё пару очень важных тем, таких как Базы данных, и прочие инструменты которые вам может нужны, а может и нет.
Накатите пару комментариев, очень интересно ваше мнение, так же тема открыта для дополнений, старайтесь ясно изложить ваше дополнение и красиво оформить, после чего я могу добавить ваш ответ в тему.

Спасибо что уделили мне время.
 
Последнее редактирование:

wholinc

Специалист
24 Янв 2023
772
453
95
23
а говорят chatGPT сложно добавить на форум)
upd: Бегло прочитал всю тему, это огромный труд автора. Если есть реально люди с амбициями и желанием начать че то делать, а не дрочить картинки на редаге то это их огромный шанс полегче влиться в эту тусовку. Это конкретно теория как нужно начать, никак писать код или значение функций. Это конкретно объясняет тебе для чего нужен этот ваш node js и почему то или иное необходимо.
 
Последнее редактирование:
  • Like
  • Haha
Реакции: MoonFusion и MiLT

MoonFusion

Гуру
Автор темы
high coder
14 Июн 2021
308
249
123
upd: добавил более точное описание асинхронности NodeJS
 

stage

Специалист
14 Сен 2020
229
106
96
Webpack лучше не юзать, крайне медленный и ху$вый сборщик, статья годная, +rep
 
  • Durka
Реакции: dooj, Inoi и NITRO.dev

Harland David Sanders

Куратор портала
Команда форума
Куратор портала
VIP
high coder
media
10 Сен 2020
3,060
2,451
219

MoonFusion

Гуру
Автор темы
high coder
14 Июн 2021
308
249
123
Webpack лучше не юзать, крайне медленный и ху$вый сборщик, статья годная, +rep
Webpack не плохой сборщик, это надёжный инструмент с кучей функционала, в теме я рассказал о том что он достаточно сложный в настройке и медленнее конкурентов в рамках каких-то тестов, но на реальных проектах это слабо ощущается)
 
  • OK
Реакции: stage

MaxFanti

Активный участник
5 Апр 2022
3
1
43
Даже добавить нечего, все четко и без воды :)