×

自适性人工智能,为玩家创造绝佳体验

消耗积分:2 | 格式:pdf | 大小:296.26KB | 2021-01-30

陈文博

分享资料个

作者 Michael Matuschek

前言

除了纯粹的多人游戏(玩家体验主要取决于真人对手),人工智能 (AI) 是游戏设计的根本支柱。然而,商业游戏设计中的人工智能与一般意义上的AI有有着云泥之别:AI在象棋、围棋或星际争霸等游戏中势如破竹,轻松碾压顶尖选手,而其在商业游戏中的应用则不然。这里的情况截然不同:如果AI所向披靡,则会很快让玩家灰心泄气;而若其能力不济,无法与玩家势均力敌,则会让游戏索然无味。

有鉴于此,目前业界将目光放在了自适性AI上。这种技术能够根据个别玩家的游戏风格及水平进行调整,为广大玩家呈现既富挑战又充满成就感的体验,即达到“兴奋点”。这项所谓的“高度个性化”技术能够吸引超广泛的潜在玩家,从而取得丰硕的商业成果。

游戏中的AI

游戏中的AI主要用来操纵玩家之外的角色,比如确定敌人的攻击套路。在早期的电脑游戏中,难度级别主要在于增加更多对手或增强对手的能力,让其造成更多伤害或更快地移动。单纯的脚本或规则限定了游戏形态,不免显得机械枯燥—玩家的表现无足轻重,而游戏的版本决定了一切。在较为复杂的游戏(如 策略性游戏)中,这种蹩脚的AI也很常见,而其功用无非是为AI的缺陷“遮羞”: 通过获得更多的初始资源或更快地构建单元,否则无法与一流的玩家相匹敌。

自适性人工智能,为玩家创造绝佳体验

自适性AI的发展有赖于近年来的技术进步—现代计算机和游戏机的图像质量大幅提升,AI本身也有了长足的进步。依托强劲的处理器和更大的内存,游戏领域的精良算法已今非昔比。云游戏的发展趋势让游戏AI的突飞猛进指日可待。Google Stadia或GeforceNow等服务通过宽带直接将游戏串流到终端设备,让游戏摆脱本地硬件的束缚。这样游戏就能利用无限的云计算能力,实现高级的AI形态。

与玩家能力相匹配

鉴于这些技术发展,刻板的难度级别已显得不合时宜。如今的挑战在于打造既满足不同玩家水平又具备不同风格的游戏。

玩家可分为两类:“休闲”型—放松身心,注重游戏情节和视觉效果;“征服”型—寻求挑战和成就感。

