TGViewer
GameDev: разработка игр GameDev: разработка игр @make_game · 7.63K subscribers
Post #1973 1.64K
Для GameMaker вышло расширение Colyseus, и сетевой код в проекте сводится к нескольким вызовам GML

6 августа в блоге GameMaker появилось интервью с командой Colyseus по случаю выхода их расширения. Colyseus — открытый фреймворк для сетевой игры в реальном времени: комнаты, подбор игроков, синхронизация состояния и авторитетный сервер. Сервер остаётся отдельным приложением на Node.js и TypeScript, но опыта в них, по словам авторов, не требуется, а разворачивать его можно у любого хостера.

Поддержки GameMaker сообщество просило годами, и до расширения люди изобретали обходные пути ради HTML5-сборок. Сделать её получилось после того, как клиент переписали на общее ядро на C, которое теперь питает все нативные SDK.

Подбор игроков сводится к вызову colyseus_client_join_or_create() с именем комнаты: он либо подключит к существующей, либо создаст новую, лобби писать не нужно, а по дополнительным параметрам можно разводить игроков по режиму или региону. Обработчики регистрируются как colyseus_on_state_change() и colyseus_on_message(), а один вызов colyseus_process() в Step разбирает всю очередь, без потоков и асинхронных сюрпризов.

Состояние живёт на сервере, клиенту приходит компактная двоичная заплатка только с изменениями, и она превращается в понятные события: игрок добавился, координата изменилась, игрок вышел. Клиент при этом шлёт намерения: он сообщает «хочу пойти», а куда игрок попал, решает сервер. Правку памяти на своей машине это обесценивает. Оттуда же берётся скрытая информация, тяжело дающаяся играм с хостом на клиенте: в демо с картами сервер владеет колодой и сообщает каждому только его руку, остальные видят лишь число карт.

В комплекте нативные библиотеки для Windows, macOS и Linux плюс сборка WebAssembly для HTML5 и GX.Games, автоматическое переподключение с очередью исходящих сообщений и два демо-проекта с исходниками: пошаговая карточная игра и танки в реальном времени.

Мобильных платформ пока нет, они обещаны позже. Замеров задержки и нагрузочных тестов в материале тоже нет, это интервью, а не технический разбор, так что цену решения придётся мерить самому. И сервер на Node.js всё равно кому-то нужно поднимать и обновлять.

Полный текст: https://gamemaker.io/en/blog/colyseus-multiplayer

Приятно, что демо отдают с исходниками: по ним видно, где проходит граница между «клиент показывает» и «сервер решает» :)

@make_game
  • 👍 5
  • ❤ 1
More from @make_game
  1. Sep 20, 2026Как собрать редактируемую 2D-карту в Unity с Marching Squares Туториал начинает с сетки яч…
  2. Sep 20, 2026Как пространственное разбиение ускоряет поиск соседей в игровом мире В стратегии реального…
  3. Sep 20, 2026Как построить кубическую сферу в Unity без скопления вершин у полюсов У обычной UV-сферы в…
  4. Sep 19, 2026Зачем игровому движку очередь событий Прямой вызов playSound() блокирует меню, пока аудиод…
  5. Sep 19, 2026Как разделить код теней в собственном конвейере рендеринга Unity Custom SRP 7.1.0 для Unit…
  6. Sep 19, 2026Как численное интегрирование двигает объекты в игровой физике Физический цикл не вычисляет…
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →