游戏编程使用代码构建一个虚拟世界,在这个虚拟世界中,玩家能够开心的进行游戏,从技术角度而言,电子游戏指一种多媒体的交互式实时模拟器,它由若干功能模块构成,例如图形模块,游戏音乐模块,还需要负责和玩家进行交互的界面模块和AI模块等等,它们各自有各自的职责,如下所示
游戏主循环
除非用户中断游戏,否则游戏程序需要一直运行,所以游戏程序中必然存在一个循环,循环中的代码反复运行,这个循环称为游戏循环,每运行一次循环中的代码,称为游戏中的一帧,基于人类眼球的胜利特性,游戏一般采用30或者60的帧率来运行,设置游戏帧率为30,就意味着每秒运行30次循环,也就是单次循环小号的时间要控制在33毫秒左右,不能过多也不能过少,60帧也就是每秒运行60次循环,帧率越高对硬件的要求越高
二维图形显示
游戏角色需要显示在屏幕的某个位置上,这个位置对应的坐标系原点一般在屏幕的左上角,坐标的单位是像素点。游戏角色(Spirit)一般由两个要素构成,一个是角色的外皮,即用来表现视觉效果的的图片文件,另一个是角色的骨架,即构成图片外部边缘的边框,角色的图片文件需要在初始化的时候加载,将其加载到内存后,可以获取其边框对象,然后通过设置边框的坐标值来控制角色的位置
需要注意的是缓冲机制,在游戏主循环中,游戏角色生成后并不会被直接输出到游戏界面窗口中,而是先输出到显卡的内存缓冲区,计算机再将内存缓冲区的游戏角色信息更新并输出到屏幕上
输入处理
用户的输入包含各种各样的信息,例如键按键信息、鼠标移动单机双击信息、甚至游戏手柄的按键信息等,这些信息通常是通过事件队列存放的,在每次运营游戏主循环中的代码时,程序都需要从事件队列中取出需要的信息进行处理,游戏编程中的输入处理与此类似,每一帧里,程序都会收到各种输入事件,并将它们按顺序存放在一个事件队列中,程序会不停的检查这个队列,当程序关注的事件发生时, 程序就会运行相应的代码来发射炮弹
游戏AI角色
AI能够赋予游戏更多的乐趣,在工程角度讲,游戏AI并不是越复杂就越好,而是能够满足游戏的需要,AI领域有一个黄金法则,搜索和知识是相关联的,当你拥有更多的知识,就需要更少的搜索,当你拥有更少的知识,你就需要更多的搜索,在比较早的《吃豆人》游戏中,有个4个追逐玩家的幽灵角色,其设置相当简单,追逐玩家的路线都是通过硬编码的规则确定好的,有的直接追逐玩家,有的是占领某个交通要道,有的是随机选择某条通道,这其实是一个简单的设计,但当他们组合到一起的时候让玩家感觉很智能,简单的规则当中包含相当丰富的游戏对抗知识
有的时候,简单的随机方法或者贪心算法就可以模拟出一个不错的NPC,在游戏中常用的AI算法有深度强化学习、遗传算法和蒙特卡罗树搜索,其中深度强化学习是深度学习与强化学习相结合产物,它集成了深度学习在函数拟合上的强大能力,以及强化学习基于环境反馈进行试错和决策的能力,深度强化学习可用来解决现实场景中的复杂问题;遗传算法是计算数学中用于解决最优化问题的搜索算法,是进化算法的一种,进化算法是借鉴进化生物学中的一些原理发展而来,这些现象包括遗传、突变、自然选择等;蒙特卡罗树搜索是一种用于决策过程的启发式搜索算法,常用于棋牌类等即时电子游戏和不确定性游戏中

被折叠的 条评论
为什么被折叠?



