Перейти к основному содержимому

Эффективная разработка в Garry's Mod

· 8 мин. чтения

UPD 2022.06.19

В посте большая часть посвящена SublimeText и его плагинам, но спустя несколько лет его использования я с какой-то десятой попытки все-таки перешел на VSCode и жалею, что не сделал этого раньше.

Рекомендую прочесть статью, но вместо SublimeText устанавливать VSCode, потому что потом из-за привычек будет труднее перейти на него. Все плагины есть на оба редактора

UPD 2023.07.23
  • В посте упомянут плагин SFTP. Я заменил его на VSCode Remote – SSH. По ссылке отдельный пост про этот плагин. Очень крутой плагин.
  • Помимо него, советую замену плагина, который ниже упомянул в разделе "GLua синтаксис" на Lua Language Server. Когда установите, напишите команду в VSCode Lua: Open Addon Manager и установите оттуда поддержку glua (синтаксис, документация функций и т.д.). Так и называется – Garry's Mod

Я занимаюсь Garry's Mod'ом с 2015 года, начиная с администрирования чужого сервера и до создания своего проекта, где большинство разработок были самописны (не куплены), а сервера проекта в свое время были в топ-10 мира по рейтингу GameTracker.

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

к сведению

Я старался сделать пост максимально сжатым, поэтому некоторые детали по установке или настройке упустил. Если возникнут вопросы, вы можете задать их мне в телеграм чатике

Как все выглядит в идеале

Я могу прийти к другу, скачать на его ПК GitHub Desktop, VSCode с плагином SFTP, xShell или Putty для подключения к VDS (чтобы видеть консоль) и уже заниматься разработкой.

Мне не нужно скачивать ему Garry's Mod, сборку сервера, либо даже Filezilla. Все, что нужно это скачать GitHub репозиторий (10 сек), открыть его в VSCode (1 сек), внести нужные правки (X сек) и SFTP плагин для VSCode сам загрузит их на VDS сервер через SFTP, когда я нажму Ctrl + S (0 сек).

Софт, который будем использовать

xShell (вместо Putty)

Главное преимущество это очень удобное управление сессиями и окнами на экране. На больших разрешениях даже банальная замена Putty на xShell дает значительный (хотя и далеко не самый большой прирост эффективности)

На Mac я использую hyper.is. Еще интересно выглядит warp

SublimeText вместо Notepad++

Нотпэд безусловно был хороший текстовый редактор, но его функционал не позволяет делать ничего интереснее, чем тупо редактировать файлы. Саблайм с плагинами будет самым ценным, что повысит нашу эффективность

SublimeText с темой Afterglow

Не обязательно, но я использую

  • GitHub Desktop , чтобы синхронизироваться между несколькими своими компьютерами, а также вести учет изменений на своих проектах
  • CyberDuck на замену громоздкой FileZilla, которая не умеет ничего, кроме задалбывания сообщениями о бесполезных обновлениях. Вообще, FTP клиент после этой статьи нужен будет нам в очень редких случаях. Я запускаю его не чаще раза в месяц

Плагины для SublimeText

Плагины будут показывать нам на ошибки в коде прямо в процессе его написания, будут заниматься синхронизацией файлов сервера с локальным компом и ускорять навигацию в коде

Все плагины устанавливаются через один единственный плагин PackageControl, который устанавливается одной командой и позволяет сделать из простого текстового редактора красивую и мощную IDE

GLua синтаксис

Аналогичный плагин для VSCode: клик

Для установки этого плагина, нажмите в саблайме Ctrl+Shift+P, введите Install Package, затем выберите glua

GmodLua (glua) немного отличается от чистого Lua. В нем есть особенности синтаксиса, а также функции, которых нет в чистом Lua. Плагин сделает ваш код визуально красивее.

После установки плагина в Sublime Preferences > User Settings нужно будет добавить блок ignored_packages, а в него добавить Lua, чтобы он не конфликтовал в glua:

Мой файл настроек саблайма. Здесь настраивается тема, шрифт, а выделенным показано то, что вам нужно сделать, чтобы glua не конфликтовал с Lua

SFTP - избавляемся от FTP клиента

Аналогичный плагин для VSCode: клик

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

Хранение файлов на компьютере не будет являться проблемой, зато появится возможность быстрого поиска кода по всем файлам сервера сразу. Более того, если с сервером что-то случится - у нас всегда будет локальный "бэкап"

Пример файла настройки и инструкция находится здесь. По ссылке есть пример настройки и для VSCode, называется sftp.json. Для Sublime это sftp-config.json

LuaDev - удаленное выполнение кода

Аналогичный плагин для VSCode: клик

Этот плагин позволяет вам выполнять код на сервере или клиенте сочетанием клавиш Ctrl + 1/2, а это, wait a minute, меньше секунды времени вместо постоянного лазания в файлах.

Еще в далеком 2015 году я снимал видео установки. Если ссылки с видео устарели - пишите мне в телеграм чатик. Вот некоторые из них: luadev аддон для сервера, luadev плагин для саблайма (форк. Noiwex удалил свой GitHub)

