Mcpy
MCPy是一个基于Python和Cython的高性能Minecraft服务器引擎,集成了科学计算库和高级优化技术,旨在提供卓越的性能和可扩展性。项目目前处于开发阶段,包含核心模块如服务器引擎、世界生成、网络处理、实体系统和数据持久化。
2分
4.7K

安装

复制以下命令到你的Client进行配置
注意:您的密钥属于敏感信息,请勿与任何人分享。

🚀 MCPy:高性能Minecraft服务器引擎

MCPy 是一款由Python、Cython和先进的科学计算库驱动的下一代超优化Minecraft服务器引擎。我们的目标是提供卓越的性能和灵活性,让Minecraft服务器开发变得轻松且具有前瞻性。

⚠️ 重要提示

MCPy 正在积极开发中,功能尚未完善。代码库存在已知错误且不稳定。我们欢迎您提交 错误报告和贡献,以帮助我们更快地实现目标!

🚀 快速开始

安装

前提条件

  • Python 3.9+(推荐 3.11+)
  • 现代 C++ 编译器(VS 2019+ / GCC 9+)
  • PostgreSQL 13+(用于生产环境)
  • 至少 8 GB 内存(推荐 16 GB)

快速设置

git clone https://github.com/magi8101/mcpy.git
cd mcpy
# Windows
setup.bat
# Linux/macOS
chmod +x setup.sh
./setup.sh

手动安装

git clone https://github.com/magi8101/mcpy.git
cd mcpy
python -m venv .venv
# Windows:
.venv\Scripts\activate
# Linux/macOS:
source .venv/bin/activate
pip install -r _requirements.txt
pip install -e ".[dev]"
pip install -e ".[ai]"  # 可选:启用 AI 功能
python check_dependencies.py
python setup.py build_ext --inplace

运行服务器

# 使用设置脚本
# Windows:
setup.bat run
# Linux/macOS:
./setup.sh run

# 直接从命令行运行
python -m mcpy.server
python -m mcpy.server --config custom_config.toml --world my_world
python -m mcpy.server --performance-mode --max-players 100
python -m mcpy.server --debug --log-level debug

命令行选项

选项 描述
--config PATH TOML 配置文件的路径
--world PATH 世界目录
--port NUMBER 网络端口(默认:25565)
--max-players NUMBER 最大玩家数(默认:20)
--view-distance NUMBER 区块视野距离(默认:10)
--performance-mode 额外的性能优化
--debug 启用调试模式
--log-level LEVEL 设置日志级别(默认:info)
--backup 启用自动备份

✨ 主要特性

  • Cython加速核心:事件驱动的服务器引擎,性能接近 C 语言水平。
  • 科学计算支持:集成 NumPy、SciPy 和 Polars 进行高效运算。
  • 零开销网络:异步、非阻塞、协议优化的网络通信。
  • 复杂实体系统:高效、可扩展的实体管理,支持先进的 AI。
  • 强大的持久层:由 PostgreSQL 和 SQLAlchemy ORM 驱动,实现可靠的数据存储。
  • 全面的基准测试:内置性能分析和性能剖析工具。
  • 可扩展的插件框架:轻松添加服务器修改。
  • 实时监控:集成 Prometheus 和 Grafana 进行实时指标监控。

📦 安装指南

前提条件

  • Python 3.9+(推荐 3.11+)
  • 现代 C++ 编译器(VS 2019+ / GCC 9+)
  • PostgreSQL 13+(用于生产环境)
  • 至少 8 GB 内存(推荐 16 GB)

快速设置

git clone https://github.com/magi8101/mcpy.git
cd mcpy
# Windows
setup.bat
# Linux/macOS
chmod +x setup.sh
./setup.sh

手动安装

git clone https://github.com/magi8101/mcpy.git
cd mcpy
python -m venv .venv
# Windows:
.venv\Scripts\activate
# Linux/macOS:
source .venv/bin/activate
pip install -r _requirements.txt
pip install -e ".[dev]"
pip install -e ".[ai]"  # 可选:启用 AI 功能
python check_dependencies.py
python setup.py build_ext --inplace

💻 使用示例

基础用法

# 运行服务器
python -m mcpy.server

高级用法

# 自定义配置和世界
python -m mcpy.server --config custom_config.toml --world my_world

# 启用性能模式和设置最大玩家数
python -m mcpy.server --performance-mode --max-players 100

# 启用调试模式和设置日志级别
python -m mcpy.server --debug --log-level debug

📚 详细文档

架构概述

