bareiron:嵌入式系统的终极Minecraft服务器解决方案
bareiron:嵌入式系统的终极Minecraft服务器解决方案
在资源受限的嵌入式设备上搭建Minecraft服务器不再是梦想!bareiron作为一款专为内存受限环境设计的极简Minecraft服务器,让ESP32等微控制器也能轻松运行《我的世界》服务端。本文将深入介绍这个创新项目的核心优势、快速上手方法及高级配置技巧,帮助你在嵌入式设备上构建专属的Minecraft世界。
🚀 什么是bareiron?
bareiron是一个针对内存受限嵌入式系统优化的Minecraft服务器实现,其设计理念完全颠覆了传统服务器对硬件资源的依赖。项目以内存占用为首要优化目标,其次是性能和功能支持,这使得它能够在ESP32等资源有限的设备上流畅运行。
目前bareiron支持Minecraft 1.21.8版本(协议版本772),虽然不保证与原版游戏完全兼容,但为嵌入式设备带来了前所未有的可能性。值得注意的是,当前仅官方客户端被正式支持,使用Fabric等模组可能会出现兼容性问题。
⚡ 快速启动指南
桌面平台
对于x86_64架构的PC,只需下载最新构建的二进制文件即可立即运行。这个文件采用Cosmopolitan polyglot格式,意味着它可以在Windows、Linux甚至Mac系统上运行,无需担心操作系统兼容性。不过需要注意,服务器的默认设置无法通过配置文件修改,必须从源代码编译才能自定义参数。
嵌入式设备
在微控制器上运行需要进行编译步骤,具体方法将在下面的编译指南中详细说明。这一过程虽然稍复杂,但能让你的ESP32变身成为迷你Minecraft服务器!
🔧 编译指南
在编译前,需要从原版Minecraft服务器中提取注册表数据。在Linux系统上,可以使用项目提供的extract_registries.sh脚本自动完成。其他系统则需要手动操作:
- 创建名为
notchian的文件夹并放入Minecraft服务器JAR文件 - 按照Minecraft Wiki的指南使用数据生成器导出所有注册表(使用带
--all标志的第二个命令) - 使用bun、node或deno运行
build_registries.js处理导出数据
不同平台的编译方法
Linux系统
安装gcc后运行./build.sh即可完成编译。
Windows系统
有多种编译选项可供选择:
- 原生Windows二进制:安装MSYS2并打开"MINGW64" shell,运行
pacman -Sy mingw-w64-x86_64-gcc后执行./build.sh - 32位兼容版本:使用
mingw-w64-cross-gcc并运行./build.sh --9x - MSYS2链接版本:在MSYS shell中安装gcc后运行
./build.sh - WSL编译:在WSL环境中安装gcc并运行
./build.sh
ESP32等嵌入式设备
需要设置PlatformIO项目(选择ESP-IDF框架,不要使用Arduino),然后将此仓库克隆到项目中。为获得更好性能,建议调整时钟速度并启用编译器优化。
⚙️ 配置选项
bareiron的配置需要通过修改源代码并重新编译来实现。主要配置文件包括:
- include/globals.h:包含WiFi凭据等嵌入式设置
- src/globals.c:可调整MOTD、起始时间等服务器属性
对于计划在真实微控制器上运行并接待玩家的用户,以下高级选项值得关注:
- 网络优化:如果玩家位置广播导致网络拥塞,可尝试注释
BROADCAST_ALL_MOVEMENT和SCALE_MOVEMENT_UPDATES_TO_PLAYER_COUNT宏,将移动更新与tickrate绑定 - 功能开关:通过
ALLOW_CHESTS和DO_FLUID_FLOW宏可分别禁用箱子和流体流动功能,解决相关稳定性问题 - 内存管理:增加
VISITED_HISTORY值可以减少重复区块生成带来的性能问题,将其增加到64仅会为每个玩家额外占用240字节内存
💾 非易失性存储配置(可选)
对于ESP32用户,若希望在设备关闭后保留世界数据,可以通过以下方式实现:
最简单的方法是在PlatformIO中设置LittleFS,并取消globals.h中SYNC_WORLD_TO_DISK周围的#ifndef注释。由于闪存写入通常较慢且阻塞,建议同时取消DISK_SYNC_BLOCKS_ON_INTERVAL的注释。根据开发板的闪存大小,可能需要减小MAX_BLOCK_CHANGES使世界数据能够容纳在LittleFS分区中。
如果使用SD卡模块或其他虚拟文件系统,则需要自行实现文件系统设置例程,但内置的序列化器应仍可使用,因为它采用POSIX文件系统调用。
另一种选择是通过TCP传输世界数据,只需取消globals.h中的DEV_ENABLE_BEEF_DUMPS注释即可启用。请注意:此系统不提供任何安全或身份验证机制,启用后任何可访问服务器的人都能上传任意世界数据。
🤝 贡献指南
bareiron欢迎社区贡献,但请遵循以下准则:
- 在提交拉取请求前创建issue并与维护者讨论,即使是小改动
- 遵循现有代码风格,确保更改与周围代码保持一致
- 创建拉取请求或请求审核前测试代码,无论更改多"简单"
- 除非你已深入了解代码库并发现实际缺陷,否则不建议提交开发工具和编译改进
- 关于Minecraft服务器协议的信息,请参考Minecraft Wiki
通过这些指南,你可以为bareiron项目做出有意义的贡献,帮助这个嵌入式Minecraft服务器变得更加强大和完善。
🎯 总结
bareiron项目打破了Minecraft服务器对高性能硬件的依赖,为嵌入式设备带来了运行《我的世界》服务端的能力。无论是作为教育工具、嵌入式开发练习,还是仅仅是出于技术探索的乐趣,bareiron都为开发者和爱好者提供了一个独特的平台。
如果你对在资源受限设备上运行Minecraft服务器感兴趣,不妨从GitHub仓库获取代码,开始你的嵌入式Minecraft之旅!
openvela 操作系统专为 AIoT 领域量身定制,以轻量化、标准兼容、安全性和高度可扩展性为核心特点。openvela 以其卓越的技术优势,已成为众多物联网设备和 AI 硬件的技术首选,涵盖了智能手表、运动手环、智能音箱、耳机、智能家居设备以及机器人等多个领域。
更多推荐


所有评论(0)