文章目录

  • PHP服务端发布(Windows下演示)
    • Windows
      • 安装PHP
      • 启动服务器
    • Linux家族
  • Unity客户端发布
    • 发布Windows客户端
    • 发布WebGL端
  • 演示
  • 源码解析
  • 联系作者

PHP服务端、Unity客户端 双端基础源码做avalon阿瓦隆桌游面sha(类似狼人游戏)支持WebGL、小程序发布

  • License:没有经过作者允许,禁止商用此项目
  • 此工程主要讲述功能点:创建房间、加入房间、房间内战

首先去gitee下载工程源码:https://gitee.com/chasing2moro/roommatch

PHP服务端发布(Windows下演示)

Windows

安装PHP

  1. 去官网 https://windows.php.net/download 下载一个Thread Safe X64/X86版本的zip(比如: https://windows.php.net/downloads/releases/php-8.2.2-Win32-vs16-x64.zip )
  2. 解压zip
  3. 设置环境变量为解压后的路径

遇到问题,可以去 https://www.workerman.net/windows 网站,查看详细步骤

启动服务器

双击工程里的 server\GatewayWorker\start_for_win.bat 文件(工程源码地址在文章开头)

Linux家族

安装、启动 请查阅 https://www.workerman.net/doc/workerman/install/install.html

Unity客户端发布

发布Windows客户端

  1. 打开Addressables Groups窗口(菜单路径:Asset Management/Addressables/Groups)
  2. 打包Bundle资源(菜单路径:Build/New Build/Default Build Script)
  3. 构建可执行文件(菜单路径:File/Build Settings/Build)
  4. 双击构建成功的可执行文件工程名.exe,即可运行

发布WebGL端

详细步骤请阅读 https://blog.csdn.net/lbxnba/article/details/128542984 里的发布WebGL部分

演示

运行5~10个可执行文件 工程名.exe,即可开始演示

  1. 创建房间
  2. 加入房间
  3. 房间内战

源码解析

  • 工程讲述
  1. PHP服务端工程路径 .\server
  2. Unity客户端工程路径 .\client
  3. Unity入口场景 SceneLaunch.unity
  • 登录协议 login
    • PHP代码:
      .\server\GatewayWorker\Applications\YourApp\DirRoot\Cmd\cmd_login.php
<?phpuse \GatewayWorker\Lib\Gateway;
class cmd_login extends cmdbase
{//客户端发送的login协议,会触发此函数public function onCmd($msg){//组装玩家id$user_id = ClientMgr::getUid($msg->user, $msg->psw);$_SESSION[SessionTag::uid] = $user_id;//把在线的旧玩家踢下线if(Gateway::isUidOnline($user_id)){$client_id_list = Gateway::getClientIdByUid($user_id);foreach ($client_id_list as $client_id) {$notify_kick = new notify_kick();$notify_kick->msg = "login kick out";$message = Events::wrapMsg(notify_kick::class, $notify_kick);Gateway::closeClient($client_id, $message);echo "warning=>玩家在线,需要提下线:$client_id\n";}}$client_id = $this->getCurClientId();//绑定用户id,方便下次踢人或者恢复现场Gateway::bindUid($client_id, $user_id);$msg_body = new login_rsp();$msg_body->ret = NetErrorCode::None;$msg_body->reason = $user_id;return $msg_body;}
}
  • Unity代码:
    .\client\Assets\Scripts\UI\Window\UILogin\UILogin.Login.cs
    //向网络层请求login协议public void onButtonLoginClick(){var req = new login();req.user = account;req.psw = psw;req.versioncode = CommonDefine.VersionCode;WebSocketClient.Instance.SendSerialize(req);}//订阅网络事件private void OnEnable(){Facade.Instance.RegistNetEvent(nameof(login_rsp), OnHandleLoginRsp);}//退阅网络事件private void OnDisable(){Facade.Instance.UnRegistNetEvent(nameof(login_rsp), OnHandleLoginRsp);}//网络层返回login协议private void OnHandleLoginRsp(System.Object data){var rsp = data as login_rsp;switch (rsp.ret){case NetErrorCode.None:DataPlayer.Instance.userId = rsp.reason;UITips.Instance.Show(XLocalization.Get("登录成功"));break;default:Debug.LogError("unhandle error:" + rsp.ret);break;}}
  • 看懂上面的登录协议login前后端是如何沟通后,就知道下面所有协议是怎么用了。
    • PHP代码:
      .\server\GatewayWorker\Applications\YourApp\DirRoot\Protocol\rsp_mix.php
