Visual C++ 冒险游戏程序设计

前段时间阅读《Visual C++ 冒险游戏程序设计》,顺便作了点笔记,现登在这里,认为值得看的朋友就看看吧……

CHAPTER 1来做冒险游戏吧

冒险游戏(AVG)Adventure Game---虚拟体验故事的游戏总称。

在冒险游戏中,故事是最重要的部分,所以“剧情(Scenario)”

冒险游戏多半规模很大,所以制作时多半是分工作业。

冒险游戏制作各职务:

1.  企划:5w1h(何时、何地、谁、为什么、讲什么、如何做),担任企划负责人最重要的不是好构想,而是要有能将构想传达给其他每个负责人的能力。

2.  剧本作家(Scenario Writer

3.  原画师

4.  美工(彩色:Graphicer

5.  音乐(BGM):制作的音乐必须数字化,通常都是转成WAV格式,不过也有转成DAT格式的。

6.  程序设计师:最好是能够掌握整体作业内容的人。

7.  辅助程序设计师:将剧情Script化。

企划的写法与读法

1.  无法实现的内容

2.  条理不清

3.  只有描述插曲的企划

4.  怎么看都看不懂的企划

5.  好的企划案、不好的企划案

不好的企划案:通常是“太拘泥于格式与体裁”,或是“只写满自己想做的部分”这种自我满足的占了大半,最后就造成前述的问题。

好的企划案:可以确定表达想要传达给玩家的是什么。让读完企划案的工作人员也会感觉“我想做这个游戏”的才是好的企划。“内容绝对比体裁重要”

制作游戏需要什么?

Windows环境

1.  编译器:整合开发环境(IDE

2.  电脑

3.  其他器材

4.  OS

5.  数据

6.  其他需要的东西:

1MSDN 2)编辑器(3)数据制作方法的相关数据

 

 

 

CHAPTER 2设计一个游戏

一.游戏设计:Game Design

1.  CG张数。建议最初先决定CG的张数。

2.  故事的规模。例如:CG张数:32*5=160,台词的句数:160*2=320

3.  调整CG与台词的量。

4.  若是为兴趣而做的呢。程序部分,就应该做到“尽可能地不要有限制”。最好是写出可以超过1000CG、台词,或信息超过20000句也能正常运作的水平。

二.设计游戏系统

故事是冒险游戏的核心。故事就是剧本。冒险游戏则是根据剧本的指示在运作。使用脚本指令稿的语言方式,写出人类与电脑都能懂的剧本。

1.  剧本与脚本指令稿(ScenarioScript

A. 脚本指令稿是什么:脚本指令稿是为了让程序方便读取的,所以要按照固定的规则(语法)来写。

B. 使用简浅的语言。写脚本的是剧本作家。这里要做的游戏系统,是以“在剧本里填入命令“为出发点所制定出来的。

2.  脚本播放器的规格

A. 画面颜色数与穿口大小。640*480800*600。(当图片重叠时,如果调色板不同,就无法收敛与256色。

B. CG的大小:640*480,颜色数是1677万色。

C. CG重叠的有无与张数。这里把游戏设计成背景上可以重叠单张CG。图片重叠主要用于在对话的场景显示人物之用。也可以不用重叠,而将所有数据作成一张CG,或采用可以重叠多张图片的做法。当重叠多张图片时,就要考虑到内存使用量与重叠的前后关系。

D.文字字数与字体大小

E. 文字框的修饰

F. 剧本的大小

3.  准备资料

A. 原画:长宽比“34480*640);最大A4;线条要扎实画黑;

B. CG资料:格式是DIB形式(扩展名是.bmp),一般称为“Windows点阵位图”。使用RGB02550)或RGB02540)代替透明色。

CG资料的规格决定了下面几项要点:

a.  大小:640*480

b.  格式:24DIB形式

c.  角色的背景涂成“RBG02550)”

d.  站立角色的大小可以使用“320*480”象素

C. 音乐资料:BGM(背景音乐)。格式:44.1kHz/16位立体声的WAVE文件。

D.脚本:在剧本里加上游戏用的命令、CG插画、音乐等的指示,而让程序读取的东西,就是“脚本”

游戏设计的决定事项:

a.  画面大小:640*480象素,1677万色。

b.  CG大小:640*480象素,1677万色。

c.  CG重叠:背景与上面可以重叠一层图。

d.  CG张数:100张左右。

e.  显示文字格式:35*4行(包括不合法文字)/字体/16/粗体。

f.   字框/装饰:显示在半透明的区域/不加修饰。

