Golang + Laya引擎实现的简易版“球球大作战”小游戏
开发动机
学习Golang语言以来,先后实现了个人博客,生活美食推荐系统,以及一些如日志收集工具等开发能用到的小工具,但还没写过游戏。前不久,利用闲暇时间,写了套简易的分布式游戏框架,心想写好了不投入实践使用,不能看到效果啊,所以决定写一个小游戏案例来玩一玩!
技术支持
服务器框架只实现了简单的服务间通信,中心管理,游戏配置,网络传输层,db等功能,传输协议使用TCP + Protobuf 3,服务器通信采用 RPC + HTTP ,DB采用 Mysql + Redis 持久+缓存。
客户端前后比较了多款主流引擎,由于我有JS基础,且考虑到没打算深钻引擎,所以选了 Laya 引擎的 JS 版,有基础就容易上手,看了一个下午的视频教程就算是入了门了,且 Laya 官网有完整的API文档和一些小案例,对新手而言很友好。
技术难点
1、时延性
球球大作战是一款休闲类的实时对战游戏,对于实时对战游戏而言,如果时延高的话,玩起来体验感就特别差了, 所以第一难点就在于如何做到无时延或低时延,这里我采用的游戏同步方式是状态同步,客户端的移动操作在每帧效果内进行体现, 同时将移动操作发送给服务器,服务器有一个tick循环,将模拟每50/100ms向房间内的玩家推送同步数据,这里看了下球球大作战技术人官宣的方案, 他们也是如此设计的,客户端和服务器间发送的帧数越频繁,时延就会越低。
2、网络IO
上面这样的同步方案解决了时延性的问题,但这样会存在另一个问题,就是网络IO开销会比较高,第一是消息频繁,第二是消息体比较大 ,因为房间内会存在多个玩家和成百上千的小球球,同时玩家和玩家之间,玩家和小球球之间又会有碰撞效果,会不断生成新的小球,所以如果是 每一个同步消息内发送所有的球球的话,那么这个包应该是不小的,为了解决这个问题,我想了个方法,就是服务器每个同步帧内记录下新生成球球和死亡的 球球, 在发送同步帧时,只推送这些球球的数据,而且死亡的球球只要球球ID就行了,对于没有发生变化的球球,不需要进行推送。这样试了下,确实网络包大小降低了很多,而且效果也很好, 在网络较差的地铁上都能顺畅玩下去。
游戏展示
简单截了下图,图中有2个玩家,102和 105,蓝色球球代表自己,右下角黑色圆形的是方向控制器,点击屏幕并滑动来控制方向移动,右上角这里设计了个自杀器,玩家碰撞后会死亡,其他较小的就是生成的小球球。
游戏链接地址:http://xlyzane.cn/game/qqFightGame.html
第一次打开时加载可能会比较慢,因为我的服务器是最低的学生配置机,如果加载失败了,刷新一下就行,哈哈哈,主要是穷。
这demo大概只花了半个月的时间,所以还有很多bug和不完善的地方,后面会再持续跟进完善,希望能做出一点可玩性的东西。
Golang + Laya引擎实现的简易版“球球大作战”小游戏相关推荐
- java球球大作战小游戏代码_windows游戏编程:球球大作战(吃鸡版)源码
#include "stdafx.h"是win32程序系统生成的 创建项目时选择win32程序项目 除了下面代码外,无其他改动 #include "stdafx.h&qu ...
- java球球大作战_球球大作战(小游戏源码)
[实例简介] 控制自己的小球球去吃比自己小的球球 [实例截图] [核心代码] package chiqiuqiu.cn; import java.awt.Color; import java.awt. ...
- Qt基于tcp网络服务器的简易版多人贪吃蛇小游戏(多线程)
文章目录 前言 一.项目的简单介绍 二.总体步骤 1.服务器端 2 客户端 总结 前言 花费一周的时间,搭建了一个自己的破烂服务器,以此记录我那逝去的时间 一.项目的简单介绍 这是一个多人贪吃蛇游戏, ...
- 【JavaWeb】简单版猜骰子大or小游戏
本任务编写一个Servlet实现猜骰子大小游戏.使用HttpSession对象存储随机数,当使用GET请求访问它时,生成一个1~6之间的随机整数,将其作为一个属性存储到用户的会话对象中,同时提供一个表 ...
- 云开发版合成大西瓜小游戏微信小程序源码 微信游戏小程序附带流量主功能
这是一款云开发版的合成大西瓜小游戏微信小程序源码,微信游戏小程序源码.该小游戏玩法简单,只需要拖动同样的水果落下合成新品众的水果,最终合成大西瓜,玩法酷似俄罗斯方块,相当于换一种形式的俄罗斯方块,简单 ...
- 基于C++的简易版《球球大作战》游戏设计
全套资料下载地址:https://download.csdn.net/download/sheziqiong/85602628 全套资料下载地址:https://download.csdn.net/d ...
- Laya官方不会告诉你的坑(微信小游戏系列)
Laya官方不会告诉你的坑(微信小游戏系列) 使用laya2系列调试微信小游戏的时候, 发现了以下问题, 看了一圈官网也没提及, 所以记录一下供大家参考和讨论. 1.报错 ReferenceError ...
- H5版仿制微信跳一跳小游戏,网页版仿微信跳一跳小游戏源码,实现了跳一跳的基本核心功能
H5版仿制微信跳一跳小游戏,网页版仿微信跳一跳小游戏源码,实现了跳一跳的基本核心功能 完整代码下载地址:H5版仿制微信跳一跳小游戏,网页版仿微信跳一跳小游戏源码 运行截图 Project setup ...
- Python版见缝插针小游戏源代码,球球旋转大作战源程序
见缝插针游戏是一款非常考验玩家手眼协调能力的休闲益智虐心虐脑小游戏,玩法很简单,但要过关却很有挑战性哟! 主要是将一系列的小球,插入到旋转的摩天轮转盘当中,插入过程中不能碰到旋转的摩天轮上的其他小球, ...
最新文章
- python练习题-99乘法表
- 组合数取模 Lucas定理
- [资料]有关MS SQL 2000安全问题
- Python程序开发——第五章 函数
- IOS-企业开发人员账号amp;邓白氏码申请记录
- 为ESXI 添加ISCSI存储设备 Linux服务器系统
- Java SSM6——SSM整合
- 使用Sci-kit学习和XGBoost进行多类别分类:使用Brainwave数据的案例研究
- linux查看spare盘的数量,戴尔Dell服务器使用OMSA软件omreport查看硬件信息|磁盘阵列健康监控...
- C 编译器、链接器、加载器详解
- Dockerfile制作自定义镜像
- 一、坐标系之WGS84坐标系与WGS84 Web Mercator
- spring boot 设置启动时初始化DispatcherServlet
- 串口协议和 stm32CubeMX实例、keil波形观测
- 升级到JUnit5的7个理由
- 关于加强销售费用管理的探讨
- 双碳背景下个人的低碳环保生活
- Excel图形转入CorelDRAW技巧
- 光学字符识别(OCR,Optical Character Recognition)
- react 和 reflux
热门文章
- 昆仑通态MCGS与施耐德ATV变频器通讯程序 实现昆仑通态触摸屏与施耐德ATV12变频器通讯
- 国际象棋“皇后”问题的回溯算法
- 大学计算机基础郑州大学,郑州大学2011级《大学计算机基础》机试模拟考试安排日程表g.doc...
- 两步教你用Vue3+TS实现input组件的v-model属性
- Ubuntu使用OpenMVG和OpenMVS进行三维重建
- 每隔 2 秒刷新抢票次数,携程抢票服务疑似造假
- 计算机导论课程总结3
- 达人篇:1)简单易懂的质量管理-写在达人篇开篇
- CODING 企业微信小程序上线了
- 计算机技术与软件专业技术资格 信息系统项目管理师,全国计算机技术与软件专业技术资格 ( 水平 ) 考试-信息系统项目管理师.pdf...