/* Title: 泡泡堂 Sort: 3 */
泡泡堂
是一款 实时
, 在线
,休闲
,对抗
联网游戏. 起源与FC游戏 炸弹人
最大人数支持4V4,可以算得上中型网络游戏.对联网实时性要求较高, 复刻此款游戏,采用CS架构是比较好的选择.
游戏体验地址
完整源代码
习惯在开始前设置一个检查场景 假设在地图(4,1)处放置一个威力为9格的炸弹, 我们预期连锁引爆了位于(0,1)处的炸弹
不同类型代表地图上不同性质的物体
public final static int NULL = 0;//空
public final static int DESTROY = 1;//可摧毁的物体
public final static int OBSTACLES = 2;//不可摧毁的物体
public final static int Bomb = 3;//炸弹
public final static int ITEM_INDEX = 4;//道具起点索引
public final static int ITEM_SPEED = 5;//道具:速度
public final static int ITEM_COUNT = 6;//道具:增加数量
public final static int ITEM_POWER = 7;//道具:增加威力
用一个二维数组来描述地图上xy方向上各坐标上的节点
public class Map {
public static int[][] mapArray = new int[][]{
{1, 0, 0, 1, 1, 1, 0, 0},
{3, 0, 0, 0, 0, 2, 1, 0},
{2, 2, 1, 1, 1, 1, 1, 1},
{1, 1, 2, 1, 0, 2, 1, 1},
{0, 1, 2, 1, 1, 2, 1, 1},
{1, 1, 2, 1, 0, 2, 1, 1},
{0, 1, 1, 1, 1, 1, 1, 0},
{0, 0, 1, 1, 0, 1, 0, 0},
};
}
游戏核心逻辑就是对这个数组的操作. 具体逻辑实现见完整代码: https://gitee.com/geliang/bomb-server/blob/master/src/BombController.java
游戏同步方面采用帧同步
+状态同步
混合的方式:
帧同步
同步玩家操作(帧同步的帧率暂定为10)状态同步
同步地图(即上面的二维数组)状态为了防止作弊, 帧同步的计算在服务端
由客户端只上传自己的输入状态枚举值(8方向+没动). 服务端按固定帧率根据每个玩家的当前输入状态推演下一帧玩家的 x,y
,物体碰撞
,道具拾取
及地图状态
,再广播同步给房间内所有玩家.
umsp
二次开发完成玩家匹配,游戏逻辑计算umsp
是基于netty写的一个分布式网络开发框架 ,特点是
私有tcp
/websocket
/kcp
协议. 适用于H5/Native游戏二次开发umsp
完成客户端通信功能, 使用egret
完成渲染部分的功能umsp
在客户端有 JavaScript
/c/c++
/Java
各自实现了基础通信库 ,适配了H5/Android/iOS/Windows平台 ,另外用在c库的基础上封装了一层c#可集成至Unity.
umsp框架源代码: https://gitee.com/geliang/Umsp-netty
客户端渲染主要是人物行走帧动画, 地图的瓦片贴图和炸弹爆炸的帧动画.
egret的Dragonbones+Egret Feature解决帧动画
Tiled解决瓦片贴图的设计,瓦片贴图渲染遇到麻烦:egret 自带TileMap库不够完善.
故用TypeScript重写了一套
Tilemap库: https://gitee.com/geliang/bomb-client/tree/features-server/main/src/tilemap
服务端为了方便调试.用java的 swing 做一个地图+玩家数据变化的可视化
swing: https://gitee.com/geliang/bomb-server/blob/master/src/Window.java
webscoket 毕竟基于Tcp. 在手机4G/Wifi上玩泡泡堂
难免卡顿. 使用kcp优化网络传输后效果有极大改善玩家操控体验.
有关kcp的介绍见:
<kcp快在哪>: ../Network/kcp
有兴趣的可以体验一下kcp加持的Android版本泡泡堂:
Android版本的泡泡堂下载: http://118.24.53.22:11111/BombBoyAndroid.apk
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。