首 页 高校招生 - 高级研修 - 教育新闻 - 学习资料 - 搜索中心 - 北斗论坛 - 名校荟萃   外语 - 计算机 - 考研 - 职业资格 - 艺术体育 - 中小学  

 
·教育搜索 EDUSOU
| 计算机 > 游戏开发 > 正文 进入 教育人生网总站

对2D游戏引擎设计的一些思考

2007-08-03    教育人生网    浏览:0    进入论坛>>

对2D游戏引擎设计的一些思考

  前不久用模拟器玩了SFC上的一个经典SLG——圣龙战记后,突然对它出色的表现有了浓厚的兴趣,尤其是在那种硬件平台下,仅仅3M的游戏竟然能够有如此出色的表现!不仅是画面表现得极致,而且整个游戏的系统,情节相对当今的大多数游戏来说,实在是有过之而无不及!~实在是佩服万分~!

  确实,现在的硬件条件都比以前好多了,做一个游戏也越来越简单了(虽然我没有在DOS下写过程序,但是经过两年多的编程,对各个方面都有些了解,仍能体会到在DOS下写游戏的痛苦:)), 现在各种各样的游戏开发包也越来越多了,不说别的,就直接用DirectX SDK吧,做一个小的游戏比如飞机类也不会花几天时间(以前我花了3天做过一个^_^),开发简单了,自然有些东西就不那么讲究了,比如说现在的商业游戏的容量,无论是什么都先比光盘多少,你的3CD,我来5CD,除去里面'免费赠送'的一些'原声大蝶' 阿,'官方资料'阿之类的东西,一个游戏至少也有1个G,(大概是现在的硬盘在大家的眼中不怎么值钱了吧,可能商家是这么认为的,也可能是大众心理:东西越多越好嘛:)),真正有用的数据有多少?估计也只有商家才清楚~先不说某些游戏连压缩都没压缩过就裸用一大堆的24Bit BMP( 没错,就是标准的位图)来做游戏中的资源(仅仅做了一个未压缩的资源包,很轻松就能提取出全部资源:)),画面看起来效果好么?确实,不过那没有什么,反正就是美工的表现嘛!还对机器要求至少有PIII 500、128M以上的RAM~真是Faint!

  赫赫,也许大多数人不在乎上面提到的东西~可是作为一个游戏开发者,一个游戏程序设计者,就要在能力范围内对游戏程序做尽可能的优化(先不提商业制作的一些'无奈'的原因的阻碍),就比如说星际,大概是我所见到的PC上的商业游戏中做的最好的一个了:)

  好了,废话了一大堆,下面来谈谈点正式的。

  如今2D PC游戏上,最流行的就是16位色的显示方式(主要是从速度和内存消耗以及显示质量这些方面上来综合),16位色上基本上是565的显示方式(我到现在还从来没有见到一台555显示的机器或一块555的显卡),所以我只讨论16bit下565 模式。

  下面的方法是由于'调色板'而来的灵感~

  (先申明,这种方法绝对不适合主流技术,基于上面我所说的游戏----圣龙战记,可以做类似的游戏~不适合基于象素的游戏,对TILE类游戏比较实用)

  由于TILE类游戏用到的TILE颜色相对都比较固定,颜色种类比较少,所以我们可以选取一个固定的调色板,里面能容纳大部分的TILE颜色,这样所有TILE的数据都可以用这个调色板的索引来表示,当然为了方便,256种颜色最好不过,这样每个点只占8位(也许有人会说,这样不就干脆创建一个8位色的游戏不就行了?嘿嘿,稍安勿躁,马上解释),在内存消耗上就有了很大的优势~如果再压缩一下,嘿嘿........

  从速度上来说,由于游戏里面需要大量的特效,比如最常用的半透明效果,色彩饱和效果、阴影效果、灰度化等等效果,所以从这方面来考虑。

  由于只用到了256色,混合后的颜色也在256种颜色内,所以考虑用查表方式,

  这256种颜色从16Bit 565模式共65536种颜色的色彩空间中提取出来,这样就算是32级的Alpha混合也就只占用256*256*32*8bit=2M的内存。

  但是用16级或者12级我就觉得够了,这样就有 256*256*16*8Bit = 1M 或者 256*256*12*8Bit = 768K

  色彩饱和表就只需要 256*256*8Bit = 64K

  阴影表也就只要 256*256*8Bit = 64K

  灰度表只要 256*8Bit = 0.256K

  一共加起来也就1M左右,呵呵够少吧!

