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

Project1

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

[讨论] 网络支持扩展插件 寻求脚本技术协助

[复制链接]

Lv1.梦旅人

梦石
0
星屑
55
在线时间
20 小时
注册时间
2014-5-31
帖子
23
跳转到指定楼层
1
发表于 2014-5-31 10:28:10 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式

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

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

x
本帖最后由 zozi11 于 2014-5-31 21:24 编辑

原理:采用附加DLL的方式,调用网络功能,实现数据库数据交互。
因为只是个初级版本,存在大量BUG并且功能简陋,故而暂不放出。来此主要是为了寻求脚本技术协助,有兴趣的可以联系我的QQ


封装后有一个$token变量,3个函数:

$token: 不同游戏分配不同token,后期提供网页接口申请分配。token一方面保证数据合法性,另一方面用于服务器数据库内部区别不同游戏的同名变量。

login77()  用于测试网络是否连通,token是否正确。用在游戏初始化之后判断是否启用网络支持。

up77()   将变量数值上传到网络数据库,如果存在则直接覆盖新值。
get77()  获取变量对应的数值


如何使用:
基本调用很简单,提交数据只要在需要提交的数据上执行up77("变量名称",变量值) j即可;对应的,获取数据只要使用 get77("变量名称")
见下图:
调用网络变量数据:


简单代码:


实际效果:


在网络数据库中的变量状况:



基本函数就是上传和获取,依靠这两个网络函数应该能实现很多交互功能了。可是因为本人不懂脚本,现在寻找脚本大牛合作帮忙设计功能函数,比如坐标同步,角色属性同步等等。

我自己也做了简单的游戏程序,能够实现一个人物行走的时候另一个人物可以看到。

以下是实际截图展示,有兴趣合作的可以索要这个演示程序源码:

1P(房主或者队长)流程:



















2P(队员)流程:









-----------------------------------------------------------------------------
-- 问答无用
-----------------------------------------------------------------------------
外部DLL如何解决卡顿?(来自5楼)
这个是有方案解决的。一种在考虑中的解决方案是,对于交互频繁的需求,不采用这种外部DLL的方式,而是改成写文本+守护程序的方式,即游戏脚本中要上传的数据写到一个本地文本,然后游戏启动的时候启动一个其它语言写的守护程序,专门操作这些文本来跟数据库交互;游戏中要获取数据的时候也是读入那个文本的内容。当然我脚本不行,没测试过这个思路,或许读写文件也会卡顿;另一种方案是如果知道数据库的文件格式,可以用外部程序直接操作RPGMAKER游戏的数据库。这当然是最优秀的方案,但是难点在于RPGMAKER的数据库格式网上是否有人分析出来,我大概搜索了一下没有发现。

如何解决延时?(来自5楼)
延时倒是相对容易解决,因为所有的网络游戏都是差不多的方案,间隔一定时间交互数据,比如1秒钟交互一次,这1秒钟的时间数据库中的坐标从A点变成了B点,那么本地读到新的数据(B点)之后,根据原有数据(A点)比对使用for循环,来生成A点横坐标到B点横坐标之间的每个点横坐标,以及同样得到每个点的纵坐标;然后操作角色沿着路线移过去,记录朝向。当然生成的路线可能跟实际的路线有差别,因为间隔只有1秒,所以注定不会有太复杂的位移变化,只要不是开发比如LOL FPS这种精度需求很高的游戏,路线的稍微不一致并不影响游戏性。另一个方案是游戏自身极短的间隔存储坐标序列,比如每隔100毫秒保存一次坐标,保存10次之后把10次的坐标序列整个上传,获取的时候也是获取一段序列,按照序列调用行走图产生角色位移。
但是这两个方案都有的问题是在任何一个时刻,你看到的玩家位置并不是此时此刻他真实所在的那个位置。如果一定要对这个有严格需求,那还有第三种解决方案,在记录A点的时候同时记录朝向和状态,比如行走中,方向4,那么在得到A点数据的时候除了修正坐标之外,还按照这个方向直接预判性位移,直到得到下一个坐标点位再次修正。这也是有些即时类网游采用的方案,所以你会看到当掉线的时候你的队友会保持一个姿势一直跑到边缘还在跑。


国产吃货  话说,网游的逻辑根本就不是这样的吧= =。 你这么说还算是伪网游啊,哪有网游的数据存在本地的。(来自8楼点评)  
也就是这两年的网游才开始逐渐把大量数据和运算搬到了服务器端。以前的网游,限于带宽,大多数数据都是存储在本地的,比如角色属性,道具属性等等。只有关键数据完全存储在服务器。最典型的,以龙之谷为例(龙之谷这个游戏是我拆分最透彻的网游客户端),它的早期版本,只有角色等级坐标等等关键数据是来自服务器的,而技能限制,怪物坐标血量等都是来自客户端本身的;它没有野怪机制,而是团队副本模式,所以处理怪物非常方便。而组队下副本的时候其实是点对点,队伍里的人组成一个小型局域网,数据直接互相交互。所以早期的龙之谷外挂都是修改本地数据实现这些功能的;如果数据是在服务器端,那无论怎么修改也是没办法实现任意地图坐标传送、穿墙等等功能的。
当然,最主要是RPGMAKER结构决定了本来就只是单机游戏,本地数据库。要完全改成网络平台那就几乎要重写所有涉及到数据调用的结构了,那工作量太大而且技术要求太高,基本不考虑。还是在现有条件下实现最大限度的网络交互,增加游戏可玩性。

