【问题标题】:Unity - trading card game architectureUnity - 交易卡牌游戏架构
【发布时间】:2018-11-08 21:09:58
【问题描述】:

我正在尝试在 Unity 中开发 TCG(交易纸牌游戏)(我是 Unity 新手),目前停留在项目架构和卡牌效果上。对我来说,来自网络开发背景的所有逻辑和卡片效果都应该在服务器上,但是通过一些 Unity 教程,我认为逻辑应该在客户端上,我应该使用一个简单的基于房间的服务器来通知玩家动作。对吗?

总结一下——游戏逻辑应该在哪里(例如卡牌效果、回合等)?在客户端还是在服务器上?

【问题讨论】:

    标签: unity3d architecture


    【解决方案1】:

    我实际上是为 iOS/droid 开发的主要 TCG 之一,所以这是来自经验。您肯定希望所有游戏逻辑和规则都在服务器上。不要相信您的客户端是任何游戏结果等的真实来源。人们将能够通过篡改发送回服务器的数据来破解它。他们不需要反编译游戏,只需嗅探网络流量即可。

    也就是说,您最终可能会在客户端和服务器上出现一些重复的逻辑,这样您就可以执行游戏规则并显示结果,而不必总是访问服务器。但是,您的服务器始终是事实的来源,而客户端只是在那里接受输入并显示结果。

    一般流程是客户端向服务器发送请求新游戏的消息。服务器将响应每一方的牌和第一个玩家的开局动作。然后客户端将简单地解析每个动作并显示结果。在卡片对象上,我们有许多操作的方法,例如 DrainHealth() 和 BuffAttack()。调用时,这些方法会触发附加到卡片脚本的粒子效果和音效等内容。

    【讨论】:

    • 感谢泰勒的建议。我们也在考虑与您描述的类似的解决方案,但是对于所有那些令人困惑的“高级教程”,我们开始质疑我们的决定。
    • 最后一件事。您使用的是自托管服务器还是任何可用的解决方案(如 photon)(如果您使用的是 photon,您选择了他们的哪个解决方案?)
    • 教程从来都不好玩。我记得他们在我们的游戏上编码是多么痛苦。对于我们的服务器,我们在亚马逊 AWS 上使用了 php/mysql。
    • @TylerDay 在您的 TCG 中,您是如何处理定义所有卡片的?您是否使用某种配置文件来存储所有卡片及其属性,或者您是否有一个抽象 Card 类和许多继承自它的类?也许甚至比这些其他方式?你们能详细说明这方面是如何处理的吗?谢谢!
    【解决方案2】:

    是的,效果应该在客户端上,我假设你的游戏将是回合制的,对吧?那么你可能想看看光子:

    https://doc.photonengine.com/en-us/realtime/current/getting-started/realtime-intro

    他们有很多关于他们的 API 的很好的教程,并且有据可查 :) 希望对你有帮助, 祝你好运

    【讨论】:

    • 是的,回合制。我只是在考虑光子解决方案。但是,如果逻辑在客户端上并不会使游戏可破解
    • 我不这么认为,你必须记住,游戏被编译它不像你可以在 web 开发中看到 javascript 文件......
    猜你喜欢
    • 2013-12-08
    • 2020-10-22
    • 1970-01-01
    • 2015-01-05
    • 1970-01-01
    • 1970-01-01
    • 2011-07-24
    • 1970-01-01
    • 2017-08-22
    相关资源
    最近更新 更多