游戏开发

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

1
产生油性/污染性水?
那里的所有着色器向导都具有如何实现油性/污染水效果的想法,类似于以下内容: 理想情况下,水不是均匀油性的,而是可以从某些来源(例如化工厂的排污口)中产生油,然后扩散到整个水体中。对于这部分,我的想法是保留“油图”作为2D纹理,该纹理确定水面上每个点的油密度。它会随着水的倾斜而自然扩散并移动;此时,卵性(我对动态波进行了波粒模拟,并且已经在水面上进行了类似的泡沫处理)。但是,由于油可能不会以与水相同的速度运动,因此我不确定这在物理上的正确性。 而且我不知道如何制作所有那些令人迷惑的颜色:-)。有什么想法吗?

3
为什么在某些MMO中编辑客户的记忆可以使他们作弊?
为什么编辑游戏客户端的内存有效?为什么客户会附带这么多“防黑客”工具? 如果我要设计一个客户端-服务器游戏,那么一切都会在服务器上发生(游戏世界的模拟),而客户端将只是被动的消费者,他们会在角色附近接收世界部分的状态更新,仅发送一些信息,例如击键或移动/操作命令。也许我在这里错过了一些东西,但是通过这种设计,任何将客户端内存中的STR增加200的黑客(如果根本没有这个值的话)都不会产生任何效果。 我能想到的唯一解释是,其中进行内存编辑的游戏允许部分模拟在客户端中运行,然后服务器仅定期同步所有客户端。我可以理解,一旦配置了比赛,针对具有固定数量玩家的实时策略游戏的设计,但是,为什么要使用MMORPG?它是减少服务器负载的策略吗?

2
Unity的Sprite和Texture2D类之间有什么区别?
Unity既有一个Texture2D类,又有一个Sprite(带有related SpriteRenderer)。这两个类有什么区别?两者都代表图像,对于2D游戏,我是否应该偏爱一个? 使用Sprite我不需要自己创建“广告牌”四边形的两者之间的主要区别是吗?并且Sprite总是直接在相机上渲染?
19 2d  unity 

7
如何检测2D平台游戏中被压扁的玩家?
我正在检查碰撞中是否有平台角色,如#1所示。红点是被检查的像素,灰线指示它们所属的轴。我喜欢以这种方式检查碰撞(相对于边界框)得到的结果。除了一个问题:挤压检测,其他所有功能都按我的意愿运行。 在以下图像中,浅蓝色框表示地面,橙色框表示对象,箭头表示移动方向。 检测玩家何时被压倒的简单解决方案是查看相对两侧的碰撞点是否都在触发。如果是这样,则说明玩家被压碎了。在#2中,您可以看到正常的暗恋场景。播放器已接地,顶部碰撞点与下落的物体相交。这触发了暗恋。 #3、4和5存在有问题的场景。在#3中,玩家正在朝向上移动的物体移动。右侧碰撞点撞击物体,导致碰撞并使玩家停止。 现在,如果对象继续向上移动并且玩家继续向右移动(如#4所示),则该对象清除玩家右侧碰撞点,然后玩家向右移动。但是现在,这样做的目的是使对象与顶部碰撞点相交,从而导致不必要的垂直挤压。 #5中显示了类似的情况。两个物体相距足够远,可以清除底部碰撞点,从而允许玩家跌倒,但不能超过允许侧面碰撞点清除的程度,从而导致不必要的水平挤压。 我一直在努力寻找解决方案,但是我提出的任何方案都没有特别有效,所以我想知道是否有人对解决这些问题有想法或见识。 为了消除一些混淆,红色碰撞点将位于精灵内,而灰线仅用于表示每个碰撞点的相关轴。例如,如果角色的精灵是一个简单的绿色方块,则拐点将如下所示:

