Это программа для сборки файлов с прототипами space station 14 в 1 большой файл, для подгруззки на ивент в рантайме.
В разработке. Уже можно им пользоваться, вызывая ядро с параметрами запуска, но без UI оболочки это выглядит костыльно. В скором времени появистя простая оболочка на Windows Forms (а линуксоиды могут и через консоль).
Сборщик прототипов предназначен в первую очередь для гейм-мастеров, что создают большие прототипы для ивентов и вынуждены делать всё в одном файле, так как поочерёдно загружать десятки файлов - дело сомнительное. Эта программа призвана упростить разработку, чтобы прототипы можно было разбивать на отдельные файлы и папки, а после просто компилировать их в один большой моно-файл, который уже и можно будет грузить в рантайме. Также, возможность разрабатывать прототипы не в одном моно-файле, позволяет при особом желании запросто превратить ивентовую разработку в обычную работу для добавления в игру, так как можно разбивать прототипы по папкам, ориентируясь на уже устоявшуюся структуру в репозитории и при желании можно будет просто взять, да и закинуть свою работу.
Сейчас нужно запустить Content.Core с минимум тремя параметрами. О них чуть ниже.
TODO: когда оформлю проект как следует, распишу как установить. Пока-что просто скачайте исходный код, скомпилируйте и запустите с параметрами Content.Core.
Устройство проекта подразумевает основу-сборщик, которая ожидает на вход параметры, после чего выполняет свою работу. Она подразумевает наличие UI оболочки для удобной работы с ним, которая будет вызывать его с параметрами. Это нужно для того, чтобы сам механизм сборки не зависил от конкретной реализации UI оболочки.
Это - ядро проекта. Именно там выполняется логика сборки. Должен вызываться минимум с тремя аргументами, в ходе своей работы создаёт *.yml файл с вашими прототипами по указанному пути.
- [1] Путь к папке с прототипами для сборки*
- [2] Путь для сохранения собранного файла*
- [3] Имя собранного файла*
- [4] (По умолчанию - 1) Что делать, если такой файл уже существует? Число или строка:
- 0 - Перезапись (Overwrite)
- 1 - Создание с индексом (CreateWithIndex)
- 2 - Выбросить исключение (ThrowException)
- [5] (По умолчанию - null) Автор работы
- Собранный файл с прототипами в формате
.yml.
Это простая UI оболочка написанная на WinForms. Ничего особенного, просто базовый, минимальный интерфейс для сборки файлов. Пока в разработке, в ближайшее время появится (ветка тут есть, но я забыл запушить свою работу)
Сейчас в разработке
В будущем планируется расширить функционал программы, чтобы она могла полностью собирать ивентовые прототипы, начиная от прототипов, заканчивая звуками, выдавая в конце либо zip, либо папку, которую потом нужно будет установить по инструкции. Возможно через 10 лет я сделаю PrototypeMaker и интегрирую туда свой сборщик.
Ещё, возможно в далёком будующем (но по большей части из-за ненадобности, а не почему бы то ни было ещё), я создам либо отдельный PrototypeDisassembler, либо конкретно в эту программу возможность декомпиляции уже собранных файлов. Хотя не знаю, кому это могло бы пригодится.
Также, я бы хотел добавить возможность вызывать его с параметрами через флаги, а не как сейчас. Как всякие команды на линукс, ну там --on-file-already-exist <int/string> --author <string> и т.д.
Q: Зачем всё так переусложнено, зачем столько абстракций?
- A: Так правильно. Я мог, конечно, написать всю логику в методе Main, но это было бы неправильно, а так модульный код. Сейчас вы можете без особых проблем написать свою реализацию
IAssemblerилиISaver, чтобы изменить их внутреннюю логику. Вообще, я задумывал этот проект как более-менее крупный, так что без абстракций никуда, иначе в будущем придётся морочится с тем, что есть какой-нибудь класс на 1.000 строк 💀
Q: Мне это точно поможет? Я делаю небольшие ивентовые прототипы, мне легче по старинке.
- A: Нуу, это дело вкуса. Хотя даже для небольших разработок, порой удобнее сделать 2-3 файла, чем вечно скроллить свой моно-файл во время работы. К тому же, и тестить вы тогда сможете всё по отдельности, правда только если конкретный файл не ссылается на что-то из других файлов.

