RMXP能做能赚钱的网络游戏戏吗

(雨泽?vampire)
(Lomo- 此去经年)
(十三水开发牛牛)
(十三水开发牛牛)
第三方登录:制作RMXP的联机小游戏(5)-&服务端_iamguoxiaomi_新浪博客
制作RMXP的联机小游戏(5)-&服务端
前面已经成功做出了一个联机游戏的大致构造,包括后台运行,发送、处理数据,Game类等。证明了游戏本身是可行的,接下来就要做另一件事:写一个服务端。
这个想法其实是很单纯的:服务端存储数据,客户端把自己的数据上传,然后统一从服务端获取数据。举个例子,如果要做一个游戏,需要角色打开一个开关,流程是这样的:
(预先连接上服务端)-&客户端玩家对开关按空格-&客户端发送指令:请求打开开关XX-&服务端收到指令-&服务端修改数据
同时有另一个流程​,是客户端定时触发,向服务端申请同步数据:
(预先连接上服务端)-&客户端​发送指令:请求同步数据-&服务端收到指令-&服务端向客户端发送同步数据-&客户端收到同步数据-&客户端处理同步数据-&开关XX被打开
即,所有数据的修改都是周期性的,比如,每1帧或2帧申请同步一次数据,其实已经足够快了。(RMXP的脚本运行是40帧/s,画面更新是30~120帧/s,一般设置为40帧/s)
所以我们需要一个存储数据的服务器,大致设想一下应该有如下功能:
1.&服务器内部有Client类,对应每一个连接的用户,有这些方法/属性:address方法给出通讯地址;data方法是一个​​Hash用于存储数据,如data['username']
= 'gxmatmars'。
2.&服务器内部有Room类,这样可以把连接的用户分组,同一个房间里共享数据,有这些方法/属性:room_id方法给出房间的编号;clients方法是一个由Client对象构成数组,给出​该房间里的用户;common_data方法给出所有人都可以修改的公共数据。
3.&服务器内部有Server类,创建$server对象对应服务器的实例,有这些方法/属性:start/stop方法开启/关闭服务器​;send方法给客户端传输数据;run方法处理收到的数据;
以上就几乎构成了一个服务器的框架,剩下的是约定和服务器通讯的规则:
目前有如下几条指令可以使用,其中以‘设置’开头的指令用于数据之外的操作,以‘数据’开头的指令用于数据的操作。\d+指的是任意的数字组成的字符串;.+指的是任意字符串。
设置createroom:该指令用于在服务器上创建房间,服务器收到指令后会创建一个Room对象,并向该客户端返回Room对象的room_id,用于以后的通讯和连接。
设置joinroom:&\d+&:该指令用于加入指定room_id的房间,服务器收到指令后,会把该客户对应的Client对象加入​​到指定room_id房间的clients列表里
设置exitroom:&\d+&:该指令用于退出指定room_id的房间,服务器收到指令后,会把该客户对应的Client对象从指定room_id房间的clients列表里删除
设置syndata:&\d+&:该指令用于请求指定room_id的房间​的同步数据,服务器收到指令后,会按照一定的规则把该room_id房间的数据(包括房间公共的数据和每一个Client对象的数据)发送给客户端
数据BEGIN-&room_id=\d+-&common&.+&&.+&...-&self&.+&&.+&...-&END​
上面的指令用于传输数据到服务端,服务端收到指令后,会找到对应room_id​的房间,并写入数据。common&.+&&.+&表示修改房间公共的同步数据,self&.+&&.+&表示写入该客户端对应的Client对象的同步数据。例如common将修改Room对象data中键值为roomname的值为gxm's
做出这些约定之后,就可以建立一个简单的服务端了。当然需要添加一些其他的内容,做好的例子在这里(),按x键打开菜单,使用物品和技能有奇怪的效果哦!
图1&管理员可以使用的技能&
当然,接下来的任务就是想想要做一个什么样的游戏,因为服务器只负责传输和储存数据,游戏的本体还是要在客户端的运行。当然,这次不会是五子棋了&_&。
iamguoxiaomi
博客等级:
博客积分:0
博客访问:605
关注人气:0
荣誉徽章:

我要回帖

更多关于 mac能玩什么网络游戏 的文章

 

随机推荐