游戏开发

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

1
制作视频游戏的钱从哪里来?
因此,我认为360 / ps3电子游戏需要花费几个月到几年的时间。如果是这样,那几个月/几年的时间里,付给员工的钱和制作游戏所需的一切费用从何而来?
16 costs  pricing 

4
如何实现“ 20个问题”算法?
自从童年,我已经不知道该怎么20Q电子游戏工作。您想到的是物体,事物或动物(例如土豆或驴子)。然后,设备会问您一系列问题,例如: 它比一条面包大吗? 在户外找到吗? 它用于娱乐吗? 对于每个问题,您都可以回答“ 是”,“ 不是”,“ 也许 ”或“ 未知”。我一直以为它可以与巨大的嵌套条件if语句(-statements)一起使用。但是,我认为这是一个不太可能的解释,因为它对程序员来说很复杂。 我将如何实施这样的系统?
16 ai 


3
如何通过货币化和保护引擎及其框架的版权和专利?
我创建了一个游戏引擎来处理: 具有2d纹理曲面的渲染级别 曲面碰撞 2D空间中的Animationn路径和导航 我还为以下方面制定了框架: 具有圆形表面的程序有机水平生成 关卡编辑 轻巧的精灵设计 该引擎和框架是用AS3编写的,我正在将代码转换为HaXe以更好地支持其他平台。 我也有兴趣添加 弧形动画平台 更高级的关卡编辑功能 目前,我有一份兼职工作,而我花在这个引擎上的任何时间要么都从我有限的空闲时间中抽出(我是一个学生,要通过学校来养活自己),要么是在工作中抽出时间。 我确实相信,此引擎可以使设计塔防游戏,射击游戏和平台游戏的人们的生活变得更加轻松,同时还可能改善其结果。它还可以很好地支持RTS,RPG和赛车游戏。 它包含可用于有机圆形和平滑级别的程序生成的原始算法。我使用的算法是新算法,在我见过的任何其他级别编辑器中均不可用。 为了不断改进引擎并进行全面测试,我认为最好的方法就是将其发布给公众。 通过我的新框架使自己和他人受益的最佳方法是什么? 我想拥有一些许可,让我可以共享框架,并且仍然可以从中受益。 任何意见,将不胜感激。今年我一直在想这个问题。我希望找到一种解决方案,这将使我感到轻松。 我正在考虑设计三个示例游戏,发布它们并启动kickstarter,对此问题的任何建议和想法都将是有价值的。 我的目标就像Markus von Broady所建议的那样,促使人们参与开发该引擎,并让人们以象征性收费或免费收取支持费用来将其用于游戏。那或使用某种形式的欺诈性采购。 我需要聘请律师来获得某种法律文件来保护我的工作吗?

2
LibGDX-检查当前是否在Android /台式机上
我正在使用LibGDX和flixel-android构建桌面/ Android游戏。感觉应该有一种检查您当前是否在Android设备,桌面等设备上运行的方法,但是我在任何地方都找不到它。我是否应该将其从各个发射器中传下来?当然LibGDX可以告诉我吗?
16 java  android  libgdx 

1
如何轻松创建云纹理贴图?
我在游戏中制作3d行星;这些将被视为“地球”。其中一些将需要云层。我查看了用于创建“地球”的各种Blender 教程,并且他们的云层使用了NASA的地球云图。 但是,我将创建一个由许多程序生成的行星组成的虚构的宇宙。因此,我想使用许多变体。 我希望有一种方法可以程序性地生成云图,例如NASA链接。我还将需要创建气体巨人,因此我还将需要其他类型的云纹理贴图。 如果这太困难了,我可以回过头来创建云图的多种变体。例如,3个代表地球,3个代表天然气巨头,等等。 那么,如何静态创建或以编程方式生成此类云图?


