Unity - 交易卡牌游戏架构

4

我正在尝试在Unity中开发一款TCG(交易卡牌游戏),但由于项目架构和卡牌效果方面遇到了困难。作为一个Web开发背景的人,我认为所有逻辑和卡牌效果都应该在服务器上,但是通过一些Unity教程,我认为逻辑应该在客户端上,并且我应该使用基于房间的简单服务器来通知玩家行动。这样做正确吗?

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

2个回答

4
我曾经在一款iOS/droid上的主流TCG游戏中工作过,因此这些都是从经验出发的。您绝对希望所有游戏逻辑和规则都在服务器上。不要相信客户端是任何游戏结果等真实数据来源。人们可以通过篡改发送回服务器的数据来轻松地黑进这些内容。他们不需要反编译游戏来完成,只需嗅探网络流量即可。
话虽如此,您可能会在客户端和服务器上都有一些重复的逻辑,只是为了强制执行游戏规则并显示结果而不总是命中服务器。但是,您的服务器始终是真实数据的来源,而客户端只是用于接受输入并显示结果。
一般情况下,客户端会发送一个消息请求服务器开始新游戏。服务器会响应每一方的卡牌和第一个玩家的开局棋步。然后客户端会简单地解析每个棋步并显示结果。我们在卡牌对象中有许多操作方法,例如DrainHealth()和BuffAttack()。当调用这些方法时,它们将触发与卡牌脚本相关联的粒子效果和声音特效。

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

0

是的,回合制。我刚考虑过 Photon 解决方案。但如果逻辑在客户端上,那么游戏不就容易被黑吗? - user4825317
我认为不是这样的,你必须记住游戏会被编译,不像在Web开发中可以看到JavaScript文件... - malle

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接