前段时间阅读《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. 其他需要的东西:
(1)MSDN (2)编辑器(3)数据制作方法的相关数据
CHAPTER 2设计一个游戏
一.游戏设计:Game Design
1. CG张数。建议最初先决定CG的张数。
2. 故事的规模。例如:CG张数:32页*5格=160,台词的句数:160格*2=320。
3. 调整CG与台词的量。
4. 若是为兴趣而做的呢。程序部分,就应该做到“尽可能地不要有限制”。最好是写出可以超过1000张CG、台词,或信息超过20,000句也能正常运作的水平。
二.设计游戏系统
故事是冒险游戏的核心。故事就是剧本。冒险游戏则是根据剧本的指示在运作。使用脚本指令稿的语言方式,写出人类与电脑都能懂的剧本。
1. 剧本与脚本指令稿(Scenario与Script)
A. 脚本指令稿是什么:脚本指令稿是为了让程序方便读取的,所以要按照固定的规则(语法)来写。
B. 使用简浅的语言。写脚本的是剧本作家。这里要做的游戏系统,是以“在剧本里填入命令“为出发点所制定出来的。
2. 脚本播放器的规格
A. 画面颜色数与穿口大小。640*480和800*600。(当图片重叠时,如果调色板不同,就无法收敛与256色。
B. CG的大小:640*480,颜色数是1,677万色。
C. CG重叠的有无与张数。这里把游戏设计成背景上可以重叠单张CG。图片重叠主要用于在对话的场景显示人物之用。也可以不用重叠,而将所有数据作成一张CG,或采用可以重叠多张图片的做法。当重叠多张图片时,就要考虑到内存使用量与重叠的前后关系。
D.文字字数与字体大小
E. 文字框的修饰
F. 剧本的大小
3. 准备资料
A. 原画:长宽比“3:4”(480*640);最大A4;线条要扎实画黑;
B. CG资料:格式是DIB形式(扩展名是.bmp),一般称为“Windows点阵位图”。使用RGB(0,255,0)或RGB(0,254,0)代替透明色。
CG资料的规格决定了下面几项要点:
a. 大小:640*480
b. 格式:24位DIB形式
c. 角色的背景涂成“RBG(0,255,0)”
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. 原画:长宽比“3:4(480*640)”/最大A4/线条要扎实画黑。
h. CG资料:背景:640*480象素/24位DIB形式;角色:320*480象素/背景涂成“RGB(0,255,0)”。
i. 音乐资料:BGM:CD-DA(播放音乐CD);效果音:WAVE数据。
j. 脚本:转换后的大小不超过64KB,一个脚本使用的变量不超过100个。
CHAPTER 3建立类库
一.游戏系统的程序设计
1. 只学习需要的知识
A. Win32 API(GDI、Kernel、Multi Media、Common Control……)、DirectX、OLE、MFC、ATL还有开发用的程序语言相关知识(语法和类库等)。如果等到搞懂全部这些,人已经瘫一半了。
B. 实现游戏系统需要理解的项目
a. 列举需要的项目
① 打开窗口
② 将图片从文件中读入并显示
③ 显示文字
④ 显示菜单
⑤ 读入脚本并执行★
⑥ 在背景播放音乐
⑦ 尽可能地追加一些华丽的功能
b. 要怎么实现呢?
核心:执行脚本是最主要的功能。
二.打开窗口
1. 将建立窗口的动作类库化(建立出游戏专用的小规模类库)。
① Visual C++的工程设定
② 建立新工程
③ 建立、加入文件
④ 设定路径
⑤ 工程用到的文件
StdAfx.h 预先编译表头
StdAfx.cpp 预先编译表头
rescource.h 在资源编辑器中使用
Sample.h 定义CSampleWin、CSampleApp等类
Sample.cpp 定义函数
注释:StdAfx.h和StdAfx.cpp是VC++的整合环境Developer Studio为了对表头进行“预编译(Precompile)”,将windows.h等常用的表头文件一次性读取进来用的文件。而StdAfx.cpp也只是用来引入StdAfx.h而已。
三.建立类库
类库的建立方式:在日后写程序时,只要以类库为基础,改写所需的操作,这样当要扩充程序功能的时候,就不需要从头开始写起了咯。
使用类库扩充所需功能的方法如下:(在设计时必须把该写的部分独立出来)
① 引入类
② 继承该类
③ 重载(overload)成员函数
1. 类库是什么?
类库可以让我们更简单地使用Win32 API 与C++。所以,内容应该是Win32 API加上一些其他的处理动作。
2. 类库里的基本类:有用来控制应用程序的CWinApp类、控制窗口的CWindow类以及控制绘图所需的Device Context的CDC类。
⑴应用程序类(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)