# mc **Repository Path**: yunwei37/mc ## Basic Information - **Project Name**: mc - **Description**: 简易版 Minecraft 实现计划 - **Primary Language**: C++ - **License**: MIT - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 1 - **Forks**: 0 - **Created**: 2020-08-27 - **Last Updated**: 2020-12-19 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README
Minecraft组结题报告
周寒靖、尹浩霖、郑昱笙
# 项目简介 ### 项目描述 ​ 参考3D沙盒游戏minecraft(中文名:我的世界),做一个简易版minecraft。玩家根据第一视角可在生成的有限随机地图中随意移动,损毁方块或放置方块,搭建属于自己的方块世界。 版本库:[https://github.com/yunwei37/mc/](https://github.com/yunwei37/mc/) ### 操作规则 1、开启游戏:在游戏开始界面中按“Enter”键 2、位置移动:在当前视角方向下,“W”键向前、“S”键向后、“A”键向左,“D”键向右,“Q”键向上,“Z”键向下 3、第一视角移动:运用鼠标的移动可以改变玩家第一视角 4、方块放置与损毁:鼠标右键仿放置方块,鼠标左键销毁方块 5、放置方块转换:“1”键换soil,“2”键换stone,“3”键换stone brick,“4”键换sand,“5”键换bark,“6”键换cactus ### 验收测试 1、源代码在MC\MC文件中,含各级目录树 2、release测试版本可由release下载 # 项目需求 ### 基本目标 1、实现基本地形生成 2、实现摄像机漫游 3、实现方块的放置和破坏 ### 高级选项 1、实现无限地形、可重入的地形存储系统 2、丰富的方块类型 3、背包系统 # 项目开发 ### 迭代计划 | | 第一轮迭代 | 第二轮迭代 | 第三轮迭代 | | :--: | ---------------------------- | ------------------------------------------------------------ | ------------------------------ | | 用时 | 4天 | 3天 | 4天 | | 成果 | 实现基本地形生成、摄像机漫游 | 扩增多种地形、增加植物群系、优化随机的地表高度(使其更符合自然地势) | 实现基本的的方块放置和破坏功能 | ### 开发技术和工具 | | 工具 | | -------- | :---------------------: | | 编程语言 | C++17 | | 开发环境 | visual studio 2019 | | 开发系统 | Windows | | 版本控制 | Git,Github | | 持续集成 | appveyor | | 相关库 | openGL、glm、freetype等 | | 开发模式 | MVVM | | 交流协作 | QQ | ### 小组分工 周寒靖(id: diaoshaoyou):view层、viewmodel层和文档管理 郑昱笙(id:yunwei37):model层和持续集成部署 尹浩霖(id:ycrisp):view层、viewmodel层和app层 # 项目成果 ### 游戏效果图 1、封面
图1 封面
2、不同地形各处风景
图2 斜坡与植物群
图3 森林与植物群
图4 仰视云朵
图5 海边风景
3、放置与损毁方块
图6 放置不同类型的方块
图7 销毁草地方块
### 代码框架 ```mermaid graph LR Model---Block Model---chunkGenerator Model---plantGenerator Model---PerlinNoise Model---player Model---StructureBuilder View---Camera View---Shader View---Texture View---Text View---text_renderer View---resource_manager View---glad View---stb_image Viewmodel---Chunk Viewmodel---Map App---app ``` # 项目总结 ### 已实现的需求 1、基本随机地形生成 2、摄像机漫游 3、方块的放置和破坏 4、6种可放置的方块类型,且可相互更换 5、开始界面 ### 优化空间探讨 1、无限地形渲染。过大的地形会影响项目运行速度,所以需要即时渲染,即只渲染用户看得见的区域。当用户移动时,已变成不可见区域的渲染内存应当回收,用于渲染新生成的可见区域。这样才能不断生成地形即实现无限地形,又不导致运行速度过慢/内存崩溃。这一块内容涉及内存管理,还有待优化提高。 2、背包系统。目前的项目中,玩家当前手持的方块类型由黑色的命令窗口输出,并未实现背包系统。背包系统要在当前界面中新增UI,需要更深层次的openGL图形学知识,所以暂未实现。 3、本项目除了代码逻辑外,一个难点是有关openGL库的图形学知识。如果直接使用游戏引擎如unity3D,可以省去图形学的基础代码,专注于游戏逻辑本身,也许能实现地更好。 # 参考资料 1、[https://learnopengl-cn.github.io/](https://learnopengl-cn.github.io/) 2、[https://github.com/Hopson97/MineCraft-One-Week-Challenge](https://github.com/Hopson97/MineCraft-One-Week-Challenge) 3、[https://www.bilibili.com/video/BV1ux411H7ZE/?spm_id_from=333.788.videocard.1](https://www.bilibili.com/video/BV1ux411H7ZE/?spm_id_from=333.788.videocard.1)