Оверлей "Аавикко Аваруус", основанный на сборке "Adventure Time" (© Cartoon Network)
  • Fluent 85.8%
  • Python 6.9%
  • C# 6.7%
  • Shell 0.5%
Find a file
Repository files (latest commit first)
Filename Latest commit message Latest commit date
2026-09-20 02:02:11 +04:00
00_AavikkoOverlay add: Текстуры для адтшных Eyes для орков 2026-09-20 02:02:11 +04:00
99_OverlaySystem@d010d77090 я болею писать ничего не буду. 2026-09-19 15:16:51 +03:00
.gitattributes sh-аналоги run-*.bat в 00_AavikkoOverlay (Linux/macOS/WSL) 2026-09-13 15:49:53 +03:00
.gitignore tweak: Gitignore теперь исключает .vscode папку, если та есть. 2026-09-15 07:11:45 +03:00
.gitmodules gitmodules: относительный url сабмодуля (../overlay-system.git) — https-клонёр получает https, ssh-клонёр ssh; публичный submodule init без ключей 2026-09-08 07:29:31 +03:00
README.md fix: Пропущена точка в некоторых сообщениях скриптов. 2026-09-15 11:01:25 +03:00
x00_StartHere.py fix: Пропущена точка в некоторых сообщениях скриптов. 2026-09-15 11:01:25 +03:00
x01_GetBuild.py fix: Пропущена точка в некоторых сообщениях скриптов. 2026-09-15 11:01:25 +03:00
x02_ForAavikkoDevelopers.py bump: 99_OverlaySystem -> patcher v2.3.13 + ext v2.3.0 — полный аудит: data-loss guards, fail-closed, гонки, тесты, partial clone 2026-09-13 01:27:05 +03:00

Aavikko Avaruus - overlay для Space Station 14 (база: ADT)

Это репозиторий-оверлей модификаций проекта Aavikko Avaruus поверх базовой сборки Space Station ADT. Полного дерева исходников здесь нет и не будет - база скачивается по закреплённому пину, а здесь живут только наши изменения: моды, патчи, удаления и базы данных инструментов.

Такой формат = источник соответствующих исходников (AGPL §13): база публична на GitHub, изменения - здесь, применяются стандартными средствами git.

Автор системы оверлея - Valikzant (Aavikko Avaruus).


Быстрый старт

git clone https://git.aavikko.space/aavikko/aavikko-avaruus-overlay
cd aavikko-avaruus-overlay

# Скачать базу по пину (ADT + RobustToolbox появятся в 01_Build)
python x00_StartHere.py

RUN_THIS.py из базовой сборки запускать не нужно - движок RobustToolbox уже инициализирован x00_StartHere.py.

Какая именно база скачивается? Та, что закреплена пином в 00_AavikkoOverlay/99_Database/08_UpstreamPinner/00_UpstreamPin.yml (файл вида: base / url / commit / pinned_at). Пин - единственный источник; если ADT уйдёт вперёд, здесь появится новый пин + обновлённые патчи, и сборка останется воспроизводимой.


Применение оверлея (4 шага, вручную)

После x00_StartHere.py база лежит в 01_Build. Дальше - применить оверлей руками. Все пути ниже - относительно корня клона.

Шаг 1 - Mods (наши новые файлы). Копируются в дерево базовой сборки:

Откуда (в этом репо) Куда (в 01_Build)
00_AavikkoOverlay/00_Resources/Mods/... Resources/...
00_AavikkoOverlay/01_Content/Mods/... ... (корень, напр. Content.Server/...)
00_AavikkoOverlay/02_RobustToolbox/Mods/... RobustToolbox/...

Windows (PowerShell, из корня клона):

robocopy 00_AavikkoOverlay\00_Resources\Mods 01_Build\Resources /E
robocopy 00_AavikkoOverlay\01_Content\Mods    01_Build /E
robocopy 00_AavikkoOverlay\02_RobustToolbox\Mods 01_Build\RobustToolbox /E   # если папка есть

