游戏开发

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

3
射线追踪中的BRDF和球坐标
我开发了使用标准Phong / Blinn Phong照明模型的光线跟踪器。现在,我正在对其进行修改以支持基于物理的渲染,因此我正在实现各种BRDF模型。目前,我专注于Oren-Nayar和Torrance-Sparrow模型。这些中的每一个均基于用于表示入射光和出射光方向的球坐标。 我的问题是:正确的方法是将wi和wo从笛卡尔坐标转换为球坐标? 我正在应用此处报告的标准公式https://en.wikipedia.org/wiki/Spherical_coordinate_system#Coordinate_system_conversions,但是我不确定自己做对了,因为我的向量的起点不是尾巴直角坐标系,但以射线与对象的交点为中心。 在这里您可以找到我当前的实现: https://github.com/chicio/Multispectral-Ray-tracing/tree/brdf/RayTracing/RayTracer/Objects/BRDF https://github.com/chicio/Multispectral-Ray-tracing/blob/brdf/RayTracing/RayTracer/Math/Vector3D.cpp 谁能帮我解释将wi和wo矢量从笛卡尔坐标转换为球坐标的正确方法吗? 更新 我在这里复制代码的相关部分: 球坐标计算 float Vector3D::sphericalTheta() const { float sphericalTheta = acosf(Utils::clamp(y, -1.f, 1.f)); return sphericalTheta; } float Vector3D::sphericalPhi() const { float phi = atan2f(z, x); return (phi < 0.f) ? phi + 2.f * M_PI : phi; } 奥伦·纳亚(Oren Nayar) …

2
如何确定游戏最低PC需求
所以我已经在UE4(4.9.2版)中创建了我的第一款游戏,并希望发布它。但是我真的不知道如何确定游戏运行的最低环境。此外,我不确定应该重新分发除实际版本之外的其他文件。我正在通过文件->包项目->窗口来构建游戏。 1)如何确定所需的最低DirectX版本? 2)如何检查我需要将哪些其他dll包含到安装程序中(除了reall版本)?例如,我需要安装VC可再发行软件包吗?如果是这样,那是哪一个呢?DirectX也是如此。 3)如何确定最小Windows版本?这受DirectX兼容性限制吗?如果我的游戏在DirectX10或更高版本上运行,那么所有操作系统至少具有Direct10的版本都可以吗? 4)这似乎是一个愚蠢的问题,但是我应该在哪个版本的64位或32位版本中分发我的游戏?32总是更好,因为任何人都可以正确运行吗? 谢谢你的回答;)

1
双重轮廓-查找特征点,法线关闭
我正在按照本教程来实现双重轮廓 http://www.sandboxie.com/misc/isosurf/isosurfaces.html 我的数据源是16x16x16的网格;我从左到右,从近到远地遍历此网格。 对于我的网格的每个索引,我创建一个多维数据集结构: public Cube(int x, int y, int z, Func<int, int, int, IsoData> d, float isoLevel) { this.pos = new Vector3(x,y,z); //only create vertices need for edges Vector3[] v = new Vector3[4]; v[0] = new Vector3 (x + 1, y + 1, z); v[1] = new Vector3 (x …
9 c#  geometry 

2
我如何进行投票以公平地踢“领先”玩家?
我的游戏有很多房间,大约有10个人参加比赛。从根本上说,这是一个大家伙,对着另外9个小家伙。 但是,有时一个人会故意“拖钓”并为其他9个人制作一个有趣的游戏。这些人想踢一个人用另一个9代替他。 如果要求投票是一致的(不是被踢的人),那么他只有一个朋友参加比赛将阻止投票通过。同样,如果您一致减一,那么两个朋友可以停止投票,依此类推。 小房间有问题。如果一个房间只有两个或三个人,那么一个人可以琐碎踢别人。 是否有任何研究针对将某人踢出某个房间所需的最佳票数进行了研究,具体取决于房间中有多少人?

3
如何在OpenGL中播放视频文件?
有没有可以让我加载电影文件并在OpenGL应用程序中播放的库?还是仅仅是有人躺在的一个代码示例?我也使用GLUT,如果有帮助的话。我猜文件格式没有关系,尽管目前我的电影是AVI格式。
9 opengl  video 

