Play遇到了这个错误,查了下是说Room 的属性已经达到最大长度限制。

按我的理解,这些“游戏数据”都要保存在Room.CustomProperties里,这样断线自动换master时数据在新的master中也会保持一致。我一个简单的卡牌游戏,一个棋盘几十个格子、每个格子有座标、单位的基本属性,这些就超出长度限制了。

请问应该怎么办?谢谢!

我当然可以更改设计为:在各个客户端内存都维护相同的这一大堆数据,通过自定义事件去同步。本质感觉和Room.CustomProperties其实没什么区别,所以能不能手动取消Room的这个长度限制。
可行性问题1 自定义数据传输有类似的长度限制吗? 2 Player.CustomPropterties有类似的长度限制吗?

是有限制的。
可能需要考虑的是游戏对战时的数据结构,比如整个棋盘是一个属性,而每个格子属于棋盘的成员属性。
另外,有些数据可能并不需要保存,比如即时性的事件参数。

谢谢回复。Room Custom Properties我只保留了必要的数据,结构非常简单:

"COUNTDOWN":3 #当前状态倒计时
"PLAYERS": ["UserID1", "UserID2"]
"WHOSE_TURN": 2 #当前是谁的回合,用ActorId
"CARD_ID": 20 #用户给新卡生成ID用(类似static数据)
"UNIT_ID": 20 #用户给Unit生成ID用(类似static数据)
"UNITS":[Unit{   #所有单位数据
    "id":3,#该局有效的单位唯一id,不分敌我
    "c":Vect2({"x":1,"y":3}),#coord 座标,Vec2格式
    "am":3,#buffed attack max
    "a":3,#当前attack
    "hm":3,#buffed health max
    "h":3 #当前health},{},{}...]
"SLOTS":[Slot{   #所有格子数据
    "c":Vect2({"x":1,"y":3}),#coord 座标,Vec2格式
    "u":43,#该格之上的unit ID,如果为0则无单位
    "a":43,#actor ID 该格属于哪个player

其中Units和Slots都是PlayArray,大概各自包含20多个数据。每个Unit和Slot的数据目前也就是几个int而已。这样就超出了Room.CustomProperties的长度要求。这该怎么办呢?

嗯,从内存角度考虑,这里确实是有 1024B 的限制。
Player.CustomPropterties 也是