游戏开发

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

2
雇用音乐家时,要求音乐享有所有权利是否合理?
我做了一个游戏,现在我需要在其中添加真实的声音和音乐。我第一次决定聘请音乐家为我的游戏做音乐。在我以前购买音带和轨道许可证之前。 谈判进行得不顺利,因为价格对我来说太高了,艺术家不喜欢把音乐卖给我的想法,只想向我许可。 我想知道我是否犯了一个错误或者我是否不合理。 确切地说,我们正在谈论的是6条音轨,每条长达90秒。音乐是由一位音乐家演奏的芯片音调(这很重要,因为据我了解,聘用乐团比聘请一个人要贵得多)。 我想要的是获得具有除作者权利以外的所有权利的曲目-将其名称显示在专辑中。 有人告诉我,没有人这样做,而音乐家总是保留以后出售OST等的权利。如果我要所有这些权利,一首歌会花掉我500美元。甚至只获得一个产权的许可证也要花费我200美元。 我不知道这是否是标准市场价格,对我来说似乎很高。 价格合理吗? 我要求所有权利的音乐对我来说是不合理的吗?
13 sound  music  hiring 

1
是什么使缩放像素艺术与其他图像有所不同?
最近,我正在指导开发像素艺术游戏的新手开发人员,并且意识到在缩放像素艺术方面存在一些“传统智慧”,对于新手来说并不明显,并且可能没有很好的记录。因此,这是尝试解决此问题的方法。 我听说我只能将像素画比例缩放200%,300%等,而不是介于120%之类 这是为什么?难道不应该像其他图像那样缩放“工作”吗? 如果我真的需要将角色放大或缩小一小部分才能获得正确的游戏性或外观怎么办?我该如何解决? 有人告诉我在一个游戏中以不同的比例使用像素画法是“不好的”-为什么? 例如,如果我按比例放大角色,则每个精灵纹理像素为4x4屏幕像素,而我的背景艺术按比例放大,因此每个精灵纹理像素为6x6屏幕像素。一天结束时像素不是像素吗?
13 scale  pixel-art 

2
如何避免编写Manager类?
我似乎一直在读,XxxManager在游戏引擎编程中使用样式类是一个坏主意,但是即使我尝试避免使用样式类,我也总是最终得到可以容纳所有参与者/实体/游戏世界位置并对其进行操作的东西。最终成为Manager另一个名字的if。 这真的是一个不好的模式吗?如果是这样,有哪些替代方案?

2
将许多小碰撞器组合成更大的碰撞器
我正在使用由数千个网格正方形组成的图块地图创建游戏。目前,每个广场上都有一个广场对撞机,用于检查碰撞。 但是,对于成千上万个微小的块,检查它们是否全部碰撞是低效率的。如果我事先知道tilemap看起来像这样,那么我可能只使用了3或4个大型对撞机,而不是数千个小型对撞机: 是否存在某种标准算法,可将许多小相邻的小块合并为最大的小块?如果是这样,有人可以在这里描述它,还是指向有关这种算法的文献? 另外,也许以这种方式预处理瓦片碰撞器完全是错误的方法。如果是这样,应对大量对撞机效率的正确方法是什么?

2
如何使我的2D角色正常站立在斜坡上?
我已经在Unity3D(2D模式)中得到了这个角色...在一个看起来像这样的坡度中, 但是我希望角色沿着红线站立。 如何在Unity3d中制作? 我有这个设置。 我正在使用简单的Addforce进行运动...如果删除z位置约束,则会导致奇怪的运动,如滚动等等。