Linux/macOS:

cp -a 00_AavikkoOverlay/00_Resources/Mods/. 01_Build/Resources/
cp -a 00_AavikkoOverlay/01_Content/Mods/.    01_Build/
cp -a 00_AavikkoOverlay/02_RobustToolbox/Mods/. 01_Build/RobustToolbox/ 2>/dev/null || true

Шаг 2 - бинарные патчи (PNG). Текстовые правки - это .patch-файлы (шаг 3), но бинарники git-патчем не выражаются: для них Patches хранит полные копии. .patch-файлы лежат в тех же папках, поэтому копируем всё, кроме *.patch (шагу 3 они нужны в оверлее, а не в дереве сборки). Копии ложатся поверх тех же относительных путей:

Откуда Куда
00_AavikkoOverlay/00_Resources/Patches/<rel> Resources/<rel>
00_AavikkoOverlay/01_Content/Patches/<rel> <rel>
00_AavikkoOverlay/02_RobustToolbox/Patches/<rel> RobustToolbox/<rel>

Windows (PowerShell, из корня клона):

robocopy 00_AavikkoOverlay\00_Resources\Patches 01_Build\Resources /E /XF *.patch
robocopy 00_AavikkoOverlay\01_Content\Patches    01_Build /E /XF *.patch
robocopy 00_AavikkoOverlay\02_RobustToolbox\Patches 01_Build\RobustToolbox /E /XF *.patch   # если папка есть

Linux/macOS:

python3 - <<'EOF'
import shutil, pathlib
for src, dst in (
    ("00_AavikkoOverlay/00_Resources/Patches",     "01_Build/Resources"),
    ("00_AavikkoOverlay/01_Content/Patches",       "01_Build"),
    ("00_AavikkoOverlay/02_RobustToolbox/Patches", "01_Build/RobustToolbox"),
):
    src, dst = pathlib.Path(src), pathlib.Path(dst)
    if not src.is_dir():
        continue
    n = 0
    for f in src.rglob("*"):
        # пропускаем текстовые .patch (шаг 3), симлинки и временные снапшоты
        if (f.suffix == ".patch" or f.is_symlink() or not f.is_file()
                or f.name.endswith((".old.patched", ".conflict.patched",
                                    ".conflict.upstream", ".broken"))):
            continue
        rel = f.relative_to(src)
        (dst / rel).parent.mkdir(parents=True, exist_ok=True)
        shutil.copy2(f, dst / rel)
        n += 1
    print(f"copied {n} file(s) from {src}")
EOF

Шаг 3 - .patch (текстовые правки). Применить git-патчи (пути в патчах уже корректны для корня базовой сборки):

cd 01_Build
find ../00_AavikkoOverlay -name '*.patch' -print0 | xargs -0 git apply --whitespace=nowarn

Windows PowerShell:

Get-ChildItem ..\00_AavikkoOverlay\*\Patches -Recurse -Filter *.patch | ForEach-Object { git apply --whitespace=nowarn $_.FullName }

Шаг 4 - удаления (лицензионная гигиена и другие лишние файлы). Часть файлов базовой сборки должна быть удалена из дерева. Список путей - в 00_AavikkoOverlay/99_Database/06_Sanitizer/00_History.json (ключ deleted; папка перенумерована 14.09 — ранее 00_Sanitizer/):

Linux/macOS (из корня клона):

python3 - <<'EOF'
import json, os
db = json.load(open('00_AavikkoOverlay/99_Database/06_Sanitizer/00_History.json'))
n = 0
for r in db['deleted']:
    p = os.path.join('01_Build', r['path'])
    if os.path.isfile(p):
        os.remove(p); n += 1
print(f'removed {n} file(s)')
EOF

Windows PowerShell:

