游戏开发中心----游戏实验室

游戏开发日志,教程,学习过程,学习经历
http://www.3vgame.com

  博客园 :: 首页 :: 博问 :: 闪存 :: 新随笔 :: 联系 :: 订阅 订阅 :: 管理 ::

游戏开发—图形图像篇

 
游戏开发--开篇
  记得我第一次玩的PC game 是KKND(绝地风暴),当时的游戏平台是DOS,我只是觉得很好玩,经常和几个小学同学一起厮杀到12点。可是现在回忆起来,KKND无论是从智能设计还是在游戏画面与操作上都是非常出色的。他的音效同样是很棒的,而且全中文配音让当时很多不懂英语的玩家找到了许多的亲切感。这真是一款很棒的游戏。It is great!

  我想,这样的感觉是许多游戏开发者或者梦想成为游戏开发者的人们所共同经历的感受。一款好游戏会带给人们很多东西,会带给社会很多东西。 在人的层面上,无论是"大富翁"让我们娱乐,还是"文明"让我们感受科技发展带来的成果与思考,在我们玩一个游戏的时候,我们读到的故事,经历的坎坷,解决的问题,无时无刻不在让我们感受着游戏之外的很多东西。 在社会的层面上,游戏产业就本身而言,市场不断扩大,需求不断增多;更重要的是,他带动了出版、通信等相关产业的迅猛增长。游戏与相关产业增长的比值有时甚至是1:100。现在看看韩国政府对于游戏产业的支持,就有"醉翁之意不在酒"的感觉了。

  中国的游戏产业将在2005年左右达到10美元的市场,我们国人绝不应放弃这个发展的大好机会。其实,我们可以看到现在有很多的游戏公司,看起来像是一片欣欣向荣、蓬勃发展的场面,但是这里面又有多少是搞游戏开发的呢?是少之又少。很多公司都是代理国外的游戏,这样一来,国外很多的游戏开发厂商获得了大量的利润,而我们在为小蛋糕争得你死我活时,别人已经各自享用着自己的大餐了。资金不足无疑是各个公司搞游戏代理的最主要理由。但是我们可以看到,像CS这样成功的Garage Game,我们为什么做不出来?答案很多,问题很多,我们要做的事情很多。 于是,本着从我做起的原则,还是应该不断以提高自身的能力为主。毕竟我们和外国走的路不同,我们要找到适合自己的发展道路,走出一条具有中国特色的产业发展路线。当然,在路上我们还要不断的学习。

  所以,在我学习游戏开发的过程中,看到了我们中国学生的很多文章,有很多都是很有水平的。于是自己也提起笔来,把自己学习的经验和心得写下来,和大家一起讨论和提高。 这一系列的文章主要是面向想学习游戏开发的朋友,文章是从实际开发源代码的角度去介绍游戏开发的各个方面(文章中的示例代码用C++编写),但是瓦文章并不是完全地教学,更像是一个游戏开发的学习索引。它告诉初学者,做什么游戏需要什么技术,指引他们去学习某项技术,从而真正回归到自己学习的乐趣中来,为最终游戏的设计和实现奠定基础。


游戏开发--图形图像篇(一)

一个游戏的好坏谁说了算?
  玩家。
  玩家如何看一个游戏?
  用眼睛。
  那么这款游戏怎么样?
  "画面真棒!"
  … …

  你的游戏做得再好,如果没有一个很好的图形效果,那展现在玩家眼前的东西将大打折扣。而且,你的游戏也不会得到很好的支持。为什么呢?因为你的游戏无需使用很好的显示设备和图形加速设备,硬件厂商不会理睬你的游戏。这也就和开篇所说的"游戏促进相关产业的发展"的职责相悖了。所以,在写一个游戏之前,想一想开发这个游戏需要什么技能,"磨刀不误砍柴工"。让我们开始吧,先学一学游戏的图形开发。

一. Windows 绘图接口

1.GDI/GDI+
在开始前先让我们看一个具体的例子。
 

这个小程序的图形显示部分就是用GDI编写的。
  我们在编写Windows应用程序的时候,经常会用到GDI/GDI+(Graghic Deice Interface,图形设备接口)。GDI是Windows早期版本中包括的图形设备接口,而GDI+是GDI的改进版本,对GDI的现存性能进行了优化,而且增加了很多新性能。

GDI/GDI+的结构如下图:

  GDI+的C++接口中包括大约40个类、50个枚举和6个结构。听起来虽然不多,但是这也足够胜任大多数应用了。
  GDI编写程序的优点是他基本上兼容所有的显示设备,但是这是以损失效率为代价的。通常,编写应用程序时,大多数桌面应用程序用到的只是相对稳定的图形图像显示,所以在这种情况下,使用GDI是很实用的。
可是,在开发对图形图像显示速度要求非常高的游戏程序时,GDI就显得不够强劲了。所以,我们把开发游戏的图形图像显示部分的重担交给了下面就要介绍的DirectX。

GDI学习参考:《Windows Program With MFC》中的GDI部分。

2.DirectX
  谈到DirectX或许你不会陌生,因为像很多大名鼎鼎的FPS游戏都是用它来开发的。这其中有Valve小组的Half Life及其衍生作品--CS。所以,DirectX已经成为了游戏开发所不可或缺的重要组成部分。

还是先让我们看一个小程序。

[program MovePicture v0.3]

  这个程序是用DirectDraw开发的,看到它的威力了吧,滚动的平滑,丝毫没有跳帧的感觉。要是使用GDI编写一个需要重绘直线的程序,其重绘的图形将惨不忍睹。

[program Line Star]

  在演示这个程序之前,需要调整一下Windows窗口显示设置。首先鼠标右键点击桌面->属性->外观->效果,将"托动时现实窗口内容"选项选中。这样可以保证在托动窗口的时候,屏幕使用GDI不断刷新。

  由于程序窗体中所绘制的五角星是随着窗体大小而改变的,这样随着窗体的增大或缩小,图形也随之改变。我们都知道,动画的产生原理是,不断以较小幅度改变原来的图像,这样形成的图形序列便产生了动画。所以,在拓东窗体的同时,GDI在不断的绘制新的图形,其绘图性能便可以被我们所看到了。无论多快的硬件设备,只要你拖动的速度快一点,你所见到的一定是五角星在一闪一闪的变化。

点击这里下载本文章相关程序

通过比较,我们可以看出DirectX的优势所在了。

DirectX 学习参考:DirectX SDK

posted on 2006-04-10 23:48  3vgame  阅读(2350)  评论(2编辑  收藏  举报