游戏中的人机对战,“机”这一部分是由两个部分组成的:数值(比如bot数目、血量、命中率、技能cd、攻击力、防御力等等)和AI(人工智能,控制bot行为)。很多没入行的朋友经常把这两个概念混为一谈,然后铁口直断AI战胜玩家是非常简单的事情。

先说结论:对挑战电脑的难度而言,AI和数值是相乘的关系,通过改良AI设计可以达到让电脑更具挑战性的目的。当前游戏行业普遍使用的都是弱人工智能,即通过预设AI使bot呈现人工智能的效果,请注意这个大前提。在制作AI的过程中,思路是非常简单的,就是将设计师的思维(或者叫人的思维)植入AI代码中。
在一个具体的情势中,人会如何行为就设计AI如何行为,当然有一些具体的方法因游戏和关卡环境而异,比如战棋游戏的格子限制、剧情包装需要、关卡地形等。而设计的难点在于两个方面:

1.设计师的精力和智力有限

(1)先说精力有限

遵照弱人工智能的设计思路,设计师需要穷举所有的战斗情势,对不同情势下的bot行为作出决策然后形成AI,而实际上战斗情势是几乎不可能穷举的。以简单的2V2回合制站桩战斗为例,假设这个游戏有2种职业,每个职业战斗中可使用2个技能,那实际可能的战场行为是9(职业组合)×4(技能组合)=36,另外还有很多其他数据也会影响AI行为,如血量、技能冷却、buff状态,而这些数据往往是连续的,如血量可以是1~n任意一个值,这些数据导致战斗情势复杂度指数级提升。鉴于此,AI设计过程中往往会进行很多简化,如90%以上生命值为安全,10%~50%为受伤,10%以下为濒死,而实际上呢,不同职业承受伤害能力显然不同的,T和奶同为10%的生命值,生存能力一样吗?即使相同职业面对特定攻击力的敌人,15%可能再挨一下就死了,50%可能能挨2下,但AI认为10%~50%是同一个情势,这个合理吗?当情势判断由于简化导致出现不合理时,AI的智能程度自然也会大打折扣。

(2)再说智力有限

通常设计师是一类游戏中最精通的玩家,他们面对游戏中一个具体情势时能很快给出比较合理的决策,但这种合理是有局限性的,当战场形势足够复杂,A、B决策短时间内都无法直观判断效果时,设计师其实也很难抉择最优策略,因此设计逻辑中可能存在大量次优策略,自然也导致AI智能程度下降。相比精力有限,智力有限的影响小很多,毕竟设计师是足以战胜大部分玩家的。

2.硬件限制

假设真有不开眼的土豪游戏公司,雇了一大帮牛B闪闪的设计师来设计AI,相信我,那个AI脚本的复杂度一定会超过你的想象。网络游戏AI由服务器计算,同一时间战斗的玩家很多,服务器CPU会因此不堪重负;即使土豪公司使用了宇宙级的服务器,但是要同时传送足够多的战场情势给服务器分析,网络带宽消耗也是非常大的,所以你还要交大把钱给中国电信。你真的够壕吗?对于单机游戏本质是一样的,将大量脚本载入内存,将大量运算交给CPU,二手出售平台会让你感觉电脑很“卡”。想象一下,人家玩3d的LOL飞起,你玩个2d策略游戏卡成马,你一定会默默撕掉笔记本外星人的logo,然后换上hasee……

综上所述,目前回合制游戏AI智能程度是不及真实玩家的,阵容、装备、技能配置等完全相同的情况下,电脑干不过玩家。那么问题来了?为什么有时候你会打不过电脑呢?有时候会觉得“哇这一关很有挑战性”呢?其实就是设计师欺负人啦(打破规则赋予电脑更多数值),比如你100攻击力,电脑150攻击力啦;你7级,电脑9级啦;你的农民一次采10矿,电脑的农民一次采20矿啦;你50个兵,电脑80个兵啦……有些游戏所谓的简单模式、地狱模式基本上也是在数值上下功夫。

因为AI和数值是相乘的关系,在同等挑战难度下,AI做得越好,电脑需要的额外数值越少,这个时候游戏会显得越有趣。试想一下,你的张飞和吕布对砍,1分钟内张飞需要每次攻击都暴击才能杀死吕布,否则张飞死,面对这样屌炸天吕布,你真的会乐此不疲地默默给张飞堆暴击吗?