MCPy 是模块化的,包含五个高性能核心组件:

  1. server_core.pyx

    • 事件驱动的请求处理
    • 自适应、高精度的 tick 系统
    • 动态工作线程池管理
    • 实时性能剖析
  2. world_engine.pyx

    • 基于多八度噪声和先进生物群系的程序地形生成
    • 多线程区块生成和内存高效的地形存储
  3. network_core.pyx

    • 零拷贝数据包序列化和协议级压缩
    • 强大的连接池和 DDoS 缓解
  4. entity_system.pyx

    • 基于空间哈希的实体跟踪和多线程物理模拟
    • 模块化 AI 行为树
  5. persistence

    • 用于 PostgreSQL/SQLite 的 SQLAlchemy ORM
    • 高效的区块序列化和事务性世界状态

数据库配置

SQLite(默认)

[database]
type = "sqlite"
path = "world/mcpy.db"
journal_mode = "WAL"
synchronous = "NORMAL"

PostgreSQL(生产环境)

[database]
type = "postgresql"
host = "localhost"
port = 5432
dbname = "mcpy"
user = "postgres"
password = "your_password"
pool_size = 10
max_overflow = 20
echo = false

持久化特性

  • 事务性世界保存
    with session.begin():
        for chunk in dirty_chunks:
            session.add(ChunkModel.from_chunk(chunk))
    
  • 高效的区块序列化
    chunk_data = np.savez_compressed(io_buffer,
                                    blocks=chunk.blocks,
                                    heightmap=chunk.heightmap,
                                    biomes=chunk.biomes)
    
  • 玩家数据管理
    player_model = PlayerModel(
        uuid=player.uuid,
        username=player.username,
        position=json.dumps([player.x, player.y, player.z]),
        inventory=pickle.dumps(player.inventory, protocol=5),
        stats=json.dumps(player.stats)
    )
    
  • 智能自动保存:仅保存修改过的区块/实体
  • 自动备份:可配置的间隔和保留策略

开发与测试

pytest                                # 运行完整测试套件
pytest tests/test_entity_system.py     # 实体系统测试
python -m benchmarks.benchmark        # 基准测试
python -m mcpy.profiling.profile_module world_engine  # 模块性能剖析
pytest --cov=mcpy --cov-report=html   # 测试覆盖率报告

性能调优示例

  • 实体系统
    entity_spatial_hash = {(int(e.x/16), int(e.z/16)): [] for e in entities}
    for entity in entities:
        entity_spatial_hash[(int(entity.x/16), int(entity.z/16))].append(entity)
    
  • 世界引擎
    with ThreadPoolExecutor(max_workers=os.cpu_count()) as executor:
        futures = [executor.submit(generate_chunk, x, z) for x, z in chunk_coords]
        chunks = [f.result() for f in futures]
    
  • 网络优化
    cdef char* buffer = <char*>malloc(packet_size)
    memcpy(buffer, &packet_header, sizeof(packet_header))
    memcpy(buffer + sizeof(packet_header), packet_data, packet_data_size)
    

高级特性

插件系统

轻松添加自定义命令和行为:

from mcpy.plugins import Plugin, event

class TeleportPlugin(Plugin):
    @event("player.command")
    def on_command(self, player, command, args):
        if command == "tp" and len(args) >= 1:
            target = self.server.get_player_by_name(args[0])
            if target:
                player.teleport(target.x, target.y, target.z)
                return True
        return False

实时监控

集成 Prometheus/Grafana 支持:

[monitoring]
enabled = true
prometheus_port = 9090
metrics = ["tps", "memory_usage", "players_online", "chunks_loaded"]

AI 实体行为

灵活的、基于行为树的 AI:

class ZombieAI(MobAI):
    def setup_behaviors(self):
        self.behaviors = BehaviorTree(
            Selector([
                Sequence([
                    CheckPlayerNearby(radius=16),
                    PathfindToPlayer(),
                    AttackPlayer()
                ]),
                Sequence([
                    Wait(random.randint(20, 100)),
                    MoveToRandomPosition(radius=10)
                ])
            ])
        )

🔧 技术细节

Cython 与性能

  • 静态类型 (cdef) 和激进的编译器指令
  • 直接的 NumPy 缓冲区访问和指针运算
  • 通过线程池实现多线程并行

实体系统

  • 分层、基于组件的设计
  • 通过自定义内存池实现 O(1) 空间分区
  • 自适应细节层次(LOD)实体管理

世界生成

  • 多八度 Perlin/Simplex 噪声
  • 基于 Voronoi 的生物群系过渡
  • 侵蚀、洞穴和结构算法
  • 10 倍的区块压缩以提高存储效率

📊 性能目标

指标 目标值
可扩展性 20 TPS,支持 100 个以上并发玩家
内存使用 10,000 个区块时小于 2 GB
延迟 每个玩家操作小于 50 ms
可靠性 核心模块 100% 测试覆盖率
吞吐量 每个 tick 更新 10,000 个以上实体

🗺️ 路线图

