use*_*120 1 android design-patterns game-engine
我正在制作像涂鸦跳跃这样的Android游戏.到目前为止,我随机创建每个级别,使用我想要的不同类型平台的百分比:
FE
现在,我创建了各种适当的数量,随机播放,然后我遍历列表以捕捉任何不一致.就好比如果有两个突破平台,我不能从一个跳到另一个.我还在平台上放置物体以跳得更高.如果有一个对象,则以下平台应该更远.
这一切都有效,但它只是被黑客攻击在一起,并且我想要添加的内容越多越复杂.
有没有办法用AI解决这个问题?我可以拥有一套规则的东西,它会生成一个遵守这些规则的随机平台/对象组合?有人能指出我正确的方向吗?
编辑
我没有看到状态机解决方案工作的一个案例是,当我创建阵型时:稳定,破裂,稳定并且我无法从1到达平台3.然后我将不得不在平台1上添加弹簧但是在创建时第一个平台我对下一个状态一无所知.有任何想法吗?
假设我处于一种状态并且有3种不同的转换选项:在我的情况下,转换是什么?我是否必须随机选择下一个州并检查这是否是一个选项(根据我的百分比)?
@Carlos:你说:"对象的集合,可以按类别排序,因此规则可以是面向类别的".你是什么意思?
关于对象生成,肯定你必须改变你的方法,因为控制器中的模型逻辑太多了,更重要的是,因为逻辑可能会改变,你会变得疯狂地改变它并再次测试一切.
我会做的是一个充当对象工厂的类.在其中,您将拥有一个状态机,即一组代表当前状态的变量,以及一系列定义接下来会发生什么的规则.
在第一种方法中,考虑您的平台,我会:
因此,当你构建世界时,你不需要创建一个随机数组然后用硬编码逻辑对所有内容进行排序,而是要求工厂自己初始化,然后在循环中,你继续要求下一个对象,您确定它是有效的.
然后,如果更改或添加新逻辑或限制,则只需更新已有的结构,添加或修改条目.
更重要的是,你可以尝试构建一个人类可读的文件,比如xml,你可以在其中定义对象的集合,以及它们之间的限制性关系,然后构建一个引擎来解析它并将其转换为java数据结构,所以你可以以非常友好的方式改变这种逻辑.
有了这个,您可以构建一个真正可扩展且易于维护的代码.
更新:
当你有一个可能需要修改的对象取决于下一个对象时,你可以用两种方式来支付它(首先我想到):
当你设计规则时,你发现大多数事情是允许的,不要让自己复杂化:你可以创建规则作为例外列表,我的意思是,下一个状态可以是任何一个,同时没有在你的规则表中,除了明确禁止它之外.此外,您可以混合使用这两种规则.例如,如果对于一种对象,一切都被允许但只有一件事,你可以将该规则放在禁止的事物表中.如果对于其他元素,相反,几乎所有内容都被禁止,您可以将允许的内容放在允许的事物表中.这样,当你打算为下一个服务时,你会看到当前状态,然后检查两个表:
如果您有多种可能性,则选择任何可用对象.请记住,您根据百分比在开头生成了完整的集合,因此您在此时选择的任何一个集合也将完成您的基数规则.
此外,请记住,这可能会导致最终阻塞情况:当您接近结束时,因此您没有剩余的对象,可能您会发现没有任何一个可用对象有效.此时你可以决定
*关于我何时说
"对象集合,可以按类别排序,因此规则可以是面向类别的".
我的意思是你可以拥有与特定对象相关的规则
此外,请记住,您需要太多不同的东西:一个是我描述的对象工厂,以生成一个有效的世界(因为它是您主要关心的),但是您需要一个完全不同的系统来表示应用程序生命周期,如Junior Buckeridge描述如下.
所以,总而言之,我知道所有这些看起来都像是疯狂,但我可以说,对我来说,你处于任何可能发展的一个更有趣和最有趣的部分之中.毕竟,当你把所有东西放在一起时,你会看到你想象的世界,就像魔法一样!
| 归档时间: |
|
| 查看次数: |
408 次 |
| 最近记录: |