2
OpenGL:VBO或glBegin()+ glEnd()?
最近,我将原始OGL红皮书的读者链接到了教程站点。向下的第三个标头明确表示忘记了glBegin()和glEnd()作为典型的渲染方法。我是通过Redbook的方法学习的,但我发现VBO有一些好处。这真的是可行的方法吗?如果是,是否有一种方法可以轻松地将渲染代码和后续的着色器转换为VBO和后续的数据类型?
16 opengl  graphics  glsl  vbo 

3
如何在流行游戏中最常见地实现AI?
我不是gamedev,我只是一个非游戏的好奇的编码者。我想知道,人工智能如何在流行的现代游戏中发挥作用,例如FPS?它基于硬编码规则吗?它与其他种类的AI(例如为自动驾驶汽车提供动力的AI)有多少共同点?开发人员如何确保AI的行为自然且有趣呢? 我在Google上搜索的资料提到了MinMax的不同派生产品,但未能回答AI如何应对持续变化的世界,为AI所奖励的行为/状态以及AI如何找出成功实施不同行为的机会。我也看到过机器学习在这里和那里提到过,但是似乎没有在任何严肃的游戏中使用它吗?
16 ai 

4
固定功能与着色器:适合初学者?
我目前正在上大学,攻读计算机科学。尽管我确实计划在某个时候利用现有的引擎来制作一款小型游戏,但我现在的目标是学习基础知识:即3D编程。我已经对DirectX和OpenGL之间的选择进行了一些研究,由此得出的普遍看法是,无论您选择OpenGL还是DirectX作为培训平台,很多知识都可以转移到其他平台上。因此,由于OpenGL得到更多系统的支持(可能是选择学习内容的愚蠢理由),所以我决定首先学习OpenGL。 做出学习OpenGL的决定后,我进行了更多研究,发现我一直都不知道这种二分法:固定功能OpenGL与基于现代可编程着色器的OpenGL。起初,我认为学习基于着色器的OpenGL是一个显而易见的选择,因为这是当今行业中最常用的。但是,然后我偶然发现了Jason L. McKesson 非常受欢迎的“ 学习现代3D图形编程”,位于:http : //www.arcsynthesis.org/gltut/ 我通读了介绍性文章,并在“关于本书”部分中指出: “首先,当用户遇到必须通过可编程性解决的图形问题时,必须不可避免地放弃使用这种方法学到的很多知识。可编程性会抹去几乎所有的固定功能流水线,因此知识不容易转移。” 但同时也说明固定功能为初学者提供了更轻松,更直接的学习曲线,方法是: “通常认为,使用固定功能管线教新手图形程序员最容易。” 自然地,您可以理解为什么在学习哪种范式上可能会产生矛盾:我是否花了大量时间学习(然后在随后的学习中)固定功能的方式,还是选择从着色器开始?我主要关心的是现代可编程着色器以某种方式要求程序员已经了解固定功能管线,但是我怀疑情况确实如此。 TL; DR =作为一个有抱负的游戏图形程序员,通过固定功能或基于现代着色器的编程学习3D编程是我的最大利益吗?