因此,如今的自适性AI已经能够评估玩家的获胜率(“输掉游戏的百分比”),且用了哪些技巧获胜(“首选的Y武器”这样就不仅能够调整AI对手的能力(比如让其或多或少地虚发), 还能够调整其游戏策略。举例来说,如果玩家喜欢用长程武器,AI对手就能改成徒手搏斗以增强挑战性。

保持并增进沉浸式体验

游戏设计的重点始终在于在游戏界面的界限内营造沉浸式的体验。如果赛车游戏过于单调,设计者就应当让对手少犯错或更激进地超车,从而更加精彩程度。而一旦对手的车速突然超过此前约定的,玩家就会觉得有失公平,并很快失去兴趣。

打造奇特的体验

自适性AI会研习玩家的游戏行为,这也开启了另一个可行方案,而且可让游戏更加引人入胜:模仿玩家行为。比如,在赛车游戏中,AI可以模仿玩家车手的操纵方式。这让普通玩家能够在假定的实际比赛情境中与大咖对手短兵相接,一较高下。

再举一个例子,电竞的职业选手可以打造具有其独特游戏风格的“AI化身”并进行商业销售,这让广大玩家能够与这位大咖切磋技艺,而不用实际参加对抗大咖的多人游戏。

这一全新AI模式的推出为现有的游戏平添了挑战性,但也是增进游戏商业寿命的机会。这样一来,即便玩家闯关成功或研究了所有策略,也不会对游戏丧失兴趣。

总结

从刻板的难度级别到高级的自适应性AI算法,AI经历了一段漫长的发展历程。当前的目标在于,为广大玩家提供满意的体验,延长游戏的寿命并实现最优的投资回报率。硬件以及云游戏服务方面的长足进步为高度个性化游戏,甚至独特游戏风格“化身”开启了无限可能,成就了独一无二的游戏体验。

Michael Matuschek是一位资深数据专家,来自德国杜塞尔多夫, 拥有计算机科学硕士学位和计算语言学博士学位, 曾从事过多个行业的各种自然语言处理项目和学术界的工作, 涵盖的主题包括评论的情感分析、客户电子邮件分类和本体富集。


声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

评论(0)
发评论

下载排行榜

全部0条评论

快来发表一下你的评论吧 !

'+ '

'+ '

'+ ''+ '
'+ ''+ ''+ '
'+ ''+ '' ); $.get('/article/vipdownload/aid/'+webid,function(data){ if(data.code ==5){ $(pop_this).attr('href',"/login/index.html"); return false } if(data.code == 2){ //跳转到VIP升级页面 window.location.href="//m.obk20.com/vip/index?aid=" + webid return false } //是会员 if (data.code > 0) { $('body').append(htmlSetNormalDownload); var getWidth=$("#poplayer").width(); $("#poplayer").css("margin-left","-"+getWidth/2+"px"); $('#tips').html(data.msg) $('.download_confirm').click(function(){ $('#dialog').remove(); }) } else { var down_url = $('#vipdownload').attr('data-url'); isBindAnalysisForm(pop_this, down_url, 1) } }); }); //是否开通VIP $.get('/article/vipdownload/aid/'+webid,function(data){ if(data.code == 2 || data.code ==5){ //跳转到VIP升级页面 $('#vipdownload>span').text("开通VIP 免费下载") return false }else{ // 待续费 if(data.code == 3) { vipExpiredInfo.ifVipExpired = true vipExpiredInfo.vipExpiredDate = data.data.endoftime } $('#vipdownload .icon-vip-tips').remove() $('#vipdownload>span').text("VIP免积分下载") } }); }).on("click",".download_cancel",function(){ $('#dialog').remove(); }) var setWeixinShare={};//定义默认的微信分享信息,页面如果要自定义分享,直接更改此变量即可 if(window.navigator.userAgent.toLowerCase().match(/MicroMessenger/i) == 'micromessenger'){ var d={ title:'自适性人工智能,为玩家创造绝佳体验',//标题 desc:$('[name=description]').attr("content"), //描述 imgUrl:'https://'+location.host+'/static/images/ele-logo.png',// 分享图标,默认是logo link:'',//链接 type:'',// 分享类型,music、video或link,不填默认为link dataUrl:'',//如果type是music或video,则要提供数据链接,默认为空 success:'', // 用户确认分享后执行的回调函数 cancel:''// 用户取消分享后执行的回调函数 } setWeixinShare=$.extend(d,setWeixinShare); $.ajax({ url:"//www.obk20.com/app/wechat/index.php?s=Home/ShareConfig/index", data:"share_url="+encodeURIComponent(location.href)+"&format=jsonp&domain=m", type:'get', dataType:'jsonp', success:function(res){ if(res.status!="successed"){ return false; } $.getScript('https://res.wx.qq.com/open/js/jweixin-1.0.0.js',function(result,status){ if(status!="success"){ return false; } var getWxCfg=res.data; wx.config({ //debug: true, // 开启调试模式,调用的所有api的返回值会在客户端alert出来,若要查看传入的参数,可以在pc端打开,参数信息会通过log打出,仅在pc端时才会打印。 appId:getWxCfg.appId, // 必填,公众号的唯一标识 timestamp:getWxCfg.timestamp, // 必填,生成签名的时间戳 nonceStr:getWxCfg.nonceStr, // 必填,生成签名的随机串 signature:getWxCfg.signature,// 必填,签名,见附录1 jsApiList:['onMenuShareTimeline','onMenuShareAppMessage','onMenuShareQQ','onMenuShareWeibo','onMenuShareQZone'] // 必填,需要使用的JS接口列表,所有JS接口列表见附录2 }); wx.ready(function(){ //获取“分享到朋友圈”按钮点击状态及自定义分享内容接口 wx.onMenuShareTimeline({ title: setWeixinShare.title, // 分享标题 link: setWeixinShare.link, // 分享链接 imgUrl: setWeixinShare.imgUrl, // 分享图标 success: function () { setWeixinShare.success; // 用户确认分享后执行的回调函数 }, cancel: function () { setWeixinShare.cancel; // 用户取消分享后执行的回调函数 } }); //获取“分享给朋友”按钮点击状态及自定义分享内容接口 wx.onMenuShareAppMessage({ title: setWeixinShare.title, // 分享标题 desc: setWeixinShare.desc, // 分享描述 link: setWeixinShare.link, // 分享链接 imgUrl: setWeixinShare.imgUrl, // 分享图标 type: setWeixinShare.type, // 分享类型,music、video或link,不填默认为link dataUrl: setWeixinShare.dataUrl, // 如果type是music或video,则要提供数据链接,默认为空 success: function () { setWeixinShare.success; // 用户确认分享后执行的回调函数 }, cancel: function () { setWeixinShare.cancel; // 用户取消分享后执行的回调函数 } }); //获取“分享到QQ”按钮点击状态及自定义分享内容接口 wx.onMenuShareQQ({ title: setWeixinShare.title, // 分享标题 desc: setWeixinShare.desc, // 分享描述 link: setWeixinShare.link, // 分享链接 imgUrl: setWeixinShare.imgUrl, // 分享图标 success: function () { setWeixinShare.success; // 用户确认分享后执行的回调函数 }, cancel: function () { setWeixinShare.cancel; // 用户取消分享后执行的回调函数 } }); //获取“分享到腾讯微博”按钮点击状态及自定义分享内容接口 wx.onMenuShareWeibo({ title: setWeixinShare.title, // 分享标题 desc: setWeixinShare.desc, // 分享描述 link: setWeixinShare.link, // 分享链接 imgUrl: setWeixinShare.imgUrl, // 分享图标 success: function () { setWeixinShare.success; // 用户确认分享后执行的回调函数 }, cancel: function () { setWeixinShare.cancel; // 用户取消分享后执行的回调函数 } }); //获取“分享到QQ空间”按钮点击状态及自定义分享内容接口 wx.onMenuShareQZone({ title: setWeixinShare.title, // 分享标题 desc: setWeixinShare.desc, // 分享描述 link: setWeixinShare.link, // 分享链接 imgUrl: setWeixinShare.imgUrl, // 分享图标 success: function () { setWeixinShare.success; // 用户确认分享后执行的回调函数 }, cancel: function () { setWeixinShare.cancel; // 用户取消分享后执行的回调函数 } }); }); }); } }); } function openX_ad(posterid, htmlid, width, height) { if ($(htmlid).length > 0) { var randomnumber = Math.random(); var now_url = encodeURIComponent(window.location.href); var ga = document.createElement('iframe'); ga.src = 'https://www1.elecfans.com/www/delivery/myafr.php?target=_blank&cb=' + randomnumber + '&zoneid=' + posterid+'&prefer='+now_url; ga.width = width; ga.height = height; ga.frameBorder = 0; ga.scrolling = 'no'; var s = $(htmlid).append(ga); } } openX_ad(828, '#berry-300', 300, 250);