所以,我已经制作了这个游戏大约3个月了,它的框架已经准备好了,但它缺少一件事:视觉部分。游戏的地图系统必须是3D环境,但它不是常规的,因为这个主要的想法是使用大部分代码而不是加载任何其他类型的文件来构建地图本身。它的代码略有完成,但问题是,我将如何渲染和内部编程呢?
这是它应该做的:
1-主要思想是创建一个名为 Block 的类,它是环境的基本单元。每个块都是一个32x32x32(或者可能是64x64x64)的立方体,它的每一面都有一个纹理,或者某种 polygon 以另一种非特定方式构建。块还具有不透明度,亮度,HasGravity,IsMoveable / IsMovable / IsMobile和IsEditable字段,用于确定其属性。
2-它有一个实体类,它类似于对象或生物,它存在于地图中,但不是部分它的。我想这将取决于系统不构建的实际3D模型。还有X,Y和Z位置/大小字段。他们有像引力这样的东西,但现在不需要很多物理玩家是一个实体。
3-它有一个 Map 类,其中包含X,Y和Z字段。这旨在使地图以类似立方体的方式构建特定数量的块。该类还有一个Block的三重数组,用于按位置访问Blocks。有许多设置字段,如boolean RenderSky或AllowTerrainEdit(由播放器)。如果地图的Y限制块是Void(一类代表void的Block),并且地图的RenderSky布尔值等于true,那么地图必须渲染某种天空物体作为它们的纹理,或者可能以更好的方式渲染Sky? / p>
4- Camera 类是一种特殊类型的实体,可用作确定渲染内容的工具。例如,在玩家使用第一人称模式的情况下,相机将始终非常靠近(或可能是)播放器。允许摄像机在任何地方,但在固体块内。相机不可见。
4-图形不一定非常好,但是这个系统的目的是使地图完全灵活且对代码友好(例如,如果玩家想要尝试某种类似沙盒风格的动作,例如替换作为另一种材料的地图的一部分,代码将能够完成所有这一切。它还使得地图创建对于开发人员和用户都非常友好,不需要代码或3D知识)。任何其他想法,而不是将世界分成几个具有大量字段的多维数据集也可以。
我不知道如何继续现在。这是游戏中唯一缺失的部分。
有用的事实:
游戏是一种试图创造半真实世界的模拟器,意味着它计划拥有极好的,逼真的东西(比如现实世界的时间系统,基于if(布尔)语句的AI的NPC) ,物理......)有几个update()空洞,因此在性能
地图的目标是大约200多个街区(至少对于主地图而言)以及大约几乎无穷无尽的长街区块。也许这是不可能的。好的部分是渲染的内容是唯一可能降低性能的内容,并且没有必要计算渲染所有内容,只需要相机的视图。
目前纯粹使用Java编程语言。
我认为在这里使用 OpenGL工具会很有用。
感谢您阅读所有内容。感谢您的帮助。
答案 0 :(得分:1)
Lightweight Java Game Library怎么样?
轻量级Java游戏库(LWJGL)是一种直接面向专业和业余Java程序员的解决方案,可以用Java编写商业级游戏。 LWJGL为开发人员提供了对高性能跨平台库的访问,例如OpenGL(开放图形库),OpenCL(开放计算语言)和OpenAL(开放音频库),允许最先进的3D游戏和3D声音。此外,LWJGL还可以访问控制台,如游戏手柄,方向盘和操纵杆。全部采用简单直接的API。