3
为什么将方法存储在实体和组件中是一个坏主意?(以及其他一些有关实体系统的问题。)
这是我对这个问题的回答,但是我回答了一个更具体的主题。 这个答案使我比本文更好地理解了实体系统。 我读了 有关实体系统的文章(是的),它告诉我以下内容: 实体只是一个id和一组组件(文章说,将实体存储在组件中不是一种好方法,但没有提供替代方法)。 组件是数据片段,它们指示可以对特定实体执行的操作。 系统是“方法”,它们对实体上的数据进行操作。 在许多情况下,这似乎确实可行,但是有关组件仅仅是数据类的部分让我感到困扰。例如,如何在实体系统中实现Vector2D类(位置)? Vector2D类保存数据:x和y坐标,但是它也具有方法,这对于其有用性至关重要,并且可以将类与仅包含两个元素的数组区分开。实施例的方法有:add(),rotate(point, r, angle),substract(),normalize(),和所有其他的标准,有用的和绝对需要的方法该位置(其是对的Vector2D类的实例)应该有。 如果该组件只是一个数据持有者,它将无法使用这些方法! 一种可能弹出的解决方案是在系统内部实现它们,但这似乎非常违反直觉。这些方法是我现在要执行的事情,要使它们完整并可以使用。我不想等待MovementSystem读取一些昂贵的消息,这些消息指示它对实体的位置进行计算! 并且,该文章非常清楚地指出,只有系统才应该具有任何功能,而对此的唯一解释是“避免OOP”。首先,我不明白为什么我应该避免在实体和组件中使用方法。内存开销实际上是相同的,并且当与系统耦合时,它们应该非常容易实现并以有趣的方式组合。例如,系统只能向知道实现本身的实体/组件提供基本逻辑。如果您问我-这基本上是从ES和OOP那里获得的好处,根据本文的作者所说,这是无法完成的,但是对我来说,这似乎是一种好习惯。 这样想吧;游戏中有许多不同类型的可绘制对象。普通的旧图像,动画(update(),getCurrentFrame()等),这些原始类型的组合以及所有这些都可以简单地为draw()渲染系统提供一种方法,然后该方法无需关心实体的sprite是如何实现的,关于界面(绘制)和位置。然后,我只需要一个动画系统,该系统将调用与渲染无关的特定于动画的方法。 还有另一件事……关于存储组件,真的有数组的替代方法吗?除了实体类中的数组,我看不到要存储组件的其他地方。 也许这是一个更好的方法:将组件存储为实体的简单属性。例如,位置组件将粘贴到entity.position。 的唯一其他方法是有某种奇怪的查找表的内部系统中,引用不同的实体。但是,这似乎非常低效的,更复杂的比在实体只需存储组件来开发。

2
要学习和/或使用哪些OpenGL版本?
因此,我是OpenGL的新手...我具有游戏编程的一般知识,但几乎没有实践经验。 我一直在研究各种文章和书籍,并尝试深入研究OpenGL,但是我发现各种版本以及旧的与新的处理方式令人困惑。 我想我的第一个问题是,是否有人知道可以运行每个版本OpenGL的游戏玩家所占的百分比。市场份额如何?2.x,3.x,4.x ... 我了解了Half Life 2的要求,因为我知道Valve用OpenGL将其更新为可以在Mac上运行,并且我知道他们通常会吸引非常广泛的用户群,并且他们说至少要有GeForce 8系列。我在Nvidia网站上查看了8800 GT,其中列出了对OpenGL 2.1的支持。也许我是错的,对我来说听起来很古老,因为已经有了4.x版本。我查了一下8800GT的驱动程序,它说它支持4.2!有点不一样,大声笑。 我还读过类似的文章,例如XP仅支持特定版本,或者OS X仅支持3.2或其他各种东西。总体而言,我只是对各种版本有多少支持以及要学习/使用哪个版本感到困惑。 我也在寻找学习资源。到目前为止,我的搜索结果使我指向了OpenGL SuperBible。第4版在Amazon上获得了好评,但它教授2.1。第五版讲授3.3版本,并且在评论中有几点提到第四版更好,而第五版没有正确地讲授新功能或其他内容?基本上,即使在学习材料中,我也看到差异,我什至不知道从哪里开始。 据我了解,3.x开始了一种全新的工作方式,我读过各种文章和评论,它们都希望“远离已弃用的功能,例如glBegin(),glEnd()”,但还有很多书我见过的教程都使用该方法。我见过一些人在说,基本上,新的做事方式比较复杂,而旧的做事方式不好。 就个人而言,我只是想补充一点,但我对镶嵌技术很感兴趣。所以我想这也是其中的原因,因为据我了解,这仅在4.x中? [顺便说一句,我的桌面支持4.2]

