写点什么

游戏夜读 | 怎么让游戏跑起来?

用户头像
game1night
关注
发布于: 2020 年 05 月 23 日

让游戏跑起来,最直观的就是,画面不卡顿,不卡帧数,运行流畅。



但细究起来,游戏元素怎么动起来的?规则是怎么实现的?游戏机制怎么运作的?画皮之下,游戏的骨骼是怎么样的?脉络是什么分布?



一万个为什么,一万个怎么样……最后,呈现出来的,是电子游戏程序的运行框架。大部分的基本框架,本质上是一个循环,是一个套娃的策略。一个游戏研发团队,除去项目经理之外,常设的策划、美术、音效、程序、测试等五大职能,所付出的心血,都会被注入这个“运行框架”。



电子游戏的本质是计算机程序。



一个完整的游戏运行框架



可以理解为就是一个循环绘制图像的程序。虽然是最基本的运行框架,也有一个基础结构。整体上是一个“死循环”,在循环里面是需要重复做的事情,分为三大类:更新游戏内容、准备画面、屏幕展示效果。



// 一个完整的游戏运行框架(示意)
gameLoop(){
while(True){
gameUpdate(){ // 更新游戏逻辑
pass
}
gameRender(){ // 离屏绘制
pass
}
gamePaint(){ // 前屏绘制
pass
}
}
}


上面示意的这个“框架”取材并改编自《游戏程序设计教程》,该教材由对Greenfoot颇有钻研的何青编著,近年又有了新书2.0,对新手更加友好了。说回这个简洁的“框架”,而且明显可以再简洁,比如只放一个“图像绘制”的函数。可是,为什么不呢?



双缓冲机制



这是一种绘制手法,叫缓冲机制,常见是双缓冲机制。跟计算机图形学、影像成形等领域有关。之所以要采用缓冲机制,是因为只放一个图像绘制的函数,那势必就是直接在屏幕上绘制。但游戏元素多了以后,绘画的速度跟不上肉眼的识别。



一个很简单的例子:翻书画。翻的慢了,画面就卡顿了。因为种种原因,直接在屏幕上作画的步骤,跟在画板上作画差不多,擦除、一笔一笔画上,速度慢了,效果就不好了。缓冲机制的做法就是“蒸好馒头再卖”,先在蒸馒头的笼屉里蒸好馒头,然后再转移到卖馒头的笼屉里。对应的,就是离屏、前屏。离屏一般就是在内存里。



程序设计思路



软件程序有设计方法,电子游戏也不例外。有了运行框架的先入为主,可能会让大部分人都陷入“从上而下”的设计思路。其实,并非如此。更常见的是,原型设计法。先让游戏的一小部分跑起来,然后再去开发游戏的其他部分。



但话说回来,不管是哪种设计法,都离不开运行框架。



文/良宵听雨。授权“游戏夜读”发表。

发布于: 2020 年 05 月 23 日阅读数: 43
用户头像

game1night

关注

烦请督促我的游戏功课喔! 2017.04.06 加入

计划坚持创作以“游戏夜读”为主题的短文,并以这些杂文作为连载公开发布。烦请大家一起督促我的游戏功课喔!欢迎关注和阅读,如有不足,可直接留言批评,会继续努力!

评论

发布
暂无评论
游戏夜读 | 怎么让游戏跑起来?