gpt4 book ai didi

c# - 多人游戏中玩家在服务器上的个人棋盘

转载 作者:太空宇宙 更新时间:2023-11-03 14:23:36 25 4
gpt4 key购买 nike

到目前为止,我有相当多的工作游戏,但到目前为止我真的无法添加我想要的所有功能,因为我无法解决那个问题。

假设我有类棋盘,每个棋盘都有正方形和这些正方形上的棋子。我有很多玩家连接到游戏,对于每两个玩家(和观察者等)我需要有单板。我的问题是从哪里开始?

我认为首先我需要类 Board 的多个实例,然后我需要一种将这些板绑定(bind)到单个游戏(游戏由 GUID 标识)的方法。

我的问题是从哪里开始?

到目前为止,我已经可以正常工作了,但它大量使用了数据库,而且它并不是真正的最佳选择,而且使用我目前的方法,我无法真正做我想做的所有事情(移动验证、转储板状态以供将来引用等)。

最佳答案

由于存储游戏状态的复杂性,棋盘游戏可以很好地利用 MongoDB 等非关系数据库。

如果这不是一个选项(我假设您使用的是完整的 Microsoft 堆栈),我仍然会避免对数据存储使用关系方法。在不知道你的游戏细节的情况下,我只能推测。因此,我将以拼字游戏为例。

甩板

您可以将整个棋盘状态按字面意义存储在 boardState 表中,如下所示(5x5 非规定拼字游戏板 :))

* * * o *
* w o r d
* * v * *
* * e * *
* * r * *

然后所有处理都可以由应用程序逻辑处理。如果您尝试以关系方式存储此信息,请想象一下数据库开销!

移动验证

虽然拼字游戏没有“ Action ”可言,但这无论如何都应该避免数据库。字词检查、棋盘限制、游戏逻辑等所有过程都应完全在应用层处理。

应用实现

如果我是您,我会继续您的路径,即拥有许多 Game 类的实例,每个实例都包含一个 Board 对象。将所有内容存储在内存中,并在应用程序层中进行所有需要的计算,直到需要持久化(如果您想保存游戏以备后用,则为棋盘状态,游戏得分)。这个时候dump到数据库。


在不了解您的游戏逻辑的情况下,我无法推测我会如何处理它,所以有一个 20,000 英尺的自上而下 View 。

更新:

根据新信息,我只需将带有 GUID 标识符的 GameCollection 类加载到内存中。您可以通过 colGames[GUID] 之类的方式访问各个游戏,并通过 colGames[GUID].Board 访问棋盘。游戏结束/保存后,将所有相关信息存储在数据库中,并从内存中删除。

关于c# - 多人游戏中玩家在服务器上的个人棋盘,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4682005/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com