5
如何在Unity Inspector中创建切换按钮?
我想创建一个类似于Unity地形工具的工具,该工具在检查器中具有一些不错的切换按钮: 如何实现与此类似的设计?我知道如何在检查器中创建普通按钮和其他UI组件,但是我找不到足够的信息来使按钮切换。 到目前为止,我已经使用了产生复选框的普通切换: var tmp = EditorGUILayout.Toggle( SetAmountFieldContent, _setValue ); if ( tmp != _setValue ) { _setValue = tmp; if ( _setValue ) _smoothValue = false; } tmp = EditorGUILayout.Toggle( SmoothValueFieldContent, _smoothValue ); if ( tmp != _smoothValue ) { _smoothValue = tmp; if ( _smoothValue ) _setValue = …
13 unity 

1
如何防止视口拉伸/变形?
基本上,我想知道当视口/窗口大小改变时如何消除渲染图像的变形或拉伸。 下图举例说明了我正在谈论的变形/拉伸: 原始图像(方形窗口) 变形/拉伸图像(矩形窗口) 理想情况下,第二个图像应在不进行水平拉伸的情况下显示球体,并向用户显示更多场景,以说明更大的窗口大小。 如何才能做到这一点? 我正在使用OpenGL渲染图像,并且通过调用使用了透视投影: glMatrixMode(GL_PROJECTION) glLoadIdentity() gluPerspective(60, window.width/window.height, 0.01f, 100.0f) 纵横比width/height与我遇到的所有文档/教程一致,因此我并不认为它是错误的。但是,我怀疑它正在影响拉伸问题。 经过思考 老实说,随着我对这个问题的思考越来越多,我相信解决方案涉及到弯曲(y方向上的视场)角度与纵横比之间的直接比例关系。 使用上面的图像作为参考,如果宽度增大(导致水平拉伸),则必须增加fovy角度以引起垂直拉伸,从而“固定”渲染图像的比例,这似乎是很合理的。 同样,宽度的减小要求减小凹角。 更新: 因此,在进一步研究之后,我决定更改设置视锥的方法,如下所示: gluPerspective(60 * (float)window.width/window.height, (float)window.width/window.height, 0.01f, 100.0f) 我的期望是正确的,这解决了比例问题。但是,它没有达到我想要的结果。当窗口宽度增加时,渲染的图像变小(但球体确实是圆形的)。相反,球体根本不应该改变大小。仅显示的场景量应更改。

5
如何从全局坐标空间转换为局部空间?
给定一个名为的实体EntityA,我想定义一个局部坐标空间,其中的位置EntityA是原点,其航向矢量是X轴,航向矢量的法线是Y轴: 给定它们的全局坐标,我如何找到另一个实体在EntityA本地空间中的位置? 例如:EntityA的全局位置是(50,50),而的全局位置EntityB是(80,90)。那么EntityB在EntityA的本地空间中的位置是什么? 编辑:请轻松进行数学运算。


4
为什么将前向下鼠标方向通常称为“反转”?
如果您看一下允许您使用鼠标来控制相机的3D游戏(最著名的是第一人称和第三人称射击游戏),通常会发现两个具体细节: 默认情况下,向前推动鼠标会使相机向上看,向后拉则向下看。 反转此选项(前进=向下)称为“反转Y轴”或类似的选项。 我从不了解这一点,而且对我来说似乎总是倒退,以至于我在使用默认设置的任何游戏中都迷失了方向。从直观上看,显然鼠标(或更像是拇指棒,看起来像是坐在脖子上的头)正在为透视角色的头部建模。向左移动,您向左看。向右移动,您看起来正确。往前推,头往前推,你往下看...对吗? 实际上,这种方向是许多早期3D游戏(例如飞行模拟器,MechWarrior 2等)中的默认方向。但是在某些时候,它发生了变化,人们开始将直观方向称为“反转”并默认禁用它。 颠倒默认相机控制方向后,是否有任何历史原因?也许有任何文章介绍更改背后的原理,或者研究表明为什么进行此更改是理想的?

1
如何在实体/组件系统中处理物料
我的E / C实现是一种基本的实现,其中实体只是ID,组件是数据,系统根据数据进行操作。现在,我在处理对象材质和渲染时遇到了麻烦。对于简单的objetc,我有一个ModelComponent与绑定的RenderSystem,ModelComponent具有渲染系统使用的顶点缓冲区ID。一个简单的对象MaterialComponent可能具有颜色或镜面反射强度等,但是我希望它具有足够的灵活性,以允许多个渲染过程和一般的“效果”,而这些效果不如的简单变量那么容易MaterialComponent。 为了解决这些问题,我想出了两种解决方案: 1-超通用材料组件 像这样: struct Material : public Component { ShaderData* shader; std::vector<std::pair<std::string, boost::any>> uniforms; [...] }; 在渲染系统中,我将循环并将制服传递给着色器。我想这会很慢,但对于我的目的来说足够快了。 2-另一层抽象,MaterialData 有一个包装特定材料的类,该类可以由任何专门的材料继承,基类将具有类似的东西,void set_shader_constants(ShaderData* d)但是实现取决于每个类,并且MaterialComponent将具有一个指向MaterialData对象的指针。 我不确定我会选择哪种方法,但是这些方法都不涉及多次通过或其他复杂的渲染技术。 关于如何做到这一点的任何想法?

4
OpenGL多通道着色器如何工作?
在Direct3D中,多通道着色器易于使用,因为您可以从字面上定义程序中的通道。在OpenGL中,这似乎有点复杂,因为可以为着色器程序提供所需的任意数量的顶点,几何和片段着色器。 多遍着色器的流行示例是卡通着色器。一遍会产生实际的阴影效果,另一遍会创建轮廓。如果我有两个顶点着色器“ cel.vert”和“ outline.vert”,以及两个片段着色器“ cel.frag”和“ outline.frag”(类似于在HLSL中的处理方式),结合起来创建完整的卡通着色器? 我不想让您说可以使用几何着色器,因为我只想了解多通道GLSL着色器背后的理论;)
13 opengl  shaders  glsl 

