用golang写的帧同步服务器
帧同步服务器目标是作为一个可以横向扩展,完全脱离玩法逻辑的帧同步服务器。
* 采用KCP(可根据需求改成其他协议)作为网络底层
* 帧同步作为同步方式
* protobuf作为传输协议
* 服务器间传输可以用grpc和http
编译example
cd example
go build
http方式
grpc方式(未来会加入)
...
|-----------------------------message-----------------------------------------|
|----------------------Header------------------|------------Body--------------|
|------Body Length-------|--------Msg ID-------|------------Body--------------|
|---------uint16---------|---------uint8-------|------------bytes-------------|
|-----------2------------|----------1----------|-----------len(Body)----------|MSG_Connect & C2S_ConnectMsgMSG_Connect & S2C_ConnectMsgMSG_JoinRoomMSG_Connect & S2C_JoinRoomMsgMSG_Progress & C2S_ProgressMsgMSG_Progress & S2C_ProgressMsg 注:广播者收不到这个消息MSG_ReadyMSG_Ready MSG_Start MSG_Input & C2S_InputMsgMSG_Frame & S2C_FrameMsg MSG_Result & C2S_ResultMsgMSG_Result MSG_Result或者MSG_Close客户端断开网络连接进入其他流程MSG_Connect & C2S_ConnectMsg (前提是当前游戏房间还存在)即可进入房间,服务端会把之前的帧分批次发给客户端。(这里可以考虑改成客户端请求缺失的帧)$ claude mcp add lockstepserver \
-- python -m otcore.mcp_server <graph>