游戏开发

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


2
使用Phaser从Spritesheet中显示特定Sprite
我正在尝试使用HTML5 JS框架Phaser制作纸牌游戏。因为我是一个糟糕的艺术家,无法设计自己的作品,所以我使用的是我在网上找到的免费纸牌图像精灵。问题是,我似乎无法弄清楚如何使用Phaser显示单个卡。 在我以前使用的框架中,我能够从使用的较大的Sprite工作表中创建单个较小的Sprite。但是,即使有可能,我也无法弄清楚如何在Phaser中执行此操作。 因此,我考虑将图像作为Spritesheet加载,但是Spritesheet似乎仅用于动画,并且您不能真正显示Spritesheet的特定“框架”(如果我错了,请纠正我)。 我认为我需要做的是将图像加载为tilemap,但是,我正在使用的特定图像没有带有指定布局的json文件(我也找不到能做到这一点的图像)。对javascript来说我是新手,我在阅读Phaser源代码以查看json文件应如何格式化时遇到了麻烦。 因此,总之,鉴于我没有指定地图数据的json文件,在Phaser中显示纸牌小精灵一张纸牌的最佳方法是什么?

2
全动态KD树与四叉树?
在开发游戏时,我正处于需要跟踪世界上所有单位的地步,以便可以进行最近邻检查以进行战斗。这是一款类似于RTS的游戏,可能有成千上万的小型自动化单位在移动。 我一直在研究KD树和四叉树(尤其是点四叉树)。我仍在尝试了解它们如何工作的详细信息,但是到目前为止,Point Quadtree对我来说最有意义。但是,我的印象是KD-Trees的搜索速度更快,这对我在树中拥有的点数很重要。 另一方面,就我而言,我将跟踪大量始终在移动的单元。从一帧到另一帧,它们的位置将始终不同。四叉树显然比KD-Trees重平衡更快,但是我不知道当您重新平衡树中的每个点时是否适用。 我想知道在这种情况下,最好只是逐帧废弃树并从头开始重建它,而不是尝试重新平衡树中的每个点?如果Quadtree重新平衡的速度更快,是否也意味着从头开始构建的速度更快?如果是这样,那对性能而言可能比KD-Tree的搜索速度更重要,这取决于创建树的负担,但我不知道...
11 rts  quadtree  kd-tree 

