设为首页收藏本站|繁體中文

Project1

 找回密码
 注册会员
搜索
查看: 2935|回复: 5
打印 上一主题 下一主题

[原创发布] 让数据网游化(实现思想)

[复制链接]

Lv1.梦旅人

梦石
0
星屑
50
在线时间
97 小时
注册时间
2015-3-27
帖子
225
跳转到指定楼层
1
发表于 2016-5-2 11:16:22 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式

加入我们,或者,欢迎回来。

您需要 登录 才可以下载或查看,没有帐号?注册会员

x
本帖最后由 578783944 于 2016-5-2 14:42 编辑

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

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

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

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

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

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

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


我的博客:http://wang1212.github.io/

Lv4.逐梦者 (版主)

梦石
0
星屑
9532
在线时间
5073 小时
注册时间
2013-6-21
帖子
3580

开拓者贵宾剧作品鉴家

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

附上一个芯大实现的仿网游装备系统,虽然我没打开过工程,但是我能想象里面的代码特别麻烦。
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原始系统结构非常不一样,因此无论使用什么思路,大概都会对原始系统进行巨大改动。个人感觉脚本新手很难独立完成。

点评

很重要的一点,确实这些数据都存档了,否则是会消失的。  发表于 2016-5-2 14:32
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
50
在线时间
97 小时
注册时间
2015-3-27
帖子
225
3
 楼主| 发表于 2016-5-2 14:29:44 | 只看该作者
RyanBern 发表于 2016-5-2 12:28
仿网游系统的基本思路讲解不错。其实如果去掉实现的部分,思路其实还是很清晰的。但是,我能说能真正实现一 ...

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

这个实现过程,确实比较麻烦,需要一定的脚本基础,对系统有个了解,我就想让喜欢研究的人有个思路,毕竟很多都是只提供了代码,却没有一个思路详细解释的。
我的博客:http://wang1212.github.io/
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
50
在线时间
138 小时
注册时间
2015-6-9
帖子
30
4
发表于 2016-5-3 21:42:56 | 只看该作者
楼主,有工程吗?

点评

不过,你想自己写的话,有什么不懂的可以来问我,我尽量及时回复。邮箱,这个网站,blog留言都可以  发表于 2016-5-3 21:47
不好意思,我是自己做的游戏,然后写的实现思想。自己写的话,不会冲突。外挂很容易冲突很麻烦的。不过写起来很麻烦。  发表于 2016-5-3 21:45
回复 支持 反对

使用道具 举报

Lv3.寻梦者 (版主)

八宝粥的基叔

梦石
0
星屑
4684
在线时间
5240 小时
注册时间
2009-4-29
帖子
14318

贵宾

5
发表于 2016-5-4 11:14:05 | 只看该作者
随机属性应该有类似的范例吧。

点评

随机属性的话,很简单,在创建对象后调用的方法内:例如写上 @pdef = rand(10) * 100 + 50 即可。  发表于 2016-5-4 12:22
《逝去的回忆3:四叶草之梦》真情发布,欢迎点击图片下载试玩喵。

《逝去的回忆3》的讨论群:
一群:192885514
二群:200460747
回复 支持 反对

使用道具 举报

Lv2.观梦者

梦石
0
星屑
596
在线时间
797 小时
注册时间
2014-7-1
帖子
578

开拓者

6
发表于 2016-5-5 21:52:07 | 只看该作者
挺期待XP的未来能够走向更加完美,也支持LZ能够完成这项工程,不懂编程的我只能默默支持!{:2_267:}

点评

谢谢  发表于 2016-5-6 13:05
学习使我疲劳,打工使我疲惫,恋爱使我伤身,吸烟伤我肺腑,饮酒损我形象,旅游使我破费,月底不见铜板,只有在论坛里面看看各种大佬才能使我进去
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册会员

本版积分规则

拿上你的纸笔,建造一个属于你的梦想世界,加入吧。
 注册会员
找回密码

站长信箱:[email protected]|手机版|小黑屋|无图版|Project1游戏制作

GMT+8, 2024-11-30 08:05

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表