Skip to content

vyacheslav-spirin/Platformer

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

7 Commits
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Тестовая версия платформера с мультиплеером.

Все интерактивные элементы в игре представлен в виде Actor.

Экземпляры Actor упаковываются и отсылаются клиентам (по-умолчанию 10 раз в секунду).

Перед отправкой сервер разделяет игровое состояние на фрагменты по 1400 байт (MTU) и отправляет их клиентам.

При получении всех фрагментов игрового состояния, клиент начинает читать данные и обновляет состояние Actors.

Для обеспечения плавности движения удаленных actors используется простая линейная интерполяция между предпоследним и последним состоянием.

Т.к. ссылки на все actors хранятся в обычном массиве, то для быстрого нахождения любого Actor используется структура ActorPointer, которая формируется из уникального ID, выдаваемого новому actor и allocation id, обозначающего расположение в массиве. Комбинация unique id + allocation id дает однозначно определить, находится ли искомый объект в массиве или же он был удален и, например, замещен новым.

Мультиплеерная часть игры является расширением основной части (одиночной), что позволяет в общих случаях писать логику, не отвлекаясь на сетевую часть.

Для передачи данных используется протокол на основе UDP. Класс UdpNetwork инкапсулирует всю логику работы с асинхронными сокетами (SocketAsyncEventArgs) и предоставляет удобные методы для отправки и получения данных, добавляя их во внутреннюю очередь (ring buffer) и отбрасывающий данные при переполнении буфера, что позволяет полностью избежать аллокаций.

Т.к. это тестовая версия, то, естественно, не учтено множество ньюансов, начиная от проверки входящих данных и заканчивая производительностью игры. Стоит учесть, что не достаточно проработана геймплейная часть, отвечающая за взадимодействие объектов (нанесение урона, смерь игроков, физика и т.д.).

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published