游戏开发

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

6
如何改善或替换程序员的艺术?[关闭]
已关闭。这个问题是基于观点的。它当前不接受答案。 想改善这个问题吗?更新问题,以便通过编辑此帖子以事实和引文回答。 5年前关闭。 假设我是一名程序员,他自己制作了自己的精灵或3d模型,这些东西会落入程序员喜欢的艺术中。我可以采取哪些步骤来改善或替代自己的艺术作品?
16 graphics  art 

5
在哪里可以找到可以与开源游戏一起分发的字体?[关闭]
已关闭。这个问题需要更加集中。它当前不接受答案。 想改善这个问题吗?更新问题,使其仅通过编辑此帖子来关注一个问题。 2年前关闭。 我希望能够以开放源代码发布我的游戏,并且我需要能够随我的游戏一起分发字体文件。在哪里可以找到可以这种方式使用的字体,我应该寻找什么字体许可? 如果我想以GPL发行游戏,而不是限制性较小的开源许可(如BSD),是否还有其他考虑因素? 编辑:针对Olie所说的问题尚不清楚:我的主要问题是,我在Internet上找到的字体没有明确说明其许可证,或者其许可证无法明确说明我是否可以使用软件分发字体。我对字体许可证知之甚少,但是我正在寻找字体来源,以保证字体基本上是开源的/创作共用/公共领域/其他字体许可证,这使我可以在不支付许可证费用的情况下随游戏一起分发它。

9
塔防游戏的动态路径算法
我正在做塔防,我需要一个好的路径算法。 我曾经考虑过Dijkstra,但我需要一个可以动态发展的人。删除或添加一条边而无需完全重新计算时,它必须能够自我更新。 如果有帮助,我正在C#中进行编码。

6
使用球谐函数建立复杂的声场
我今天在工作中讨论如何改善室内声学建模。有人建议在这个问题上做的工作很少,而图形方面的工作却很少。进一步建议,由于声音和光只是波形,因此可能可以使用光线追踪和无线电之类的方法获得良好的近似值。 在这一点上,我开始考虑球谐函数来模拟这种行为。您可以同时进行镜面反射以及建模为漫反射的音频散射。作为奖励,您还会遇到阻碍声音传输的障碍。唯一的问题是如何处理多个频率的衰减。当然可以通过对音频频谱(FFT)进行某种形式的转换来建模。 无论如何,任何人都不会知道有关此主题的任何论文,尤其是有关如何实时执行的论文。如果没有人得到任何建议或有用的一般信息?

4
使用UDP的确认可靠性
我对UDP有疑问。对于上下文,我正在开发实时动作游戏。 我已经阅读了很多有关UDP和TCP之间的区别的文章,并且我对它们的理解非常好,但是其中有一件从未感觉过正确,那就是可靠性,尤其是致谢。我了解默认情况下UDP不提供可靠性(即数据包可能会被丢弃或乱序发送)。当需要某种可靠性时,我所见的解决方案(从概念上讲是有意义的)是使用确认(即服务器向客户端发送数据包,并且当客户端收到该消息时,它将确认发送回服务器)。 。 取消确认后会发生什么? 在上面的示例中(一台服务器向一个客户端发送数据包),服务器通过每帧重新发送数据包直到收到针对这些数据包的确认,来处理潜在的数据包丢失。您仍然可能会遇到带宽问题或消息混乱的情况,但是仅从丢包的角度来看,服务器已被覆盖。 但是,如果客户端发送了从未到达的确认,则服务器别无选择,只能最终停止发送该消息,如果需要该数据包中包含的信息,这可能会破坏游戏。您可以对服务器采取类似的方法(即一直发送确认,直到收到确认的确认?),但是这种方法会使您永远来回循环(因为您需要为确认而需要一个确认)等等)。 我觉得这里的基本逻辑是正确的,这给了我两个选择。 发送单个确认包,并希望最好。 发送少量确认数据包(可能是3-4个),并希望达到最佳状态,前提是并非所有数据包都将被丢弃。 这个问题有答案吗?我是从根本上误解了吗?是否可以保证使用我不知道的UDP?我对继续使用太多的网络代码感到犹豫,直到我对自己的逻辑是合理的感到满意为止。
16 networking  udp 

4
“映射”鼠标在屏幕上的位置,以便无论分辨率如何都能进行碰撞检测,是否是个坏主意?
考虑一个默认分辨率为800x600的游戏。带有防碰撞罩的对象放置在大小为800x600的游戏世界中。防撞罩可以检测鼠标何时与它们碰撞。 现在考虑我们将游戏缩放到1024x768(假设我们通过简单地将所有内容渲染到一个图层然后一次放大整个图层来缩放图形)。在此新分辨率下,我们有两个选项可以使与鼠标的碰撞正常进行: A.)将世界缩放到1024x768,并相应缩放每个对象的碰撞蒙版。 B.)将鼠标位置“映射”到原始世界(800x600)。 通过“地图”,我的意思是简单地将鼠标位置缩放到原始800x600的世界上。因此,例如,如果鼠标在屏幕上的位置是(1024,768),则鼠标在世界上的位置是(800,600)。 现在,显然,选项B所需的计算方式更少,并且可能更不容易出现几何错误,但是对我来说,这也感觉有些“骇人听闻”,就像使用此方法会带来无法预料的后果一样,以后将很难解决。 我应该使用哪种方法:A,B或其他?