<?php
//登录
class login{public string $user;public string $psw;public int $group_id;public int $versioncode;
}class login_rsp extends rspbase{}//重连
class reconnect{public string $user;public string $psw;public string $group_id;
}class reconnect_rsp extends rspbase{}//非协议:数据结构
class member_info{public string $uid;public string $name;public int $card_type;public int $support_type;
}//非协议:数据结构
class simplemember_info{public string $uid;public int $support_type;
}//非协议:数据结构
class splmember_info{public string $uid;public int $card_type;public int $support_type;
}//创建房间
class createroom{}class createroom_rsp extends rspbase
{public string $group_id;public array $member_infos;
}//进入房间
class enterroom{public string $group_id;
}class enterroom_rsp extends rspbase
{public string $group_id;public array $member_infos;
}//发牌
class dealcard{}
class dealcard_rsp extends rspbase
{}//退出房间
class exitroom{}
class exitroom_rsp extends rspbase
{}//选票
class vote{public int $support_type;
}
class vote_rsp extends rspbase
{}//校验投票,决定能不能开车(做任务)
class examtrain{public int $type;//1一个否决不能开车,2个否决不能开车
}
class examtrain_rsp extends rspbase
{}//清除所有投票
class voteclear{}class voteclear_rsp extends rspbase
{}//聊天
class chat{public string $msg;
}class chat_rsp extends rspbase{}
  • Unity代码:
    .\client\Assets\Scripts\Net\WebSocket\protocol\rsp_mix.cs
public class rspbase
{public int ret;public string reason;
}//登录
public class login
{public string user;public string psw;public int versioncode;
}public class login_rsp : rspbase
{}//重连
public class reconnect
{public string user;public string psw;public string group_id;
}public class reconnect_rsp : rspbase
{}public class member_info
{public string uid;public string name;public int card_type;public int support_type;
}public class simplemember_info
{public string uid;public int support_type;
}//创建房间
public class createroom
{}public class createroom_rsp : rspbase
{public string group_id;public member_info[] member_infos;
}//进入房间
public class enterroom
{public string group_id;
}public class enterroom_rsp: rspbase
{public string group_id;public member_info[] member_infos;
}//发牌
public class dealcard
{}
public class dealcard_rsp: rspbase
{}//退出房间
public class exitroom
{}
public class exitroom_rsp: rspbase
{}//选票
public class vote
{public int support_type;
}
public class vote_rsp: rspbase
{}//校验投票,决定能不能开车(做任务)
public class examtrain
{public int type;//1一个否决不能开车,2个否决不能开车
}
public class examtrain_rsp: rspbase
{}//清除所有投票
class voteclear
{}class voteclear_rsp: rspbase
{}//聊天
class chat
{public string msg;
}class chat_rsp: rspbase
{}

联系作者

邮箱:chasing2moro@qq.com

