level 11
游戏系统本体应该不难弄,难点在数据的设定和变数的压缩和加密传送。
还有故事剧本也是很重要的。
2013年09月06日 19点09分
1
level 11
首先,最重要的游戏数据是地图。地图数据储存起来差不多就是一个二维矩阵,不过wiki功能上应该不支持二维矩阵,调用foxway会搞得略复杂的样子。如果要搞的话就应该有两种做法:{{
#:switch|{{#
:switch}}}}和{{#:arraydefine}}{{
#:switch|{{#
:arrayprint}}}}
2013年09月06日 20点09分
2
level 11
实际做起来的话,第一种应该较方便读取,第二种则方便编写。其实第一种编写起来应该也不会太麻烦,比较好就是采用第一种吧。
2013年09月06日 20点09分
3
level 11
严格来说,地图数据不单只是图块编号,还可能有多层图块,扩展成三维矩阵的话,{{#:switch}}显然更方便。
2013年09月06日 20点09分
4
level 11
图块资料方面,采用{{#:arrayindex}}应该是最好的方法,可以省去太多的模板调用,只需要调用变量就可以了。
2013年09月06日 20点09分
5
level 11
结构上应该是一个属性做一个array,例如{{
#arraydefine:picname}}{{#
arraydefine:passibility}}
2013年09月06日 20点09分
6
level 11
格式就是这样了,数据内容比格式难百倍,各种属性的平衡,地图的大小,招式的实用性等等,都需要很多测试去修正。
2013年09月06日 20点09分
8
level 11
然后就是很让人头疼的一部分,就是数据传输了。因wiki的限制,不可能做到不刷新页面而重新计算页面的内容。所以所有变更必须依靠刷新页面。
2013年09月06日 20点09分
9
level 11
这样一来,就需要一个机制把一个页面的数据传送到刷新后的页面。在wiki,就只有类似于$_POST和$_GET的一种办法了。
2013年09月06日 20点09分
10
level 11
rpg必要的所有可变量,或称为玩家的存档,必须每一次都完整地显示在网页链接上。这样就有几个大问题了。例如把所有数据都记录在链接上,链接就会变得很长,必须有效地压缩,才能更好地传送信息。还有就是数据都显示在链接上,即使可能不是直接显示,不过一个一个数值试的话,总能找到想要修改地数值在哪,然后就可以人意修改了。
2013年09月06日 20点09分
11
level 11
存档必须要有的:玩家的所在,数值就是地图号x座标y坐标。主角数据:人物号、等级、经验值、装备、攻击、防御,如果攻击防御是直接和等级相关的话就可以省去了,等级其实也可以由经验值算出,如果可以省去就必须尽量省去。持有物品:差不多可以简化为以物品代号顺序排列的数字列,每个物品限制有
2013年09月06日 20点09分
12
level 11
99个的话,可以变成30284938,意思是一号物品有30个,二号物品有28个。99个可能也太多了,把限制改为20,以二十进制编写数字队列,然后再转为10进制,可以更好地缩短数据长度。
2013年09月06日 20点09分
13
level 11
然后还有一些不完全属于存档,只会在一段很短时间内存在的数据。例如说,遇到的怪物,遇到时,就会变成存档的一部分,到打完了,就可以去掉。
2013年09月06日 20点09分
14
level 11
rpg中如果要控制情节的发生,或是进行的各种人物情节,就必须要有更多的可定义变量。
2013年09月06日 20点09分
15
level 11
这些变量极大多数都会是布林值,只需要用0和1表达。这样的话,各变量可以按既定顺序排成队列,然后整体转换成十进制,这也可以很有效地缩短长度。
2013年09月06日 20点09分
16
level 11
虽然在前面一直都在说十进制形式的变量传递,其实更理想的是以更高进制传递,例如16进制甚至64进制。
2013年09月06日 20点09分
17
level 11
以高进制显示出来,某程度上已经可以做到加密保安的效果了。不过还是不放心的话,可以把数据以秘密方式排列和加插一些无关数据,然后产生md5或sha1值,附在存档的结尾。每次读取存档,都先拿得到的存档做一次相同的运算,检查是否一致,如不一致就判定为玩家修改过存档,那时候存档就失效了。
2013年09月06日 20点09分
18
level 11
不过在资料开放的wiki,秘密方式也不是很秘密,只要有人翻开原代码,必然能知道算法。这样,就只能依靠随机数了。
2013年09月06日 20点09分
19
level 11
每次写存档前,产生几个随机数。然后这些随机数会参与到md5的运算当中。最后那几个随机数,会分别藏在存档内不同的数据列中。这样的话,要修改变量,必须要知道随机数所在位置,去掉,然后改数据,算md5,再把随机数混回去。加上有64进制加密,这事情做起来一定很麻烦。
2013年09月06日 20点09分
20