如下:
  static unsigned char BDI_AlphaBlendTable[16][256][256]; //16级Alpha混和表
  static unsigned char BDI_AdditiveTable[256][256]; //Additive表
  static unsigned char BDI_SubTable[256][256]; //阴影表
  static unsigned char BDI_GrayTable[256]; //灰度表


  那么,哪256种颜色可以很好的描述大部分图片的颜色呢?

  尝试过几个不同的调色板后,最后发现下面这个调色板效果最好(并且还有附加的优势!稍后看到)

如下:
  unsigned short wPal[256];
  for(int i=0;i<256;i++)
  {
    wPal[i]=i|(i<<8);
  }


  也就是说这个调色板的高8位和低8位是相同的,嘿嘿,想到什么了?(赶快用10秒钟猜猜,下面回答)

对2D游戏引擎设计的一些思考

  当然这样一来也就不能直接用DirectDraw里面的Blt之类的东西啦~,另外,由于我们的数据保留的是调色板的索引,所以,不能直接Blt到BackSurface上,自己分配一个缓冲区,大小和BackSurface一样大,不过用byte类型就够啦~

实用导航:高考 | 考研 | 自考 | 在职研 | 外语 | IT | 公务员 | MBA | 舞蹈
推荐:如何戴上硕士帽 | 上海培训学校大全 | 学习交流交友 | 外语学习资料

特别说明:由于各方面情况的不断调整与变化,教育人生网所提供的所有考试信息仅供参考,敬请考生以权威部门公布的正式信息为准。

来源:网络    责任编辑:GTF  


 相关资讯 关键字:  相关课程

 ·如何在游戏制作中使用MIDI 文件演奏..  2007-8-3
 ·彩色转灰度算法彻底学习  2007-8-3
 ·动画程序编写——DirectDraw之旅  2007-8-3
 ·如何更加有效防止用户使用外挂  2007-8-3
 ·游戏AI基础  2007-8-3
 ·在Windows上安装OGRE的方法  2007-8-3

 ·[交大慧谷]交大慧谷Maya动漫游戏签..  ¥7800.00
 ·[汇众益智]手机游戏开发  ¥0.00

 
主编推荐 更多   最新资讯 更多   经典下载 更多
2008英语四六级考前辅导专题
2008英语四六级考前辅导专题
 
 网上报名 优惠便捷
 
 
 求学热点关注
研修 | MBA/EMBA 在职研究生 短训研修
学历 | 普通高校 自考成考 网络院校 中外合作
外语 | 中高级口译 日语 四六级 新概念 雅思
综合英语 商务英语 口语听力 小语种 托福
职业 | 报关报检 物流 会计上岗证 会计电算化
外贸
其他 | IT职业 平面设计 网页设计 辅助设计 考研 中小学辅导 夏令营 舞蹈 瑜珈 音乐
 
 
 论坛精华 求学交友
雅思 |
张红岩《TOEFL iBT词以类记》完整版(..
日语 |
新版 标日在线教学视频 初上1
口译 |
上海中高级口译考试全解析专题
考研 |
微观经济学(高鸿业)各章重点小结PDF
职业 |
【职业资格专题】邮政营业员试题
舞蹈 |
舞蹈大比拼,选择你喜欢[舞蹈特别专题]
 
 热点专题
IT就业培训
 
上海中高级口译完全解析
2008英语四六级考前辅导
教育人生网真题中心正式上线
上海中高级口译考试全解析
在职研究生报考指南
2007年12月四六级真题
2000-2007日语能力考真题..
2008在职硕士备考指南
2008年注册会计师备考专题
高等教育自学考试完全指南

教育新闻 - 免费资料 - 搜索中心 - 名校荟萃 - 北斗论坛 - 会员中心 - 主编信箱 - 网站地图 - 欢迎批评指正 设定本页为浏览器首页
教育人生网简介 - 联系我们 - 招贤纳士 - 客服中心 - 免责声明 - 广告服务 - 火爆加盟 - 中国教育搜索