发作品签到
专业版

真人CS对战平台,随时随地玩占点/爆破/吃鸡!

工程标签

1.6w
0
0
61

简介

传统真人CS系统只能互相对射,而且局限在专业场地内,逐渐变成小众运动。本项目开发支持自定义游戏模式的真人CS对战系统,搭配Unity app和服务器,支持占点,爆破,吃鸡等多种模式。

简介:传统真人CS系统只能互相对射,而且局限在专业场地内,逐渐变成小众运动。本项目开发支持自定义游戏模式的真人CS对战系统,搭配Unity app和服务器,支持占点,爆破,吃鸡等多种模式。
星火计划2024
复刻成本:168.5

开源协议

CC BY-NC 3.0

创建时间:2024-11-01 07:18:33更新时间:2024-12-20 07:17:35

描述

注:本项目仅适用于安卓手机,鸿蒙手机,苹果手机不适用。

视频链接:

主项目发布视频:
【开源】自制真人CS对战平台,在现实世界玩吃鸡!

联机模式展示(因天气原因只能在室内仿真展示了)
自制真人吃鸡平台,联机自定义地图与自定义模式展示

项目简介

传统的真人CS-般是将用户聚集到体育场馆或者深山老林的专业场地中游玩。存在地点偏僻;玩法单一:流程繁琐,门槛高等诸多限制,普及率不高。我们希望将FPS游戏里已经经过市场检验的趣味玩法融入到真人CS中,以满足青少年群体日益增长的线下社交需求。

举个例子:假如你和你的室友要在你的学校玩,你可以将学校西门设置为红方基地,学校东门设置成蓝方基地,然后将主楼、体育场分别设置为A点和B点。那么你们可以达到在真人CS里体验类似CSGO里的爆破模式的玩法

再举个例子,你可以将你的学校校园设置成一整个大地图,然后玩吃鸡模式,我们的系统就会维护一个逐渐缩小的毒圈,而且这个毒圈将要往哪个方向缩小是程序随机决定的。那么这就达到了在真人CS里玩吃鸡的效果。

别的模式有很多,甚至可以实现出魔兽世界奥特兰克峡谷,战地 2042 的突破模式等,那种特别复杂的机制。我们实现了一套面向对象的基于继承和多态的模式管理代码,只要能想到,就没有做不出来的。

