【游戏】一款纯web集前后端为一体的沙盒游戏框架介绍

1.biomes-game是什么?

一款基于MIT协议开源沙盒 MMORPG。游戏中可建造、采集、玩迷你游戏等等,所有操作均可通过浏览器完成。它主要使用React框架,前后端用 Typescript 和 WebAssembly 编写。

2.如何本地体验?

配置:MBP M3 16G内存

要在本地运行 Biomes,需要有 64GB 内存。

(1)安装Node版本管理器(https://github.com/nvm-sh/nvm)

curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.4/install.sh | bash
# Restart console
nvm install v20
nvm use v20

(2)安装 yarn

npm install -g yarn

(3)在克隆代码库之前安装 Git LFS,否则二进制文件将包含错误内容

// Ubuntu
sudo apt-get install git-lfs
// or MacOS
brew install git-lfs

(4)安装Python版本>=3.9,<=3.10

conda create -n biomes-game python=3.10 -y
conda activate biomes-game

(5)安装 clang 版本 >= 14

(6)安装 Bazel

npm install -g @bazel/bazelisk

(7)克隆代码库

git clone https://github.com/ill-inc/biomes-game.git & cd biomes-game

(8)运行 git lfs pull 以确保 LFS 文件是最新的

git lfs pull

(9)安装python依赖

pip install -r requirements.txt

(10)安装Redis 7.0.8

curl -s https://download.redis.io/releases/redis-7.0.8.tar.gz | tar xvz -C ${HOME} \
&& make -j`nproc` -C ${HOME}/redis-7.0.8 \
&& sudo make install -C ${HOME}/redis-7.0.8 \
&& rm -rf ${HOME}/redis-7.0.8

编译错误fix方法:https://chatgpt.com/share/34e05d01-7e61-44c2-9350-3c4669bb84dd

(11)更改配置

在biomes.config.dev.yaml添加以下内容禁用 Discord Web Hooks:

discordHooksEnabled: false

(12)启动并访问

./b data-snapshot run

访问:http://localhost:3000

3.框架是什么?

基于微服务,便于扩展。

  • 当玩家加载游戏时,他们会从 web 服务器加载客户端。

  • 然后,客户端从 asset 服务器加载资源,并与 sync 服务器建立连接以获取玩家位置本地的 ECS 数据。

  • 玩家的交互主要将 ECS 事件发送到 logic 服务器,但也可以调用 webchatoob 和 map。

  • server交互主要通过 ECS 更新转发给玩家,这些更新通过 sync 服务器同步到客户端

  • 其他服务器不是直接由玩家驱动的,但对通过 sync 服务器类似地同步的 ECS 组件进行了更改。一个例子是 newton 独立于任何玩家交互移动掉落的物品。 triggertasknewtonanimagaia 都属于该模式。

在本地运行时,您可以通过指定服务器名称来指定您感兴趣运行的服务器子集,即 ./b web trigger 。服务器将自动启动它们依赖的任何服务器以正确运行。

服务列表如下:

(1)Web​服务

  • 基于 NextJS 的 Web 服务器

  • 为所有 API 端点、主启动页面和管理站点提供服务

  • 无状态服务

(2)Logic​服务

  • 为玩家举办高级活动,通常是那些编辑地形的活动

大多数玩家事件都会通过ECS创建逻辑服务器事件。

逻辑服务器事件由 server/logic/events/all.ts 中的 ECS 事件处理程序定义

如果您打算修改或添加面向玩家的游戏交互或逻辑,这可能是开始的地方。

(3)Asset​服务

  • 只是 Web 服务器的另一个副本

  • 不同层的服务器因为运行Python而具有不同的特性

  • 生成玩家网格

(4)Trigger​服务

  • 监听 Firehose,并有一个基于时间的处理器 - 两者都是触发器的输入

  • 触发器产生游戏更新,它们:

    • 解锁食谱

    • 处理任务进展

    • 处理过期/冻结/超时

(5)Chat​服务

  • 使用分布式锁来维护单个实例

  • 将聊天消息分发到同步服务器

  • 处理聊天的发布-订阅提要以保证分发和存储

  • 围绕 DM 发布消防事件

(6)Task​服务

  • 处理长期存在的异步任务

  • 与 Firestore 交互,生成游戏事件,与加密货币交互

  • API 是间接的,您可以通过在 Firestore 中创建任务来安排任务

(7)Sync​服务​

  • 客户端的 WebSocket 接入

  • 维护整个世界的副本作为副本,将其相关部分提供给连接到它的客户端

  • 代表客户发布游戏活动

(8)OOB​服务

  • 用于直接在带外为各个实体提供服务的同步服务器的副本

  • 用于将远程数据加载到客户端

(9)Newton​服务

  • 处理掉落物、它们的物理特性以及它们何时被拾起

(10)Anima​服务

  • 处理世界上 NPC 的 AI,被分片,因此每个服务器仅处理一个子集

(11)Map​服务

  • 定期生成地图的自上而下的世界渲染

(12)Replica​服务

  • 为了消除直接影响游戏的扇出成本,任何需要世界副本的人都应订阅副本层

  • 维护世界的副本,直接订阅世界

  • 支持当前游戏API的订阅部分

(13)Gaia​服务

盖亚权威地控制着游戏中所有“自然”的游戏模拟:

  • 灯光

  • 淤泥蠕变

  • 植物生长和再生

  • 农业

(14)Redis / Redis Bridge​

  • 世界数据的主要存储,并能够在其上提供交易。

  • 组件将 Redis 中发生的更新映射到 Firehose,一次只有一个 Bridge 运行。

(15)ETCD​

  • 使用正在运行的 etcd 服务器维护分布式锁

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/712011.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

计算机网络 —— 一文搞懂TCP/UDP

传输层&#xff1a;TCP/UDP 1. TCP1.1 TCP连接管理1.2 TCP首部格式 2. UDPUDP首部格式 3. 其他传输层协议3.1 SCTP3.2 DCCP 传输层实现源端主机和目标端主机上对等实体间会话&#xff0c;TCP/IP中两个代表性的传输层协议分别是TCP和UDP&#xff0c;两者均使用端口来标识传输数据…

数据防泄漏的六个步骤|数据防泄漏软件有哪些

在当前复杂多变的网络安全环境下&#xff0c;数据防泄漏软件成为了企业信息安全架构中不可或缺的一环。下面以安企神软件为例&#xff0c;告诉你怎么防止数据泄露&#xff0c;以及好用的防泄露软件。 1. 安企神软件 安企神软件是当前市场上备受推崇的企业级数据防泄漏解决方案…

为什么微信输入法是比搜狗输入法更好的选择?

微信输入法官网&#xff1a;https://z.weixin.qq.com/ 最近使用搜狗输入法时&#xff0c;频繁弹出广告&#xff0c;实在令人烦恼&#xff0c;于是我干脆卸载了它。然而&#xff0c;电脑上没有输入法是不行的。经过在网上对比了许多输入法软件后&#xff0c;我发现了微信输入法。…

算法:分治(快排)题目练习

目录 题目一&#xff1a;颜色分类 题目二&#xff1a;排序数组 题目三&#xff1a;数组中的第k个最大元素 题目四&#xff1a;库存管理III 题目一&#xff1a;颜色分类 给定一个包含红色、白色和蓝色、共 n 个元素的数组 nums &#xff0c;原地对它们进行排序&#xff0c;…

红队攻防渗透技术实战流程:中间件安全:JettyJenkinsWeblogicWPS

红队攻防渗透实战 1. 中间件安全1.1 中间件-Jetty-CVE&信息泄漏1.2 中间件-Jenkins-CVE&RCE执行1.2.1 cve_2017_1000353 JDK-1.8.0_291 其他版本失效1.2.2 CVE-2018-10008611.2.3 cve_2019_100300 需要用户帐号密码1.3 中间件-Weblogic-CVE&反序列化&RCE1.4 应…

驱动开发(四):Linux内核中断

驱动开发系列文章&#xff1a; 驱动开发&#xff08;一&#xff09;&#xff1a;驱动代码的基本框架 驱动开发&#xff08;二&#xff09;&#xff1a;创建字符设备驱动 驱动开发&#xff08;三&#xff09;&#xff1a;内核层控制硬件层 驱动开发&#xff08;四&#xf…

2024FIC决赛

容器密码&#xff1a;2024Fic~Competition~Finals杭州&Powered~By~HL! 案件背景: 2023年3月15日凌晨,受害人短视频平台上看到一段近期火爆的交通事故视频&#xff0c;留言后有人通过私信联系&#xff0c;称有一个赚大钱的机会&#xff0c;该人自称李某&#xff0c;提议让…

如何通过抖音自动评论精准获客实现业务增长?这些方法值得一试!

在当今竞争激烈的商业环境中&#xff0c;企业若想脱颖而出&#xff0c;就必须掌握精准获客的艺术。精准获客&#xff0c;即通过精确的市场定位和营销策略&#xff0c;吸引并保留最有可能成为客户的目标群体。它不仅能提高转化率&#xff0c;还能有效降低营销成本&#xff0c;是…

实况:老菜鸟自力更生从零开始重学spring目标是画出一张唬人大图(二、源码下载编译)

前情提要&#xff1a;调试前的基础知识梳理 速览 “Spring”包含哪些东西源码下载源码编译1、编译工具选择&#xff1a;gradle2、使用gradle编译spring并导入idea预编译spring-oxm导入IDEA确认合适的jdk版本排除spring-aspects模块 开始调试 “Spring”包含哪些东西 可以明确的…

LVS负载均衡:理解IPVS和IPVSADM的内部工作原理

LVS 负载均衡工作模式 LVS&#xff08;Linux Virtual Server&#xff09; 共有三种工作模式&#xff1a;DR、Tunnel、NAT。 DR&#xff08;Direct Routing&#xff09;&#xff1a; 技术原理&#xff1a;DR模式下&#xff0c;LVS调度器接收到请求后&#xff0c;直接通过MAC地址…

Kali中安装和使用docker的学习笔记

一、常见命令 ctrl 、shift、 &#xff1a; 窗口变大&#xff1b; ctrl 、- &#xff1a;窗口变小&#xff1b; ctrl L&#xff1a; 清屏 &#xff1b; sudo su : 切换root 用户&#xff1b; ip addr / ifconfig: 获取IP地址&#xff1b; systemctl start ssh…

探索Python的多媒体解决方案:ffmpy库

文章目录 探索Python的多媒体解决方案&#xff1a;ffmpy库一、背景&#xff1a;数字化时代的多媒体处理二、ffmpy&#xff1a;Python与ffmpeg的桥梁三、安装ffmpy&#xff1a;轻松几步四、ffmpy的五项基本功能1. 转换视频格式2. 调整视频质量3. 音频转换4. 视频截图5. 视频合并…

Mybatis框架中结果映射resultMap标签方法属性收录

Mybatis框架中结果映射resultMap标签收录 在MyBatis框架中&#xff0c;resultMap 是一种强大的机制&#xff0c;用于将数据库结果集映射到Java对象上。它允许你定义如何将查询结果中的列映射到Java对象的属性上&#xff0c;尤其是当数据库表的字段名与Java对象的属性名不一致时…

【太原理工大学】软件系统安全—分析题

OK了&#xff0c;又是毫无准备的一场仗&#xff0c;我真是ありがとうございます 凸^o^凸 根据前几年传下来的信息&#xff0c;所谓“分析”&#xff0c;就是让你根据情节自行设计&#xff0c;例如如何设计表单等&#xff0c;这类多从实验中出&#xff0c;王老师强调好好做实验一…

自然抽样和平顶抽样

自然抽样和平顶抽样是两种信号处理和采样技术&#xff0c;它们在音频信号处理、信号重建以及数字信号处理中有着不同的应用。 1. 自然抽样&#xff08;也称为理想抽样或无失真抽样&#xff09;&#xff1a;样值脉冲的幅度随原始信号m(t)的幅度而变&#xff1b; 自然抽样过程的…

个人网站制作 Part 26 添加在线日历功能 | Web开发项目添加页面缓存

文章目录 &#x1f469;‍&#x1f4bb; 基础Web开发练手项目系列&#xff1a;个人网站制作&#x1f680; 添加在线日历功能&#x1f528;使用日历服务&#x1f527;步骤 1: 选择日历服务&#x1f527;步骤 2: 安装FullCalendar&#x1f527;步骤 3: 创建FullCalendar组件&…

【2024最新华为OD-C/D卷试题汇总】[支持在线评测] 生成哈夫曼树(100分) - 三语言AC题解(Python/Java/Cpp)

🍭 大家好这里是清隆学长 ,一枚热爱算法的程序员 ✨ 本系列打算持续跟新华为OD-C/D卷的三语言AC题解 💻 ACM银牌🥈| 多次AK大厂笔试 | 编程一对一辅导 👏 感谢大家的订阅➕ 和 喜欢💗 📎在线评测链接 生成哈夫曼树(100分) 🌍 评测功能需要订阅专栏后私信联系清…

数据中心布线管理:预标记线缆与移动扫描技术的融合

随着信息技术的飞速发展&#xff0c;数据中心布线管理面临着前所未有的挑战。传统的布线管理方式已无法满足现代数据中心高效、准确和可靠的需求。在这样一个背景下&#xff0c;预标记线缆与移动扫描技术的结合&#xff0c;为数据中心布线管理带来了革命性的解决方案。 布线管理…

基于System-Verilog点亮LED灯

文章目录 一、System-Verilog介绍1.1System-Verilog 二、简单的语法介绍2.1接口实例2.2全局声明和语句实例2.3时间单位和精度2.4用户定义的类型2.5 枚举类型 三、流水灯参考 一、System-Verilog介绍 1.1System-Verilog SystemVerilog是一种硬件描述和验证语言&#xff08;HDV…

stm32f103 HAL库 HC-SR04测距

目录 一、实现测距二、添加TIM3控制LED根据距离以不同频率闪烁三、观察时序Modebus协议12路超声波雷达设计方案1. 系统架构设计2. 硬件设计3. 软件设计4. 通信协议设计5. 用户接口6. 安全和冗余7. 测试和验证8. 电源和物理封装9. 文档和支持 一、实现测距 配置时钟 配置定时器…