2
如何在Unity 5中检测UI图像的鼠标悬停?
我有一幅图像,可以将其设置为四处移动以及放大和缩小。麻烦的是可以在场景中的任何位置进行缩放,但是我只希望在鼠标悬停在图像上时进行缩放。我尝试使用OnMouseEnter,OnMouseOver,事件触发器,所有三个没有对撞机,带对撞机,带触发器对撞机的触发器,以及所有这些在图像本身和空游戏对象上使用的触发器。但是这些都不起作用...所以我绝对很沮丧...有人可以在这里帮助我! 这是我的脚本: private float zoom; public float zoomSpeed; public Image map; public float zoomMin; public float zoomMax; void Update () { zoom = (Input.GetAxis("Mouse ScrollWheel") * Time.deltaTime * zoomSpeed); map.transform.localScale += new Vector3(map.transform.localScale.x * zoom, map.transform.localScale.y * zoom, 0); Vector3 scale = map.transform.localScale; scale = new Vector3(Mathf.Clamp(map.transform.localScale.x, zoomMin, zoomMax), Mathf.Clamp(map.transform.localScale.y, …
9 unity  c#  gui  image  mouse 

1
如何手动绘制精灵表的一部分?
我在Unity中工作,发现在2D游戏中动画师没有为我要尝试的工作工作。我想使用Sprite表格构建特定的动画,并能够将相同的动画与按单元格具有相同大小和尺寸的其他Sprite重复使用。经过研究,我发现这是不可能的。 相反,我试图创建自己的动画脚本,但是我不明白如何告诉Unity只绘制精灵的一部分。类似于XNA,您可以使用开始和结束坐标仅渲染精灵的特定矩形。 如何手动绘制精灵表的一部分?


6
为什么在运行Android配置时无法读取.ttf文件?
在Android设备上运行或调试游戏时,我在logcat中收到以下错误: com.badlogic.gdx.utils.GdxRuntimeException:读取文件时出错:data / fonts / myFont.ttf(内部) 这是通过以下代码行创建的: FreeTypeFontGenerator generator = new FreeTypeFontGenerator(fontFile); 其中fontFile的定义如下: FileHandle fontFile = Gdx.files.internal("data/fonts/myFont.ttf"); 当我运行桌面配置时,不会发生这种情况。 我知道对于桌面配置,您必须定义项目的工作目录,但是我在android配置中看不到这样的选项,这也没有意义,所以我认为这不是与“工作目录”相关的问题。 显然,该文件位于正确的路径中。 还要注意,在我之前的项目中,一切工作正常。我通过使用libgdx-setup创建一个新的空白prj,然后从较早的项目中复制了所有类和包,来创建了这个新项目。那么也许是与某些Gradle文件相关的问题?
9 libgdx  loading  fonts  file  ttf 

3
使用深度分辨率的完整分辨率进行2D渲染
我正在使用正交投影为2D引擎进行从前到后的渲染器。我想使用深度缓冲区以避免过度绘制。我有一个16位的深度缓冲区,一个Z = 100的相机查看Z = 0,zNear为1,zFar为1000。每个渲染的精灵将其Z坐标设置为越来越远的值,从而允许深度测试跳过渲染下面的任何东西。 但是我知道Z位置以Z缓冲区值结束的方式是非线性的。我想利用16位深度缓冲区的完整分辨率,即允许65536个唯一值。因此,对于每个渲染的精灵,我想将Z位置增加到下一个位置,以与下一个唯一的深度缓冲区值相关联。 换句话说,我想将绘制的精灵的递增索引(0、1、2、3 ...)转到每个精灵的适当Z位置,以具有唯一的深度缓冲区值。我不确定这背后的数学原理。这样做的计算是什么? 注意我正在使用WebGL(基本上是OpenGL ES 2),并且我需要支持广泛的硬件,因此尽管gl_FragDepth之类的扩展名可能使此操作更容易,但出于兼容性原因,我无法使用它。

1
色调映射和眼睛适应-浅色和深色
我正在尝试实现色调映射以及眼睛适应和HDR。其实我已经实现了,但是对结果不满意,我认为我做错了。 我的最终图像(在后处理之前)以半浮点纹理存储。我也有2个辅助纹理。第一个将对数亮度及其平均,最小和最大颜色存储在最后一个mip映射中。第二个存储适应值,其计算公式为: prevLum + (avgLum - prevLum) * (1.0 - exp2(-adaptionRate)) 其中prevLum是先前的适应值(此纹理的大小为1x1)。对数亮度纹理是R8B8G8格式,第二个是R8。在教程中,我看到使用了一半的浮动纹理,但就我而言,我的图像太亮(几乎是白色)。 在最终的后期处理着色器中,我使用所有这些值来使用以下代码获得眼睛适应和色调映射: float autokey(in float lum) { return 1.03 - 2.0 / (2.0 + log10(lum + 1.0)); } float hejl(in float color) { float x = max(0.0, color - 0.004); return (x * (A * x + B)) / …

3
大增量时间的物理模拟方法?
哪种物理模拟方法最适合真正的大增量时间(几小时到几周)? 此外,在不同的增量时间和增量时间相结合时,我是否会遇到任何问题?
9 physics 

2
有人可以解释双重轮廓吗?
我一直在尝试了解体素渲染,并一直在研究双重轮廓(DC)。 到目前为止,我对此非常了解: 对一组网格点运行密度函数(即噪声函数) 查找网格中哪些边缘包含端点之间的变化 从这些边缘创建交点(即矢量) 现在这是我遇到的问题,接下来是生成法线,但是如何?在查看此主题时,此图像通常会出现。 研究表明,法线将从等值面生成。认为我从噪声到等值面再到法线是否正确?如果是这样,我将如何完成每个步骤? 据我了解,下一步将是DC论文中的以下内容; 对于每个显示符号变化的边,生成一个四边形,连接包含该边的四个立方体的最小顶点。 上面的图片代表这个报价吗? 最后,下一步是使用相交点和法线运行QEF,这将生成我的顶点数据。它是否正确?

3
我应该如何在MMO中​​收集用户行为数据?
在MMO中​​,我正在尝试收集有关用户行为的数据,以调整游戏规则以实现最大的用户满意度。 显然,执行此操作的一种方法是将特定的内容手动滚动到应用程序中,就像使用一个Console.WriteLine()视图来查看变量的内容,或者使用StopWatch()类来查看执行某些内容所需的时间。但是您可以使用分析器代替StopWatch,也可以使用调试器代替WriteLine。 我应该如何收集我的数据?是否存在用于检测应用程序以观察用户行为的通用技术,或某种形式的代码检测技术? 另外,我只对收集技术感兴趣;您可以假设我已经知道如何传输,存储和分析所述数据。
9 mmo 

3
为什么最畅销的手机游戏没有本地化?[关闭]
已关闭。这个问题是基于观点的。它当前不接受答案。 想改善这个问题吗?更新问题,以便通过编辑此帖子以事实和引用的形式回答。 5年前关闭。 例如:植物大战僵尸2,愤怒的小鸟,坏小猪,糖果粉碎传奇,神殿逃亡2等。这些游戏仅提供英语版本。这些公司资源丰富。他们为什么不本地化他们的游戏?

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.