项目有很大的社会意义。首先,项目可以利用自身灵活的优势,盘活社会闲置资源,让真人CS走出专业场地,利用起节假日闲置的校园设施,广场,和过度建造的楼房资源等,让这些本应成为青少年挥洒汗水的场所发挥原有的价值。且可以充分发挥玩家的创造性,玩家可以根据不同的地形自定义游戏内容,达到更好的游玩效果。另外,趣味的玩法有利于引导青少年远离电子游戏,加入体育锻炼,减少近视,提升体质;并且在游戏中提高青少年的团队合作意识。另外,枪战的题材也可对社会尚武精神的培养产生积极作用。(迫真棒读

项目功能

单机模式

  • 枪的操作,如发射,换弹,被击中等信息会实时同步到手机app上。
  • 在手机app上显示实时地图,显示实时定位位置。
  • 在不联机的情况下可自行组织对战,被击毙后无法发射子弹,可在手机app点击按键来复活。
  • 单机模式没有自定义地图和胜负判定功能。

302ab6415da24cd89d13c03ae62c295f.jpg

联机模式

  • 拥有单机模式的所有功能
  • 拥有注册,登录账号等功能。
  • 拥有房间管理功能,可创建房间,加入房间,切换队伍等。
  • 可以自定义游戏模式,目前可选择:简单模式(即双方对射),夺旗模式,占点模式,吃鸡模式。
  • 可自定义游戏地图,选择红蓝双方基地位置,以及目标点位置等。
  • 服务器可进行胜负判定,公平公正,拥有战绩记录功能。

Pasted image 20241119225923.png

原理解析

本项目由以下部分组成:

  • 枪械主控板
  • 激光接收板(可级联)
  • Unity手机app
  • 后台服务器

枪械主控板

采用stm32f103c8t6 作为主控芯片,主要完成激光发射,激光接收,换弹等功能。并与手机app通信完成逻辑信息的同步。

该板子直接使用手机USB接口供电即可。并预留了锂电池接口,如果想接电磁铁实现后坐力功能,可以接 12V锂电池供电。
Pasted image 20241119111506.png

另外,整个板子只有一两个嘉立创扩展库元件,smt价格极低。

激光接收板

采用is0803 载波激光接收芯片,只能接收 200khz载波激光。接收板采用级联形式相互连接,最终连接在主控板上(级联图片见下文)。is0803 的输出信号由 stm32 的 GPIO INPUT处理。

Pasted image 20241119111400.png

Unity手机app

手机APP的后台程序分为网络管理器、面板管理器、战斗管理器、地图管理器与安卓适配器。手机app面板的显示与隐藏由面板管理器控制,并由战斗管理器提供具体的子弹数、生命值等信息。另外,地图管理器向面板管理器提供瓦片地图进行地图图像显示;安卓适配器通过调用底层的定位api与蓝牙读写api,将经纬度与战斗数据等信息提供给战斗管理器。最后,由网络管理器负责所有与云服务器的通信,完成其他玩家的位置同步和毒圈更新等功能。

Pasted image 20241119112038.png

游戏后台服务器

项目基于微软.net8.0架构,使用C#语言,遵守面向对象准则设计了服务器平台。服务器负责建立起各个客户端之间的连接,并协助每个用户完成创建与加入房间、对战过程中的逻辑控制等功能。
服务器平台包括网络管理器、用户管理器、房间管理器、数据库管理器等模块。

Pasted image 20241119112122.png

实物图

这是枪和激光接收器连接的图片,激光接收器连接靠近枪屁股的那个接插件

80a42c2bf8fbc2642b06cf9fa1675176.jpg

这是枪和手机,手机连接远离枪屁股的接插件

Pasted image 20241130225955.png

实地测试

(动态演示请看b站视频)
image.png

image.png

image.png

软件代码

软件代码分成三份,其中嵌入式的如下,完全开源。

Unity的手机app的代码,开源单机模式部分,如下:

手机app联机部分和服务器代码暂时不开源,因为最近形势也不太好,想尝试这套东西能不能跟别人合作创个业。如果能整个技术入股赚点钱就赢麻了。当然我本人对营销和商业兴趣不大,如果没有找到什么合作创业机会,我会直接把app和服务器的代码全部开源出来。

但是,我都会提供编译好的版本,供大家使用:

  • 手机app:apk安装包见附件
  • 服务器:压缩包在附件,部署教程见附件pdf文档

另外,这两个代码我都是在这本书的基础上学习修改的,这是本非常好的书,如果有兴趣了解Unity联机游戏开发的同学强烈推荐读读。

Pasted image 20241119220655.png

组装流程

  1. 首先,如果你是使用的嘉立创经济型smt,需要补充焊接主控板背部的元器件,焊接完成后,将扩展版安装在枪的左壳上,使用螺丝螺母固定,并将扳机和扳机弹簧安装在对应位置,如图:(激光头见下文)

(这个图片说是管制刀具有政策限制,只有打点码才能传上来,就将就看吧,主要注意激光头、扳机和电路板安装位置)
ed8feaff9ae7a617e2f375a537e74cb0.png

  1. 然后,将手机夹安装在枪马甲正面上,别忘了手机夹下面的螺母要事先安装好,以免后续拆开重装

Pasted image 20241130230621.png

  1. 然后,准备激光头,具体就是找到激光头的 3D打印件,然后使用烙铁将嵌入式螺母嵌入到 3D打印件中,如图。这个需要点手法,参考这个视频:一颗小小的嵌入螺母,让你的DIY设计更优秀_哔哩哔哩_bilibili

  2. 嵌入后就可以把激光头从前面摁入激光头,大力摁紧,最后拧上螺丝。这是完工后的样子:

6ca3e808eed3332c46fed877caa1977f.jpg

  1. 然后,按照下图将所有元件摞起来,最后使用长螺丝和螺母拧紧。

Pasted image 20241119215918.png

  1. 安装完毕,后续需要准备一个连接手机的线,使用xh2.54 4p线与USB OTG线两端剪开自行焊接,线序请参考主控板原理图。如果会使用压线钳,体验更佳,最终效果如图:

Pasted image 20241215141125.png

(我是使用压线钳做的,如果剪开焊线可能不好控制长度,但长度偏长影响不大)

激光接收器

  1. 首先将热缩管裁剪出合适的长度
  2. 然后将热缩管和激光接收板套在绑带的大致位置
  3. 然后使用热风枪吹热缩管,使其紧缩,完成固定
  4. 使用xh2.54 4p同向线连接各个激光接收板
  5. 将激光接收板通过一根 1m长的xh2.54 4p反向线连接到枪上,注意最后连接枪的线必须从激光接收板箭头指向的方向引出!!!!,否则会收不到激光信号

Pasted image 20241213170851.png

手机app

  1. 首先安装附件内的apk文件
  2. 在设置界面打开名为csgiao的app的定位权限,其他权限理论上应该随意,但是锁屏显示权限也推荐打开。
  3. 安装完毕。

单机模式联合测试

请确认手机app的定位权限放行了。
请确认主控板stm32已经完成了程序的烧录

  1. 首先将枪插好激光接收板
  2. 然后将枪插到手机上,如果没问题,枪会上电,能看到枪的LED点亮,激光接收器的LED也会点亮。
  3. 然后打开手机app
  4. 如果你的枪正确插在手机上,应该会提示询问是否允许访问stm32 设备,点击允许

cfc732d6acbe00dfaa4ce401795ee1e4.jpg

  1. 点击单机模式按钮,进入游戏主界面,理论上,应该地图上的定位位置就是你所在的位置。然后会打印一行字提示你打开USB设备成功。

Pasted image 20241119225232.png

  1. 然后你可以尝试操作枪,如发射子弹,换弹,打自己的激光接收器等,子弹和生命值应该会同步到手机app中,并有音效发出。

302ab6415da24cd89d13c03ae62c295f.jpg

  1. 如果USB设备打开失败,先检查枪和手机的连接是否正常,然后可以点击左下角的连接设备按钮,并依次点击初始化-连接-测试按钮进行测试。如果提示未连接枪械之类的,你都可以在左下角的连接设备菜单界面完成重新配置。
  2. enjoy it

联机模式联合测试

  1. 按照单机模式的流程打开手机app
  2. 在开始界面,点击连接服务器,如果自己部署了服务器,将公网ip改成自己的ip地址。

Pasted image 20241119225255.png

  1. 注册并登录账号,注意你注册的账号的密码直接瞎取一个 123456789 就行,我目前还不会密码密文存储,所以目前数据库中存的密码就是明文字符串,虽然我不会拿着你的密码干什么龌龊的事情,但是不敢保证没有黑客黑我的服务器,所以有备无患。

Pasted image 20241119225326.png

  1. 如果登录成功进入了有AI牢大背景图的主界面,说明你成功了!如果你自己部署了服务器还成功了,别忘了告诉我一声让我高兴一下。

Pasted image 20241119225355.png

  1. 然后你可以自定义房间号和房间密码,创建房间,邀请你的朋友加入你的房间。
  2. 然后你可以选择模式,设计基地位置和游戏地图,地图可以拖动和缩放。如果你不熟悉操作可以看我的视频,有解说。

在下拉框选择模式

Pasted image 20241119225419.png

这是占点模式的地图示例

Pasted image 20241119225657.png

这是吃鸡模式的地图示例

Pasted image 20241119225923.png

  1. 如果满足开战条件,就可以开战了,如果提示无法开战,一般都是这几个原因:
    • 简单模式和吃鸡模式都需要双方队伍都有人才能开战,占点和夺旗模式只要有一个队伍有人就能开战。
    • 占点模式需要设置至少一个目标点位置
    • 开战时房间内所有人员都需要准备就绪,即打开地图界面(在地图界面只有房主可以设置,房主的设置会同步给所有本房间内的其他玩家)
    • 开战时所有人员都需要在己方基地范围内。
  2. 如果成功开战,enjoy it。对应模式的胜利条件和大家玩fps游戏的常识完全一致,玩就行了。

下图是进入联机模式占点模式对战后的地图:

Pasted image 20241119225525.png

注意事项

  • 注意激光头 3D打印件在选择打印材质的时候,不要选择任何"树脂"材质。因为树脂材质等使用光固化工艺生产的 3D打印件难以埋入嵌入式螺母,特别容易松。经过实测,ABSPLA等工程塑料是比较好的选择。他们的共同特点是FDM熔融沉积工艺,即用挤出头一层一层从下往上打印的类型,也就是我们最常见到的 3D打印机。
  • 手机与枪连接的USB线千万不能随便找一条数据线剪开使用。必须买购物链接里的USB otg线。否则无法通信,甚至无法供电。了解原理请看视频:TODO
  • app安装包和编译好的服务器,服务器部署教程等见百度网盘链接
  • 嵌入式源码和单机app源码见软件章节的github地址
  • 复刻的购物链接见附件

设计图

未生成预览图,请在编辑器重新保存一次

BOM

暂无BOM

附件

序号文件名称下载次数
1
枪模型.zip
115
2
硬件演示视频.mp4
208
3
大文件的百度网盘链接.txt
116
4
吃鸡购物链接.xlsx
125
克隆工程
添加到专辑
0
0
分享
侵权投诉

工程成员

评论

全部评论(1)
按时间排序|按热度排序
粉丝0|获赞0
相关工程
暂无相关工程

底部导航