赞
踩
一款基于MIT协议开源沙盒 MMORPG。游戏中可建造、采集、玩迷你游戏等等,所有操作均可通过浏览器完成。它主要使用React框架,前后端用 Typescript 和 WebAssembly 编写。
配置:MBP M3 16G内存
要在本地运行 Biomes,需要有 64GB 内存。
- curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.4/install.sh | bash
- # Restart console
- nvm install v20
- nvm use v20
npm install -g yarn
- // Ubuntu
- sudo apt-get install git-lfs
- // or MacOS
- brew install git-lfs
- conda create -n biomes-game python=3.10 -y
- conda activate biomes-game
npm install -g @bazel/bazelisk
git clone https://github.com/ill-inc/biomes-game.git & cd biomes-game
git lfs pull
以确保 LFS 文件是最新的git lfs pull
pip install -r requirements.txt
- 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
在biomes.config.dev.yaml添加以下内容禁用 Discord Web Hooks:
discordHooksEnabled: false
./b data-snapshot run
访问:http://localhost:3000
基于微服务,便于扩展。
当玩家加载游戏时,他们会从 web
服务器加载客户端。
然后,客户端从 asset
服务器加载资源,并与 sync
服务器建立连接以获取玩家位置本地的 ECS 数据。
玩家的交互主要将 ECS 事件发送到 logic
服务器,但也可以调用 web
、 chat
、 oob
和 map。
server交互主要通过 ECS 更新转发给玩家,这些更新通过 sync
服务器同步到客户端
其他服务器不是直接由玩家驱动的,但对通过 sync
服务器类似地同步的 ECS 组件进行了更改。一个例子是 newton
独立于任何玩家交互移动掉落的物品。 trigger
、 task
、 newton
、 anima
和 gaia
都属于该模式。
在本地运行时,您可以通过指定服务器名称来指定您感兴趣运行的服务器子集,即 ./b web trigger
。服务器将自动启动它们依赖的任何服务器以正确运行。
服务列表如下:
基于 NextJS 的 Web 服务器
为所有 API 端点、主启动页面和管理站点提供服务
无状态服务
为玩家举办高级活动,通常是那些编辑地形的活动
大多数玩家事件都会通过ECS创建逻辑服务器事件。
逻辑服务器事件由 server/logic/events/all.ts
中的 ECS 事件处理程序定义
如果您打算修改或添加面向玩家的游戏交互或逻辑,这可能是开始的地方。
只是 Web 服务器的另一个副本
不同层的服务器因为运行Python而具有不同的特性
生成玩家网格
监听 Firehose,并有一个基于时间的处理器 - 两者都是触发器的输入
触发器产生游戏更新,它们:
解锁食谱
处理任务进展
处理过期/冻结/超时
使用分布式锁来维护单个实例
将聊天消息分发到同步服务器
处理聊天的发布-订阅提要以保证分发和存储
围绕 DM 发布消防事件
处理长期存在的异步任务
与 Firestore 交互,生成游戏事件,与加密货币交互
API 是间接的,您可以通过在 Firestore 中创建任务来安排任务
客户端的 WebSocket 接入
维护整个世界的副本作为副本,将其相关部分提供给连接到它的客户端
代表客户发布游戏活动
用于直接在带外为各个实体提供服务的同步服务器的副本
用于将远程数据加载到客户端
处理掉落物、它们的物理特性以及它们何时被拾起
处理世界上 NPC 的 AI,被分片,因此每个服务器仅处理一个子集
定期生成地图的自上而下的世界渲染
为了消除直接影响游戏的扇出成本,任何需要世界副本的人都应订阅副本层
维护世界的副本,直接订阅世界
支持当前游戏API的订阅部分
盖亚权威地控制着游戏中所有“自然”的游戏模拟:
灯光
淤泥蠕变
植物生长和再生
农业
世界数据的主要存储,并能够在其上提供交易。
组件将 Redis 中发生的更新映射到 Firehose,一次只有一个 Bridge 运行。
使用正在运行的 etcd 服务器维护分布式锁
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。