同人游戏开发手记(二)

来源:互联网 发布:网络语狗血是什么意思 编辑:程序博客网 时间:2024/04/28 14:25

http://blog.csdn.net/fosly

第一章 准备

1.1 同人游戏

    确切的定义百度百科里面应该有,不过同人这个词语倒是很有内涵的,俗话说,“爱她就要糟蹋她”——举例说明,热血动画《海贼王》的连载期间,出现了路娜党同人漫画,讲的是路飞和大巴爪鱼一起糟蹋娜美的故事,一些原著中根本不可能会出现的情节,在同人创作中该出现的都出现了。而后《海贼王》还出了很多同名同人游戏,有的游戏可以缓解一部分粉丝的啥啥,而有的游戏则是解答了一些关于海贼王剧情中一些不为人知的伏笔。

    也许读者您不是这样理解的,不过这个无所谓,我要说的是,我至少可以给您保证本系列确实是在糟蹋一些经典游戏就是了。

 

1.2 游戏中最常见的图像存储方式

    言归正传,系列中应该不会涉及太深的计算机知识,但是读者至少应该勉强具备一些计算机基础。本系列从第三章开始,会随机选择要开发的同人游戏种类,现做现卖,内容不可预测,所以对于读者哪一方面的计算机基础要求我也说不准……(别张嘴,看前言时是谁决定继续看下去的?这是您的不对,有木有,现在开始感觉接受不了,也是您的过失所致,有木有!)

    不过由于本系列中将涉及的游戏以2D游戏为主,游戏前期准备中,图像操作占了很大一部分,这里会简要介绍一下最常用的位图(bmp)存储方式,如果您要细致了解,可以上网查找相关资料,如果您已了解,本节可以直接跳过。其实早期游戏中PCX格式也很常见,不过在这里我绝对不能写出来,一是这种格式现在已经不常用了,二是如果我介绍了,这本系列第二章就没法写了。

    位图,顾名思义,按位存储的图,在此不详述其定义和分类。在游戏拆解过程中,主要会出现这几种存储方式:

    8位:色盘+颜色编号表,色盘是预先定义的带编号的颜色值,而图像部分每一点只记录该点所对应的颜色编号。

    16位:直接存颜色值,每个点颜色值占16位(2字节)颜色分配可能是

          1位空位,5位红色,5位绿色,5位蓝色或者5位红色,6位绿色,5位蓝色两种方式。

    24位:直接存颜色值,每个点颜色值占24位(3字节),其中有8位红色,8位绿色,8位蓝色。

    32位:直接存颜色值,每个点颜色值占32位(4字节),其中8位空位,8位红色,8位绿色,8位蓝色。

    位图的每一行都被称作扫描线,存储颜色时要保证每一行所占字节数必须是4的倍数,如果不足需要在后面补0,比如我们用画图创建一个7*7大小的图片,用油漆桶工具涂满调色板上第一行第二个格子的灰色(128,128,128),另存为256色图,然后用16进制编辑器将图片打开,可以看到,由于每一个扫描行的字节数(7Byte)都不能被4整除,4 -(扫描行字节数 MOD 4)就是后面要补齐的位数。

 

   

    图1-1左框圈中的是扫描线的七个点,右框圈中的是补齐的位

 

 

    诗人们如果有空闲的时间,最好多去了解一些常见的图像格式,比如近期比较流行的PNG格式,泷泽萝拉,十万个冷笑话什么的,这样对将来分析一些不明真相的图形数据文件可能会带来很大的帮助,从而少走一些弯路。(注1)

 

(注1)其实现在看来,第二章的图像压缩方式应该就是标准的PCX格式,而当时我并不知道PCX是如何存储的,于是才导致花费了很多时间和经历去分析尝试。

 

 

1.3 本系列中可能会用到的一些工具介绍

    图像编辑软件:

    因为在本系列中,我们主要是窃图来用的,不需要做复杂的图像操作,所以图像编辑软件使用Windows自带的画图板就足够了。

    16进制编辑器:

    推荐使用UltraEdit-32编辑器,毋庸置疑这是一款功能狠强大的文本编辑软件,不过全功能版一般都需要注册。另外WinHex也是一款不错的选择,它甚至可以编辑磁盘,而处理大文件的速度也比UE要快一些。正是它的强大,使得它杯具到在网上甚至找不到注册版(全是绿色汉化破解版)。当然也有一些完全免费甚至开源版的编辑器也有很强大的处理能力,比如开源的MiniHex1.0,这款软件小巧的同时集成了很非常多实用的功能,比如数值转换器和计算器,是我的随身优盘上必备的常用软件之一,目前我觉得它唯一的缺点就是在处理大文件时速度会很慢。

    程序语言/编译器:

    在前期拆解游戏的时候,可能会编写一些临时性的测试性代码,这些代码对程序语言和编译器没有任何特殊要求,只要可以进行最基本的操作,选择顺手的就行了。这里我推荐使用Turbo C++ Version 3.0(或者TC2.0)虽然是DOS版的,但是它的编译环境配置不会复杂到让人崩溃,大学课本上也有详细的教程,很容易上手,而且软件本身几乎可以在任何一所开设有计算机课程的学校里面找到。

    除了测试性代码,我们可能还会制作一些桌面小工具,而这时DOS版的编译器就有点力不从心了。我选择使用VisualBasic(V6.0),都说这是一款少女型编译器,它可以快速的开发出一些桌面小工具,虽然有时她会有点小脾气。(如果您不幸也像我在某公司那段时间一样,没有条件使用VB,对于本系列出现的小工具,Office(2003版本以上)Excel或者Word里面集成的VBS也可以胜任,而Office系列软件,一般公司都有)除了大公司出品的主流的开发工具外,像“易语言”这样的快速开发工具也不能忽视,易语言最早第一次出现在刊物上的时候我就开始关注了,它可绝对不是一款普通的编译器(它是妖怪),如果您擅长,当然这也是首选项之一。

    而后期同人游戏的正式开发,我觉得最好使用给力一点儿的语言和编译器,免得被编译搞死,一般情况下,大多数人类选择了C语言和C++语言,编译器可以选择VisualC/C++6.0,Borland C++ Build等等。当然主要还是得“投我所好”才行,如果您一定要用变态的BrainFuck语言和销魂的BF编译器,甚至自己设计一种旷世NB语言,制作一款新型的可以用炒勺编码的编译器,那也未尝不可。

    总之瞎弄吧,结果并不重要。