2
有关在开源游戏中使用真实玩家姓名和团队标志的法律问题
我正在写体育管理模拟游戏。像大多数体育管理游戏一样,它大量使用统计数据。我想使用真实的球员,球队和联赛名称。 i)如果我应该使用真实姓名,是否冒着参加法律斗争的风险? ii)球队的颜色和标志等又如何? 更新 非常感谢您的所有投入!
13 legal 

4
如何处理2D游戏中的任意大图像?
题 当您拥有使用非常大图像(大于硬件可以支持的图像)的2D游戏时,该怎么办?也许对这个问题有一些有趣的解决方案,这在我之前从未发生过。 我基本上是在从事某种图形冒险游戏的制作。我的目标受众是几乎没有游戏开发(和编程)经验的人。如果您使用的是这样的应用程序,是不是更希望它在内部处理问题而不是告诉您“拆分图像”? 语境 众所周知,图形卡对其可使用的纹理大小施加了一组限制。例如,使用XNA时,取决于您选择的配置文件,最大纹理大小被限制为2048或4096像素。 通常,在2D游戏中这不会带来太大问题,因为大多数游戏都具有可以由较小的单个块(例如,图块或变形的精灵)构建的关卡。 但是,请考虑一些经典的点按式图形冒险游戏(例如Monkey Island)。图形冒险游戏中的房间通常是整体设计的,很少或没有可重复的部分,就像画家在风景上一样。或像《最终幻想7》这样的游戏使用了大型的预渲染背景。 这些房间中的一些可能会变得很大,经常跨越三个或更多屏幕宽度。现在,如果我们在现代高清游戏的背景下考虑这些背景,它们将很容易超过最大支持的纹理大小。 现在,解决此问题的明显方法是将背景分成适合需求的较小部分,并排绘制。但是,您(或您的艺术家)是否应该成为拆分所有纹理的人? 如果您使用的是高级API,它是否应该准备好应对这种情况并在内部进行纹理的拆分和组装(作为XNA的内容管道等预处理程序或在运行时进行)? 编辑 从XNA实现的角度来看,这就是我的想法。 我的2D引擎只需要Texture2D功能的很小一部分。我实际上可以将其简化为以下接口: public interface ITexture { int Height { get; } int Width { get; } void Draw(SpriteBatch spriteBatch, Vector2 position, Rectangle? source, Color color, float rotation, Vector2 origin, Vector2 scale, SpriteEffects effects, float layerDepth); } 我使用的唯一依赖Texture2D的外部方法是SpriteBatch.Draw(),因此我可以通过添加扩展方法在它们之间建立桥梁: public …
13 xna  c#  2d  graphics  textures 

7
什么是存储tilemap数据的好方法?
我正在与一些uni朋友一起开发2D平台游戏。我们基于XNA Platformer入门工具包,该工具包使用.txt文件存储切片地图。尽管这很简单,但是它在关卡设计中并没有给我们足够的控制和灵活性。例如:对于多层内容,需要多个文件,每个对象都固定在网格上,不允许旋转对象,限制字符数等。因此,我正在研究如何存储关卡数据和地图文件。 这仅涉及切片图的文件系统存储,而不涉及游戏运行时要使用的数据结构。瓦片贴图已加载到2D数组中,因此此问题与填充数组的源有关。 DB的推理:从我的角度来看,我发现使用数据库存储切片数据的数据冗余较少。具有相同特征的相同x,y位置的图块可以在各个级别之间重复使用。似乎很容易编写一种方法来从数据库中检索特定级别中使用的所有切片。 JSON / XML的推理:视觉上可编辑的文件,可以通过SVN轻松跟踪更改。但是有重复的内容。 与另一个相比,它们是否有任何缺点(加载时间,访问时间,内存等)?以及行业中常用的是什么? 当前文件如下所示: .................... .................... .................... .................... .................... .................... .................... .........GGG........ .........###........ .................... ....GGG.......GGG... ....###.......###... .................... .1................X. #################### 1-玩家起点,X级出口,。-空的空间,#-平台,G-宝石
13 xna  c#  xml 

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.