Архитектура gamemode
Оставляйте entrypoint маленьким: он инициализирует infrastructure, регистрирует feature modules и вызывает vimp.markReady() после обязательного startup.
text
src/server/
├─ main.ts
├─ infrastructure/
├─ players/
├─ vehicles/
├─ inventory/
└─ events/Рекомендуемые границы
- Event adapters проверяют недоверенные payloads и вызывают application services.
- Application services владеют правилами и работают с явными player/entity ID.
- Persistence adapters отделяют database details от gameplay handlers.
- Feature modules владеют своими entities, colshapes, timers и voice channels.
- Shared event declarations определяют transport payload без runtime imports.
Не собирайте все events в одном global file и не переносите авторитетную логику на клиент ради удобного доступа к GTA state. Клиент сообщает intent, сервер проверяет и выполняет действие.
Фиксируйте dependency versions и lockfiles. Database migrations и native addons проверяйте на отдельном сервере: script и host process имеют общий crash domain.