所以,我已经制作这个游戏大约 3 个月了,它的框架几乎已经准备好,但它缺少一件事:视觉部分。游戏的地图系统必须是 3D 环境,但它不是常规的,因为它的主要思想是使用大部分代码而不是加载任何其他类型的文件来构建地图本身。它的代码稍微完成了,但这里的问题是,我将如何渲染和内部编程呢?
这是它应该做的:
1-主要思想是创建一个名为Block的类,它是环境的基本单元。每个块都是一个 32x32x32(或者可能是 64x64x64)的立方体,它的每个边都有一个纹理,或者,某种以另一种但不特定的方式构建的多边形。块还具有决定其属性的不透明度、亮度、HasGravity、IsMoveable/IsMovable/IsMobile 和 IsEditable 字段。
2- 它有一个实体类,它类似于地图中存在但不属于地图的对象或生物。我想这将需要不是由系统构建的实际 3D 模型。也有 X、Y 和 Z 位置/尺寸字段。他们有重力之类的东西,但现在不需要太多物理。玩家是一个实体。
3- 它有一个Map类,其中包含字段 X、Y 和 Z 大小。这是为了让地图以类似立方体的方式构建特定数量的块。这个类还有一个 Block 的三元组,用于通过 Block 的位置来访问 Blocks。有许多设置字段,如布尔 RenderSky 或 AllowTerrainEdit(由玩家)。如果地图的 Y 限制块是 Void(代表 void 的 Block 类),并且地图的 RenderSky 布尔值等于 true,那么地图必须渲染某种天空事物作为它们的纹理,或者可能以更好的方式渲染天空?
4- Camera类是一种特殊类型的实体,用作确定渲染内容的工具。例如,在玩家使用第一人称模式的情况下,相机总是离玩家非常近(或者可能在附近)。摄像机可以放置在实体块内以外的任何地方。摄像头不可见。
4- 图形还没有那么好,但是这个系统的目的是使地图完全灵活并且对代码友好(例如,如果玩家想要尝试某种沙盒风格的动作,比如替换部分对于另一种材质的地图,代码将能够完成所有工作。它还使地图创建对开发人员和用户都非常友好,不需要代码或 3D 知识)。任何其他想法,而不是将世界划分为具有大量字段选择的几个立方体也可以工作。
我不知道现在如何继续。这是游戏唯一缺少的部分。
有用的事实:
游戏有点像一个模拟器,它试图创建一个半现实世界,这意味着它计划有很棒的、现实的东西(比如现实世界的时间系统、基于 if(boolean) 语句的人工智能 NPC、物理......)有几个 update() 空白,因此在性能方面考虑可能会很好
地图的设计目标是大约 200 多个方块高(至少对于主地图而言),以及几乎无穷无尽的长宽方块。也许这是不可能的。好的部分是渲染的内容是唯一可能降低性能的东西,并且不需要计算渲染所有内容,只需计算相机的视图。
目前纯粹使用 Java 编程语言制作。
我相信在这里使用OpenGL 工具会很有用。
感谢您阅读所有内容。感谢您的帮助。