xiaonanln / goworld

Scalable Distributed Game Server Engine with Hot Swapping in Golang
Apache License 2.0
2.53k stars 452 forks source link

Support Google Protobuf 支持protobuf #23

Closed xiaonanln closed 4 years ago

luochuanyuewu commented 6 years ago

期待这个功能。

ghost commented 6 years ago

现在用的什么序列化?

xiaonanln commented 6 years ago

RPC函数参数这种格式无法确定的东西用的是MessagePack,其他部分没有使用序列化,而是为了追求效率全部是手写的组包和解包代码,例如以下这种:

// SendCallEntityMethodFromClient sends MT_CALL_ENTITY_METHOD_FROM_CLIENT message
func (gwc *GoWorldConnection) SendCallEntityMethodFromClient(id common.EntityID, method string, args []interface{}) error {
    packet := gwc.packetConn.NewPacket()
    packet.AppendUint16(MT_CALL_ENTITY_METHOD_FROM_CLIENT)
    packet.AppendEntityID(id)
    packet.AppendVarStr(method)
    packet.AppendArgs(args)
    err := gwc.SendPacket(packet)
    packet.Release()
    return err
}
magix commented 5 years ago

这样确实 很好。尤其是做大并发,可以做棋牌有点麻烦,因为格式比较乱一些。没有想网游那么简单。

bytemode commented 5 years ago

期待支持google protobuf

fnaith commented 4 years ago

從開 Issue 到現在也有點時間了,如果還有要做的話,或許可以考慮改成 Flatbuffers 了XD

xiaonanln commented 4 years ago

Won't be implemented because it could involve large refactoring.