g.  原画:长宽比“34480*640)”/最大A4/线条要扎实画黑。

h.  CG资料:背景:640*480象素/24DIB形式;角色:320*480象素/背景涂成“RGB02550)”。

i.    音乐资料:BGMCD-DA(播放音乐CD);效果音:WAVE数据。

j.    脚本:转换后的大小不超过64KB,一个脚本使用的变量不超过100个。

 

 

 

CHAPTER 3建立类库

一.游戏系统的程序设计

1.  只学习需要的知识

A. Win32 APIGDIKernelMulti MediaCommon Control……)、DirectXOLEMFCATL还有开发用的程序语言相关知识(语法和类库等)。如果等到搞懂全部这些,人已经瘫一半了。

B. 实现游戏系统需要理解的项目

a.       列举需要的项目

     打开窗口

     将图片从文件中读入并显示

     显示文字

     显示菜单

     读入脚本并执行★

     在背景播放音乐

     尽可能地追加一些华丽的功能

b.       要怎么实现呢?

核心:执行脚本是最主要的功能。

二.打开窗口

1.  将建立窗口的动作类库化(建立出游戏专用的小规模类库)。

     Visual C++的工程设定

     建立新工程

     建立、加入文件

     设定路径

     工程用到的文件

StdAfx.h  预先编译表头

StdAfx.cpp  预先编译表头

rescource.h  在资源编辑器中使用

Sample.h  定义CSampleWinCSampleApp等类

Sample.cpp  定义函数

注释:StdAfx.hStdAfx.cppVC++的整合环境Developer Studio为了对表头进行“预编译(Precompile)”,将windows.h等常用的表头文件一次性读取进来用的文件。而StdAfx.cpp也只是用来引入StdAfx.h而已。

三.建立类库

类库的建立方式:在日后写程序时,只要以类库为基础,改写所需的操作,这样当要扩充程序功能的时候,就不需要从头开始写起了咯。

使用类库扩充所需功能的方法如下:(在设计时必须把该写的部分独立出来)

     引入类

     继承该类

     重载(overload)成员函数

1.  类库是什么?

类库可以让我们更简单地使用Win32 API C++。所以,内容应该是Win32 API加上一些其他的处理动作。

2.  类库里的基本类:有用来控制应用程序的CWinApp类、控制窗口的CWindow类以及控制绘图所需的Device ContextCDC类。

⑴应用程序类(Application.h/Application.cpp

a.       CWinApp::CWinApp—构造函数(应用构造函数时,会初始化成员变量,并象这样将自己本身登录到外部变量上)

b.       CWinApp::CWinApp---初始化应用程序(用来初始化应用程序的函数。如果在初始化时要做些其他处理,就要重载这个函数)

c.       CWinApp::Run---消息循环(进行消息循环。)

d.       CWinApp::RegisterWndClass---登录窗口类(使用RegisterClass, 登录窗口类)

 

 

 

     建立窗口和消息处理(Window.h/Window.cpp

a.       CWindow::Create----建立窗口

b.       CWindow::WindowListTop---窗口列表路径

c.       CWindow::GetWindow---从窗口列表取得到指定的CWindow对象

   CWindow::AddWindowList---在窗口列表登录窗口

   CWindow::DeleteWindowList---从窗口列表删除窗口

d.       CWindow::WindowProc----消息处理(找到实体时,就要调用成员函数CWindow::WindowProc

e.       CWindow::LoadAccelTable---读取键盘快捷键表格

CWindow::PreTranslateMessage----消息前置处理。

f.        其他的成员函数

HDC的包装类(dc.h/dc.cpp

a.       CPaintDC::CPaintDC---CPaintDC构造函数

b.       CPaintDC::~ CPaintDC---- CPaintDC析构函数

为了绘图,还需要取得下面这些DC

CClientDC:客户区域(窗口中可以绘图的区域)的DC

CMemoryDC:取得绘图缓冲区的DC

CScreenDC:整个画面(桌面)的DC

⑷实例应用程序(Sample.cpp

a.       建立窗口

b.       在窗口中显示文字

c.       点选菜单中的“结束”可关闭应用程序。

CSampleApp::InitInstance----建立窗口

CSampleApp::OnPaint----窗口重绘

CSampleWin::OnCommand----菜单的响应

TRACE

(不断更新……)By Hackyeat(http://www.HackerStudio.Com)



本文引用通告地址: http://blog.csdn.net/hackyeat/services/trackbacks/470689.aspx

你可能感兴趣的:(About,C)