4
使主游戏循环不受控制地运行是否有任何危害?
我想知道当我的游戏循环以系统允许的速度运行时是否有任何可能的危害? 我目前有一个循环,通过测量经过的时间(以纳秒为单位),可以以预定义的速度运行游戏逻辑和渲染逻辑,而不会出现问题。实际上,我在循环中执行的任何逻辑都每秒被计时到一定数量的调用。 循环本身的运行速度差不多可以达到我的计算机上每秒大约1170万个循环的速度。 循环(简单的伪代码): while(!isGameOver){ if(canPollInputs){ pollInputs() } while(canStepLogic){ stepLogic() } if(canRender){ render() } } 我的问题基本上是,如果这个简单的循环没有以受控的速度运行,是否会对系统造成危害? 编辑:这意味着我的逻辑每秒运行30次(30 tps),渲染器以60 fps的速度运行,我轮询输入每秒100次,并且还有一些逻辑可以应付逻辑或渲染花费比预期更长的时间。但是循环本身并未受到限制。 编辑:使用Thread.sleep()例如将主循环节流到每秒250个循环导致减少,但是循环以每秒570个循环而不是所需的250个循环运行(当我在台式机上时会添加代码。) 编辑:在这里,为了弄清楚事情,一个工作的Java gameloop。也可以随意使用它,但不要声称它是您的;) private void gameLoop() { // Time that must elapse before a new run double timePerPoll = 1000000000l / targetPPS; double timePerTick = 1000000000l / targetTPS; double timePerFrame = …

5
如何将游戏的逐帧动画压缩到磁盘上的最少数量
我开发了一个类似帝国时代(地图上的建筑物)的游戏,对于每座建筑物,我都有一个动画精灵表。我正在使用逐帧动画为建筑物设置动画(无论如何都不知道任何其他方法)。我注意到由于放入其中的图像,资源文件夹变得非常大。 CoC和《帝国时代》等游戏如何将apk大小保持在50 Mg以下?我是否在游戏开发方面缺少一些东西? 谢谢 编辑:更多信息到我面临的问题 我有很多动画可绘制对象。我之所以选择这种方式,是因为它是最快的,并且正在产生我想要的结果。基本上,每个建筑物都是一个动画可绘制对象,其中的xml文件引用了8个可绘制对象(8个图像= 8个文件)。由于透明性,所有这些都是PNG。由于我有200多个图像,因此apk大小为120 MB(并且还没有完成一半文件的复制)。这就是提示,必须有一种解决方法。请协助其他开发人员

4
如何防止游戏中的“水下视线”
在许多玩家可以进入水下的游戏中,当您看屏幕的上半部分在空中,屏幕的下半部分在水下时,几乎就像不存在水一样,播放器正在...随着水声缓慢飞行? 有解决这个问题的逻辑方法吗?算法?由于许多游戏仍然具有此功能,因此似乎还没有解决方案。我不想犯同样的错误。

5
矩阵代表什么?
我最近开始学习OpenGL,但在可视化矩阵及其在计算机图形学中的作用时遇到了问题。给定这样的4x4矩阵模板: 我假设像这样的每个矩阵都是世界空间中顶点的坐标。然后将它们中的几个放在一起并加阴影给一个对象? 但是为什么会有a Xx,a Xy和an Xz?我读到它的轴是不同的(上,左,前),但仍然无法使意义变得有意义。
19 opengl  matrix 

2
在游戏中获得C ++工作经验的最佳方法(来自C#)[关闭]
按照目前的情况,这个问题不适合我们的问答形式。我们希望答案会得到事实,参考或专业知识的支持,但是这个问题可能会引起辩论,争论,民意调查或扩展讨论。如果您认为此问题可以解决并且可以重新提出,请访问帮助中心以获取指导。 6年前关闭。 我是一名软件开发人员,具有C#(五年经验)以及其他几种语言的经验。 我的“梦想工作”是作为开发人员从事视频游戏。 大多数工作都需要C ++的知识,而我目前还不了解(一些基本知识除外)。 我环顾四周,大多数大型游戏公司都需要3-5年的C ++经验。 我的问题是-通过C#,什么是让自己达到所需的经验水平的好方法? 我想到了一些可行的方法: 从书籍中获得有关C ++的更多知识。参加以C ++编写的开源项目。学习C ++并拥有C级工作经验的最佳方法是什么,特别是对于游戏行业而言?

1
哪些功能属于引擎,哪些功能属于游戏?
现在,我发现自己通过将2D游戏引擎直接编码到引擎中来实现和测试新功能。同时,我有一个带有脚本支持的展示游戏,应该调用引擎功能。我将固定的平铺运动附加到引擎中的Entity类,而不是专门为游戏编写脚本。这无疑打破了用于多个游戏的通用引擎的想法。 是否有最佳实践来始终专注于正确的部分(即引擎与游戏)的正确实现?

1
行为树::耗时超过一滴答的动作
根据我对行为树的了解,每个行为都应该是一个短期目标导向的动作,可以通过几次迭代来完成。 因此,例如,以下是行为树的图像: 现在让我们假设“ 驱逐敌人”行为在树中进行了多次迭代。因此,每次通过都会调用Drive To Enemy,因为它现在处于运行状态。 问题是如果附近有敌人,我想打电话给Evade Enemy。并考虑到驱动器要敌人总是叫我没有机会打电话给躲避敌人(或许应该叫避开敌人)。 无论当前正在执行什么操作,我都应该遍历Tree EACH通行证吗? 我要这样做正确吗? 处理此类行为的正确方法是什么? 最初在Stackoverflow上被问到。认为这里将是一个更合适的地方来问这个问题。
19 ai  game-loop  behavior 

3
在具有开放环境和大量静态内容(例如孤岛危机)的现代AAA游戏中,如何执行遮挡剔除?
我有两个想法: 1)使用低分辨率和低多边形数模型(甚至仅使用诸如立方体或球体的边界体积)将场景渲染到不可见的缓冲区。然后检查缓冲区以了解可见或不可见。在渲染低分辨率场景之前,可以应用一些视锥剔除,以尽可能多地移除对象。 2)在静态地图上运行一个工具,该工具将执行复杂(因此较慢)的光线跟踪,以了解地图上的某些3d位置,哪些是可见的,哪些不是。然后,所有这些信息都以一种有效的方式存储,以后可以在运行时供用户使用(例如:八叉树)。该解决方案仅适用于静态网格物体(例如:建筑物)而不是移动对象。

