游戏开发

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

2
为什么我们需要第四个坐标除以z?
我在这里阅读回复: 图形卡将向量的第四个元素作为最终位置怎么办? “第四个组件是跟踪透视投影的技巧。进行透视投影时,您希望除以z:x'= x / z,y'= y / z,但这并不是可以通过对x,y,z的向量进行运算的3x3矩阵来实现。为此,标准的技巧是添加第四个坐标w,并声明x,y,z总是除以w在应用了所有转换之后以及在栅格化之前。” 但是我不明白为什么我们不能使用3x3矩阵除以z? 我们不能乘以 1/z 0 0 0 1/z 0 0 0 1/z 要得到 [x/z y/z 1] ?

3
LibGDX游戏与ApplicationAdapter
当我创建一个新的LibGDX项目时,Core项目的主类扩展了ApplicationAdapter。这是它的样子。 package com.marimba.apptest; import com.badlogic.gdx.ApplicationAdapter; import com.badlogic.gdx.Gdx; import com.badlogic.gdx.graphics.GL20; public class AppMain extends ApplicationAdapter { @Override public void create () { } @Override public void render () { Gdx.gl.glClearColor(1, 0, 0, 1); Gdx.gl.glClear(GL20.GL_COLOR_BUFFER_BIT); } } 因此,如果要调用setScreen方法以便在屏幕之间切换,则必须将ApplicationAdapter更改为Game。那么ApplicationAdapter的用途是什么?我什么时候使用?
12 java  libgdx 

2
在游戏循环中暂停游​​戏
在游戏循环内,通过按P暂停游戏,这意味着游戏循环不再运行。问题在于,该循环暂停后,由于它位于循环本身内部,因此无法再次按下P以恢复该循环。如何使其再次按下P时使循环再次工作?
12 game-loop 

2
罗夏墨迹(又名心理学测试图片)着色器
(来源:bonnefil.com) 我希望这种华丽的图案出现在我的游戏中。到目前为止,我已经知道了... 画出一侧,然后左右两次渲染。 如何在一侧渲染此图案?嗯... 我需要帮助。 我需要一些关于编写着色器的见解。 如果您认为不是着色器拟合任务,那么请告诉我,希望有替代解决方案! 但是,我认为没有gpu不可能实现这一目标。(除非您建议存储一堆准备好的rorscach pic图片)

6
如何在多种颜色之间进行Color.Lerp?
我发现很难在Unity文档中找到解决方案。 Color.Lerp(Color a, Color b, float t) 是一个函数,该函数根据步骤t逐渐更改颜色,从而为其提供颜色b的最终值。 如何在多种颜色之间一个一个地变色?
12 c#  unity  color  lerp 

4
Unity 5的玻璃材料
有人知道如何在Unity 5中制作玻璃材料吗? 我可以做金属和图像纹理,但不确定如何创建玻璃材料。 在Google上进行搜索不会为我带来Unity 5的任何好处,因此它必须非常容易做到。 用于淋浴门和平面玻璃,如下所示:


3
绕固定轴旋转对象
我试图让我的应用程序用户通过在屏幕上拖动手指来旋转在屏幕中央绘制的3D对象。屏幕上的水平移动表示绕固定的Y轴旋转,而垂直移动表示绕X轴旋转。我遇到的问题是,如果我只允许绕一个轴旋转,则对象旋转良好,但是一旦引入第二个旋转,该对象就不会按预期旋转。 这是正在发生的情况的图片: 蓝色轴代表我的固定轴。画出具有此固定蓝色轴的屏幕。这就是我要相对于对象旋转的对象。发生的是红色。 这是我所知道的: 围绕Y(0,1,0)的第一次旋转使模型从蓝色空间(称为空间A)移至另一个空间(称为空间B)。 尝试再次使用向量(1、0、0)旋转时,空间B中的x轴会旋转,而不是空间A中的x轴旋转,这不是我的意思。 考虑到我(想)知道的内容(为简洁起见,省略了W坐标),这是我尝试的操作: 首先使用四元数绕Y(0,1,0)旋转。 将旋转Y四元数转换为矩阵。 将Y旋转矩阵乘以我的固定轴x矢量(1、0、0),以获得相对于新空间的X轴。 使用四元数围绕这个新的X向量旋转。 这是代码: private float[] rotationMatrix() { final float[] xAxis = {1f, 0f, 0f, 1f}; final float[] yAxis = {0f, 1f, 0f, 1f}; float[] rotationY = Quaternion.fromAxisAngle(yAxis, -angleX).toMatrix(); // multiply x axis by rotationY to put it in object space float[] …

1
是否应该取消绑定缓冲区?
我正在使用OpenGL ES 2进行一些测试,但遇到了一些问题,我目前的程序是这样的: Init ------- -> create index buffer -> fill index buffer glBufferData … -> create vertex buffer -> fill vertex buffer glBufferData … Draw ------- 1. Apply vertex buffer -> Bind VAO -> bind vertex buffer - enable attributs (glVertexPointer, …) -> unbind vertex buffer -> Unbind VAO …

6
检查两个移动的AABB是否相交的最快方法是什么?
我有两个正在移动的AABB,检查它们是否在框架下相交的最快方法是什么? 通过移动,我的意思是不仅要检查常用的矩形交集方法,还意味着某种简单易行的测试,该测试仅返回布尔值,没有命中时间或其他任何东西。 我认为就是这样简单地做到这一点: 但是那个Hexagon非常复杂,我不知道如何计算AABB-多边形相交,也许有更简单的方法吗? 您最喜欢的任何编程语言,我都可以轻松移植。 谢谢。

2
如何为联网的实时游戏实现游戏状态快照系统?
我想创建一个简单的客户端-服务器实时多人游戏作为我的网络课程的一个项目。 我已经阅读了很多有关实时多人网络模型的文章,并且了解了客户端和服务器之间的关系以及滞后补偿技术。 我想做的事情类似于Quake 3网络模型:基本上,服务器存储了整个游戏状态的快照;在从客户端接收到输入后,服务器将创建一个反映更改的新快照。然后,它计算新快照和最后一个快照之间的差异,并将它们发送给客户端,以便它们可以同步。 在我看来,这种方法确实很可靠-如果客户端和服务器之间具有稳定的连接,则仅发送少量必需的数据以保持它们同步。如果客户端不同步,则也可以请求完整快照。 但是,我找不到实现快照系统的好方法。我发现很难摆脱单人编程架构,并思考如何以以下方式存储游戏状态: 所有数据与逻辑分离 可以计算游戏状态快照之间的差异 通过代码仍然可以轻松操纵游戏实体 快照类如何实现?实体及其数据如何存储?是否每个客户实体都有一个与服务器上的ID匹配的ID? 快照差异如何计算? 总的来说:游戏状态快照系统将如何实现?


7
如何设计非常困难的游戏?[关闭]
已关闭。这个问题需要更加集中。它当前不接受答案。 想改善这个问题吗?更新问题,使其仅通过编辑此帖子来关注一个问题。 5年前关闭。 我想设计难度很高的游戏。我已阅读以下问题: 如何测试/平衡游戏难度? 使人们回到我的游戏中的最佳失败率是多少? 然而,他们专注于一般的游戏设计和平衡,而不是逐渐增加游戏难度的特定主题。 我知道每种游戏的难度都是不同的,所以我想知道是否有任何一般性的指导原则可以避免在设计难度较高的游戏和关卡时遇到的常见问题,无论如何游戏类型。 我想到的一些子问题是: 在设计游戏的疯狂部分时如何确保“打败”? 如何知道打败我的游戏是可能的? 例如,当设计平台游戏时,我可以做出一个非常困难的跳跃和躲避序列。现在,作为开发人员,我确切地知道玩家角色可以跳跃多远,弹丸移动得有多快等,但是我如何确保设计的水平可以被击败呢? 我知道,最明显的答案就是尝试玩游戏,但是,游戏的难度就和开发人员玩游戏的能力一样强。 是否有在制作硬游戏方面有实际经验的人知道我可以用来成功制作困难游戏的任何技巧或准则?

3
如何使用图形管线基于密度函数渲染体积数据?
两种图形API(OpenGL和DirectX)都设计了明确定义的管道,其中几个阶段都可以编程。这些可编程阶段需要获取固定的最小数据量,并应在其上进行明确定义的操作范围,并输出一些已定义的最小输出,以便可以将数据正确地传递到下一个阶段。似乎这些流水线被设计为仅使用有限数量的几何数据类型,对于D3D和OGL而言,它们都是顶点数据和纹理坐标。 但是,如果我打算制作的应用程序在某种情况下不使用顶点(甚至是体素)来表示其几何数据,并且不完全进行变换或投影,栅格化或插值等操作,则API的局限性否则管道会使事情变得困难。 那么,是否有一种方法可以改变图形管道,从而使每个阶段对数据执行的功能以及每个阶段输出的数据类型都对我有利?如果没有,那么有没有办法我可以使用“原始” API函数来构建自己的管道?如果没有,请说明为什么不可能。 编辑:我的应用程序使用密度函数来表示几何。该函数在空间的每个点都有一个值。我将相机的视锥台分为3d网格,每个块可以投影为一个像素。在每个块上,我集成密度函数,并检查其值是否大于要求的值。如果是,则假定该块中存在某些东西,并且渲染与该块相对应的像素。因此,现在在渲染器中,我希望将函数(用字符串表示)传递给图形硬件,而不是传递顶点缓冲区中的顶点数据。这也意味着顶点着色器将没有顶点可以转换为同质的剪贴空间,并且片段着色器不会获取像素信息。取而代之的是,现在大多数查找和评估都针对每个像素进行。

5
如何将Bresenham的线算法推广到浮点端点?
我正在尝试结合两件事。我正在写一个游戏,我需要确定与浮点端点在一条线上的网格正方形。 此外,我需要它包括它碰到的所有网格正方形(即不仅是布雷森纳姆的线条,而且是蓝色的线条): 有人可以向我提供有关该操作方法的任何见解吗?显而易见的解决方案是使用朴素的行算法,但是有没有更优化的东西(更快)?

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.