等待增加。。。

点评

把回答编辑在主楼是不好的习惯  发表于 2014-6-1 07:54

评分

参与人数 3星屑 +50 收起 理由
超级D梦 + 20 凑整,加油吧
3106345123 + 10 加油
化螺耕 + 20 精品文章

查看全部评分

Lv1.梦旅人

梦石
0
星屑
55
在线时间
20 小时
注册时间
2014-5-31
帖子
23
2
 楼主| 发表于 2014-5-31 10:30:15 | 只看该作者
进入房间后,游戏中会出现队友人物,并且一个人的移动另一个人也能看到,就是像网络游戏组团下副本一样的效果。注意,这个是已经实现了的,并不是幻想。只是由于脚本不熟,表现出来的效果不理想。但是网络功能绝对是好的。
回复 支持 反对

使用道具 举报

Lv2.观梦者

梦石
0
星屑
597
在线时间
423 小时
注册时间
2012-2-22
帖子
256
3
发表于 2014-5-31 10:54:18 | 只看该作者
77RPG?什么东西来的?
[url=]点我就可以了吗?[/url]
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
55
在线时间
20 小时
注册时间
2014-5-31
帖子
23
4
 楼主| 发表于 2014-5-31 10:58:11 | 只看该作者
超级D梦 发表于 2014-5-31 10:54
77RPG?什么东西来的?

额 是个与本文无关的东西。

点评

还真有………………………………………………………………  发表于 2014-5-31 16:06
好像挺厉害的东西  发表于 2014-5-31 11:01
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
155
在线时间
129 小时
注册时间
2014-2-22
帖子
233
5
发表于 2014-5-31 12:35:54 | 只看该作者
这个的重点在于数据的交互会产生多长的延时,以及对游戏流畅性的影响,因为一般较大的RM游戏都或多或少的出现掉帧的情况,尤其是在大量而且反复的调用dll时,这一点将会被无限放大。所以,想要使用这个模块处理即时多人ARPG游戏,首先就要保证流畅性。当然,你如果只是想把这个系统当做获取玩家存档信息的工具的话,当我没说。
哦,还有,QQ交谈失效了(反正我点了没用)
很多年了呢,坑还是没填完…………(草
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
55
在线时间
218 小时
注册时间
2013-12-17
帖子
386
6
发表于 2014-5-31 12:38:05 | 只看该作者
唔,真巧,今天刚把登陆做完了,上论坛打算和道友们讨论一番的,结果看到楼主的帖子了。
楼主的数据库用的什么?
RM脚本定制/修改/整合 群:143356012(入群注明来意)
回复 支持 反对

使用道具 举报

Lv4.逐梦者

梦石
0
星屑
12800
在线时间
1456 小时
注册时间
2012-7-24
帖子
1302
7
发表于 2014-5-31 14:11:15 | 只看该作者
怎么办,不明觉厉只能给楼主来塞糖了{:8_440:}

点评

感谢糖=A= 话说这游戏的脚本机制略奇怪。还不是很熟悉  发表于 2014-5-31 16:10

欢迎大家加我
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
55
在线时间
20 小时
注册时间
2014-5-31
帖子
23
8
 楼主| 发表于 2014-5-31 16:00:50 | 只看该作者
1003492579 发表于 2014-5-31 12:35
这个的重点在于数据的交互会产生多长的延时,以及对游戏流畅性的影响,因为一般较大的RM游戏都或多或少的出 ...

这个是有方案解决的。一种在考虑中的解决方案是,对于交互频繁的需求,不采用这种外部DLL的方式,而是改成写文本+守护程序的方式,即游戏脚本中要上传的数据写到一个本地文本,然后游戏启动的时候启动一个其它语言写的守护程序,专门操作这些文本来跟数据库交互;游戏中要获取数据的时候也是读入那个文本的内容。当然我脚本不行,没测试过这个思路,或许读写文件也会卡顿;另一种方案是如果知道数据库的文件格式,可以用外部程序直接操作RPGMAKER游戏的数据库。这当然是最优秀的方案,但是难点在于RPGMAKER的数据库格式网上是否有人分析出来,我大概搜索了一下没有发现。

点评

话说,网游的逻辑根本就不是这样的吧= =。 你这么说还算是伪网游啊,哪有网游的数据存在本地的。  发表于 2014-5-31 17:09
回复 支持 反对

使用道具 举报

Lv2.观梦者

梦石
0
星屑
380
在线时间
602 小时
注册时间
2014-5-8
帖子
699
9
发表于 2014-5-31 19:21:02 | 只看该作者
能用在rmXP上吗?
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
55
在线时间
20 小时
注册时间
2014-5-31
帖子
23
10
 楼主| 发表于 2014-5-31 21:11:58 | 只看该作者
布罗利 发表于 2014-5-31 19:21
能用在rmXP上吗?

这个倒是没关系- -只不过可能定义部分要改变,用法是一样的
回复 支持 反对

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2024-11-15 01:41

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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