5
游戏逻辑线程与渲染线程之间的同步
一个游戏逻辑和渲染如何分开?我知道这里似乎已经有问题要问,但是答案对我来说并不令人满意。 据我所知,将它们分成不同的线程的目的是使游戏逻辑可以立即开始为下一个滴答运行,而不必等待下一个vsync,在此,渲染最终从swapbuffer调用返回而一直处于阻塞状态。 但是,具体来说,使用什么数据结构来防止游戏逻辑线程和渲染线程之间的竞争状况。大概渲染线程需要访问各种变量来确定要绘制的内容,但是游戏逻辑可以更新这些相同的变量。 是否有实际的标准技术来处理此问题。就像在每次执行游戏逻辑后复制渲染线程所需的数据一样。无论采用什么解决方案,同步的开销还是比仅运行单线程的所有开销都要少?

1
一个简单的2D矩形碰撞算法,该算法还可以确定矩形碰撞的边?
我最初尝试实现矩形相交,效果很好。但是,当我必须应用物理系统(例如速度,加速度和方向矢量)时,我将不得不找到一种方法来确定矩形的哪一侧发生碰撞。现在,在我的系统中,没有旋转的矩形,因此这简化了问题。但是,我找不到确定哪个矩形边发生碰撞的简便方法。我曾经处理过这个问题,但失败了。 我过去所做的是确定每个平行矩形边之间的距离,并检查该距离是否接近0(使用一些初始定义的距离范围)或为0。但是,对于浮点算法,这证明是不稳定的,因为未知时间的流逝。有时,这些矩形实际上会在满足定义范围之前相交。 另一方面,我正在考虑生成多个矩形,每个矩形各边。但是,再三考虑之后,将其与平行边进行距离范围检查是一样的,只是该距离范围就是每个微型矩形的宽度。 因此,对这个问题有什么建议吗?

5
当大多数教程过时时,从OpenGL开始[关闭]
关闭。这个问题是题外话。它当前不接受答案。 想改善这个问题吗? 更新问题,使它成为Game Development Stack Exchange 的主题。 4年前关闭。 我确定已经有很多这样的问题,但是OpenGL库的不断更新使它们全都消失了,而在一两个月后,这里的答案将再无价值。 我准备开始使用C ++在OpenGL中进行编程。我有一个正在运行的编译器(DevCpp;不要问我切换到VC ++,不要问我为什么)。现在,我只是在寻找有关如何使用OpenGL进行编程的可靠教程。我的助手找到了NeHe Productions提供的教程,但是当我发现时,它已经过时了!(尽管我确实汇总了一个基本窗口以支持OpenGL画布) 然后我上网,找到了明显使用freeglut的OpenGL SuperBible?但是我想知道的是SuperBible 5th Edition是否已经更新。我发现关于freeglut的建议说最新版本是2.6.0,但现在是2.8.0! OpenGL SuperBible仍然是一个不错的,相当新的起点吗? 有没有更好的学习OpenGL的地方? 我是否可以将freeglut简单地存储在DevCpp include目录中(也许在GL中),或者有一些重要的过程吗? 因为我才刚刚开始,有什么我想问的意见或建议吗? @dreta为我清除了一些问题,因此现在我对要问的问题有了更好的了解: 我想我想使用包装器库从OpenGL开始,而不是直接访问OpenGL。我只是认为,对于初学者来说,对我而言,编程和获得良好结果会更容易,而我还不必了解所有肮脏的细节(如@stephelton所述)。 问题是,我找不到没有对不再支持的函数的未定义引用的任何库。Freeglut听起来可以运行,但仍使用GLU。有人知道我能做什么吗?另外,我尝试编译第一个SuperBible的源代码,但是由于没有将GLAPI定义为类型,所以出现了错误,该错误源自GLU库。 我想使用《 SuperBible》,但我不知道该如何解决。
16 c++  opengl 

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.