Articles of 世界编辑器

我可以使用什么作为三维瓷砖地图编辑器?

我需要为地牢爬行者制作基于网格的三维模型(作为Grimrock传奇的最新例子),但是我需要有几个图层,并将属性和位置,角度等属性放在一起。我正在考虑平铺,使用图层作为每个级别的高度,但是很难合作和可视化。 我可以用这个倾向吗? 输出格式需要是json,xml或我可以在我的引擎上使用的东西。 理想情况下,我想要像Tiled一样的3D可视化/编辑模式,并支持加载模型或至less一些视觉表示。

在PhaserJS或PixiJS等框架中创建像Terraria或Starbound这样的2D世界游戏?

像Phaser或Pixi这样的框架支持地图,但是我很好奇,如果这已经足够让玩家能够改变他所希望的一切。 我也不确定浏览器是否能够在性能方面处理这个问题

2D多层和多区域地图的数据结构?

我正在研究2D世界编辑器和随后的世界格式。 如果我要把游戏“世界”作为一个分层结构来创建,无论是顶视图还是侧视图,做大部分事情都会相当简单。 但是,由于这个编辑器是针对第三方的,所以我不知道人们想要创造多大的世界,我需要记住的是,最终,检查,处理和比较正在发生的东西从玩家的位置。 我知道解决这个问题的方法是将我的世界细分为多个子区域,并将它们dynamic地加载,加载和卸载资源以及其他数据。 这样我知道一个几乎无限的游戏区域是可以实现的。 但是,虽然我在理论上知道要做什么,但是我真的有一些问题希望得到有关该主题的提示。 处理区域的逻辑方法是某种网格,你会select均匀分布的大小相等的块,还是让用户用不规则大小的矩形来细分区域? 如果是网格,你会使用某种块/块邻接系统来检查播放器转换极限的时间,或者只是把所有这些放在一个简单的数组中? 作为一个与其所有者“游戏世界”不同的数据结构的区域,在stream式传输区域时,您是否会将对象传递给父级结构,并跟踪它们以便稍后卸载,或者保留每个区域中的对象以实现更多“硬限制“方法? 将细分方法引入到项目中,并且已经有了一个多层次的场景图结构,我将如何支持这个新概念? 你会有父节点的图层作为孩子,并复制在每个层节点,每个地区节点? 或者相反,父节点拥有所有可能的区域,每个区域都有多个孩子层? 或者你只是将区域逻辑完全放在图表之外(符合Q.3中的第一个建议) 当我说实际上是无限的世界时,我的意思是当然是在可变尺寸的限制下等等。 使用浮动位置,已经可以建立一个巨大的世界。 你认为超越这个想法是否理智? 因为我认为可以坚持这个限制,因为它永远不会达到这么容易.. 至于什么时候要传输一个区域,我将它作为一个观察者摄像机的集合来实现,这个观察者摄像机是stream媒体系统用来知道要加载/卸载什么的。 这里的问题是,我需要为我的游戏内置一些经线/传送带,而且我有机会将玩家传送到远处的卸载区域。 你会如何处理这样的事情? 将任何区域加载到内存中,可以通过玩家的半径范围内的变形传送给对方吗? 对不起,对于这个大问题,任何答案都是有帮助的

用jmonkey替代世界/地形编辑

我已经学习Java近一年了,一直在试图用jMonkey开发一款游戏。 我曾经尝试过Unity,但由于我只知道Java,所以决定使用jMonkey。 我的问题是,在jMonkey的地形/世界编辑是越野车。 当我改变地形时,我有时无法保存。 许多人似乎也有同样的问题。 我也更喜欢像Unity一样拖拽drog,但是jMonkey似乎没有。 有没有其他方法可以创建地形/世界(拖放像Unity一样),然后导入到jMonkey中? 有什么select?

使用什么工具/软件来制作游戏中的环境/关卡/地图?