6
电子游戏如何在屏幕外存储信息?
我正在尝试从零开始制作视频游戏,但是我对此确实很陌生,并且一直遇到基本问题。最重要的是,视频游戏如何存储屏幕外信息?我的意思是,程序如何知道接下来要在屏幕上显示什么?甚至,如果播放器更改了环境,下次将其加载到屏幕上时,该更改如何保留? 例如,在“新超级马里奥兄弟”中,如果您打了?阻止,然后离开屏幕,然后返回,它仍然保持点击状态。如何保存此信息,然后在玩家下次加载该块时执行该信息?为什么不重置呢?

10
基于种子的随机噪声
我目前正在开发一个程序,该程序应基于像素的“坐标”在屏幕上生成随机噪声。每次重新启动程序时,坐标应具有相同的颜色。但是,使用Java的util.Random,我得到的结果并不像我想要的那样随机: 我以为如果使用组合坐标(例如,由两个坐标彼此相邻形成的整数),则每个坐标将具有不同的数字。通过使用该数字作为种子,我希望为每个坐标获得一个不同的随机数,以用于该坐标的rgb值。 这是我使用的代码: public class Generate { static Random Random; public static int TileColor(int x, int y){ Random = new Random(Integer.valueOf(Integer.toString(x)+Integer.toString(y))); int b = 1 + Random.nextInt(50); int g = 1 + Random.nextInt(50); int r = 1 + Random.nextInt(50); int color = -Color.rgb888(r, g, b); return color; } } 程序创建的模式是由于Java的Random函数的工作方式还是我做错了,应该尝试其他方法吗? …
16 java  random 


4
对所有事物都使用实例化?
一次渲染同一网格的多个(成千上万个)副本时,实例化可以显着提高性能。但是,一次绘制一次绘制一个副本就需要多少开销呢?将实例化用于引擎渲染的所有几何体是好事还是坏事? 编辑:假设我们正在创建FPS游戏。大多数物体只有一个实例:刀,枪,机枪,建筑物和无线电塔。但是也有一些具有多个实例的对象:树(例如,具有数百个实例的3种树),草等等……我的意思是:不是以“传统”方式渲染单实例对象,而是使用树和草使用实例化,我们使用实例化渲染它们。因此,我们的无线电塔只有一个实例(我们将其信息存储在实例数据缓冲区中),并且我们使用某种DrawInstanced()实例计数等于的调用来渲染该无线电塔1。与所有其他对象相同(当然,树木和草具有多个实例)。 所以我的问题是:使用实例化绘制对象的单个实例是一个坏主意吗?实例化是否有过多的开销(在内存和性能方面),还是以某种方式不希望呈现单实例对象?
16 mesh  instancing 

2
延迟着色渲染器中用于几何传递的常见渲染优化技术是什么?[关闭]
已关闭。这个问题需要更加集中。它当前不接受答案。 想改善这个问题吗?更新问题,使其仅通过编辑此帖子来关注一个问题。 6年前关闭。 我一直在使用OpenGL 3和C ++(以及用于窗口管理的glfw)开发游戏引擎。到目前为止,我已经取得了进步,完成了除声音实体和优化之外的大部分工作。该引擎使用延迟着色,因此由于延迟着色本身是普通GPU的累赘过程,因此我想尽可能地优化渲染过程。 当前系统由一个场景组成,其中包含一个渲染器,并且当前世界和世界将实体和照明实体分开std::vectors。 因此,基本上每次场景被调用时->render(),它都会调用渲染器,将世界作为参数传递,并从世界中获取实体迭代器,将其吸引到FBO,然后通过照明实体进行第二遍。而且我认为这还不够。 即使实体不在屏幕空间中,我当前的算法也会遍历所有内容。我正在考虑一种优化当前渲染算法的方法,使其仅针对可见对象调用API函数,那么优化此类渲染器的常用技术有哪些?

3
使用Elo与两名以上的球员进行的球员排名
我想使用Elo来跟踪某个游戏的比赛之间的玩家排名,但是在一场比赛中最多可以玩4个玩家。我见过像卡尔卡松这样的游戏使用Elo时有两名以上的玩家在玩,但我对Elo超出1-1的比赛并不熟悉。 从维基百科的文章中,我想扩展的两人方程式是: E a = 1 /(1 + 10 (R b -R a)/ 400) E b = 1 /(1 + 10 (R a -R b)/ 400) R x 新 = R x 旧 + 32 *(W – E x),如果X赢,则W = 1,如果X输,则W = 0。 给定两个以上的参与者,E x和W 的计算将如何变化?


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.