[OpenGL - 游戏开发] 仿制《Minecraft/我的世界》 - 总结及演示程序

  【更新】我的新博客:www.ryuzhihao.cc,当然这个csdn博客也会更新
              本文在新博客中的链接:点击打开链接

 首先上一下效果图尝试用C++以及OpenGL做的一个简化版Minecraft


[OpenGL - 游戏开发] 仿制《Minecraft/我的世界》 - 总结及演示程序_第1张图片 


[OpenGL - 游戏开发] 仿制《Minecraft/我的世界》 - 总结及演示程序_第2张图片

      

 [OpenGL - 游戏开发] 仿制《Minecraft/我的世界》 - 总结及演示程序_第3张图片




      大三寒假刚刚结束,返校的第一天寻思着整理一下在家做的小程序。首先是这个仿制的3D游戏《我的世界Minecraft》。

       写这个程序的时候,大概是腊月27到正月初七,而且家族亲戚太多,每次都会想:我天,这个姐姐这么年轻,我竟然要叫奶奶╮(╯▽╰)╭!!不过走亲戚都是长辈们的活动,于是我抽了些空闲时间完成了这个程序。

       如果大家有什么问题或者建议的话,欢迎在下面评论一起探讨哦~

演示程序链接:http://download.csdn.net/detail/mahabharata_/9756981

下面切入正题:

     操作方法:

           WASD移动,E切换砖块,鼠标左键和右键分别用于放置/拆除砖块。

           F切换正常/飞翔模式,空格Space在飞翔模式下可以根据视角的俯仰进行升高/降低。

     由于时间和水平有限,而且精力不足,实现的功能有:

         1. 随机且自然连续的地形、花草(使用柏林噪声Perlin Noise,相关信息可以参考我的另一篇博客,此外还有一种噪声Simplex)。

         2. 允许建造、拆除11种砖块(玻璃、红砖、石灰石 etc.)。

         3. 随机的云彩(但是他们并不移动)

         4. 允许在第一人称视角下,移动或者飞翔。

         5. 视角裁剪,不渲染看不见的block。(为了提高渲染效率,限制视角26°,且距离小于100的方块被绘制)

             地形大小为300*300*4(360000

     下面,我想在这里对实现过程中的一些想法或者能进一步提高的地方做一下总结:

         1.  我了解到实际的Minecraft的地形数据是按照16×256×16的地形单元组织的,并且采用数据库存储。我试想:Minecraft或许同样是只绘制摄像机周围看得见的少数地形单元。当需要时从数据库(或许sqlite比较合适)取出新的地形单元,这样会大大减少查询地形、渲染地形的时间,也方便存储,并且可以做到理论上的地形无限大。

         2.  可以进一步通过shader制作出电灯的效果(自发光体)。这样可以做出更多好看的建筑。


相关链接:

[1] 我的另一篇博客:[算法]柏林噪声PerlinNoise:http://blog.csdn.net/mahabharata_/article/details/54743672

你可能感兴趣的:(Computer,Graphics,OpenGL,游戏开发)