游戏开发

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

4
在2D游戏中使用3D引擎的利弊是什么?[关闭]
关闭。这个问题是题外话。它当前不接受答案。 想改善这个问题吗? 更新问题,使它成为Game Development Stack Exchange 的主题。 3年前关闭。 在决定2D游戏引擎(例如Slick2D / Flixel / FlashPunk)和3D引擎(例如Unity)进行2D游戏开发时,初学者应该注意哪些利弊? 尽管我过去曾涉猎Game Maker,Flash和XNA,但我才刚刚开始从事独立游戏开发。我听说过很多有关Unity的正面信息,它的跨平台特性使其更具吸引力,但据我了解,它是3d引擎的核心。 对于严格的2d游戏,是否有令人信服的理由使用Unity等3d引擎?还是会为我的初次学习体验增加不必要的复杂性?
16 2d  3d 

1
在Mac OSX上使用PS3控制器进行输入
我设法找到一个USB驱动程序以连接到OSX中的PS3控制器,并且如此处所述,可以通过蓝牙连接到该控制器。 我已验证输入是否可以通过Snes9x正常工作。 无论如何,这只是我实际问题的背景。在Mac上,是否可以通过C ++访问PS3 HID?对于使用XCode在Mac上进行C ++开发的人来说,我还比较陌生,而对于寻找可能要使用的库,互联网一直令人失望。 是否有人对如何访问代码中的控制器按钮/轴状态有任何想法,以便可以将其传输到输入映射?

6
在哪里雇用2D Sprite艺术家?[关闭]
按照目前的情况,这个问题不适合我们的问答形式。我们希望答案会得到事实,参考或专业知识的支持,但是这个问题可能会引起辩论,争论,民意调查或扩展讨论。如果您认为此问题可以解决并且可以重新提出,请访问帮助中心以获取指导。 7年前关闭。 我正在寻找高质量的原始2D精灵集合,并在适当的位置进行动画处理。(即我不仅可以购买收藏,我们还需要原创作品)。 我在网上看过,但正在努力寻找在哪里可以雇用这样的人! 我在哪里可以找到这样的人? 我应该付多少钱?
16 sprites  hiring 

3
是否有任何文档比较/对比C ++标准库的实现?[关闭]
关闭。这个问题是题外话。它当前不接受答案。 想改善这个问题吗? 更新问题,使其成为话题成为Game Development Stack Exchange。 4年前关闭。 (这本身不是游戏编程,但是我确定如果我这样问我,即使历史告诉我们每个大型游戏最终都担心这些事情,我还是被告知不要过早优化。) 是否有文档可以总结不同C ++标准库实现之间的性能差异,尤其是内存使用情况?一些实现的细节受到NDA的保护,但是即使是STLport与libstdc ++,libc ++与MSVC / Dinkumware(相对于EASTL)之间的比较似乎也非常有用。 我特别在寻找以下问题的答案: 标准容器有多少内存开销? 什么容器(如果有的话)仅通过声明进行动态分配? std :: string是否在写时复制?短字符串优化?绳索? std :: deque使用环形缓冲区还是废话?

4
我可以在哪里发布Windows独立游戏?[关闭]
已关闭。这个问题是基于观点的。它当前不接受答案。 想改善这个问题吗?更新问题,以便通过编辑此帖子以事实和引文回答。 6年前关闭。 我刚刚完成了Windows Phone 7和XBLIG的XNA游戏。目前,该游戏是“精简版”版本,因此是免费的,但下一个版本的价格不菲。 我也做了Windows版本。最好的发布地点在哪里?
16 xna  xbox360 

