我想创建一个棒球模拟游戏。
这些运动管理游戏是否基于运气?完全基于运气的管理游戏并不公平,但它也不能太可预测。这些游戏背后的逻辑如何运作?
答案 0 :(得分:14)
一切都与概率和统计有关。您可以根据您指定的某些属性设置发生事件的机会,然后随机因素在播放期间进入,以使事情变得不那么可预测且更有趣。通常,您从一些外部源获取大量统计数据,将其编码到游戏数据库中,并编写一个系统,将随机数与这些统计数据进行比较,以生成近似于统计数据所基于的实际观察结果。
过度简化的例子:说你的游戏让Babe Ruth在8.5%的时间内击中本垒打,而一些较小的家伙在4%的时间内命中率。这些是您测试的属性。因此,对于您模拟的每个音高,选择0到100%之间的随机数。如果它小于或等于属性,则击球手得分本垒打,如果它大于属性,则他们不得。经过几次投球后,你将开始看到Babe Ruth的质量表现相对于另一个人,因为他的主场比赛往往会超过两倍。
实际上,你有超过1个属性,具体取决于投球的类型。而其他玩家可能会选择使用哪些救援投手来尝试利用击球手的能力中的弱点。因此,游戏玩法来自这些不同属性之间的相互作用,您试图最大限度地提高属性测试对您有利的机会。
PS。对于有关棒球的任何错误道歉:我是英国人所以不能指望他们理解这些事情。 ;)
答案 1 :(得分:12)
正如您已经想到的,此类游戏的核心组件是匹配模拟引擎。作为Spence said so,您希望模拟“看起来正确”而不是“正确”。
前段时间我参与了橄榄球比赛模拟,并且有一种方法非常有效。你的比赛是有限状态机。每个游戏阶段都是一个状态,其结果转化为相变或游戏状态的变化(得分,替换,......)。 添加一个事件/监听器系统来处理与你正在模拟的游戏结构没有严格关系的东西,你有一个很好的结构(每次在你的模拟中发生一些事情,例如犯规,发射一个事件;听众可以是评论生成系统或负责团队战略的AI。
你可以从一个粗略的模拟引擎开始,该引擎使用你的玩家统计数据平均处理团队级别的事情,然后转向更详细的模拟玩家级别的东西。我认为这种迭代方法非常适合游戏模拟,因为你希望它看起来正确,一旦元素看起来正确,你就可以停止迭代它并在系统的另一部分上工作。
随机游戏当然是游戏的一部分,因为正如你所说,你不希望游戏过于可预测。一个非常简单的事情是在执行特定动作(例如抛球)时对玩家和团队统计数据进行虚拟骰子滚动。
编辑:我假设我们正在谈论像Hattrick这样的管理游戏,你在那里管理一个名单并模拟游戏结果而不是2D / 3D图形模拟。
答案 2 :(得分:4)
通常计时加上随机性使游戏可重播EDIT澄清我的意思是就你的音调何时来说,如果确切地说你可以学会完美地演奏它,你需要在准确的时间周围进行小的随机性你挥杆让游戏有机会)。如果你做像曲线球这样的事情,增加窃取基地的能力等,AI在这方面有很大的作用。
让游戏“正确”不是设计或数学的一个因素,而是一种感觉。你会尝试一些东西,玩它,看看它是否有趣。如果没有尝试不同的算法或游戏玩法,那么在你做对了之前。
答案 3 :(得分:3)
模拟非常关注想象世界,因为您创建的代表了想象世界的各个方面。你需要为玩家建模,指定游戏规则和游戏动态。
http://cplus.about.com/b/2008/05/31/nathans-zombie-simulator-in-c.htm
在这里查看基于代理的模型:http://www.montemagno.com/projects.html
答案 4 :(得分:1)
创建自己的游戏的一个好处是你决定游戏逻辑将如何运作。如果你希望游戏有一个高度的运气你可以设计它。如果你不希望游戏有一个高运气,那么你可以设计出来。
这是你的游戏,你可以制定规则。
答案 5 :(得分:1)
你在谈论你玩的棒球比赛还是游戏模拟器?棒球比赛可以像街机一样,也可以是幻想体育运动,也可以是混合体。
当Front Page Sports Baseball成立时,我在Dynamix工作。这是基于统计数据的,这意味着您可以使用各种玩家的统计数据来玩游戏和季节。这意味着许可大联盟数据。它使用统计数据来影响结果。
有一种常规模式和“快速模拟”模式,可以更快地完成游戏。
答案 6 :(得分:1)
我认为Kylotan有正确的策略。棒球有一切的统计数据。将游戏模拟到您可以管理的最详细级别。结合玩家统计数据以确定每个结果的百分比机会。使用随机性来决定结果。
例如:击中的几率基于击球平均值,投手的ERA等。对方球队的投注百分比决定了出局失误的可能性。
在选择阵容时,您向“经理”显示的每个统计数据都会对游戏玩法产生一些影响 - 否则经理会根据误导性信息做出决定。
答案 7 :(得分:1)