MCPy 是一款由Python、Cython和先进的科学计算库驱动的下一代超优化Minecraft服务器引擎。我们的目标是提供卓越的性能和灵活性,让Minecraft服务器开发变得轻松且具有前瞻性。
⚠️ 重要提示
MCPy 正在积极开发中,功能尚未完善。代码库存在已知错误且不稳定。我们欢迎您提交 错误报告和贡献,以帮助我们更快地实现目标!
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 |
启用自动备份 |
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 是模块化的,包含五个高性能核心组件:
server_core.pyx
world_engine.pyx
network_core.pyx
entity_system.pyx
persistence
[database]
type = "sqlite"
path = "world/mcpy.db"
journal_mode = "WAL"
synchronous = "NORMAL"
[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 = 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:
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)
])
])
)
cdef) 和激进的编译器指令| 指标 | 目标值 |
|---|---|
| 可扩展性 | 20 TPS,支持 100 个以上并发玩家 |
| 内存使用 | 10,000 个区块时小于 2 GB |
| 延迟 | 每个玩家操作小于 50 ms |
| 可靠性 | 核心模块 100% 测试覆盖率 |
| 吞吐量 | 每个 tick 更新 10,000 个以上实体 |
我们欢迎您的贡献!请查看我们的 贡献指南 以开始:
git checkout -b feature/amazing-feature)git commit -m 'Add some amazing feature')git push origin feature/amazing-feature)本项目采用 MIT 许可证。有关详细信息,请参阅 LICENSE 文件。