Чтобы работали сочетания клавиш, нужно добавить в ваши key bindings (ищите в панели инструментов Sublime) нужные сочетания:

[
{ "keys": ["ctrl+1"], "command": "lua_send_self"},
{ "keys": ["ctrl+2"], "command": "lua_send_sv"},
{ "keys": ["ctrl+3"], "command": "lua_send_cl"},
{ "keys": ["ctrl+4"], "command": "lua_send_sh"}
]

Glua Lint - подсветка ошибок в реальном времени

Аналогичный плагин для VSCode: клик

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

Красным выделена синтаксическая ошибка

Перед установкой плагина сначала нужно скачать glualint.exe "модуль", закинуть его в удобную папку и прописать путь к ней в PATH системы (как это сделать?). После этого откройте командную строку Win+R > cmd.exe и введите там glualint. Если появляется ошибка, то плагин для саблайма работать не будет. Именно этот модуль отвечает за определение ошибок в коде.

Только теперь можно открывать саблайм и устанавливать сам плагин. В Ctrl + Shift + P пишем Install Package, затем ищем glualint (SublimeLinter-contrib-glualint). Чтобы этот плагин работал, необходимо установить еще SublimeLinter. Он так и называется. Подробнее процесс установки Glualint описан тут.

Если возникли вопросы или нужна помощь с установкой и настройкой, напишите мне в телеграм чатик

Еще для SublimeText

  • Плагин Sidebar Enchancements добавляет кучу функционала в контекстное меню сайдбара
  • Тема Afterglow Blue моя любимая уже вот более 5 лет и не надоедает
  • Классный шрифт для разработки - Input Mono
  • Плагин Trailing Spaces позволяет одной кнопкой убрать все лишние пробелы в конце строк
  • Плагин Alignment сочетанием клавиш позволяет выравнивать строки под одну длину, что экономит огромное количество времени, если вы любите красивый код
  • Привыкните к сочетаниям клавиш Ctrl + P (переход к файлу), Ctrl + G (переход к номеру строки), а также Ctrl + R (переход к функции) и вы больше не заходите покидать саблайм
  • В саблайме есть разделение на проекты. Проект это как сейв-файл текущего окружения. Оно сохраняет открытые файлы и тд. Если у вас несколько разных серверов, то может помочь держать редактор в чистоте

Особенности разработки

  • Удобно заливать и обновлять аддоны в Workshop можно через workshopper. Можете еще посмотреть Crowbar. UPD 2022.07.17: сейчас на windows актуальнее всего gmpublisher.
  • Удобнее всего заниматься разработкой не на своем компе, не на живом, с игроками, а именно на отдельном Dev , который тоже на хостинге
  • FastDL нужен для особых файлов, например, шрифтов. Но через Workshop большой контент скачается намного быстрее. Не стоит настраивать FastDL, просто ради факта, если он вам не нужен
  • GitHub не требует много времени для изучения базовых фишек, а их вам будет достаточно для того, чтобы сделать жизнь лучше. Вы сможете смотреть код с любого момента времени, синхронизировать код между своими компьютерами, откатывать изменения, которые привели к багам и тд. Мой .gitignore для понимающих
  • Trello позволяет вести более организованную разработку и не только. Пример, как его применял в гмоде я: задачи, персонал.

Еще скрипты для сервера

  • WSDL - идеально для всех, у кого есть файл а-ля workshop.lua с кучей строк вида resource.AddWorkshop(id). Этот скрипт автоматически делает это для всех аддонов вашей серверной коллекции и вам больше не нужно будет изменять никакой файл при добавлении нового аддона в коллекцию
  • FProfiler - определение скриптов и участков кода, которые потребляют больше всего процессорного времени (грузят сервер)

fprofiler - обнаружение тяжелых участков кода

  • DASH - библиотека с полезными функциями. Сама по себе ничего не делает, но разработчики могут найти там много полезного
  • IGS - наш автодонат для Garry's Mod. Именно для наших клиентов я и начал писать эту статью. Мы помогаем зарабатывать проектам больше, чем позволяет самопис или ручной прием платежей

IGS (InGameShop) - серверная часть автодоната для Garry's Mod проектов. На фото 2 версия интерфейса

  • ggram - мой фреймворк, позволяющий работать Telegram ботам прямо на Garry's Mod сервере. С их помощью я могу управлять сервером прямо через мессенджер. Если вам интересно, как я это делаю – напишите мне
  • EPOE - смотрите консоль сервера прямо из игры. Требует отдельный dll модуль, поэтому читайте readme по ссылке

epoe - внутриигровая серверная консоль


В статье собраны не все инструменты, которые я использовал при разработке и администрировании своего проекта, чтобы статья получилась не слишком громадной. Если вам интересно узнать что-то еще, то можете спросить у меня в телеграм чатике и еще посмотреть тут.

Также я буду рад, если кто-то подскажет еще какие-то интересности. Так что не стесняйтесь и пишите мне :)