sun2sun
Он всем сказал о своей сексуальной ориентации? Я все пропустил!
Вий
> Он всем сказал о своей сексуальной ориентации? Я все пропустил!
Ну косвенно может и да)
Вий
> Он всем сказал о своей сексуальной ориентации? Я все пропустил!
Да я не скрываю. Просто не хотел афишировать, чтобы люди не начинали относится ко мне предвзято. Чтобы ребята, думали "свой".
Маски прочь я
Alex2233
> гетеро
Обычно ты не узнаешь что не любишь оливки, пока хотя бы раз их не попробуешь...
Прости это я в целом, не тебя пытаюсь оскорбить, просто забавная же мысль :D
Хвастаюсь прогрессом: у меня клиенты подключаются к серверу, отправляют команды своему аватару, получают обновления состояний. Осталось добавить моделирование поведения и прицепить к визуализации от сингловой версии игры.
4.933512 main.cpp:1113 Update DEBUG idx: 0 Received msg type: kMsgTypePing size: 8 4.933516 main.cpp:1236 HandleMsgPing DEBUG idx: 0 preparing pong: (c_time: 4.889845 s_time: 4.933516) outgoing_used: 18 4.946675 main.cpp:1098 Update DEBUG idx: 0 Received buffer_used: 2 sizeof(MsgHeader): 2 h.msg_size: 4 waiting for more 4.946696 main.cpp:992 UpdateClient DEBUG Processing msg_type: kMsgTypePong msg_size: 16 4.946699 main.cpp:833 HandleMsgPong DEBUG Got MsgPong: (c_time: 4.889845 s_time: 4.933516) c_time_2: 4.946699 4.946705 main.cpp:855 HandleMsgPong DEBUG target_c_to_s_time: 0.015244 4.946707 main.cpp:858 HandleMsgPong DEBUG c_to_s_time: 0.015244 4.959736 main.cpp:1113 Update DEBUG idx: 0 Received msg type: kMsgTypeRegistrationRequest size: 4 4.959741 main.cpp:1175 HandleMsgRegistrationRequest DEBUG idx: 0 MsgRegistrationRequest protocol_version: 1 4.959744 main.cpp:1212 HandleMsgRegistrationRequest DEBUG idx: 0 registered with avatar uii: (idx: 0 uid: 0) 4.973359 main.cpp:1078 PrepareOutgoingData DEBUG idx: 0 Send MsgAvatarState: (uii: (idx: 0 uid: 0) unit_type: 0 state: 0 begin_tick: 0 begin_x: 0 begin_y: 0 duration_ticks: 0 end_offset_x: 0 end_offset_y: 0 target_uii: kInvalidUii) 4.973395 main.cpp:992 UpdateClient DEBUG Processing msg_type: kMsgTypeRegistrationResponse msg_size: 20 4.973399 main.cpp:817 HandleMsgRegistrationResponse DEBUG Got MsgRegistrationResponse: (protocol_version: 1 result: kResultSuccess avatar_uii: (idx: 0 uid: 0) tick_0_s_time: 0.000000) 4.973405 main.cpp:826 HandleMsgRegistrationResponse DEBUG Player now has player_avatar_uii: (idx: 0 uid: 0) 4.986147 main.cpp:992 UpdateClient DEBUG Processing msg_type: kMsgTypeAvatarState msg_size: 28 4.986150 main.cpp:864 HandleMsgAvatarState DEBUG Got MsgAvatarState: (uii: (idx: 0 uid: 0) unit_type: 0 state: 0 begin_tick: 0 begin_x: 0 begin_y: 0 duration_ticks: 0 end_offset_x: 0 end_offset_y: 0 target_uii: kInvalidUii) 5.461897 main.cpp:903 PrepareOutgoingData DEBUG Sending MsgPlayerCmdWalkToPoint: (avatar_uii: (idx: 0 uid: 0) x: 2278 y: 2957) 5.461935 main.cpp:1043 UpdateClient DEBUG Sent bytes: 14, buffer is empty 5.488380 main.cpp:1098 Update DEBUG idx: 0 Received buffer_used: 2 sizeof(MsgHeader): 2 h.msg_size: 12 waiting for more 5.501794 main.cpp:1113 Update DEBUG idx: 0 Received msg type: kMsgTypePlayerCmdWalkToPoint size: 12 5.501799 main.cpp:1251 HandleMsgPlayerCmdWalkToPoint DEBUG idx: 0 MsgPlayerCmdWalkToPoint: (avatar_uii: (idx: 0 uid: 0) x: 2278 y: 2957) 5.501803 main.cpp:1267 HandleMsgPlayerCmdWalkToPoint DEBUG idx: 0 MsgPlayerCmdWalkToPoint uii: (idx: 0 uid: 0) avatar->end_pos: 2278, 2957 5.501811 main.cpp:1078 PrepareOutgoingData DEBUG idx: 0 Send MsgAvatarState: (uii: (idx: 0 uid: 0) unit_type: 0 state: 0 begin_tick: 0 begin_x: 0 begin_y: 0 duration_ticks: 0 end_offset_x: 2278 end_offset_y: 2957 target_uii: kInvalidUii) 5.515254 main.cpp:992 UpdateClient DEBUG Processing msg_type: kMsgTypeAvatarState msg_size: 28 5.515258 main.cpp:864 HandleMsgAvatarState DEBUG Got MsgAvatarState: (uii: (idx: 0 uid: 0) unit_type: 0 state: 0 begin_tick: 0 begin_x: 0 begin_y: 0 duration_ticks: 0 end_offset_x: 2278 end_offset_y: 2957 target_uii: kInvalidUii)
Хз чё за лог, в нём никто кроме тебя не разберётся. Ты видео геймплея покажи лучше.
TERMOGAD
В том и дело, сейчас игра в состоянии когда геймплей отключен от мышки и не подключен к сетевому обмену. Но сетевой обмен уже работает.
Вий
> Хвастаюсь прогрессом: у меня клиенты подключаются к серверу, отправляют команды
> своему аватару, получают обновления состояний.
Выглядит достаточно интересно. Можно уже релизить я думаю в стим.
я только не понял зачем разделять отправку заголовка и данных, а потом читать их с разницей аж в 13 миллисекунд т.е. на следующий кадр
4.946675 main.cpp:1098 Update DEBUG idx: 0 Received buffer_used: 2 sizeof(MsgHeader): 2 h.msg_size: 4 waiting for more
4.959736 main.cpp:1113 Update DEBUG idx: 0 Received msg type: kMsgTypeRegistrationRequest size: 4
5.488380 main.cpp:1098 Update DEBUG idx: 0 Received buffer_used: 2 sizeof(MsgHeader): 2 h.msg_size: 12 waiting for more
5.501794 main.cpp:1113 Update DEBUG idx: 0 Received msg type: kMsgTypePlayerCmdWalkToPoint size: 12
#!
А ты прав, ждать в этом месте кадр - ошибка! Спасибо!
Отправка как раз одним куском, а вот при получении каждого сообщения из сокета делается 2 чтения:
1. Чтение заголовка, по которому определяется размер данных
2. Чтение собственно данных
Делать на кадр только одно чтение - действительно плохая идея. Увеличил лимит на количество чтений данных от одного клиента до 10. Так 5 полных запросов за кадр можно передать на серврер.
Лог с фиксом:
4.741109 main.cpp:725 UpdateServer DEBUG New connection idx: 0 4.742743 main.cpp:1109 Update DEBUG idx: 0 Received buffer_used: 2 sizeof(MsgHeader): 2 h.msg_size: 8 waiting for more 4.742751 main.cpp:1124 Update DEBUG idx: 0 Received msg type: kMsgTypePing size: 8 4.742754 main.cpp:1252 HandleMsgPing DEBUG idx: 0 preparing pong: (c_time: 4.719096 s_time: 4.742754) outgoing_used: 18 4.742758 main.cpp:1109 Update DEBUG idx: 0 Received buffer_used: 2 sizeof(MsgHeader): 2 h.msg_size: 4 waiting for more 4.742762 main.cpp:1124 Update DEBUG idx: 0 Received msg type: kMsgTypeRegistrationRequest size: 4 4.742764 main.cpp:1191 HandleMsgRegistrationRequest DEBUG idx: 0 MsgRegistrationRequest protocol_version: 1 4.742774 main.cpp:1228 HandleMsgRegistrationRequest DEBUG idx: 0 registered with avatar uii: (idx: 0 uid: 0) 4.756405 main.cpp:1089 PrepareOutgoingData DEBUG idx: 0 Send MsgAvatarState: (uii: (idx: 0 uid: 0) unit_type: 0 state: 0 begin_tick: 0 begin_x: 0 begin_y: 0 duration_ticks: 0 end_offset_x: 0 end_offset_y: 0 target_uii: kInvalidUii) 4.756445 main.cpp:1007 UpdateClient DEBUG Processing msg_type: kMsgTypePong msg_size: 16 4.756448 main.cpp:843 HandleMsgPong DEBUG Got MsgPong: (c_time: 4.719096 s_time: 4.742754) c_time_2: 4.756448 4.756453 main.cpp:865 HandleMsgPong DEBUG target_c_to_s_time: 0.004982 4.756455 main.cpp:868 HandleMsgPong DEBUG c_to_s_time: 0.004982 4.756459 main.cpp:1007 UpdateClient DEBUG Processing msg_type: kMsgTypeRegistrationResponse msg_size: 20 4.756461 main.cpp:827 HandleMsgRegistrationResponse DEBUG Got MsgRegistrationResponse: (protocol_version: 1 result: kResultSuccess avatar_uii: (idx: 0 uid: 0) tick_0_s_time: 0.000000) 4.756467 main.cpp:836 HandleMsgRegistrationResponse DEBUG Player now has player_avatar_uii: (idx: 0 uid: 0) 4.769468 main.cpp:1007 UpdateClient DEBUG Processing msg_type: kMsgTypeAvatarState msg_size: 28 4.769479 main.cpp:874 HandleMsgAvatarState DEBUG Got MsgAvatarState: (uii: (idx: 0 uid: 0) unit_type: 0 state: 0 begin_tick: 0 begin_x: 0 begin_y: 0 duration_ticks: 0 end_offset_x: 0 end_offset_y: 0 target_uii: kInvalidUii) 5.391523 main.cpp:918 PrepareOutgoingData DEBUG Sending MsgPlayerCmdWalkToPoint: (avatar_uii: (idx: 0 uid: 0) x: 2031 y: 2889) 5.391562 main.cpp:1058 UpdateClient DEBUG Sent bytes: 14, buffer is empty 5.405659 main.cpp:1109 Update DEBUG idx: 0 Received buffer_used: 2 sizeof(MsgHeader): 2 h.msg_size: 12 waiting for more 5.405676 main.cpp:1124 Update DEBUG idx: 0 Received msg type: kMsgTypePlayerCmdWalkToPoint size: 12 5.405680 main.cpp:1267 HandleMsgPlayerCmdWalkToPoint DEBUG idx: 0 MsgPlayerCmdWalkToPoint: (avatar_uii: (idx: 0 uid: 0) x: 2031 y: 2889) 5.405683 main.cpp:1283 HandleMsgPlayerCmdWalkToPoint DEBUG idx: 0 MsgPlayerCmdWalkToPoint uii: (idx: 0 uid: 0) avatar->end_pos: 2031, 2889 5.405687 main.cpp:1089 PrepareOutgoingData DEBUG idx: 0 Send MsgAvatarState: (uii: (idx: 0 uid: 0) unit_type: 0 state: 0 begin_tick: 0 begin_x: 0 begin_y: 0 duration_ticks: 0 end_offset_x: 2031 end_offset_y: 2889 target_uii: kInvalidUii) 5.418526 main.cpp:1007 UpdateClient DEBUG Processing msg_type: kMsgTypeAvatarState msg_size: 28 5.418537 main.cpp:874 HandleMsgAvatarState DEBUG Got MsgAvatarState: (uii: (idx: 0 uid: 0) unit_type: 0 state: 0 begin_tick: 0 begin_x: 0 begin_y: 0 duration_ticks: 0 end_offset_x: 2031 end_offset_y: 2889 target_uii: kInvalidUii)
Вообще зря наверное я так делаю, наверняка лучше читать сразу полный буфер, а дальше парсить все что в него влезло. То что не влезло переложить в начало… это наверное займет раз в 30 меньше времени чем второй вызов чтения… но вот это я оптимизировать буду когда можно будет подключить к игре хотя бы 5000 клиентов-ботов которые будут кликать куда попало и бегать/драться в результате
Актуально?
StepMon
Да
Вий
> Я очень занят на работе, освобожусь в октябре и сделаю игру дня за три
Что там, три дня прошли уже?
MrShoor
Наверное пару дней пока поработал над проектом, скоро можно будет показывать