Kyl*_*tan 14
一切都与概率和统计有关.您可以根据您指定的某些属性设置发生事件的机会,然后随机因素在播放期间进入,以使事情变得不那么可预测且更有趣.通常,您从一些外部源获取大量统计数据,将其编码到游戏的数据库中,并编写一个系统,将随机数与这些统计数据进行比较,以生成近似于统计数据所依据的实际观测值的结果.
超简单示例:说你的游戏有Babe Ruth 8.5%的时间击中本垒打,而一些较小的家伙有4%的时间击中.这些是您测试的属性.因此,对于您模拟的每个音高,选择0到100%之间的随机数.如果它小于或等于属性,则击球手得分本垒打,如果它大于属性,则他们不得.经过几次投球后,你将开始看到Babe Ruth的质量表现相对于另一个人,因为他将倾向于击出两倍的本垒打.
实际上,你有超过1个属性,具体取决于投球的类型.而其他玩家可能会选择使用哪些救援投手来尝试利用击球手的能力中的弱点.因此,游戏玩法来自这些不同属性之间的相互作用,您试图最大化属性测试对您有利的机会.
PS.对于有关棒球的任何错误道歉:我是英国人所以不能指望他们理解这些事情.;)
chr*_*eml 12
正如您已经知道的那样,此类游戏的核心组件是匹配模拟引擎.正如Spence所说,你希望模拟"看起来正确"而不是"正确".
我前段时间在橄榄球游戏模拟工作,有一种方法很有效.你的比赛是有限状态机.每个游戏阶段都是一个状态,其结果转化为相变或游戏状态的变化(得分,替换,......).添加事件/侦听器系统来处理与您正在模拟的游戏结构没有严格关联的事物,并且您具有良好的结构(每次在模拟中发生某些事情,例如犯规,触发事件;听众可以是评论生成系统或负责团队战略的AI.
你可以从一个粗略的模拟引擎开始,使用平均的玩家统计数据处理团队级别的事情,然后转向更详细的东西,在玩家级别模拟事物.我认为这种迭代方法非常适合游戏模拟,因为你希望它看起来正确,一旦元素看起来正确,你就可以停止迭代它并在你的系统的另一部分上工作.
随机游戏当然是游戏的一部分,因为正如你所说,你不希望游戏过于可预测.一个非常简单的事情是在执行特定动作(例如抛球)时对玩家和团队统计数据进行虚拟骰子滚动.
编辑:我假设我们正在谈论像Hattrick这样的管理游戏,你在那里管理一个名单并模拟游戏结果而不是2D/3D图形模拟.