- Сообщения
- 8,030
- Решения
- 14
- Реакции
- 6,805
Автор: SilverShot
Перевод и техническая редакция: Dragokas
Дополнения: разработчики и сообщество SourceMod
Источник: AM
Перепубликация перевода на другие ресурсы запрещена!
Перевод и техническая редакция: Dragokas
Дополнения: разработчики и сообщество SourceMod
Источник: AM
Перепубликация перевода на другие ресурсы запрещена!
Оригинал перевода статьи размещён на форуме hlmod.ru в этой теме. Пожалуйтса, оставляйте свои комментарии там.
Пожалуйста, внесите свой вклад в наполнение этой темы, советуя изменения, ссылки и другую информацию.
Ремарка от переводчика:
На перевод меня сподвигло желание донести до русскоязычной аудитории эту замечательную статью от SilverShot.
Автор имеет 10-летний опыт скриптинга для игр, в основном серии Left 4 Dead, и более 100 опубликованных работ.
К сожалению, маловероятно, что на AM статья будет обновляться, т.к. автор объявил о своём уходе со сцены.
Вероятно, я также перестану заниматься SourcePawn, т.к. мой сервер L4D1, некогда попадавший в TOP-1 мира по версии GameTracker, сейчас переживает не лучшие времена со значительным оттоком игроков, впрочем как и у всех, так что это может быть моим прощальным подарком сообществу. Я обещаю поддерживать тему какое-то время.
Будет круто добавить сюда лучшие практики из CS:GO и др. популярных игр. Давайте создадим отличную базу знаний общими усилиями!
Примечание: в статье есть множество отсылок на англоязычные источники. Их перевод мною не планируется. Однако, если вы нашли русскоязычный аналог, просьба сообщить в ЛС и я заменю ссылку.
Содержание:
11. Отладка плагинов
12. Компиляция плагинов
13. Публикация плагинов
Дополнения:
Терминология:
Инфа от переводчика:
Чтобы рядовой читатель не сбился среди множества новых понятий, я решил сделать вводную о взаимозаменяемости терминов и сокращений, которые используются далее в переводе.
Напишите в комментариях, если вам требуются пояснения для других терминов.
Термин | Перевод (аналоги) | Описание |
---|---|---|
Script | скрипт, скриптинг, кодинг | файл с исходным кодом и сам процесс его написания |
Cvar, ConVar (Console Variable) | квар, переменная консоли | Существуют как собственные квары игры, так и создаваемые через SourceMod. |
Handle | хендл, дескриптор | число, указывающее на системный объект внутри SM, через которое можно им манипулировать. Большинство других видов объектов - это производные от Handle (например, ConVar) |
Entity | энтитя, сущность | внутри-игровой объект, которым можно манипулировать через его индекс. Пример - клиент (игрок, CTerrorPlayer). |
Prop | проп. Применяется в 2 значениях: | |
- как свойство сущности (пример, - цвет ("color") - это имя свойства; Prop_Send / Prop_Data - типы свойств) | ||
- как один из классов сущности (например, prop_dynamic). От класса зависит поведение сущности, набор доступных в ней свойств и пр. | ||
Particle | партикль, частица | Пример - огонь. |
UserMessages | пользовательские сообщения | особый тип сообщений передаваемых по сети клиенту. Пример - сообщения чата |
TempEnts | временные сущности | похожие по принципу с UserMessages, но предназначенные для графической составляющей, например, следы от пуль. Чем-то схожи с партиклями. |
Spawn | спаун, спавниться | появляться, создаваться |
Patch | патч | изменение в памяти процесса |
Hook | хук, хукать | ставить прослушку на событие с дальнейшей возможностью (или без) его изменения |
Detour | детур, обход, перехват | тоже самое, только для функций игры. В отличие от хука, не предусмотрен игрой, и обычно ведёт к выполнению вашего кода вместо функции игры, с возможностью или без её продолжения |
Callback | колбек, процедура обратного вызова | функция или процедура в вашем коде, указатель на которую вы передали. Она вызывается каждый раз при наступлении события / срабатывании условия. |
Listen Server | "слушающий" сервер | установленный поверх вашей же игры |
Local Dedicated Server | локальный выделенный сервер | сервер на вашем ПК, установленный отдельно от файлов игрового клиента |
Server Crash | креш, падение | серьезный сбой в функциях игры, ведущий к закрытию (и перезагрузке) сервера. Исходный процесс завершается. |
Client Crash | тоже самое, но для игрока (игрового клиента). При этом, сервер не обязательно падает. | |
Native | натив | читайте далее по теме |
Forward | форвард | читайте далее по теме |
Parser | Парсер | код, реализующий разбор сложной структуры данных на отдельные компоненты |
Init, Initialization | Инициализация | начальная стадия, при которой объект получает все необходимые для его первичной работы свойства. |
Compilation | Компиляция | процесс преобразования исходного кода (например, sp) в исполняемый код (smx) с инструкциями или псевдо-кодом, понятными для процессора либо транслирующей его промежуточной программы. |
Validation | проверка, валидация, верификация | определение объекта как такового, что является действительным, т.е. он существует и доступен для выполнения с ним некоторых действий. |
1. Основы SourceMod и документация:
Я хочу подчеркнуть, на сколько сильно вам может помочь изучение большого числа различных плагинов и примеров при обучении языку.
Используйте find для поиска кваров (cvar, консольных переменных) и команд, введя "find <ключевое слово>" в серверную или клиентскую консоль. Они могут возвращать разные результаты, например, квары специфические только для сервера или клиента.
Новичкам в скриптинге:
- Introduction to SourcePawn - "Базовый обзор основ написания скриптов"
- Introduction to SourceMod Plugins - "Базовое введение в написание плагинов SourceMod"
- SourceMod Scripting - "Эта категория содержит статьи о написании скриптов SourceMod с помощью SourcePawn"
Полезные ресурсы:
- Scripting API Reference - Список всех функций, доступных в SourceMod.
- Scripting API Reference - Тёмная тема.
- SourceMod Development - "Эта категория содержит статьи о разработке расширений (extensions) для SourceMod" (продвинутый уровень)
- Valve Wiki - Масса отличной информации, начиная от подробностей о сущностях (entities) вплоть до VScripts (CS:GO / L4D2).
Нажмите на первую ссылку выше и выберите вашу конкретную игру.
- Сторонние инструменты - например, распаковщики .VPK архивов, .nuc VScript декодеры, декомпиляторы .BSP карт в исходник и его запуск с помощью Hammer Editor - полезен, чтобы узнать, как карта выполняет те или иные действия.
В CS:GO и L4D2 вам может захотеться воспользоваться плагином VScript File Replacer для декодирования и создания дампа VScripts.
- Ещё больше сторонних инструментов - Перечень от Dragokas.
- AlliedMods Cross-Reference - Различные SDK и исходный код AlliedMods для SourceMod и MetaMod.
- HL2SDK - Для продвинутого исследования работы движка, там вы можете найти исходный код.
- Plugin List - Поиск по всем плагинам.
Русскоязычные ресурсы:
- Уроки от R1KO - очень полезно для начинающих и как напоминание для профи.
- Продвинутые руководства от Kailo - внутренности smx, ассемблер, структура памяти и т.п.
Последнее редактирование: