webScoket学习之开发炎龙骑士团

来源:互联网 发布:电脑双桌面软件 编辑:程序博客网 时间:2024/04/30 02:41

起源

记得小时候很喜欢一款flash小游戏,叫做炎龙骑士团,刚好这次准备学习webscoket,故打算来实现一下这个小游戏,项目我托管在github上,这是地址:https://github.com/ZS1994/JavaWebSocket。本文我会持续更新,记录每次的开发情况,当然前提是得有时间,毕竟我的工作还是挺忙的

过程

2017年7月10日15:46:07

先介绍下炎龙骑士团的游戏规则,首先在一张x*y方格的地图上,两方人马相互对峙,首先一方人物先行动,每次行动可以移动一次,攻击(技能)一次,改方所有人全部行动完之后另一方开始行动。每个单位有自己的名字,血量,蓝量,护甲,类型,攻击力,最大移动距离等等属性。

本次项目已经搭建完成,比较简单,首先介绍下包结构,这个待完善:


然后呢,目前实现了移动,效果如下,黄色表示可移动区域,红色表示当前位置。


就我目前的理解,客户端与服务端交互都是通过发送消息来传递信息的,那么如果传达命令给服务器然后客户端还得知道这次服务器端返回的应该是哪个命令的结果呢,我受到以前学C的句柄的启发,于是我设计了一个变量handle,每次命令结束都会给handle赋值一个唯一值(我用的是函数名,好认),这样在接收服务器消息的函数里可以通过handle的值来判断本次返回的消息应该是什么,从而做相应的处理。

好了,本次基本就这些了,以下有几个需要思考的地方:

1、如果用我上述的方法来实现命令的话,那么未来随着命令越来越多,岂不是越来越复杂,我没有做过游戏开发,我不知道目前大家都是怎么设计的,我想,能不能按命令分类而做多个webscoket,比如页面渲染的一个,动作的一个,聊天的一个,其他等等。

2、现在是群发消息,所有人都能收到消息,那么如何实现只有特定人才能收到消息,该游戏目标是两个人玩,那么应该是两人为一个小队,小队内消息互通,而小队之间相互独立,消息不互通,这个由什么好的思路呢

3、如何自己控制自己的单位,而不能控制别人的单位,我想的是每次发送请求附带上自己的id,通过id服务器得知你是谁,从而只允许属于你的单位的命令


2017年7月11日16:34:21

今天将原bean包文件转到actor包下,bean包用来放数据封装,客户端handle取消,采用服务器端命令封装来控制,可实现不同客服端均能识别命令。

然后,可以实现不同客户同时识别命令,效果如下


原创粉丝点击