合成大西瓜?不如写个可以一起聊天吃瓜放烟花的聊天室 #13
AILHC
started this conversation in
Game Development Blogs
Replies: 0 comments
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Uh oh!
There was an error while loading. Please reload this page.
-
打个招呼
大家好~
游戏开发之路有趣但不易,
玩起来才能一直热情洋溢。
我是喜欢游戏开发的海潮😉
前言
社交是人的基本需求。
互联网时代,基于互联网的社交带给网民们无穷的欢乐和瓜。

那些能够实时交互的社交软件/游戏,往往会带给我们更多惊喜。
最近微信更新了8.0版本,可以在聊天的时候放炸弹,烟花等动态表情。很多人都玩得不亦乐乎~
在这之前呢,我的框架仓库增加了一个独立的网络模块,可以用于构建长连接网络游戏/应用。
特性:
传送门:enet
那接下来,我带大家借助enet库实现
一个带烟花效果的socket demo(超简单,三步就可以)
一个接近真实网络游戏开发的多人聊天室demo
玩起来~
极简聊天放烟花
第一步:引入网络库并初始化
enet这个库,发布于npm公共仓库中。提供多种规范,适用于任何平台。
这次我们直接通过url引入iife格式的js
第二步: 写上收发消息的逻辑
就几句代码,so easy~
这个时候,我们就可以运行看看效果了
等待服务器连接成功(因为那个公用的测试服务器有时慢有时快)
在控制台输入 sendMsgToServer("hello enet")
第三步:加上烟花效果
烟花效果网上扒来的
快过年了,用JS让你的网页放烟花吧
在原来的代码里改
运行起来,看看效果
简单的仿微信聊天放烟花就这样了
在线demo
源码
接下来,我们搞个大的。
多人聊天放烟花
在实际的网络应用开发中,网络通信的需求会复杂许多。
enet模块对上述情况都进行了封装,只需要根据提供的接口进行实现就可(无需改源码)
在这个多人聊天室demo中,我将使用protobuf作为通信协议。
为什么使用protobuf?
什么是protobuf
优势
可以快速玩起来,统一的协议语言可以和多种后端语言快乐地玩起来,甚至多人sport🤪👩🏿🤝🧑🏿👬👨🏾🤝👨🏼
不用自己设计协议和实现协议编解码
👀来看看如何接入protobuf
使用protobuf
虽然不用自己设计协议,但怎么接入开发中还是需要滴
常见的protobuf使用方式
我这里选择第二种方案
为了方便协议的导出,我用自己开发的一个protobuf工具:egf-protobuf
安装工具到全局或者项目目录
在package.json写一下npm script
初始化项目 npm run pbInit
创建proto文件目录protofiles
写协议 pb_base.proto
修改一下导出配置protobuf/epbconfig.js
ps:由于后端用ts,所以也配置了后端文件导出路径(前后端同时导出=双倍的快乐🤞🏻✌🏻)
导出js和.d.ts
项目中引入protobufjs库和proto_bundle.js
这样就可以在业务里愉快地使用protobuf来进行协议的编码解码了
将enet和protobuf结合起来
enet中如果需要自定义协议处理则需要实现enet.IProtoHandler接口
举个栗子🌰
我需要使用protobuf协议进行通信
那我就实现接口写一个protobuf协议处理器。
比如:egf-pbws
简单两步用起来(☞゚ヮ゚)☞
安装egf-pbws
和enet结合
准备工作做好了,开始写客户端
CocosCreator2.4.2实现多人聊天客户端
这个客户端项目中写了3个例子
由于篇幅有限,UI组件的实现就不讲了,都是很简单的实现,具体可以直接看源码
传送门:聊天客户端实现
核心逻辑实现
烟花效果代码实现
界面效果图
node+TypeScript实现简易后端
我最熟悉node,而且可以共用enet-pbws的这个protobuf协议处理库
就几行代码
开启多人
Sport聊天启动项目
初始化项目
在/examples/egf-net-ws目录,打开终端
如果有yarn则可以
启动服务器(还是在刚刚的目录下)
服务器启动成功:
服务器启动:监听端口:8181启动客户端:用CocosCreator2.4.2打开项目
最终效果
一起聊天放烟花
总结
第一个demo,借助enet通过简单的几句代码就可以实现socket收发消息
第二个demo,借助enet以及egf-protobuf和enet-pbws可轻松实现基于protobuf协议的多人聊天室应用
由于篇幅有限,有些功能没有讲到
后续将分享一下,如何设计enet
最后
我是喜欢游戏开发的海潮😉
持续学习,持续up,分享游戏开发心得,玩转游戏开发
游戏开发之路有趣但不易,
玩起来才能一直热情洋溢。
欢迎关注我的公众号,更多内容持续更新
公众号搜索:玩转游戏开发
或扫码:
QQ 群: 1103157878
博客主页: https://ailhc.github.io/
掘金: https://juejin.cn/user/3069492195769469
github: https://github.com/AILHC
Beta Was this translation helpful? Give feedback.
All reactions