Project1

标题: 让数据网游化(实现思想) [打印本页]

作者: 578783944    时间: 2016-5-2 11:16
标题: 让数据网游化(实现思想)
本帖最后由 578783944 于 2016-5-2 14:42 编辑

首先,这是我个人的心得,仅仅是思想,几乎没有代码的参考价值。

数据指的是:装备,物品,角色
网游化:同样的东西可复制,并且部分属性可随机(动态实现)

PS:我本人不知道该发在什么区,因为发在提问区感觉不太合适

希望可以帮助到,想深入研究,并且正在制作游戏的人。

看这里:
让数据网游化(实现思想)

更新:这些数据均是需要存档的,谢谢为我提的建议,事实上我自己做的时候存档了,忘了在文章里面写上,我已经添加在文章里了。

这是经过我个人努力之后的成果,这是同一件武器部分属性随机化的结果。



作者: RyanBern    时间: 2016-5-2 12:28
仿网游系统的基本思路讲解不错。其实如果去掉实现的部分,思路其实还是很清晰的。但是,我能说能真正实现一个这样的系统实际上非常麻烦吗?需要考虑的东西太多了。

附上一个芯大实现的仿网游装备系统,虽然我没打开过工程,但是我能想象里面的代码特别麻烦。
https://rpg.blue/thread-346318-1-1.html

楼主的思路和我想到的有点不太一样。看了两遍文章,楼主的方案是先确定最大的物品种类数,然后使用ID偏移的办法来复制多个物品。这样做有一个问题就是一旦这个最大的物品种类数确定之后,千万不能再变化,否则ID会乱掉。具体说来,如果确定最多有15种物品,然后作者突然想起来应该是20种物品,这样的话$data_item里面所有的ID就要重新调一遍,否则虽然程序不会冲突,但是ID为1,16,31,...表示同一种物品的特性就会消失了。这一过程虽然可以通过代码实现自动更新,但是完全可以换一种思路来实现。

另外,看楼主的实现过程,应该是将每一个$data_items都存在档里面,完全抛弃数据库内容。从这方面上来说,我觉得数据库仍然可以利用起来,不至于到完全抛弃的地步。


下面说说我实现过的思路。原始RMXP不能仿网游的原因在于它的内部数据结构,第一,它的数据库限制了同一种物品只能有一种参数,不会出现同样都是[铜剑],然后一个攻击力15,一个攻击力20的情况(如果要实现这样的效果,唯一的办法就是占用多个数据库的位置);第二,在存储物品持有数量时,它只会记录物品的ID和对应的数量,这个机制在原始的数据库结构中是没有问题的,但是放在网游系统里面就出了问题。在网游系统中,同样都是[铜剑],但是属性值可以不一样。

我的想法就是修改RMXP存储物品的方式,必须把物品/武器/防具的每一个对象区分开来。具体来说,如果主角有两把[铜剑],我们记录的时候不要只是记录数字2,而是要生成两个[铜剑]对象然后存储起来,可以使用数组或者hash,区别不是很大。

那么,数据库是干什么用的呢?我们利用数据库来存储同类物品的共性。例如,假如我只需要武器和防具强化的功能,并且武器防具的基础值都是一样的,我们就可以在数据库里面设置这些基础值,而生成的对象里面只存储它们对应的ID和强化等级,这样修改起来非常方便,而且还比较节省空间。如果我需要武器和防具的基础值是随机的,那么数据库相应的部分也可以保留。例如我希望[铜剑]的攻击力在10~20之间波动,那么数据库我就设置为15,这样随机生成装备的时候正好就以数据库作为参照进行波动。总之,我建议要将数据库利用起来。

无论是哪种办法,需要的工作量都不小,因为你需要考虑到事件的[增减物品][增减武器][条件分歧][变更装备]等等。仿网游系统和RMXP原始系统结构非常不一样,因此无论使用什么思路,大概都会对原始系统进行巨大改动。个人感觉脚本新手很难独立完成。
作者: 578783944    时间: 2016-5-2 14:29
RyanBern 发表于 2016-5-2 12:28
仿网游系统的基本思路讲解不错。其实如果去掉实现的部分,思路其实还是很清晰的。但是,我能说能真正实现一 ...

是的,我在文章结尾说了,如果抛弃数据库,商店物品出售就非常难解决,需要手动写脚本。如果想方便一点,可以在数据库设置一组数据即可,这些数据均作为模板数据,只有共性。而且,我的游戏中就是这么设计的。

这个实现过程,确实比较麻烦,需要一定的脚本基础,对系统有个了解,我就想让喜欢研究的人有个思路,毕竟很多都是只提供了代码,却没有一个思路详细解释的。
作者: 锡鹏    时间: 2016-5-3 21:42
楼主,有工程吗?
作者: 怪蜀黍    时间: 2016-5-4 11:14
随机属性应该有类似的范例吧。
作者: jiushiainilip19    时间: 2016-5-5 21:52
挺期待XP的未来能够走向更加完美,也支持LZ能够完成这项工程,不懂编程的我只能默默支持!{:2_267:}




欢迎光临 Project1 (https://rpg.blue/) Powered by Discuz! X3.1