PHP服务端、Unity客户端 双端基础源码做avalon阿瓦隆桌游面sha(类似狼人游戏)支持WebGL、小程序发布相关推荐

  1. php io select,Python IO多路复用之——select方案服务端和客户端代码【python源码详解】...

    准备文件: IO.py  服务端代码 tcp_c.py 客户端代码 IO.py 代码: from select import * #引入 select 模块 from socket import * ...

  2. 阿里api网关接口客户端demo,java实现源码,其他语言可参考

    访问阿里api网关接口客户端demo,java实现源码,其他语言可参考 上一篇文章 <阿里api网关接口创建.发布.授权.调试> 中,介绍了3个典型接口的创建并在阿里控制台调试完成,地址: ...

  3. 差分放大电路单端输出和双端输出区别以及应用(转载)

    来自:http://www.elecfans.com/news/dianzi/20171118581901_a.html 什么是差分放大电路 差分放大电路利用电路参数的对称性和负反馈作用,有效地稳定静 ...

  4. 差动直流放大电路仿真 -- 单端输入,双端输入,共模,差模(附Multisim)

    一.实验步骤 •1)实验前的准备工作:检查三极管.导线: •2)调制+12V.-12V两路直流电压: •3)测量Q点:①调零(保证零输入零输出):②测Q点:完成相关表格: •4)测量直流差模电压放大倍 ...

  5. 精美苹果cms影视双端同步APIcloud混合原生APP源码

    精美苹果cms影视双端同步APIcloud混合原生APP源码 支持选集+秒播+缓存下载 影视源码介绍: 原生安卓端影视app 支持投屏,选集,秒播,缓存下载等等, 苹果cms乐看破解版去授权支持在线切 ...

  6. 精品商城拼团秒杀优惠折扣全功能完美双端自适应对接个人免签网站源码

    源码介绍: [已测]精品拼团秒杀优惠折扣全功能完美双端自适应对接免这款非常完整,整体也非常简洁,功能全面,没有那么多冗杂的多余页面和无用代码,拿到后优化了下整体代码,对接了免支付.订单发起提交都比之前 ...

  7. java计算机毕业设计Vue.js网上书城管理系统设计与实现服务端MyBatis+系统+LW文档+源码+调试部署

    java计算机毕业设计Vue.js网上书城管理系统设计与实现服务端MyBatis+系统+LW文档+源码+调试部署 java计算机毕业设计Vue.js网上书城管理系统设计与实现服务端MyBatis+系统 ...

  8. java计算机毕业设计教育辅导班信息网服务端MyBatis+系统+LW文档+源码+调试部署

    java计算机毕业设计教育辅导班信息网服务端MyBatis+系统+LW文档+源码+调试部署 java计算机毕业设计教育辅导班信息网服务端MyBatis+系统+LW文档+源码+调试部署 本源码技术栈: ...

  9. java计算机毕业设计高校多媒体设备运维管理系统服务端MyBatis+系统+LW文档+源码+调试部署

    java计算机毕业设计高校多媒体设备运维管理系统服务端MyBatis+系统+LW文档+源码+调试部署 java计算机毕业设计高校多媒体设备运维管理系统服务端MyBatis+系统+LW文档+源码+调试部 ...

最新文章

  1. 自己动手实现轻量级神经网络推理框架
  2. C++对象内存布局--③测试多继承中派生类的虚函数在哪一张虚函数表中
  3. 迭代器 生成器 装饰器 匿名函数
  4. 深度剖析Service Mesh服务网格新生代Istio
  5. CentOS 7关闭firewalld启用iptables
  6. springboot2.x 从零到一(1、快速创建服务)
  7. python怎么命名未知数_Python4要来了?快来看看Python之父怎么说
  8. 3D物理引擎JiglibFlash
  9. jumserver 官方文档和
  10. linux在虚拟机添加一块10,redhat linux 虚拟机如何增加一块虚拟硬盘
  11. ad中电容用什么封装_电容器是怎么工作的?它在电路中究竟起什么作用?
  12. 用计算机刻录光盘,图文详解怎么用电脑刻录光盘
  13. 下厨房某词条下的所有图片爬取
  14. Aseprite动画技巧
  15. 蛮X搜神记的NetManager分析(1)
  16. Windows上哪款卸载软件最值得推荐?
  17. aubo-i5机械臂(1)-正运动学求解
  18. 阿里云免费领取云服务器测试题答案
  19. r语言 协整_《量化金融R语言初级教程》一1.3 协整
  20. SqlServer 查看表结构

热门文章

  1. 必须掌握的 MySQL 优化原理
  2. 淘宝API item_search_guang - 爱逛街
  3. Java知识体系最强总结(2021版),深入理解linux内核架构评价
  4. 属牛男宝宝取名:一听就是学霸的男孩名字
  5. 电脑计算机的游戏怎么放桌面,电脑玩这游戏怎么切回桌面
  6. 2019 iOS马甲包过审经验4.3和2.1的过包技巧
  7. 有一篇文章,共三行文字,每行有最多80个字符。要求分别统计出其中英文大写字母,小写字母,数字,空格及其他字符
  8. JavaWeb 2022.9.24
  9. 信号与系统仿真实验——实验三 连续系统频率响应特性分析及系统函数极零点分布特性
  10. Warning: validateDOMNesting(...): <p> cannot appear as a child of <tfoot>.