1
故意造成不精确的复古/ NES风格物理学
背景: 我在为我的复古Platformer重制项目获得正确的跳跃曲线时遇到问题。原始游戏适用于NES,玩家的速度存储在两个独立的部分中:一个字节代表整数,另一个字节代表小数部分。 重力以0.25 /帧的速率添加到播放器的Y速度。 玩家跳跃时,其Y速度设置为-4.64453125。其余的跃迁曲线留给重力。 随着玩家的上升,他的垂直速度以0.25 /帧的速率收敛到0。但是,当玩家的速度达到小于零的值时,速度会按照不同的模式变化。它遵循以下模式,而不是每帧稳定减少0.25: [1.75, -0.25, -0.25, -0.25, 1.75, -0.25, -0.25, -0.25, 1.75, ...] 它似乎与整数溢出有关。 数据: 这是原始数据的转储。这是速度表。 Jump Curve Y-Hi Y-Lo Decimal Change/Frame 4 165 4.64453125 ? 4 101 4.39453125 -0.25 4 37 4.14453125 -0.25 3 229 3.89453125 -0.25 3 165 3.64453125 -0.25 3 101 3.39453125 -0.25 …

6
您如何并行化二维Boids模拟
您如何以这样的方式编写2D boids仿真程序,使其可以使用来自不同来源(群集,gpu)的处理能力。 在上面的示例中,无色粒子四处移动,直到它们聚集(黄色)并停止移动。 问题是,尽管左上方的实体不太可能与右下方的实体进行交互,但所有实体都可能彼此交互。如果将域划分为不同的段,则可能会加快整个过程的速度。但是,如果实体希望跨入另一个段,则可能会出现问题。 目前,该仿真可用于具有良好帧速率的5000个实体,如果可能,我想尝试使用数百万个实体。 可以使用四叉树进一步优化吗?还有其他建议吗?

6
2D游戏中的对象应该渲染吗?
我正在制作不是基于图块的2D街头霸王般的游戏。通常人们建议将实体提供给渲染它们的渲染器,而不是渲染它们自己,但是看起来反函数更好, 为什么一个比另一个更好? 谢谢
16 c++  rendering 

7
我需要为我的未来职业提供建议[关闭]
按照目前的情况,这个问题不适合我们的问答形式。我们希望答案会得到事实,参考或专业知识的支持,但是这个问题可能会引起辩论,争论,民意调查或扩展讨论。如果您认为此问题可以解决并且可以重新提出,请访问帮助中心以获取指导。 6年前关闭。 我16岁。我正在计划自己的未来事业,我正站在门口,不知道走哪条路。 我的梦想是创造有史以来最好的游戏。在我成长的过程中,我开始注意到,我对游戏的热情在整整十年中并未消失,并且仍在/仍在增长...对于父母和家人朋友来说,游戏开发似乎仍然太“幼稚”他们说我应该研究更认真的东西。 我并不完全知道我能做什么和我想做什么。我知道PHP,C ++(今年将是我在学校学习这种编程语言的第二年),JavaScript和HTML。我做了很多网站设计,但是,它们实际上并不是真正可以称为专业设计的东西……我正在学习矢量图形,3D建模,音乐制作……我曾尝试制作过几次游戏,但我没有还什么都没做... 还有...嗯...没有电脑我就可以...嗯,我可以做煎饼...还有...我想洗碗吗? 我正在为学校编写基于控制台的C ++游戏,作为我的暑期项目,我想这将是我第一个从头开始制作的实际游戏(另一个是Game Maker 6中的简单拖放实验)。 这些怀疑什么,我可以真正做到不能让我决定我是否应该研究有关游戏开发的东西... 因此,很高兴知道如何摆脱这些疑虑,并对我想从事的职业(无论是否从事游戏)有更强的见解。
16 career 

