Skip to content

Архитектура 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.

VIMP developer documentation