I'm too lazy to write the English version and my English is not very well. (Chinglish)
有疑问请加QQ:858345934,或者E-Mail:Qiuyixuan_last@outlook.com
使用了JsonCpp,因为我实在不会写JSON解析(
千方百块励志成为Minecraft社区版,解决掉Minecraft的诸多问题,包括但不限于基岩版开发者不干人事,双版本特性不统一,两个版本史山代码太多,且不开源,对于社区支持性不好,优化差,不跨平台(Java版无法运行在手机上,基岩版无法运行在Linux上)等,且目标是让玩家满意,不强求“合理”而删除掉特性。 技术细节请参考这里或直接阅读代码。
我决定使用C++、SDL2以及OpenGL实现。开源,允许魔改。
添加注册表(Registry)并使用JSON数据驱动。
添加区块。区块使用24格方块作为长宽高。记得考虑维度数量。大区块使用12格区块作为长宽高。一个文件存储一个大区块。文件大小约24MiB左右,文件大小适中。我原来还算错了(emm)。
添加方块(Block)、实体(Entity)、物品(Item),并达到可玩状态。
NBT数据以及方块实体称为数据(Data)、方块状态和实体的变种(比如羊的16色;比如某变种既有性格差异又有渲染差异,那就由两个变量决定)叫做渲染状态(RenderState)。
这样可以区分材质包纹理包与数据。
玩家实体可以也可以不由客户端控制,因为客户端要与玩家“挂钩”才行,这样方便实现假人模组。
添加计划刻、世界加载、卸载、生成、保存等。
学习TCP/IP或者UDP,实现前后端交流。
学习OpenGL和SDL2,实现最基本的画面渲染。毕竟Mojang已经用了15年没换过了,而且现在只是有迹象表明Mojang在优化,无法证明Mojang真的要换渲染引擎。