V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
Game Engines
Unreal Engine
MyCryENGINE
drymonfidelia
V2EX  ›  游戏开发

Unity 弱联机游戏战斗录制回放有什么现成的方案吗?就是游戏开始前服务器发送一个随机数种子给客户端,客户端战斗结束上传录制数据给服务器,然后用户/管理员可以通过这个录制数据回放完整游戏过程,避免玩家直接调用战斗结算接口

  •  
  •   drymonfidelia · 26 天前 · 1501 次点击
    弱联机指的是玩家进入战斗后就不需要联网了,避免弱网环境影响游戏体验而且减轻服务器资源占用,反正是单人游戏完全没必要联机。随机事件都用服务器在进入游戏前发回的这个种子计算,结算的时候上报录制数据
    7 条回复    2024-12-03 17:25:43 +08:00
    carlself
        1
    carlself  
       26 天前
    战斗计算纯客户端不能防止玩家作弊,服务器还是要演算一遍吧。
    nightwitch
        2
    nightwitch  
       26 天前
    需要你整个游戏都按帧同步的方案来设计,可以确保每次录制的数据都能 100%重放。
    现成的方案不太可能,这个和游戏架构强相关。

    弱联机方案很多啊,没必要走重放,保证关键的资源结算,所有怪的出生死亡,角色的移动以及物品的掉落不要信任客户端的任何报告,都由服务器计算并同步给客户端,就能解决大多数问题了。
    newtype0092
        3
    newtype0092  
       26 天前
    没有即时操作逻辑的话,gameplay 的部分按你说的方式来写不就行了,这要还套现成方案那不就是换皮游戏?
    lieb
        4
    lieb  
       26 天前
    你战斗就一个随机数就能演到结果, 你回放就用战斗呗, 把战斗的所有变量。这场战斗的角色属性 天赋 装备 道具 技能顺序 buff //随机数 就传上去呗。
    避免刷结算接口 , 你取一个平均时间不去响应呗,或者通过自己加密点时间数据、随机数所获得的最终结果数据 ,服务器能对比验证的。 但是感觉没必要,游戏还是得火,得好玩。
    txhwind
        5
    txhwind  
       25 天前
    服务器自己记录种子再算一遍就行了吧
    guanzhangzhang
        6
    guanzhangzhang  
       25 天前
    游戏物品和怪物每次进游戏/地图都是服务器端返回的随机的 objID
    对象(怪物/玩家)移动
    释放技能攻击对象 objID
    对象(怪物/玩家)收到的伤害
    使用物品
    kepenj
        7
    kepenj  
       25 天前
    我们之前的项目就是客户端和服务器同一套逻辑(客户端 C#写完核心战斗逻辑后直接打 dll 扔给的 server 用),结果走的服务器结算。纯靠客户端无法防作弊。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   1388 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 806ms · UTC 17:37 · PVG 01:37 · LAX 09:37 · JFK 12:37
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.