使用MIDP2.0开发游戏(5)游戏内核

2016-02-19 13:02 7 1 收藏

下面图老师小编要向大家介绍下使用MIDP2.0开发游戏(5)游戏内核,看起来复杂实则是简单的,掌握好技巧就OK,喜欢就赶紧收藏起来吧!

【 tulaoshi.com - 编程语言 】


  我们预备开始设计游戏内核。

  通常,游戏和桌面Windows程序不同(扫雷等桌面游戏除外),它不能依靠消息驱动,因为游戏通常只有一个画面,而且需要高速更新。因此,游戏只能靠时钟驱动。大部分游戏都在一个时钟驱动下定时渲染一帧画面。此外,游戏需要接收用户输入,处理游戏事件(比如碰撞检测等),可能还需要AI计算,这些任务都必须巧妙地在两幅画面切换的时间段里处理完毕,因此,一个高效而灵活的调度器就是游戏进程的核心。

  调度器由时钟驱动器和任务治理器组成。

  时钟驱动器负责在需要的时候向调度器提供准确的虚拟时间,虚拟时间流逝时,游戏就运行,虚拟时间停止时,游戏就暂停,虚拟时间还可以比真实时间慢或者快,以便调节游戏运行速度,所有的任务都依靠虚拟时间,并且它们不知道时钟是否暂停,这样就大大简化了时间的表示和运算,我们可以随时暂停时钟从而能够方便地调试。

  任务治理器维护一个任务列表,并且知道下一个即将运行的任务是什么。一共有3种任务:

(本文来源于图老师网站,更多请访问http://www.tulaoshi.com/bianchengyuyan/)渲染任务:在游戏运行期间,负责更新画面,在每一帧的结束时间点执行。 帧任务:在每个帧时间段内执行一次的任务,比如绘制背景。 时间任务:在指定的时间点和时间段触发,执行一次或多次,完成后即被删除。

  调度器的作用便是把时钟提供的虚拟时间按固定时间段(比如20ms)分成若干帧,在一个帧的时间段里,依次调度所有的帧任务和定时任务,最后执行渲染任务,从而完成一个完整的帧。

  我们为什么不用多线程来执行这些任务,把调度功能交给操作系统呢?第一,通常游戏中会有很多个任务,为每个任务创建线程是不经济而且低效的,很多任务只执行一次,大量开销被花在线程的创建和销毁上,而且我们很难控制多线程同步。第二,由于操作系统通常是抢先式多任务,我们无法得知一个任务是否会被另一个任务中断或者能否在一帧内完成。

  调度器就像是在模拟一个线程治理器,它必须非常灵活,首先,调度器依次执行队列中的任务,可以精确计算每个任务花费的时间。假如用户硬件配置不高,执行一个完整的帧花费的时间多于预算,则可以在下一个帧里跳过不必要的任务(比如关闭特效,特效任务就是可以跳过的),假如执行一个完整的帧花费的时间小于预算,则可以多执行一些任务,比如多画一些特效或多做一些AI运算等,这些都由调度器自动调节。

(本文来源于图老师网站,更多请访问http://www.tulaoshi.com/bianchengyuyan/)

  调度器的另一个功能是实现平滑地添加和删除任务,通常游戏中的任务更新都很频繁。假如使用多线程,则线程的创建和销毁将耗费大量时间。

  调度器执行一帧的流程如下:

从时钟驱动器获得虚拟时间; 执行时间任务; 执行帧任务; 执行渲染任务; 从时钟驱动器获得虚拟时间并计算这一帧的执行时间; 执行清理任务,包括从任务治理器中删除过期任务。

  由于只需要用到很少的API,我决定用J2SE来写内核,这样便于调试,等测试无误再移植到MIDP上。

  参考:Marshall:"Game Programming Gems 3"

  待续 :)


来源:http://www.tulaoshi.com/n/20160219/1602793.html

延伸阅读
一.简介 今天我们要接触到令人敬畏的DirectX。它比Windows GDI要快好几倍,可用于不同的语言和多种平台,支持从绘制象素到高级3D图象,从播放简单声音到数字音乐,从键盘控制到反震手柄……它给你游戏编程所需的一切(有点夸张)。         当然了,它是巨大的,需要好几本书才能含盖它的全部。先不要去担心...
QQ空间Android版4.2和4.5上线的玩吧游戏空间疯狂套牛是一款使用HTML5开发出的手机游戏,虽然还有很多不足,但其中使用的一些技术与技巧还是很有必要为大家分享出来,方便大家用秘籍打通各种关卡创造出更多更好的HTML5游戏。   一、自适应 Android手机的屏幕碎片化非常严重,各种各样的分辨率非常之多,那么如何让游戏可以适配这些机...
《死亡空间3》关于rig系统 从游戏开发者的角度说一下 公司里有很多熟悉游戏制作人士,他们提起DS系列,不会像一般玩家那样说多恐怖多吓人 一般说的最多的就是RIG系统,这是DS游戏设计的一个小亮点 他实现了一个既简单又不简单的目标 就是游戏最紧张的时候,你的整个屏...
标签: 孩子 小孩
神奇游戏开发孩子右脑 认知训练: 游戏一:神奇的纸盒 玩法:把家里使用过的纸巾盒留下,往里面放进一些玩具、糖果、水果等,让宝宝摸一摸,请他在拿出来之前说出名称,或者给他指令,请他按指令拿出东西来。对大一点的孩子,你可以给他否定的指令,如:请你把不可以吃的东西拿出来”请你把不是圆的东...
标签: 分娩
“玩手游戏”是宝宝最早的游戏。别以为玩手是宝宝自娱自乐的一种方式。其实新爸妈是应积极地引导宝宝的,只有“手巧”才能真正的“心灵”。因此,训练宝宝手的技能,对于开发智力十分重要。 刚出生开始大多数的婴儿都有吸吮小手的兴趣。他们将整个小手放进口中吮吸,津津有味,感到极大满足,有时拉都拉不出来,当他小手可以握物...

经验教程

453

收藏

74
微博分享 QQ分享 QQ空间 手机页面 收藏网站 回到头部