2
有关游戏架构/设计模式的建议
我一直在研究2D RPG,有一段时间了,我发现自己做出了一些糟糕的设计决定。特别是有些事情引起了我的问题,所以我想知道其他人过去曾使用或将采用哪种设计。 作为一点背景,我从去年夏天的业余时间开始研究它。我最初使用C#进行游戏,但是大约3个月前,我决定切换到C ++。自从我大量使用C ++以来,我一直想对C ++有所了解,并且认为像这样的有趣项目将是一个很好的动力。我一直在广泛使用boost库,并且一直在将SFML用于图形,将FMOD用于音频。 我写了很多代码,但是我正在考虑废弃它并重新开始。 这是我关注的主要领域,并希望就其他人已解决或将要解决的正确方法获得一些意见。 1.周期性依赖 当我做在C#中的比赛中,我并没有真的要这个担心,因为它不是一个问题存在。转向C ++,这已经成为一个相当大的问题,让我觉得我可能设计不正确。我真的无法想象如何解耦我的班级,仍然让他们做我想要的事情。以下是依赖链的一些示例: 我有一个状态效果课。该类有许多方法(应用/取消应用,刻度线等)将其效果应用于角色。例如, virtual void TickCharacter(Character::BaseCharacter* character, Battles::BattleField *field, int ticks = 1); 每当角色受到状态影响时,都会调用此函数。它可用于实现诸如Regen,Poison等的效果。但是,它也引入了对BaseCharacter类和BattleField类的依赖。自然,BaseCharacter类需要跟踪当前对它们起作用的状态影响,因此这是周期性的。《战地风云》需要跟踪战斗方,并且该方类别有一个引入了另一个周期性依赖关系的BaseCharacters列表。 2-活动 在C#中,我大量使用了委托来勾勒角色,战场等事件(例如,当角色的健康状况发生变化,状态更改,状态效果被添加/删除时,都有一个委托。 )和战场/图形组成部分将与这些代表挂钩,以增强其效果。在C ++中,我做了类似的事情。显然,没有直接等效于C#委托的东西,所以我创建了如下代码: typedef boost::function<void(BaseCharacter*, int oldvalue, int newvalue)> StatChangeFunction; 在我的角色课上 std::map<std::string, StatChangeFunction> StatChangeEventHandlers; 每当角色的状态更改时,我都会迭代并调用地图上的每个StatChangeFunction。虽然有效,但我担心这是做事的不好方法。 3-图形 这是大事。它与我正在使用的图形库无关,但更多是概念上的。在C#中,我将图形与很多类结合在一起,我知道这是一个糟糕的主意。这次我想做到这一点,所以尝试了另一种方法。 为了实现我的图形,我将游戏中与图形相关的所有图形想象为一系列屏幕。即有一个标题屏幕,一个角色状态屏幕,一个地图屏幕,一个清单屏幕,一个战斗屏幕,一个战斗GUI屏幕,基本上,我可以根据需要将这些屏幕彼此叠加以创建游戏图形。无论活动屏幕是什么,都拥有游戏输入。 我设计了一个屏幕管理器,可以根据用户输入推送和弹出屏幕。 例如,如果您在地图屏幕上(平铺地图的输入处理程序/可视化器)并按下了“开始”按钮,则会向屏幕管理器发出呼叫,将主菜单屏幕推到地图屏幕上并标记地图屏幕无法绘制/更新。播放器将在菜单中导航,这将酌情向屏幕管理器发出更多命令,以将新屏幕推送到屏幕堆栈上,然后在用户更改屏幕/取消按钮时弹出它们。最后,当播放器退出主菜单时,我将其弹出并返回到地图屏幕,将其标记为要绘制/更新并从那里去。 战斗画面会更加复杂。我将有一个屏幕作为背景,一个屏幕使战斗中的每个参加者形象化,以及一个屏幕来使战斗的UI形象化。UI将挂接到角色事件中,并使用这些事件来确定何时更新/重绘UI组件。最后,每一次具有可用动画脚本的攻击都将在弹出屏幕堆栈之前调用一个附加层来对其自身进行动画处理。在这种情况下,每一层都始终标记为可绘制和可更新,并且我得到了一堆处理我的战斗图形的屏幕。 尽管我还无法使屏幕管理器正常工作,但我认为可以花一些时间。我的问题是,这是否完全值得?如果这是一个糟糕的设计,我想在投入太多时间制作我需要的所有屏幕之前先了解一下。您如何为游戏建立图形?
16 c++  architecture  rpg 