4
球面图表示
我最新的游戏将在一个小行星上进行。我正在寻找用于表示球体表面上的单元的良好数据结构。三角形,正方形,五边形,六边形?哪一个最大程度地减少了拉伸并创造了最好的贴砖? 球形贴图是最简单的,但极点处的拉伸是不可接受的。立方体贴图也很容易,但是在立方体角附近仍然会有相当大的拉伸。就拉伸而言,细分二十面体似乎是最好的,但是存在索引许多三角形阵列并在边界处查找相邻单元的问题。 我想我可以使用代表N个角的单个线性点数组,每个点都有N个邻居索引数组,但这似乎浪费了很多空间。 该游戏具有RTS元素,因此我将存储诸如影响力图之类的内容并执行A *寻路和卷积,因此表示必须高效。
19 maps  sphere 


5
OpenGL:为什么必须使用glNormal设置法线?
我正在学习OpenGL的一些基础知识,但我想知道为什么要调用glNormal一个设置顶点法线的方法。 如果我这样创建一个简单的三角形: glBegin(GL_TRIANGLES); glVertex3f(0,0,0); glVertex3f(1,0,0); glVertex3f(0,1,0); glEnd(); 法线不应该由几何图元的类型隐式定义吗?如果我不设置法线,OpenGL将对其进行计算吗?
19 opengl  normals 

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.