АвтоматыМП
NieR: Многопользовательский мод Automata
Предупреждение
Этот проект находится в стадии разработки. Хотя некоторые важные аспекты игры поддерживаются хорошо, некоторые нет. Не ждите, что вы сможете пройти полную историю с кем-то из этого проекта (пока).
На данный момент этот проект следует использовать только для базового перемещения по миру и исследования его с друзьями или для игры в комнате отладки. Синхронизация квестов еще не реализована. Некоторые части игры будут просто сломаны.
Функции
Мастер-сервер
- Позволяет клиентам обнаруживать серверы без предварительного знания IP-адреса.
Автономный сервер
- Сервер, написанный на Go, который может работать как в Linux, так и в Windows.
- Система MasterClient, позволяющая «хосту», который контролирует игровой мир (враги и другое состояние мира)
- Поддерживается более 2 игроков, а не только игрок + приятель.
Пакеты Linux
Арх Linux (AUR)
- Версия с тегами
- Git-версия
Синхронизация игрока
- Позиция
- Вращение
- Анимации
- Струйная стрельба
- Под-программы
- Под фонарик
- Выбор оружия/снаряжения (но не самих типов оружия)
Синхронизация врагов
- Копирует появление врагов так, как их порождает MasterClient.
- Удаляет врагов на обычных концах клиента, которые не должны быть подключены к сети.
- Позиция
- Вращение
- Здоровье/живое состояние
- Некоторые анимации
Планируемые/желаемые функции
- Сменщик моделей
- ПвП
- Система комнат/холлов
- Система-призрак, когда она не подключена к комнате/вестибюлю
История
Мод, который был разработан еще в 2017 году и разрабатывался очень недолго, прежде чем я перешел к другим вещам. Это не было открытым исходным кодом и выпущено раньше, поскольку библиотеки, лежащие в основе исходной версии, не были дружественными к открытому исходному коду.
Поскольку это довольно старый код, изначально не предназначенный для публичного опубликования, стандарты кодирования не соответствуют моему текущему набору. Пожалуйста, прости это. Возможно, со временем это исправят.
Конец августа 2017 г.
- Разработка началась
- Много реверс-инжиниринга
- Система сценариев (mruby?)
- Система сущностей
- Система друзей
- Анимации, кнопки
- Добавлены enet и enetpp, подключили эти системы к мультиплееру.
- Сервер размещался непосредственно внутри самого мода, а не в отдельной программе.
- Клиент/сервер обменивается данными с необработанными структурными данными, определенными на C++.
- Система использовала перехватчики VEH для перехвата середины функций и получения контекста ЦП.
Начало сентября 2017 г.
- Проект был заброшен, было записано несколько коротких видеороликов о нем в действии.
2017-09-01_06-35-26.webm
Конец июля 2022 г. – настоящее время
- Проект был возрожден
- Комбинация того, что NieR попала в заголовки газет, были выпущены инструменты для моддинга, а со мной связались, это повысило мотивацию здесь.
- Удален весь код, который не был дружелюбен к открытому исходному коду, и заменен все эквивалентами с открытым исходным кодом.
- Серверный код был помещен в отдельный проект Go, который может работать как в Linux, так и в Windows.
- Код клиента/сервера реорганизован для использования плоских буферов для структуры пакетов.
- Новая система использует MidHook из SafetyHook для выполнения перехватов средних функций и получения контекста.
- Это намного быстрее и не имеет недостатков, связанных с отсутствием потокобезопасности.
- Рефакторинг клиентского кода стал соответствовать текущим стандартам и лучше отражать реальную структуру игры.
- Ящерица:
- Исправления в подключении и небольшая переделка