python -c "import json,os; db=json.load(open('00_AavikkoOverlay/99_Database/06_Sanitizer/00_History.json'))['deleted']; [os.remove(os.path.join('01_Build', r['path'])) for r in db if os.path.isfile(os.path.join('01_Build', r['path']))]; print('done')"

После четырёх шагов в 01_Build - полное дерево Aavikko Avaruus: база + наши файлы + наши правки + гигиена. Дальше - сборка.


Сборка и запуск сервера

cd 01_Build
dotnet restore
dotnet build --no-restore -c Release    # или Debug

Запуск:

dotnet run --project Content.Server --no-build # Сервер
dotnet run --project Content.Client --no-build --connect # Клиент с автоматическим подключением

Лончеры (из корня клона, пути уже указывают в 01_Build):

Файл Что делает
00_AavikkoOverlay/run-server-nobuild.bat только сервер
00_AavikkoOverlay/run-client-nobuild.bat только клиент
00_AavikkoOverlay/run-server-client-nobuild.bat сервер + клиент
00_AavikkoOverlay/run-*-showcasemap-nobuild.bat варианты с витринной картой

Требования: .NET SDK 7+, Python 3.8+, Git.


Обновление базы (для всех)

Мы обновляем пин 00_UpstreamPin.yml обычными коммитами вместе с перегенерацией патчей под новую базу. Чтобы получить нашу актуальную сборку - просто git pull в этом репо и заново python x00_StartHere.py (скрипт скачает уже новый пин) + шаги 1-4 на свежем дереве. История переписывается только вперёд (обычные коммиты), force-push не используется.


Инструменты и участие в разработке

Поверх этой системы работает собственный набор инструментов Valikzant'а (сабмодуль 99_OverlaySystem): автоматическое применение и генерация оверлея, проверки целостности, VSCode-расширение с панелью статуса. Ручные шаги из README они заменяют одной командой. Инструменты предоставляются разработчикам проекта - если хотите присоединиться к разработке Aavikko Avaruus и получить доступ, напишите Valikzant'у! :D

python x02_ForAavikkoDevelopers.py     # подтянет 99_OverlaySystem (нужен доступ)
python 99_OverlaySystem/00_Patcher/x00_Apply.py   # оверлей применяется автоматически

Структура репозитория

x00_StartHere.py               вход: окружение + скачивание базы по пину
x01_GetBuild.py                скачивание базовой сборки по пину (вызывается StartHere)
x02_ForAavikkoDevelopers.py    (приватно) сеттап инструментов разработки
README.md                      этот файл
00_AavikkoOverlay/             НАШ контент (бывш. 00_Aavikko)
  00_Resources/  Mods/ Patches/
  01_Content/    Mods/ Patches/
  02_RobustToolbox/  Mods/ Patches/   (пока пусто)
  99_Database/   папки пронумерованы по номерам инструментов (14.09):
                 00_Patcher/{00_PatchBases,01_ConflictDecisions}.yml + 02_Converged.json,
                 02_ResourceConfirmer/, 06_Sanitizer/00_History.json (+99_Backups, +01_Runtime.json - local, gitignored),
                 07_LicenseExplorer/ (кеш-файлы, gitignored), 08_UpstreamPinner/00_UpstreamPin.yml <- пин базовой сборки
  run-*.bat                   лончеры (пути - в 01_Build)
01_Build/                      СКАЧИВАЕТСЯ целиком (git-ignored)
99_OverlaySystem/              сабмодуль инструментов команды (по запросу)

Лицензии и атрибуция

  • Лицензия этого оверлея: код - AGPL-3.0-or-later, ассеты - CC-BY-SA 3.0 (совместимо с базой и движком; см. LICENSE-файлы базовой сборки в 01_Build).
  • Базовая сборка: AdventureTimeSS14/space_station_ADT (MIT + AGPL-компоненты; RobustToolbox - MIT). Их лицензии и заголовки SPDX в патчах сохраняются.