回合制游戏对战AI制作请重视这两个难点相关推荐

  1. php 开发回合游戏,Unity回合制游戏战斗模块的制作

    回合制游戏相信大家没玩过也见过,了解它的玩法.回合制,那就是你来我回的,你一回合我一回合,直到把对方打败.市面上的回合制游戏比较经典的有梦幻西游,问道,神武,完美世界.这几个都还是很不错的.回到正题, ...

  2. AI回合制游戏,过程比较简单。程序中的f变量和条件语句用的很经典。

    本系列文章由zhmxy555编写,转载请注明出处. 文章链接  http://blog.csdn.net/zhmxy555/article/details/7447864 作者:毛星云    邮箱:  ...

  3. 使用C++完成一个小型双人对战回合制游戏

    #include<iostream> using namespace std; class hero {public:hero();//基础属性hero(int w = 80, int f ...

  4. [新手必备]如何用c#写挂机游戏的回合制角色对战(多人vs多人对战部分)

    前两篇文章中,我们讲了如何用c#搭配unity写出多人回合制游戏, 如果需要参考一下的朋友,可以点击传送门: 1v1部分,点击传送 1v多人部分,点击传送 现在,我们将进行回合制游戏最主要的部分,多人 ...

  5. python可以制作回合制游戏么_Python制作回合制手游外挂简单教程(上)

    正文 引入: 每次玩回合制游戏的时候,反反复复的日常任务让人不胜其烦 玩问道的时候,我们希望能够自动刷道,玩梦幻希望能自动做师门.捉鬼等等 说明: 该外挂只能模拟鼠标键盘操作,并不能修改游戏数据 我这 ...

  6. java rpg对战_[源码和文档分享]基于java的RPG回合制游戏

    一.工作积累总结 该项目是一个回合制RPG游戏,讲述了动物主角对抗人类,自逃出动物园开始,一路与人类对抗,提升能力,并寻找新队友组成团体,逼得人类不得不与之谈判,最终与人类达成了和平协议的故事.玩家可 ...

  7. 【Visual C++】游戏开发笔记十六 讲解一个完整的回合制游戏demo

    本系列文章由zhmxy555编写,转载请注明出处. 文章链接  http://blog.csdn.net/zhmxy555/article/details/7447864 作者:毛星云    邮箱:  ...

  8. 【Visual C 】游戏开发笔记十六 讲解一个完整的回合制游戏demo

    分享一下我老师大神的人工智能教程!零基础,通俗易懂!http://blog.csdn.net/jiangjunshow 也欢迎大家转载本篇文章.分享知识,造福人民,实现我们中华民族伟大复兴! 本系列文 ...

  9. 第9章 梦的初现——开发回合制游戏《勇者斗恶龙》

    这一章是对前面讲解的所有Windows 下游戏编程知识的一个总结和拔高,综合了Windows 基础编程,GDI 绘图基础,透明贴图,动画显示技术,输入消息处理以及粒子系统,是对前面八章内容的一个大综合 ...

最新文章

  1. 在线教育音视频质量评价与感知系统
  2. 面对面交流的好处_我们的交流方式是如何被网络社交媒体一步步改变的
  3. 前端学习(2582):生态圈练习解答
  4. Git添加和克隆远程库
  5. Soul 网关源码阅读(二)代码初步运行
  6. sql 触发器未触发_学习SQL:SQL触发器
  7. android ImageSwitcher案例
  8. 谷粒商城:10.商品服务 — 属性分组
  9. 解决Chrome插件安装时出现的 “CRX_HEADER_INVALID” (程序包无效) 问题
  10. Openpose的使用经历
  11. requests下载多张图片
  12. sublime text里面中文字体显示异常解决方案
  13. Windows10C盘文件简单介绍
  14. Spring Aop 5种通知写法及参数JoinPoint详解
  15. 这只“鸭子不一般”科大讯飞申请“躺倒鸭”商标
  16. 遇见MySQL 主从原理及问题的小tips
  17. Unity 3D游戏编程自学#7——NGUI入门
  18. weblogic fmw_12.2.1.0.0_wls下载及安装教程
  19. 爬虫——动态渲染页面抓取
  20. 面试必考排序算法最详细介绍,包含动画演示、大厂真题(每天一遍,面试必过)

热门文章

  1. [Power Query] 数据的拆分、提取与合并
  2. Python使用Selenium实现淘宝网滑块登陆
  3. SDUTOJ-4339奇怪的纸币
  4. 如何使用Facebook Messenger进行视频通话
  5. RecycleView与TabLayout联动展示更多功能列表页面的实现
  6. Android 图片着色 Tint 详解2—xml设置、selector
  7. c语言 opengl画仪表盘源码,opengl绘制五星红旗
  8. 情感分析_积极消极词库
  9. C语言 结构体存储空间分配
  10. 有什么文字翻译软件?可以文字翻译语音的软件有哪些?