游戏录像
Cocos Creator python游戏分布式强连接框架
介绍
cocos creator前端 python后端
后端集成了tcp、http、websocket、rpc等请求方式。(rpc、http和websocket是基于tcp自行封装的)
使用了分布式开发模式,封装了快速的跨服务调用方式。
使用单线程、多进程的开发模式,可以避免多线程导致的逻辑混乱。
架构
1.前端采用ecs、监听者(prop)、事件、mvc等的设计模式,同时有一键生成界面代码功能。
2.服务端采用类似前端的ecs设计模式(为了方便舍弃了实体,也就是说component可以直接添加到component上)。
3.服务器采用分布式架构,服务模块设计分三部分:
Relam(校验)、Hall(游戏大厅)、Map(游戏场景)
a.玩家登录使用http请求校验层的login接口,登录成功后,可以获得用户的uid还有游戏大厅的websocket url。
b.通过获得的url,玩家可以与Hall游戏大厅建立强连接,同时每隔一定时间发送心跳包。玩家可以通过与Hall的强连接发送聊天信息。
c.玩家可以进入Map游戏场景(Map服务器可以部署多个)与其他玩家对战,点击进入场景按钮后,玩家获得Map返回的websocket url,玩家就可以与Map进行强连接,一旦连接成功,就可以断开与Hall层的连接。
d.玩家退出游戏场景回到游戏大厅时,玩家通过http请求获得Hall的websocket url,然后玩家就可以退出Map游戏场景,进入Hall游戏大厅。
配置
1.后端 pycharm需要配置启动项
2.前端 使用cocos creator打开项目选择main场景启动即可
3.配置nginx
#user nobody;
worker_processes 1;
#error_log logs/error.log;
#error_log logs/error.log notice;
#error_log logs/error.log info;
#pid logs/nginx.pid;
events {
worker_connections 1024;
}
http {
include mime.types;
default_type application/octet-stream;
sendfile on;
#tcp_nopush on;
#keepalive_timeout 0;
keepalive_timeout 65;
server {
listen 6888;
server_name 127.0.0.1;
location / {
proxy_pass http://127.0.0.1:7456/;
}
location /res/ {
proxy_pass http://127.0.0.1:8885/;
}
location /api/relam0/ {
proxy_pass http://127.0.0.1:15100/;
}
location /ws/relam0/ {
proxy_pass http://127.0.0.1:15300/;
}
location /api/hall0/ {
proxy_pass http://127.0.0.1:16100/;
}
location /ws/hall0/ {
proxy_pass http://127.0.0.1:16300/;
}
location /api/map0/ {
proxy_pass http://127.0.0.1:17100/;
}
location /ws/map0/ {
proxy_pass http://127.0.0.1:17300/;
}
location /api/map1/ {
proxy_pass http://127.0.0.1:17101/;
}
location /ws/map1/ {
proxy_pass http://127.0.0.1:17301/;
}
}
}
4.配置redis 设置host为127.0.0.1 端口为6379
5.运行游戏(注意要把游戏打开的ip改为127.0.0.1:6888,主要是为了解决cocos creator跨域访问问题)
开发工具
Cocos Creator 3.6
Python3.9.7
Pycharm
其他说明
项目基本没有其他特别的框架,也没有特别的依赖库,基本解压后就能运行。
美术资源来自网络。