bareiron:嵌入式系统的终极Minecraft服务器解决方案

【免费下载链接】bareiron Minimalist Minecraft server for memory-restrictive embedded systems 【免费下载链接】bareiron 项目地址: https://gitcode.com/gh_mirrors/ba/bareiron

在资源受限的嵌入式设备上搭建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脚本自动完成。其他系统则需要手动操作:

  1. 创建名为notchian的文件夹并放入Minecraft服务器JAR文件
  2. 按照Minecraft Wiki的指南使用数据生成器导出所有注册表(使用带--all标志的第二个命令)
  3. 使用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的配置需要通过修改源代码并重新编译来实现。主要配置文件包括:

对于计划在真实微控制器上运行并接待玩家的用户,以下高级选项值得关注:

  • 网络优化:如果玩家位置广播导致网络拥塞,可尝试注释BROADCAST_ALL_MOVEMENTSCALE_MOVEMENT_UPDATES_TO_PLAYER_COUNT宏,将移动更新与tickrate绑定
  • 功能开关:通过ALLOW_CHESTSDO_FLUID_FLOW宏可分别禁用箱子和流体流动功能,解决相关稳定性问题
  • 内存管理:增加VISITED_HISTORY值可以减少重复区块生成带来的性能问题,将其增加到64仅会为每个玩家额外占用240字节内存

💾 非易失性存储配置(可选)

对于ESP32用户,若希望在设备关闭后保留世界数据,可以通过以下方式实现:

最简单的方法是在PlatformIO中设置LittleFS,并取消globals.hSYNC_WORLD_TO_DISK周围的#ifndef注释。由于闪存写入通常较慢且阻塞,建议同时取消DISK_SYNC_BLOCKS_ON_INTERVAL的注释。根据开发板的闪存大小,可能需要减小MAX_BLOCK_CHANGES使世界数据能够容纳在LittleFS分区中。

如果使用SD卡模块或其他虚拟文件系统,则需要自行实现文件系统设置例程,但内置的序列化器应仍可使用,因为它采用POSIX文件系统调用。

另一种选择是通过TCP传输世界数据,只需取消globals.h中的DEV_ENABLE_BEEF_DUMPS注释即可启用。请注意:此系统不提供任何安全或身份验证机制,启用后任何可访问服务器的人都能上传任意世界数据。

🤝 贡献指南

bareiron欢迎社区贡献,但请遵循以下准则:

  1. 在提交拉取请求前创建issue并与维护者讨论,即使是小改动
  2. 遵循现有代码风格,确保更改与周围代码保持一致
  3. 创建拉取请求或请求审核前测试代码,无论更改多"简单"
  4. 除非你已深入了解代码库并发现实际缺陷,否则不建议提交开发工具和编译改进
  5. 关于Minecraft服务器协议的信息,请参考Minecraft Wiki

通过这些指南,你可以为bareiron项目做出有意义的贡献,帮助这个嵌入式Minecraft服务器变得更加强大和完善。

🎯 总结

bareiron项目打破了Minecraft服务器对高性能硬件的依赖,为嵌入式设备带来了运行《我的世界》服务端的能力。无论是作为教育工具、嵌入式开发练习,还是仅仅是出于技术探索的乐趣,bareiron都为开发者和爱好者提供了一个独特的平台。

如果你对在资源受限设备上运行Minecraft服务器感兴趣,不妨从GitHub仓库获取代码,开始你的嵌入式Minecraft之旅!

【免费下载链接】bareiron Minimalist Minecraft server for memory-restrictive embedded systems 【免费下载链接】bareiron 项目地址: https://gitcode.com/gh_mirrors/ba/bareiron

Logo

openvela 操作系统专为 AIoT 领域量身定制,以轻量化、标准兼容、安全性和高度可扩展性为核心特点。openvela 以其卓越的技术优势,已成为众多物联网设备和 AI 硬件的技术首选,涵盖了智能手表、运动手环、智能音箱、耳机、智能家居设备以及机器人等多个领域。

更多推荐