3
按顺时针顺序对点数组进行排序
有没有一种算法可以按顺时针顺序对2D点数组进行排序? 在我的情况下,我专门处理直角三角形,所以只有3分。 但是我有兴趣知道是否存在这样的算法,如果不存在,那么按顺时针方向返回三角形的3个点的简单方法是什么? 编辑:我正在尝试相对于多边形的质心顺时针计算点,它是凸的。 更新: 这是我根据选择的答案最终使用的实现,它对性能没有要求,只是偶尔发生一次,因此可以解决。 ArrayList<PVector> pointList = new ArrayList<PVector>(); pointList.add(A); pointList.add(B); pointList.add(C); Collections.sort( pointList, new TriangleVectorComparator(origin) ); return pointList; // Comparator package triangleeditor; import java.util.Comparator; import processing.core.PVector; public class TriangleVectorComparator implements Comparator<PVector> { private PVector M; public TriangleVectorComparator(PVector origin) { M = origin; } public int compare(PVector o1, …

2
实施3D碰撞的最佳/高效方法
我已经为之前的游戏编写了一个基于2d的碰撞系统。这是我的第一个碰撞系统,而且丑陋。我通过检查所有对象与所有对象来寻找对象之间的碰撞。我已经听说过带有单元格的网格系统,其中一个对象只会看起来与其当前单元格中其他对象的碰撞。这真的是检查碰撞的好方法吗? 我想要一种好的技术来循环遍历3D世界中的所有物品。

2
设计基于组件的游戏
我正在写一个射击游戏(例如1942年,经典的2D图形),我想使用基于组件的方法。到目前为止,我考虑了以下设计: 每个游戏元素(飞艇,弹丸,加电,敌人)都是一个实体 每个实体都是一组可以在运行时添加或删除的组件。例如位置,雪碧,健康,IA,损坏,边界框等。 这个想法是飞艇,弹丸,敌人,威能不是游戏类。实体仅由其拥有的组件定义(并且可以随时间变化)。因此,玩家飞艇从Sprite,Position,Health和Input组件开始。上电有Sprite,Position,BoundingBox。等等。 主循环管理游戏“物理”,即组件之间如何交互: foreach(entity (let it be entity1) with a Damage component) foreach(entity (let it be entity2) with a Health component) if(the entity1.BoundingBox collides with entity2.BoundingBox) { entity2.Health.decrease(entity1.Damage.amount()); } foreach(entity with a IA component) entity.IA.update(); foreach(entity with a Sprite component) draw(entity.Sprite.surface()); ... 组件在主C ++应用程序中进行了硬编码。实体可以在XML文件中定义(lua或python文件中的IA部分)。 主循环对实体并不太在意:它仅管理组件。该软件设计应允许: 给定一个组件,获取它所属的实体 给定一个实体,获取类型为“ type”的组件 …

3
在Unity3D中抓取和爬升壁架
我刚开始一个新项目。在此项目中,主要的游戏机制之一是,您可以在关卡中的某些点上抓住壁架并坚持下去。 现在是我的问题,因为我已经为此花了很长时间了。我实际上如何实现呢?我已经尝试过使用动画了,但是这真的很丑,因为播放器会捕捉到动画开始的某个点。

1
阴影贴图文物
我想尝试为3D XNA游戏添加阴影。我已经用一盏灯和一台摄像机设置了一些测试环境。但是,我的方法遇到了工件。 我使用来自http://pastebin.com/zXi0hmsU的着色器代码渲染最终结果,并使用http://pastebin.com/rY4Gcj9N创建阴影贴图。该代码非常简单,涉及从灯光角度生成深度图,然后将其投影到相机空间并检查遮挡。 但是,从大多数角度来看,我得到的结果都很丑陋 场景由一些简单的立方体(手动构造,面向外部,背面被剔除),一盏灯(左上角所示的阴影图-看起来还可以)和一台摄像机组成。 我的阴影贴图的RenderTarget初始化为 int shadowMapSize = 512; RenderTarget2D shadowMap = new RenderTarget2D(GraphicsDevice, shadowMapSize, shadowMapSize, true, GraphicsDevice.PresentationParameters.BackBufferFormat, DepthFormat.Depth24Stencil8); GraphicsDevice.SetRenderTarget(shadowMap); GraphicsDevice.Clear(Color.White); GraphicsDevice.DepthStencilState = DepthStencilState.Default; 然后,应用该CreateShadowMap效果,然后应用LambertWithShadows效果。最后,使用绘制阴影图SpriteBatch。 其余代码仅包含为着色器提供正确的值。如有必要,我可以提供。

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.