游戏开发

专业和独立游戏开发人员的问答

2
相对于框架/引擎,裸机OpenGL为小型开发人员提供了哪些优势?[关闭]
已关闭。这个问题是基于观点的。它当前不接受答案。 想改善这个问题吗?更新问题,以便通过编辑此帖子以事实和引文回答。 6年前关闭。 我注意到一种趋势,独立开发人员会放弃框架和引擎,转而使用裸机OpenGL或将其与SDL / SFML2结合使用。作为独立开发人员,我看不到低级OpenGL在单独的引擎或框架上可以提供什么。 大多数像样的引擎和框架都提供了您需要的功能,而不会妨碍您。他们可能还会打开直接处理OpenGL的选项。有些甚至提供了编译跨平台的功能! 我了解渴望了解幕后情况的愿望,但我看不到OpenGL可能为独立开发人员带来的任何好处引擎或框架方面的。 您能解释一下使用OpenGL从头开始构建游戏的原因吗?
16 opengl  c++ 

2
大型游戏中的输入管理技术
是否有用于管理大型游戏中输入的标准技术。当前,在我的项目中,所有输入处理都在游戏循环中完成,如下所示: while(SDL_PollEvent(&event)){ switch(event.type){ case SDL_QUIT: exit = 1; break; case SDL_KEYDOWN: switch(event.key.keysym.sym){ case SDLK_c: //do stuff break; } break; case SDL_MOUSEBUTTONDOWN: switch(event.button.button){ case SDL_BUTTON_MIDDLE: //do stuff break; } } break; } (我正在使用SDL,但我希望主要实践也适用于库和框架)。对于大型项目,这似乎不是最佳解决方案。我可能有几个对象都想知道用户所按的内容,因此使这些对象处理输入更为有意义。但是,它们不能全部处理输入,因为一个事件发生后,它将被推入事件缓冲区,因此另一个对象将不会接收该输入。最常用的方法是什么?
16 c++  sdl  input  standards 

1
现代阴影渲染技术?
就阴影渲染而言,最新的技术水平是什么?我的目标是OpenGL 3.2,如果需要的话,使用延迟渲染管道。 自从我研究阴影渲染已经有好几年了,那时有很多可用的技术,从模具到各种阴影贴图方法。那时,渲染阴影需要由CPU控制的单独渲染通道。但是最近我看到了一个演示,其中一个场景完全在GPU上渲染,包括阴影。我不知道该如何实现,或者甚至是合理的事情(除了技术演示之外)。 鉴于互联网上有大量的旧信息,我想了解人们最近使用的是什么方法,以及有多少方法可以推送到GPU(假设我的目标OpenGL版本支持它)。
16 opengl  shadows 

2
部分可观察的游戏地图-A *是否合适?
我对游戏开发知之甚少,我正在努力寻找寻路算法。 考虑以下设置:代理位于2D地图上,必须找到通向全局已知对象的最短路径,但仅具有有关其本地视野范围内的障碍物的信息(即,仅已知直接障碍物,地图的总体布局未知) )。 而且,每次移动到相邻的正方形都是昂贵的,并且寻路算法应将移动的数量减至最少。 计算效率也非常重要,比准确性更重要。 A *是否适合此用例?

1
在不平坦的行星表面上寻路
我的问题是在不平坦的行星表面上寻路的最佳方法是什么? 背景资料 我通过位移映射6个球面投影平面创建了一个行星。这些平面在投影为球形之前先形成一个立方体。 我想知道是否可以将每个“球面投影的立方体面”用作网格并使用简单的A *算法来找到最佳的可能路线,我也希望考虑位移高度,以便该路径避免爬升山脉等(我想这只是A *算法中的一种启发法)。另一个考虑因素是,我通过利用Unity3d的物理引擎实现了行星运动,将重力应用于行星中心。我提出的解决方案是否需要对重力运动进行独立控制。 为了更好地阐明我的问题,这是我目前的行星体:

5
两倍接近的物体出现两倍大?
因此,我正在考虑创建一个2D游戏,在其中您还可以通过更改所在层来沿Z轴移动。根据深度,我想缩放2D精灵。 有一次,有人给我演示了一个演示,其中有很多2d子画面,通过滚动可以更改摄像机的深度。因此,放大时,对象将更靠近播放器,并显得更大。然后我想知道,当物体靠近1个单位时,该物体应该多大。您将如何计算?所以那个家伙告诉我:我使用的一条基本规则是:“对象的接近度是它的两倍,而外观则是它的两倍”。 现在,通过我自己进行测试,我知道该规则不适用于现实世界;)但是,在现实世界的计算中是否存在一些用于视角或某些常数的常量?还是公式? 我知道这可能不是问这样问题的最佳地点,但是由于这是我唯一一个用于解决与游戏有关的问题的网站,而且我的情况是游戏,因此我想尝试一下。另外,我有点期待这个人知道3D透视图和矩阵等方面的所有知识,因为它可能与3D游戏有关;) tl; dr: “一个接近两倍的物体,出现两倍大的物体”在现实世界中并非如此。但是哪个常数或公式正确?