这个问题之前可能已经有了答案,但是我一直没有find答案,因为我不能简洁地提出这个问题。 所以整个问题是: – 你在“孤岛危机”,“刺客信条”等游戏中看到的世界/水平,devise师和开发者用什么来创造它们? 他们是否使用引擎内部的工具(不管是专有的还是内部的),还是一个单独的软件,它们将这些世界作为一个可导入的对象,供游戏引擎用来加载模型等等。 我知道这是一个非常普遍的问题,但一段时间以来我一直很好奇。 我过去曾经用过Unity,它有一个可以用来制作地形的地形工具包,而且我很确定这完全与我的技能不足有关,但我甚至没有接近创造一个环境看起来像你最近看到的那些。

游戏编辑器的C ++属性系统界面(reflection系统)

我为一个项目devise了一个可重用的游戏引擎,其function如下: 是一个完全脚本化的游戏引擎,而不是像Lua或Python这样的常用脚本语言,它使用了Runtime-Compiled C ++和一个修改后的Cistron (一个基于组件的编程框架),与Runtime-Compiled C ++等兼容。 使用基于组件的devise模式的典型的GameObject和Component类,可以通过JSON,BSON或Binary进行序列化,这有助于select下次将要加载的对象。 主要问题 :我们想在使用硬编码函数从派生类访问GameObject基类虚函数之前,在我们的关卡编辑器中使用我们自定义的GameObjects及其组件属性,如果您想特别修改您需要的类的属性在代码里面,派生类的Component类也会出现这种情况,在小项目中没有问题,但是对于较大的项目来说,会变得冗长乏味,容易出错。 我已经研究了很多,find一个解决scheme没有运气,我尝试了Ogitor的属性系统(因为我们的引擎是基于Ogre的),但我们发现它不适合基于组件的devise,它只限于Ogre类,并且可以导致性能开销,我们尝试了一些代码,我们在互联网上发现我们testing它,并工作了一点,但我们认为macros和lambda滥用太可怕了看看(一些代码省略): IWE_IMPLEMENT_PROP_BEGIN(CBaseEntity) IWE_PROP_LEVEL_BEGIN("Editor"); IWE_PROP_INT_S("Id", "Internal id", m_nEntID, [](int n) {}, true); IWE_PROP_LEVEL_END(); IWE_PROP_LEVEL_BEGIN("Entity"); IWE_PROP_STRING_S("Mesh", "Mesh used for this entity", m_pModelName, [pInst](const std::string& sModelName) { pInst->m_stackMemUndoType.push(ENT_MEM_MESH); pInst->m_stackMemUndoStr.push(pInst->getModelName()); pInst->setModel(sModelName, false); pInst->saveState(); }, false); IWE_PROP_VECTOR3_S("Position", m_vecPosition, [pInst](float fX, float fY, float fZ) { pInst->m_stackMemUndoType.push(ENT_MEM_POSITION); pInst->m_stackMemUndoVec3.push(pInst->getPosition()); pInst->saveState(); pInst->m_vecPosition.Get()[0] = […]

如何根据现实世界的地点或城市制作地图(游戏世界)?

作为一个在我真正的问题之前的声明,我没有经验的游戏开发,只有基本的统一知识。 我注意到很多游戏都是基于真实世界的地方和城市,例如洛杉矶的GTA 5和Watch Dogs。 什么是制作真实世界地点或城市的虚拟版本的过程? 或者至less,有什么好的起点? 我想你可以得到一些地图数据或卫星图像,并将其导入到工具中,从中可以开始对建筑物进行建模等。但是,如果是这种情况,我不知道该怎么做。

我怎样才能加快缓慢加载大水平?

我创建了一个级别加载器,加载以XML格式保存的级别。 这意味着我正在使用XMLparsing器来读取级别。 它的工作原理,但稍大的水平需要太长时间才能加载。 所以现在我正在寻找一种加速加载的方法。 我不需要一次加载整个文件,因为玩家无法看到整个地图,所以部分加载就可以了。 我想过一个基于图块的加载机制,其中有多个地图部分,而加载程序只加载用户所在的部分/图块。 但我不确定这是不是一个好主意。