短期

  • [ ] 实体碰撞系统
  • [ ] 合成与库存管理
  • [ ] 基本战斗机制
  • [ ] 世界生成优化

中期

  • [ ] 多世界支持和传送门
  • [ ] 自定义方块行为
  • [ ] 增强的生物 AI
  • [ ] 游戏内脚本 API

长期

  • [ ] 分布式服务器架构
  • [ ] 机器学习驱动的生物 AI
  • [ ] 实时光线追踪照明
  • [ ] 自定义物理引擎

🤝 贡献

我们欢迎您的贡献!请查看我们的 贡献指南 以开始:

  1. 分叉仓库
  2. 创建您的功能分支 (git checkout -b feature/amazing-feature)
  3. 提交您的更改 (git commit -m 'Add some amazing feature')
  4. 推送到您的分支 (git push origin feature/amazing-feature)
  5. 打开一个拉取请求

📄 许可证

本项目采用 MIT 许可证。有关详细信息,请参阅 LICENSE 文件。

替代品

C
Contracts Wizard
OpenZeppelin Contracts Wizard是一个交互式智能合约构建工具,允许用户通过选择合约类型、参数和功能来生成基于OpenZeppelin组件的合约代码。支持多种编程语言,并提供API和嵌入功能。
TypeScript
5.8K
4分
Z
Zen MCP Server
Zen MCP是一个多模型AI协作开发服务器,为Claude和Gemini CLI等AI编码助手提供增强的工作流工具和跨模型上下文管理。它支持多种AI模型的无缝协作,实现代码审查、调试、重构等开发任务,并能保持对话上下文在不同工作流间的延续。
Python
13.5K
5分
C
Container Use
Container Use是一个开源工具,为编码代理提供容器化隔离环境,支持多代理并行开发且互不干扰。
Go
10.2K
5分
S
Search1api
Search1API MCP Server是一个基于Model Context Protocol (MCP)的服务器,提供搜索和爬取功能,支持多种搜索服务和工具。
TypeScript
18.5K
4分
D
Duckduckgo MCP Server
已认证
DuckDuckGo搜索MCP服务器,为Claude等LLM提供网页搜索和内容抓取服务
Python
38.5K
4.3分
M
MCP Alchemy
已认证
MCP Alchemy是一个连接Claude Desktop与多种数据库的工具,支持SQL查询、数据库结构分析和数据报告生成。
Python
16.8K
4.2分
P
Postgresql MCP
一个基于FastMCP库的PostgreSQL数据库MCP服务,提供对指定表的CRUD操作、模式检查和自定义SQL查询功能。
Python
15.0K
4分
A
Agentic Radar
Agentic Radar是一个用于分析和评估代理系统的安全扫描工具,帮助开发者、研究人员和安全专家理解代理系统的工作流程并识别潜在漏洞。
Python
12.0K
5分
D
Duckduckgo MCP Server
已认证
DuckDuckGo搜索MCP服务器,为Claude等LLM提供网页搜索和内容抓取服务
Python
38.5K
4.3分
F
Firecrawl MCP Server
Firecrawl MCP Server是一个集成Firecrawl网页抓取能力的模型上下文协议服务器,提供丰富的网页抓取、搜索和内容提取功能。
TypeScript
63.4K
5分
F
Figma Context MCP
Framelink Figma MCP Server是一个为AI编程工具(如Cursor)提供Figma设计数据访问的服务器,通过简化Figma API响应,帮助AI更准确地实现设计到代码的一键转换。
TypeScript
43.8K
4.5分
E
Edgeone Pages MCP Server
EdgeOne Pages MCP是一个通过MCP协议快速部署HTML内容到EdgeOne Pages并获取公开URL的服务
TypeScript
20.4K
4.8分
B
Baidu Map
已认证
百度地图MCP Server是国内首个兼容MCP协议的地图服务,提供地理编码、路线规划等10个标准化API接口,支持Python和Typescript快速接入,赋能智能体实现地图相关功能。
Python
30.6K
4.5分
C
Context7
Context7 MCP是一个为AI编程助手提供实时、版本特定文档和代码示例的服务,通过Model Context Protocol直接集成到提示中,解决LLM使用过时信息的问题。
TypeScript
46.2K
4.7分
M
Minimax MCP Server
MiniMax Model Context Protocol (MCP) 是一个官方服务器,支持与强大的文本转语音、视频/图像生成API交互,适用于多种客户端工具如Claude Desktop、Cursor等。
Python
34.5K
4.8分
E
Exa Web Search
已认证
Exa MCP Server是一个为AI助手(如Claude)提供网络搜索功能的服务器,通过Exa AI搜索API实现实时、安全的网络信息获取。
TypeScript
31.4K
5分
AIbase
智启未来,您的人工智能解决方案智库