动态网站制作指南 [  QQ表情  ]
[ 投票调查 ]
[ 企业邮箱 ]
[ 网站空间 ]
网络编程 | 站长之家 | 网页制作 | 图形图象 | 操作系统 | 冲浪宝典 | 软件教学 | 网络办公 | 邮件系统 | 网络安全 | 认证考试 | 系统进程
ASP源码 | .Net源码 | PHP源码 | JSP源码 | JAVA源码 | CGI源码 | VB源码 | C++源码 | Delphi源码 | PB源码 | VF源码 | 汇编 | 服务器
电脑书籍下载:程序设计书籍 | 数据库教程书籍 | 平面与多媒体书籍 | 网络通讯书籍 | 系统管理书籍 | 网络安全书籍 | 认证考试书籍
Firefox | IE | Maxthon | 迅雷 | 电驴 | BitComet | FlashGet | QQ | QQ空间 | Vista | 输入法 | Ghost | Word | Excel | wps | Powerpoint
asp | .net | php | jsp | Sql | c# | Ajax | xml | Dreamweaver | FrontPages | Javascript | css | photoshop | fireworks | Flash | Cad | Discuz!
当前位置 > 网站建设学院 > 网络编程 > Java教程
Tag:注入,存储过程,分页,安全,优化,xmlhttp,fso,jmail,application,session,防盗链,stream,无组件,组件,md5,乱码,缓存,加密,验证码,算法,cookies,ubb,正则表达式,水印,索引,日志,压缩,base64,url重写,上传,控件,Web.config,JDBC,函数,内存,PDF,迁移,结构,破解,编译,配置,进程,分词,IIS,Apache,Tomcat,phpmyadmin,Gzip,触发器,socket
网络编程:ASP教程,ASP.NET教程,PHP教程,JSP教程,C#教程,数据库,XML教程,Ajax,Java,Perl,Shell,VB教程,Delphi,C/C++教程,软件工程,J2EE/J2ME,移动开发
文章搜索服务
邮件订阅
输入你的邮件地址,
你将不会错过任何关于:
[ Java教程 ]的信息



本月文章推荐
.Spring Framework中的AOP编程之入.
.Web框架对比: Wicket .
.下一波GUI设计-Matisse和NetBea.
.Spring 2.0 M1发布了.
.让所有初学者明白 JAVA 程序的结.
.Java使用技巧两则---J2EE 1.4简介.
.java加密枝术.
.Web应用中Java的速度真相探讨.
.在Eclipse3.0.x配置基于STRUTS的.
.JavaMail常见问题之POP3问题.
.JavaBean的事件.
.java继续革命.
.Java编程语言基础 JSP基本语法的.
.编写支持基于代理的防火墙的Java.
.什么是AOP系列之二:AOP与权限控.
.使用Socket连接穿越CMWAP代理.
.JavaMail常见问题之一般问题.
.Eclipse插件JBClipse 0.2 新版发.
.关于java中的对象序列化.
.利用 Oracle DMS 测量 Java 应用.

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

发表日期:2008-1-5 |



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

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

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

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

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

  • 渲染任务:在游戏运行期间,负责更新画面,在每一帧的结束时间点执行。
  • 帧任务:在每个帧时间段内执行一次的任务,比如绘制背景。
  • 时间任务:在指定的时间点和时间段触发,执行一次或多次,完成后即被删除。

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

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

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

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

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

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

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

参考:Marshall:"Game Programming Gems 3"

待续 :)



上一篇:J2ME-MIDP1.0小游戏入门-五子棋1.0 人气:429
下一篇:使用MIDP2.0开发游戏(6)设计Clock 人气:337
浏览全部Java的内容 Dreamweaver插件下载 常用网页广告代码全集
  最新网站源码 最新软件下载
2008-7-6 飞天论坛FTBBS ASP v6.3 Build 0
2008-7-6 飞天论坛FTBBS ASP v6.3 Build 0
2008-7-6 飞天论坛FTBBS ASP v6.8 Build 0
2008-7-6 讯息内容管理系统 v2.1
2008-7-6 三五电影程序 v2.0
2008-7-6 神鹰腾讯小说小偷 v3.0
2008-7-6 EasyIDE Framework v1.0 Build 2
2008-7-6 品告CMS系统(电影版) v0.9
2008-7-6 QQ自动登录器 C# 源码 v1.0
2008-7-5 AgileMessenger即时通讯工具 v1.
2008-7-5 GoodCalculator2.0版固件计算器
2008-7-5 RepoName源地址搜索工具 v1.21b
2008-7-5 AgileMessenger即时通讯工具 v1.
2008-7-5 TouchCopy多媒体管理软件 v3.13完
2008-7-5 VideosTone视频铃声 v1.1汉化破解
2008-7-5 TouchPad触摸板 v4.44破解版
2008-7-5 VideosTone破解补丁 v1.0
2008-7-5 Feeds GoogleReader客户端 v0.4.3


  发表评论
姓 名: 验证码:
内 容:
[ 汉字翻译拼音 ] [ 广告代码 ] [ 符号对照表 ] [ 进制转换 ] [ 经典小工具 ] [ 个税计算 ] [ 汉字简繁转换 ] [ 普通单位换算 ] [ 公制单位换算 ]
[ 生辰老黄历 ] [ 国内电话区号 ] [ 国家代码与域名缩写 ] [ 文字加密解密 ] [ 健康查询 ] [ 万年历 ] [ 手机号码查询 ] [ ip搜索 ] [ Google PR查询 ]
业务联系 | 广告刊登 | 频道合作 | 投稿荐稿 | 联系方式 | 加入收藏 | RSS订阅
Copyright © 2000-2008 www.knowsky.com All rights reserved | 网络实名:动态网站制作指南 | 沪ICP备05001343号
ホームページ制作 不動産検索システム 求人情報