-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathhow-it-will-work.txt
More file actions
35 lines (31 loc) · 3.19 KB
/
Copy pathhow-it-will-work.txt
File metadata and controls
35 lines (31 loc) · 3.19 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
Обмен данными ввода и их выполнение
Обмен данными будет работать централизированно.
Каждый член комнаты будет слать владельцу комнаты
свой инпут пакет сразу после того, как он был создан.
Инпут от пользователя будет включать ID пользователя,
номер чекпоинта и номер кадра относительно этого чекпоинта.
Владелец комнаты будет аккумулировать пакеты инпута(RemoteAction),
мультеплексируя это все в один пакет, добавляя туда свой собственный
инпут. У каждого пакета инпута будет номер кадра, на котором он был
создан. Слишком старые(те, что старее lastCheckpointFrame) пакеты
будут проигнорированны. Кроме номера кадра будет номер кадра
относительно последнего чекпоинта. Это значение нужно, чтобы знать,
на каком кадре относительно текущего чекпоинта(того, на котором идет)
выполнение) выполнять действие. Так же можно добавить время действия,
(добавлять его уже на этапе получения пакета владельцем комнаты),
чтобы сортировать пакеты на конкретном кадре. В таком виде оно
будет отправлено членам комнаты, каждый из которых должен
подтвердить получение, отправив Acknolegment пакет с нормером
пакета
Интупы: создаются и отправляются на разных кадрах, применяются на одном.
пользователи не хранят свой инпут. Владелец комнаты хранит свой инпут.
Сервер:
Каждый пользователь вместе с подтверждением получения аккумулированного набора действий
от овнера будет отправлять свое среднее время выполнения кадра.
В свою очеред, у овнера будет класс сервера, в котором в цикле каждые
(checkpointInterval*16 милисекунд + среднее время кадра всех пользователей)
будут рассылаться данные действий всем пользователям в комнате.
Обработка запросов отправляется в тредпул.
Клиент:
Получая новое состояние(аккумулированные действия от всех игроков) от сервера,
клиент подает сигнальный ивент главному потоку