1
最大纹理大小Android:2048x2048的哪些设置?
我想在我的游戏中使用2048 x 2048的纹理图集,并且我想警告用户“过低”的设备不要下载游戏。 有了如此大小的纹理图集,我对ANDROID有什么要求? 该图像(来源:https ://stackoverflow.com/questions/10392027/recommended-limit-for-memory-management-in-cocos2d)显示了IPHONE的要求,而对于ANDROID:最低为512Mo,频率为1GHz的情况是这样的正确的要求? 感谢您的回答

1
OpenGL:调整显示大小和glOrtho / glViewport
我已经从多个来源研究了这个问题,但还没有找到一个明确的答案,说“是的,这是正确的想法”或“否,这是怎么做的”。 我正在尝试确保OpenGL渲染的分辨率独立性。我认为应该采用的方法是使用glOrtho我想要的世界坐标系来创建投影。例如,glOrtho(-50.0, 50.0, -50.0, 50.0, 1.0, -1.0)。接下来,将视口设置为屏幕分辨率,即- glViewport(0, 0, 800, 600)。最后,每当调整窗口大小时,以glViewport更新的屏幕分辨率进行调用。这将扩展您的数字。 这是确保模型在不同分辨率下占据相同比例的屏幕空间的正确方法吗?我是否也应该使用与分辨率相等的投影?我发现一些答案说glOrtho应该使用窗口的分辨率,而其他人则说应该/可以不同。 有什么想法吗?

3
如何在Unity中为白天/夜晚循环混合2个光照贴图?
在我再说什么之前:我正在使用双重光照贴图,这意味着我需要混合一个近距离和一个远距离。 因此,我已经为此工作了一段时间,我为渲染器和照明设置了一个昼/夜循环,并且一切工作正常,并且不占用大量流程。 我唯一的问题是弄清楚如何将两个光照贴图混合在一起,我已经找到了如何切换光照贴图的方法,但是问题是看起来有点突然,并且中断了体验。 我已经进行了数小时的研究,尝试了各种着色器,逐像素混合以及其他所有方法,但均无济于事。依我的喜好,C#中的逐像素混合实际上是一个过程密集型过程,尽管我仍在努力清理它并使它运行更平稳。着色器看起来很有前途,但是我找不到能够正确融合两个光照贴图的着色器。 有人在我如何实现这一目标方面有什么线索吗?我只需要在白天和夜间的光照贴图之间进行某种平滑的过渡即可。也许我可以覆盖两个纹理并使用Alpha通道?或类似的东西?

5
代码对象通用名字典
按照目前的情况,这个问题不适合我们的问答形式。我们希望答案会得到事实,参考或专业知识的支持,但是这个问题可能会引起辩论,争论,民意调查或扩展讨论。如果您认为此问题可以解决并且可以重新提出,请访问帮助中心以获取指导。 6年前关闭。 我正在寻找专用于游戏的通用术语词典(就像设计模式具有事物交互的通用语言一样)。 例如,如果我正在制作具有高度复杂性的乒乓游戏,我想相应地命名。 我见过一些用户可以与之交互的视觉对象,称为小部件,一些非交互的对象,称为doodad(无论如何,我还是在与星际争霸的地图编辑器一起玩的时候回来的)。帧频时钟有合适的名称吗?游戏时钟是否有适当的名称(该时钟与世界上物体的运动有关,而与视觉图形无关)? 我只想要一本字典,这样我就能说相同的语言,而不用随便写东西。我担心我要创建名为doodads,whosits,whatsists和flim-flams的东西,而我不想这样做。

2
基于组件的实体系统中的游戏状态和输入处理
我的问题是: 如何在我的实体系统中处理游戏状态,而又不保留周围的游戏状态对象堆栈? 因此,我的实体系统的设计意味着,例如,当某个实体需要注册输入事件时,输入组件将调用输入系统,并说“为此输入注册此实体”。一切都很好,但是,如果您将游戏状态的概念(例如暂停屏幕)加入其中,那么确定实体是否处于当前状态并应接收输入就变得很困难。 我可以扩充输入组件/系统,使其说“在处于这些游戏状态时为此输入注册此实体”,但这要求每个实体都知道将在其中使用哪个状态,这可能并不明显。同样,在每个注册的输入(以及其他使用回调的系统)周围保留游戏状态列表听起来并不太有效。 我有另一个想法,因为将有一个代表游戏状态的实体,将其标记为已禁用,然后在生成输入事件时检查该实体不是已禁用游戏状态实体的后代。为每个回调计算父级似乎很昂贵。 另一个想法是让所有系统针对当前状态存储其数据密钥,这样,在生成输入时,目标实体甚至都不是候选对象。但是,这确实损害了允许处于不同状态的实体之间进行通信的能力(对于暂停屏幕而言,这并不是什么大问题,但请考虑Oblivion / Skyrim中的锁定选择)。 我唯一的另一个想法是让所有组件处理状态更改事件并与相关系统进行通信以禁用其已注册的任何内容,并在切换回此状态时重新启用它。 第二个(将对象标记为已禁用)和第四个(使每个组件都处理状态更改)似乎是我的最佳想法,但是没有一个想法特别出色。 还有其他人对此有其他想法吗? 编辑当我谈论输入专门在这个问题上,它可能意味着能够发送消息/事件的实体,如碰撞,定时器事件等的任何系统...

3
音效系统设计
我正在Unity中创建一个RPG / RTS游戏。有很多字符,可能还有很多不同的环境。我对编码部分非常有信心(因此,这个问题与游戏引擎并没有真正的联系)。我也自己创作音乐(独奏,乐队中基于打击垫的现场鼓,为朋友混音等),所以我认为我对所有必要工具都有很好的掌握。但是,我从未为游戏创建声音设计,而且我不太了解如何做到这一点。 您将如何组织和使用声音效果?例如,您有5种不同的角色类型和3种不同的背景(例如草,泥和木),您会创建5 * 3的脚步声吗?将随机变数添加到样本中是个好主意吗?关于环境声音呢?您是创建一个仅在背景上启动的主循环,还是在整个游戏级别放置真实声音(水,风,树皮移动,鸟类)? 总体而言,我对此类愚蠢的随机问题的回答太多了,因为我不太了解该系统的设计方式。如果有人给我链接到有关此事的某种指南或文章,我将非常感谢。

5
对于触摸设备上的2D平台器,合适的输入方法是什么?
我正在创建一个2D平台游戏,例如Super Meat Boy,在该游戏中,主角的动作精度至关重要。我正在使用libgdx。PC上的键盘控件工作正常,但是在加速度计处理方面,要精确处理字符确实非常困难。随着交通安全路线的拥挤,这种情况会逐步恶化。我曾考虑实现一个屏幕上的模拟球来处理输入,但在互联网上却读到了很多不良后果。 用于触摸设备上的平台游戏的直观但精确的输入方法是什么?
16 2d  input  touch  multitouch 

5
生成的3d树网格
我尚未在这些方面找到问题,如果我错了,请纠正我。 树木(通常是动物)在游戏中很常见。由于其性质,它们是生成程序的良好候选者。 如果可以的话,当然还有SpeedTree。据我所知,它不提供在运行时生成树网格的可能性。然后是SnappyTree,这是一个基于proctree.js的基于webgl的在线树生成器,它是约500行的javascript。 可以使用上面的任何一种(或其他我没有偶然发现的树生成器)来预先创建几十个树状网格-或在3D建模器中从头开始对它们建模-然后随机镜像/缩放它们以获得更多变体.. 但是我宁愿有一个免费的,可链接的树网格生成器。 可能的解决方案: 将proctree.js移植到c ++并处理开源许可证(似乎不是gpl,所以可以做到;作者可能还愿意合作使许可证更加免费)。 我自己基于L系统。 不要打扰,只需使用离线生成的树即可。 使用我尚未发现的其他方法。 2015年更新:最终将proctree.js移植到c ++ https://github.com/jarikomppa/proctree

1
使用分层的alpha四边形是否适合地面雾?
分层方法将使用一系列与地面平行排列的大块alpha纹理化四边形,与所有介入的地形几何相交,从而从上到下,俯视到地面时都非常有效地提供了地面雾的幻觉,而在雾中时,效果却稍差一些。朝着地平线看(见下图)。 替代地,主要基于着色器的方法将改为根据进入地面雾化基底的视距来计算密度,并基于该密度输出片段值。 在不必亲自测试每种方法的性能的情况下,我想先听听别人对分层alpha纹理方法可能会产生什么样的性能影响的经验(而不是猜测!)。我特别要问的是,透支经常会受到影响(不确定填充率对普通台式机系统的限制)。使用此方法的游戏列表,尤其是较旧的游戏,将非常有用:如果在DX9 / OpenGL2之前的硬件上可行,那么对我来说可能很好用。 关于这种效果,一个大问题是: (图片来源:lume.com的Lume) 请注意垂直雾的渐变如何连续/平滑。OTOH,使用带纹理的四层,我只能假设遍历它们时这些层会非常明显-它们越稀疏,就越明显。这与雾面对齐以每帧面向播放器的情况相反,在这种情况下,这种粗糙程度将不那么明显。
16 opengl  3d  textures  shaders 

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.