1
如何使用GLSL片段着色器实现这种波动?
所以我已经实现了反射部分: uniform sampler2D texture; uniform vec2 resolution; uniform vec3 overlayColor; void main() { vec2 uv = gl_FragCoord.xy / resolution.xy; if (uv.y > 0.3)// is air - no reflection or effect { gl_FragColor = texture2D(texture, vec2(uv.x, uv.y)); } else { // Compute the mirror effect. vec4 color = texture2D(texture, vec2(uv.x, 0.6 …

1
在基于图的材料系统中,如何支持各种输入和输出类型?
我想换我的头周围怎么样材料系统这样,这个实现。这些功能强大且用户友好的,类似于图形的系统作为允许程序员和非程序员都可以快速创建着色器的方法,似乎相对普遍。但是,从我相对有限的图形编程经验来看,我不太确定它们是如何工作的。 背景: 因此,当我之前对简单的 OpenGL渲染系统进行编程时,通常会创建一个Material类,该类从我手动创建的静态GLSL文件中加载,编译和链接着色器。我通常还将此类创建为访问GLSL统一变量的简单包装。举一个简单的例子,假设我有一个基本的顶点着色器和片段着色器,并带有一个额外的均匀Texture2D用于传递纹理。我的Material类将简单地将这两个着色器加载并编译到材质中,从那时起,它将公开一个简单的接口来读取/写入该着色器的Texture2D制服。 为了使该系统更具灵活性,我通常以一种允许我尝试传递任何名称/类型的制服的方式编写它(即:SetUniform_Vec4(“ AmbientColor”,colorVec4); 如果材质中存在均匀的AmbientColor统一矢量,该矢量将被称为“ colorVec4”。 class Material { private: int shaderID; string vertShaderPath; string fragSahderPath; void loadShaderFiles(); //load shaders from files at internal paths. void buildMaterial(); //link, compile, buffer with OpenGL, etc. public: void SetGenericUniform( string uniformName, int param ); void SetGenericUniform( string uniformName, float param ); …


2
填充宽度或高度的Unity UI正方形
我正在尝试创建一个具有以下要求的板: 它应该是正方形的。 它应适合可用的宽度或高度。 它应在画布中居中。 可以根据需要将其包装到尽可能多的其他中间画布中。 我在玩锚,但找不到任何组合。我能想到的唯一解决方案是为容器编写某种“ OnResize”脚本并以编程方式设置板子的大小。 这是原始布局。(1)是BoardCanvas。(2)是董事会。 我希望如果屏幕变高,正方形会增大,但仍然是正方形: 或减少: 但是,尽管前面的示例捕捉到了顶部和底部边缘,但我也希望如果垂直空间变得比可用宽度高,那么正方形将根据左右边界来限制其大小: Q1:有没有办法用锚/枢轴做到这一点?如果可行,我可以在BoardCanvas和Board本身之间创建中间画布。 Q2:如果是这样,我应该在哪里放置锚?我需要中间物体吗? 问题3:如果不是,编写脚本解决方案吗?画布上是否有任何要处理的OnResize?我在列表中看不到任何调整大小的事件,但也许我不知道在哪里寻找它。我觉得在每个帧上对其进行测试似乎有点过大,事件驱动似乎更好。 谢谢!

2
游戏升级发布:跨平台发布时间
我刚刚完成了对旧手机游戏的重大升级,但一年多来还没有更新。许多新内容,情况看起来不错。 不幸的是,这些天平均需要12天才能通过iTunes批准管获得更新,但是不到2小时就可以立即将其发布到Google Play上。 如果我现在发布该版本,那么我至少可以在android上度过秋季假期,iOS用户将不得不等到其版本获得批准。 但是我从其他工作室听说,他们同时等待并启动两个更新,以达到所谓的“协同效应”,因为(据我所知)对更新的关注会扩散到镜像平台上。 但是...我对此持怀疑态度。这种效果真的那么强,以至于您可以将发射推迟数周吗?仔细搜索一下,我很难找到任何可以支持该策略的数据。 更直接地说: 在所有平台同步之前,阻止应用程序启动真的“值得”吗? 当然,我会推迟我的公关工作,直到为两个平台都准备好升级,但是在一个平台上“过早”启动应用程序真的有那么糟糕吗? 如果任何人都可以不仅仅凭直觉来支持这种策略(数字和图表总是很棒的),那么我无所不能。在我对这些升级策略有一定的了解之前,我不会对我的应用程序做任何事情。 PS:我知道初始应用程序启动时会使用相同的方法,从某种意义上说,这对我来说更有意义。如果您有关于此策略的优势有多强的任何数据,我也很高兴。

4
合并几何体/网格而不会损失任何收益
在three.js中,我们可以简单地合并几何图形以限制绘制调用的数量,从而提高性能。在使用一种材料进行的简单测试中,我可以在GTX660 GPU上以60fps的速度绘制50.000立方体+阴影。如果不合并几何,则5.000个多维数据集已经引起问题。 我想知道如何保留自己渲染每个立方体网格的好处。例如,当所有内容合并为一个几何时,如何选择一个立方体网格?默认情况下,这当然是不可能的。 有什么通用技术可以解决这个问题吗?毕竟,即使合并后,我也确实拥有所有未合并的网格对象。因此,必须有某种方法可以利用它们进行拣选? 简而言之,我想做什么 SimCity喜欢游戏来学习 每个房子都是一个立方体网格 想要渲染50.000套房屋并能够添加和删除房屋 必须可以通过鼠标光标(选择)进行房屋选择
11 three.js 

1
如何分别描述顶点着色器和片段着色器的速度?
我想知道如何检查顶点或片段着色器是渲染管道中的瓶颈。 我已经读过glQueryCounter与GL_TIMESTAMP目标一起使用以获取OpenGL命令之间的时钟检查点的信息,但是这些不能区分不同类型的着色器。 例如,如果GPU上的一帧需要8毫秒的渲染时间,我是否可以说顶点着色器需要7毫秒,片段着色器需要1毫秒?

2
如何实现平移,缩放,旋转小控件来操纵3D对象的变换?
我正在开发基本的3D编辑器。它使用OpenGL渲染3D世界。现在,我的场景只是几个大小不同的盒子,而我正处于一个阶段,我希望能够选择每个盒子,然后对其进行移动/缩放/旋转以实现所需的任何变换。 我该如何解决以下问题:既实现这些工具的Gizmos(或手柄,又或者人们通常如何称呼它们)的渲染,又要在每个轴上拾取它们以用鼠标执行变换中的更改?为了清楚起见: 到目前为止,我的研究表明,最干净的方法是在Gizmo中为每个箭头设置一个与轴对齐的边界框,然后在每个正方形中使另一个箭头对齐(将对象沿平面而不是单轴移动),然后从鼠标投射光线定位并查看其碰撞。但这对我来说仍然太抽象了,我希望进一步了解该算法的运行方式(伪代码已足够)
11 opengl  3d 

1
镶嵌与几何着色器
如果我错了,请纠正我,但是“几何着色器”和“细分曲面着色器”作业都将在“图形管线”中生成顶点。我想知道的是它们之间的区别,何时应该在另一个之上使用?

3
仅高细节渲染屏幕的一部分
如果以较大的视角渲染图形(例如,非常大的电视或VR头戴式受话器),则观看者实际上无法将注意力集中在整个图像上,而只是整个图像的一部分。(实际上,常规尺寸的屏幕也是如此。) 结合跟踪观众眼睛的方式(我想这在VR中几乎是可行的),您可以在理论上加以利用,并通过逐渐减少细节和分辨率来使图形远离观众焦点,从而获得性能,而不会损失感知质量。 今天有没有可用的或正在开发的技术?

4
使玩家平稳地上楼梯
我有一个2D平台游戏,其中玩家始终向右行驶,但是地形并不总是水平的。例: 我实现了一个边界框碰撞系统,该系统仅检查与玩家框和其他方块的交点,以防止遇到大方块时玩家无法奔跑,因此必须跳下去,但是当我上楼梯时,我希望他就像他在水平地面上一样平稳运行。使用碰撞系统,您必须跳楼梯才能通过! 我考虑过要在楼梯的边缘之间生成一条线,并在那条线上强加玩家移动……您如何看待?还有更聪明的事情吗?

2
音乐应制定哪些技术规范?
我正在为电子游戏创作音乐。在某个时候,我将需要与程序员合作,以确定我将要移交给他们的音频文件的技术规范。我们需要谈论哪些细节? 例如,我认为我们可能需要解决的一些问题是: 音频文件应采用哪种格式? 未压缩?无损?压缩了吗? 高质量音频和小文件大小之间有什么平衡? 音乐应该多大声? 每个曲目的平均音量应该是多少? 最高音量应该是多少? 频率分布应该是多少? 例如,我是否应该写一点低音的音乐,以便可以轻松听到低调的foley? 我认为重要的问题要问吗?还有其他问题要讨论吗?
11 music 

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.