Skip to content

Commit

Permalink
guide fix5
Browse files Browse the repository at this point in the history
  • Loading branch information
Artemchik542 committed Jul 9, 2024
1 parent 4b3b821 commit 00c724e
Showing 1 changed file with 22 additions and 16 deletions.
38 changes: 22 additions & 16 deletions massmeta/modularization_guide.md
Original file line number Diff line number Diff line change
Expand Up @@ -4,13 +4,13 @@

## Вступление

Проект МассМета - это, постоянно обновляющаяся, модульная ветка от проекта /TG/station. Тут мы добавляем свои фичи и по возможности откатываем неудачные. Прочитав эту инструкцию - Вы поймете как правильно нужно внедрить к нам Вашу фичу, чтоб ее могли увидеть в свет другие игроки нашего сервера.
Проект **МассМета** - это, постоянно обновляющаяся, модульная ветка от проекта /TG/station. Тут мы добавляем свои фичи и по возможности откатываем неудачные. Прочитав эту инструкцию - Вы поймете как правильно нужно внедрить к нам Вашу фичу, чтоб ее могли увидеть в свет другие игроки нашего сервера.

Несоблюдение данного руководства приведёт к стогнации код-базы проекта, как это было до. Осознав наши прошлые ошибки - было принято решение привести проект к модульности подобно той, как на серверах Skyrat, однако доработанной под наши конкретные нужды. [Оригинальное руководство](https://github.com/NovaSector/NovaSector/blob/master/modular_nova/readme.md) (на англ.)

⚠️ **Все Баг-фиксы, изменение не Наших карт и тем более уже рефакторы кода - Вам нужно будет заливать именно в апстрим /TG/station !**

### Про тестирование своих PR'ов
### Про тестирование своих PR'ов 🔬

Прежде чем открывать PR на слияние, то было бы неплохо проверить Ваш код на работоспособность.
А именно:
Expand All @@ -26,7 +26,7 @@

Подробнее про сам Гит и как с ним работать [тут](https://git-scm.com/book/ru/v2).

## Суть Конфликта
## Суть Конфликта ⚔️

Начнём сразу с показательного примера.

Expand Down Expand Up @@ -61,17 +61,23 @@ var/something = 4

В данном случае в череду коммитов /TG/station внедряется дополнительный, про который известно только нам самим. ГитХаб, видя поднобное несоотвествие - даёт нам сделать выбор.

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

```byond
var/something = 2 //MASSMETA EDIT
```

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

Подробнее про [Ветвления и Слияния](https://git-scm.com/book/ru/v2/Ветвление-в-Git-Основы-ветвления-и-слияния).

## Протокол модуляризации
## Протокол модуляризации 🛠️

У Вашего модуля должно быть коротное и информативное название. Например, `DNA-FEATURE-WINGS` или `XENOARCHEAOLOGY` или `SHUTTLE_TOGGLE`.

Мы будем использовать его в будущей документации, как **уникальный ID**. Он должен быть единым во всех ваших изменениях/дополнениях, где все пометки ДОЛЖНЫ быть абсолютно одинаковыми, что необходимо для удобного поиска!

Создаёте модульную папку, в которой вы будете локально работать, с названием как ID твоего модуля. Например, `modular_meta/modules/shuttle_toggle/`.
Создаёте модульную папку, в которой вы будете локально работать, с названием как ID твоего модуля. Например, `modular_meta/features/shuttle_toggle/`.

### Виды модуляризации

Expand Down Expand Up @@ -111,7 +117,7 @@ var/something = 4
//MASSMETA EDIT REMOVAL END
```

И для любых удалений, которые перемещаются в другие файлы, допишите например: (Moved to modular_meta/shuttle_toggle/randomverbs.dm)
И для любых удалений, которые перемещаются в другие файлы, допишите например: (Moved to modular_meta/features/shuttle_toggle/randomverbs.dm)

- **Изменения:**

Expand All @@ -129,7 +135,7 @@ var/something = 4

В нашем проекте присуствует папка **`modular_meta/`**, там будут храниться все наши "Модульные" изменения кода /TG/station.

Она полностью независима и этим мы гарантируем, что кодеры с /TG/station не будут туда вмешиваться.
💡 Она полностью независима и этим мы гарантируем, что кодеры с /TG/station не будут туда вмешиваться.

В этой папке есть еще несколько подпапок:
| Папка/Файл |
Expand All @@ -151,22 +157,22 @@ var/something = 4

Пожалуйста, не забудьте записать факт их добавления под пунктом "Defines:" в **`readme.md`** вашего модуля.

Единожды используемый **define** (в рамках одного файла) достаточно объявить вверху и внизу файла.
💡 Единожды используемый **define** (в рамках одного файла) достаточно объявить вверху и внизу файла.

```byond
`#define MY_DEFINE`
#define MY_DEFINE
//some code here
`#undef MY_DEFINE`
#undef MY_DEFINE
```
Эти файлы включены в **`massmeta/modular_meta_defines.dm`**.
Эти файлы в папке включены в **`modular_meta/modular_meta_defines.dm`**.

- **`features/`** 📂

Здесь лежат все наши НОВЫЕ модульные файлы, каждый в своем конкретном модуле со своим уникальным **module_id**.

Подробнее про строение папок отдельных модулей расскажем ниже.

Эти файлы включены в **`modular_meta.dm`**.
Только `includes.dm` файлы каждого модуля включены в **`modular_meta.dm`**.

- **`master_files/`** 📂

Expand All @@ -176,7 +182,7 @@ var/something = 4

Подробнее про оссобености этой папки ниже.

Эти файлы включены в **`modular_meta_master.dm`**.
Эти файлы в этой папке включены в **`modular_meta_master.dm`**.

- **`tools/`** 📂

Expand Down Expand Up @@ -213,7 +219,7 @@ var/something = 4

⚠️ В данной папке требуется обязательно соблюдать **Иерархию** папок файловой системы /TG/station. Это не позволит нам запутаться на какой именно файл мы воздействуем.

#### Общие советы к такому подходу
#### Общие советы к такому подходу 💡

Обратите внимание, что можно модульно добавлять код перед или за основной процедурой (proc), не редактируя исходную процедуру, а обращаясь к родительской процедуре с помощью `. = ..()` или `..()`. Аналогичным образом можно добавить новый var к существующему datum или obj, не редактируя напрямую файлы офф ТГ.

Expand Down Expand Up @@ -263,7 +269,7 @@ var/something = 4
* Заимствованные с других билдов (некоторые желательно не менять, уточните)
* Наши самодельные = полностью независимые (например: ProtoBoxStation)

Все наши Новые карты лежат по пути **`massmeta/_maps/map_files/`**.
Все наши Новые карты лежат по пути **`massmeta/_maps/map_files/`** (не в модульной папке).

К каждой карте идёт дополнительно **`.json`** файл в **`massmeta/_maps/`**, не забудьте добавить его тоже!

Expand Down

0 comments on commit 00c724e

Please sign in to comment.