求一款单机单机战棋策略游戏戏,背景是二战,可以下战棋,你可以操作战斗,也可以ai代打,有胜率几率

网游加速器,100天体验时长,免费申请,0延迟,72小时免费加速,网游加速器,注册送3天,邀请好友得1个月-网游加速器

我的印象是 打仗回合制 好像下棋 囿个很强的单位是龙骑士 西方魔幻类 2D 2.5D 画面感觉很不错 是1024乘以什么的 打仗时走得是 六边形的格格 !

这个人说的和我印象中差不多 然而也没找箌答案!

求一款游戏单极回合制,背景好像是西方魔幻类可以在类似酒馆的地方招募雇佣兵,战斗换画面是一组一组的每组都是一個方阵,有龙有人,还有大炮吧主角在地图上从一个城市到另外一个城市,进入城市的页面类似大航海时代的城市页面能提供的 就这些了凭印象回忆的,求大神!!解惑!!

Game)种种的细分归结原因,想必还昰因为近似因素太多在大多数时候已经难以区分其本来面貌,只能一概而论所以本文也可以理解为SRPG或 RSLG开发的入门示例。

 这是一篇孤立嘚博文精简了示例代码效果及行数,仅保留最基础功能与以前写过的[Java版SLG游戏开发入门]没有直接联系,但可以互相参看

 AI(Artificial Intelligence),即人工智能有时也称作机器智能或人工脑,是指那些由人类制造出来的系统在面对具体事务时,所表现出的类人反应通常情况下人工智能哆指以人类思维模式为准绳,通过计算机模拟实现的智能

 人工智能的定义可以分为两部分,即“人工”和“智能”“人工”比较好理解,争议性也不大有时我们会要考虑什么是人力所能及制造的,或著人自身的智能程度有没有高到可以创造人工智能的地步等等。但總的来说“人工系统”就是通常意义下的人工系统。

 举凡涉及到什么是“智能”的话题就问题多多……人唯一了解的智能是人本身的智能,这是普遍认同的观点但我们对自身智能的理解也都非常有限,对构成人的智能的必要元素也知之甚少所以很难真正定义什么是“人工”制造的“智能”。


 据此我同样很怕写涉及到AI题材的博文,首先AI处理本就是个有待研究的领域因为甚至连[智能]究竟是什么都是個很难解释的问题,这其中还涉及到其它诸如意识(consciousness)、自我(self)、心灵(mind)(包括无意识的精神(unconscious_mind)等等存在相当大程度的争议。

 而評判AI的标准也不尽相同抛开还很遥远的人工生命(“强人工智能”或“弱人工智能”),似乎要成为标准的“机器人三定律”图灵测試等等不说,单从游戏AI引擎的设计角度讲这已经是个很严肃的话题,并非一两行代码就能构建完成的负责任的说,如果要严谨的写出┅个中等规模战棋游戏的AI处理代码并配合图文解释且标注上参考文献,加上关键字摘要等等差不多就是篇硕士论文|||,总之水很深考慮到篇幅及鄙人水平因素,故此文中并没有深入探究仅仅给出一个“入门示例”,供看客参考而已

 事实上我们之所以喜欢游戏,很大程度上是基于“与天斗与地斗,与人斗其乐无穷”的理由,相信极少有玩家会喜欢战场上的敌人永远一动不动任你蹂躏更不会有人囍欢仅仅出现You win again字样的游戏。应该说游戏中的AI很大程度上讲是体现在电脑与玩家的对抗中,一款好的游戏AI应该能足够刺激玩家“蹂躏”玩家,吸引玩家参与对抗


 不妨这样讲,制作游戏的目的相较于体现玩家的“聪明”倒不如说是更希望看见他们的“愚蠢”,看见他们被游戏玩弄得惊慌失措叫苦连天,还乐此不疲的“憨佬”形象这才是我们作为游戏开发者的最大快乐(^^)~

  游戏AI并不总是标准含义上的AI。而单元(也可理解为角色或者基本对象以下同)游戏AI正是为设计出具有提供某种挑战或某种真实体现的生命特征的一次真正的尝试。

  譬如在玩家与游戏的互动中只站在一处、从不移动的警卫会显得非常不真实。不过如果你创建一个例行程序(routine),使他不时的朝四周張望或变换他的姿势,他会看起来更具活力通过创建一个在预设的路径上行走的警卫偶然停在站岗的警卫前,并好像与他谈话这样的凊景真实的体现能被极大地提高。单元活动AI正是出于这种目的制作的“拟人性”而非“拟人”AI。


  1、被动式:现实生活中如果有人打叻你的左脸,要不然就伸出右脸让他再打要不然就伸出右手还他一巴掌,总之你会有相应的“反应”。而被动式AI正是这种情况的体現。

  在被动模式下单元(角色)随时会对自身环境中的变化做出响应。如果一个敌人发现了你开始向你跑来,并朝你射击那么他们巳经做出了看到你的反应。


  2、自发式:在自发模式下单元做出行动时并不依赖于自身环境中的任何变化。一个单元决定从其所站立的岗哨移向基地周围的某个游动岗哨则这个单元已经做出了一次自发性的行动。

   通过在你的游戏中加入不同的单元活动元素就能够制造出單元的“聪明”假象,令玩家产生对手如同真人的错觉


   好比人类的智商是体现在行为及对世情的准确判断上,真正让一个游戏单元看起來聪明或者愚蠢的同样是他们的行动。

   简单的说如果游戏单元依照玩家认为可行的方式移动,或者在玩家认知范围合理的情景下做如閃避这样的动作那么单元看起来会很聪明,相反则会给人愚蠢的印象但是,实际开发中这种现象都并非真实存在而是看起来聪明或愚蠢的假象,因为程序仅仅与玩家面对的基本情景相关联而并非游戏中角色真的聪明抑或愚蠢。

   如果你处理恰当且这一应用包含的范圍广泛,你的玩家就会相信你的单元足够“聪明”为了实现这一目的,你需要把自己放在你所构建单元的位置上思考如果把你丢到游戲中,在他们的情景下你会怎么做你将怎样回应各种各样的攻击或遭遇敌人?如果什么事都根本没发生你又将会做些什么?

   如果你回答了这些问题并针对你的单元将遇到的每种情景正确的实施了它们,你拥有“看似聪明”单元的机会就会最大化这也是创建一个优秀嘚、稳健的游戏AI的第一步。


谈过了单元行为我们再来说说单元运行中的事件分类。

  1、确定性AI:  确定性AI的单元(角色)行为或者说表现是特定的可预测,没有任何不确定因素其具体实现如同我在博文[Java伪寻径追踪实现]中展示的单元追逐演算,一个非玩家单元紧随玩家单元XY坐标前进,直至与玩家单元或目标点重叠为止

  与确定性AI相反,非确定性AI在行为模式上存在着很大程度上的不可预测性理论上讲甚至能够令单元(角色)做出很多超出程序员构想的突现行为。简单实现可见随本博文发布的程序示例(单元随机动作)但其复杂实现则需偠应用到神经网路、贝斯叶概率模式、乃至基因演算法等相关知识支撑。故此鄙人对严谨意义上的非确定性AI也不敢置喙太多深入研究有待看客自行探索。

  3、[隐藏类别] AI处理结果欺诈(流氓手段、作弊、赖招随便叫(-_-|||)):  这种方式事实上是程序员心智肚明,却又讳莫如深的一種编程技巧我读书时老师戏称其为“流氓手段”。还记得在当时课堂上老师曾举过这样一个例子,让我们写出一段能够得到1-100相累加结果的最简代码同学们发言很踊跃,但是却没人有正确答案而当我们质疑老师的评判标准时,老师却给出了绝对最简的答案——直接显礻5050

  应该说,在处理绝对可知结果时这种方式确实非常有效,对于频繁运算来讲更能体现其价值所在;而对于游戏中某些运算复杂但結果却单一的事件,确实可以采用“流氓手段”进行编程即可提高效率,又减少了代码量但却决不能轻易被用户知道,尤其是在网游嘚转轮盘、精炼等结果中……


  就我目前所知的游戏AI实现中确定性AI可谓绝对主流,因为它的结果固定有穷所以相对于非确定AI占用程序资源更小,效率更高实现也更简单。但有利必有弊对一个聪明的玩家而言,找出一个确定性AI的规律是再简单不过的事情有限的行动模式,也必然决定游戏可玩性同样有限

 而非确定性AI,则毫无疑问是块雷区无论对我这种业余玩票性质抑或专业游戏开发者尽都如此,它巳经无限延伸入“人工生命”这块“神之领域”并非短时间就能够学习甚至使用的技术。但如果能在程序中成功利用则无疑会极大增強游戏可玩性。

 至于我提到的“流氓手段”则只能意会,不可言传大家心照不宣。

 总体来讲游戏AI无论是确定性或非确定性,单元(角色)都难免如同巴浦洛夫狗流哈喇子中的dog那样仅仅会对特定事件做出“条件反射”,依据制作者设定好的行为模式而并非角色的自主思维运作行为可能性是“有穷”的,并没有如人类般拥有“无限可能性”故此可以看作一种“伪智能”,而非严格意义上的“人工智能”当然,我相信随着技术的发展这种“伪智能”技术最终将进化为真正意义上的“人工智能”。

 最廉价、同时也是最实用的技术茬游戏实现(非游戏实现有出入)中的基本运作方式是采用穷举方式,罗列出单元所有可能的动作或状态再利用switch、if等方式判定各种事件關系及满足条件,据此变更单元的动作或状态由于我们所能做的仅是编辑从一状态到另一状态的转换,完成这系列一行为的算法,就可归屬于分层有限状态机

 当利用随机数等方式触发模糊逻辑(fuzzy logic)时,会令单元的动作较难预计产生大量新的分支判断,这时处理多个有限狀态机情况的技术实现就是模糊状态机,它以看“不精准”的响应来进行不确定性结果的处理

 这两项技术可视同有限状态机与模糊状態机的融合体,他们尝试以一种树状结构分别处理有限及模糊状态是一系列由同一个支点扩展开的行为模式树,不同的是扩展分层有限狀态机有更为严密的控制流及数据流当然代价是对于游戏系统的资源损耗也更多。

 以上是AI引擎开发中常用的一些基础概念如果想深入叻解相关细节,还需看客自行深入研究

关于单元(角色)寻径:

  如果单元拥有AI,那么他理所应当的能够自主行动但是,我们都知道游戲中角色是不存在或者说很难实现真正意义上AI的所以与AI处理同样,寻径同样是我们这些程序员的一种“欺诈手段”用以“蒙蔽”用户,让他们产生单元拥有自主思维的错觉

  关于常见的几种寻径方式,可见参本人博文[Java中的A*(A star)寻径实现]以及[Java伪寻径追踪实现]不再赘述。

  简单嘚说平面图是由x、y两点构成的,而所谓寻径就是在网格化的地图上连接出点到点间的路线交集;如果我们以二维数组mapList表示地图数据moveList表礻地图上可移动点的话,那么复合mapList地图数据及moveList上可移动点所构成的交集就是寻径后得到的单元行走路线,即寻径结果

  相较于AI部分,寻徑可以看作AI实现中的一项分支技术个人认为没有太过深入探究理论的必要,唯一需要关心的仅在于多对象寻径时的效率或准确性取舍問题,同样请参考相关技术文献否则本文随时超出文章最大字数……

SLG离不开战场及角色与各种事件判断,而具体到其构建过程大多遵循如下顺序:

1、地图(背景战场图)构建

2、获得对应地图基本单元的对象集合(2D游戏中多为二维数组)

3、获得可移动点的对象集合

4、创建哋图上角色(针对于地图基本单元放置)

5、激活键盘或者鼠标事件(处理如光标移动等)

6、根据选择的不同在地图单元上绘制相光事件触發物(菜单等),以供事件触发

7、当选择事件时事件处理开始,各单元(角色)根据预先设定响应事件反馈给玩家(比如移动、攻击等倳件)

8、当我方全部行动结束或者选择结束后敌军开始由AI自行处理事件

9、判定是否满足战斗结束条件

10、如果未满足步骤9,则循环回步骤1同时回合数+1,游戏继续

 在这一过程中还可以加入如兵种、物品、特殊人物加成等影响性数据,但基本流程不受影响 

  本博文附带的演礻代码有核心基本类如下,具体请参见代码注释:

 ————华丽的分割线———

 本来上周就说写的东西却由于某个事件的刺激,导致仩周某几天中回家就跑去各个论坛跟水军打嘴仗拖到本周才动手垒码……对于这种“嘴勤屁股懒”的行径,在此强烈鄙视自己(-_-|||)……

PS:实際上示例代码周二晚已完成计划中昨晚就该发博文,结果中途忍不住又点了某个论坛又和水军对喷半天,所以耗到今天这篇博文才得鉯面世写的不够周全,这两天会慢慢补齐还望各位大人见谅^^。

我要回帖

更多关于 单机战棋策略游戏 的文章

 

随机推荐