TypePHP 编译器 https://swoole.com/aot/
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 

67 lines
1.9 KiB

# TypePHP Minecraft Demo
这是一个不依赖 Godot 的方块世界渲染示例,技术路线参考 Craft:
- Win32/WGL 创建窗口和 OpenGL 上下文。
- 使用 Craft 的 `texture.png` 方块 atlas、`sky.png` 天空贴图和 lodepng 加载 PNG。
- 使用方块六面 tile 映射、可见面剔除、植物交叉面、水面和云层透明绘制。
- PHP/TypePHP 负责世界生成、chunk 队列、角色移动等业务逻辑。
- C++ 只负责窗口、输入、OpenGL 渲染、贴图加载和 chunk mesh 缓存。
- 渲染时参考 Craft 的 chunk 可见性策略,只绘制相机附近且位于视野方向内的 chunk。
当前范围只实现基础世界画面渲染:
- 天空贴图背景
- 河流和湖泊
- 山峰和高地
- 草地、沙地、泥土、石头、雪地
- 树干、树叶、草和花朵
- 云层和远处线性雾
- 第一人称飞行观察
- 居中准星
- 初始化进度 UI
- chunk display list 缓存、视野剔除和透明层远近排序
不包含联机、背包、建造、存档等复杂系统。
## 编译
```powershell
php bin\compiler.php examples\minecraft-demo\project.yml
```
编译产物输出到仓库根目录:
```text
minecraft_demo.exe
```
## 运行
```powershell
.\minecraft_demo.exe
```
## 操作
- `W/A/S/D` 移动
- 鼠标移动视角
- `Space` 上升
- `Shift` 加速并下降
- `Esc` 弹出退出确认框
## 项目结构
```text
main.php PHP 世界规则和主循环
php-src/craft.stub.php C++ 渲染 API 的 PHP 声明
cpp-src/craft_backend.cc Win32/WGL/OpenGL 后端
deps/lodepng/ PNG 加载
textures/texture.png Craft 方块 atlas
textures/sky.png Craft 天空贴图
LICENSE.Craft.md Craft MIT License
```
## 授权
`textures/texture.png`、`textures/sky.png` 和 lodepng 来自 Craft 项目及其依赖。Craft 使用 MIT License,许可证已保留在 `LICENSE.Craft.md`