我想测试一些纸牌游戏战术,我的目标是知道巫术战术在现实生活中会更好。为了做到这一点,我做了一个模拟,但我不知道我是否做了一个好的。所以我想知道如何创建一个好的模拟。
你不能模拟在现实生活中被压迫的每个因素,例如虚张声势。还有一些因素可以消除,我尽可能地消除了。留下的因素,如虚张声势,超出了范围。模拟那些是不可能的。
我使用我的模拟项目来比较一些战术。通过这种方式,您可以看到您可以使用哪种策略来对抗其他策略。这样做的缺点是,如果你知道其他玩家的战术,你就可以使用它。如果您不知道可以使用哪种策略,那么您需要有一台计算机来测试它。因此,您只能使用此项目来审核您的游戏风格。
这个问题不是关于创造“神战术”,而是关于编写可以用来模拟例如纸牌游戏的好的模拟软件。所以我想知道如何进行良好的模拟:
答案 0 :(得分:4)
回答你的三个问题:
卡片粘在一起的因素和不同的随机技术应该不重要。我假设您将通过使用伪随机噪声源(如rand())来模拟混洗,以随机化卡的顺序。大多数改组技术可能足够好,这对于你的目的来说是一个非常充分的模型。
我不太了解游戏,知道如何简单地描述策略。你所描述的测试应该回答这些问题,当他们正面对面时,哪些战术将会获胜。如果这些是唯一的两个策略,并且它们足够简单以至于可以完全实现,那么是的,您的测试将告诉您哪个更好。如果这个游戏就像大多数这样的游戏并且涉及许多不同的策略和微妙之处,那么知道这两个策略中的哪一个会在两者相遇时获胜可能不会告诉你更多关于哪个实际上是更好的策略。
我在回答你的第二个问题时基本上已经解决了这个问题,但是如果你已经100%正确地编制了战术,那么机器人对峙的结果将会很有用,因为他们会告诉你哪一个当他们正面对面时,两种策略会更频繁地赢得胜利。我认为在大多数这样的游戏中,仅凭这一点并不能说明战略总体上有多好。再说一次,我对这款游戏的确不完全了解,但如果游戏涉及许多可能的策略,那么测试可能不会告诉你太多有用的东西。
答案 1 :(得分:2)
使用这种模拟无法证明任何事情。所有你真正倾向于模拟A比B更好,但不是它们在现实世界或其他方面的效果 策略。
你可以对一些可能更好或更糟的方法有所了解,但这就是它。
答案 2 :(得分:1)
我的答案不是基于研究,而是我在小范围内模拟战术的想法。
这就是我进行模拟的方式:
您需要做的第一件事是确保您可以实施您想要比较的策略。如果您无法对它们进行编程,那么您无法自行测试它们。
写下测试范围,每次有新想法时都可以扩展项目。当你这样做时,你正在创建一个永远不会完成的项目。因此,请标记您要执行的操作,并考虑每个选项。虚张声势就是一个很好的例子。实施虚张声势模拟几乎是不可能的,你可以计算出你有多少获胜的机会,但是一个普通人虚张声势,例如当他认为其他人会通过或者他会赢。在程序中实现“感受”是很多工作。 不是每个人都有关于虚张声势的相同感受。但是你可以制作不同的诈唬套装(感觉)并让机器人在每种策略中使用它们。这将是很多工作,在我的情况下,这是不值得的。
了解您希望如何比较战术。你想知道你必须获得多少变化吗?或者你是否想出于其他原因做一些随机游戏?
每个游戏都有更多的方言,找出你想要遵循的规则集。实施这些规则。如果不这样做,模拟将是不正确的。
实施所有策略,尽可能使用相同的功能。这样您就可以自动测试核心功能。通过这种方法,您可以更快地完成,并且您将发现从未找到过的错误。
测试系统。测试是非常重要的模拟。 一个小问题可能导致错误结果。使用调试器遍历您的代码,以了解它是否适合骑行。 制作“调试模式”,在此模式下显示每个游戏的结果并进行审核。同时让其他人审核游戏的播放方式。
答案 3 :(得分:0)
在您的详细信息请求中,您会问:
什么是重要的?
你怎么能做出好的模拟?
您如何知道它与真实的现场情况有关。
第一个问题的答案只能由游戏专家回答;创建AI并不是一件容易的事情,要创建出色的AI,你需要了解游戏中的所有策略,并且需要对这些策略进行编程。然后你要么知道何时使用这些策略,要么就知道你是什么试图确定让计算机循环通过所有组合。
做出好的模拟很大程度上取决于你想要实现的目标。您可以使用Chess方法并让AI播放所有可能的场景并选择最好的场景。这实际上会完全消除游戏中的策略,但也可能会出现一些新策略;但是优秀的国际象棋程序会使用开放式书籍而不是。为了模拟现实生活,你可能想要使用一些策略组合,并根据情况播放所有可能的动作。
另外,你说你不能虚张声势,但这不一定是真的。如果它是游戏中的策略,那么你应该编写虚张声势并尝试编程以对诈唬做出反应。如果你要这样做,你需要实施诈唬技能并检测诈唬技能以及虚张声势的百分比。有了它,您还可以了解诈唬对于给定的现实生活技能水平有多常用。如果你实现虚张声势,你可能希望能够开启或关闭模拟。
为了测试你的模拟器,并确保它对现实生活是准确的,我建议让计算机面对所有已知的组合/结果,并确保结果与你在现实生活中看到的结果相同。在开始循环之后,但是慢慢加速测试,首先运行一些策略并检查结果,然后再添加几个。如果你从一开始就把所有策略都放进去,你将很难发现其中一个策略无法正常工作。