游戏开发

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

4
如何在贝塞尔曲线上实现均匀的移动速度?
我正在尝试沿贝塞尔曲线移动图像。这是我的方法: - (void)startFly { [self runAction:[CCSequence actions: [CCBezierBy actionWithDuration:timeFlying bezier:[self getPathWithDirection:currentDirection]], [CCCallFuncN actionWithTarget:self selector:@selector(endFly)], nil]]; } 我的问题是图像移动不均匀。刚开始时它运行缓慢,然后逐渐加速,最后它运行得非常快。我应该怎么做才能摆脱这种加速?

3
如何为许多独特的武器/法术/能力构建代码
我是一个没有经验的程序员,使用Python(类似于Pogue,到目前为止还没有PyGame,因为我仍然只关注文本),因此在FTL的背景下创建了“类似Roguelike”的游戏。 我的游戏将包含大量产生独特能力的武器(入门者约为50种)。我正在努力了解如何以既强大(就允许武器产生根本不同的效果)又具有可扩展性(以便以后可以通过将它们放入文件夹等方式添加更多武器)的方式来构造目标代码。 )。 我的第一个本能是拥有BasicWeapon类,并从该类继承不同的武器。但是,这对我来说似乎是个问题:要么我必须使BasicWeapon类变得如此准系统以至于它基本上是无用的(所有武器共有的唯一功能就是名称和类型(手枪,斧头等)),或者我必须预测每个我将想出独特的效果并将其编码到BasicWeapon中。 后者显然是不可能的,但是前者仍然可以工作。但是,这给我留下了一个问题:我应该将单个武器的代码放在哪里? 我是否要创建plasmarifle.py,rocketlauncher.py,swarmofbees.py等,然后将它们全部放入游戏可以导入它们的文件夹中? 还是有一种方法可以拥有一个数据库样式的文件(也许像Excel电子表格一样简单),而该文件却以某种方式包含每种武器的唯一代码-无需求助于eval / exec? 关于后一种解决方案(数据库),我认为我正在努力解决的基本问题是,尽管我理解保持代码和数据之间的分离是可取的,但我觉得武器模糊了“代码”之间的界限和“数据”一点;它们代表了可以在游戏中找到的各种各样类似的事物,从某种意义上说,它们就像数据一样,但是它们中的大多数将至少需要一些不与其他任何项目共享的唯一代码,从某种意义上说,它们自然就是码。 我在此站点的其他地方找到的部分解决方案建议给BasicWeapon类提供一堆空方法-on_round_start(),on_attack(),on_move()等-然后为每种武器覆盖这些方法。在战斗周期的相关阶段,游戏将为每个角色的武器调用适当的方法,并且只有定义了方法的对象才会实际执行某项操作。这会有所帮助,但仍然无法告诉我每个武器的代码和/或数据应该放在哪里。 有没有其他语言或工具可以用作半数据,半代码嵌合体?我是否完全掌握了良好的编程习惯? 我对OOP的理解充其量只是个粗略的知识,所以我希望对那些不太计算机科学的回答表示赞赏。 编辑:沃恩·希茨(Vaughan Hilts)在下面的帖子中明确指出,我本质上讲的是数据驱动编程。我的问题的实质是:我如何以一种数据可以包含脚本的方式实施数据驱动的设计,从而使新武器能够在不更改主程序代码的情况下做新事情?

4
寻找有关以下方面的文章/书籍:游戏如何赚钱?他们使用什么型号?
我正在尝试研究游戏赚钱的方式。我想了解更多有关他们使用的模型的信息(免费/高级,试用/订阅,可免费使用微交易等)。此外,我还需要有关哪些型号适用于哪些游戏,哪种型号最适合哪些年龄段的信息,等等。 我已经尽力寻找信息,而Google根本没有提供任何信息。我想我会去我大学的图书馆逛逛,看看那里是否有东西。 这似乎是一个广泛的问题,但我正在寻找书籍的链接和书名,而不是打字输入的答案。



4
构建3D地形编辑器时该从哪里开始?[关闭]
关闭。这个问题是题外话。它当前不接受答案。 想改善这个问题吗? 更新问题,使它成为Game Development Stack Exchange 的主题。 4年前关闭。 我正在寻找构建(作为开始)一个简单的工具,该工具可以升高,降低,平滑和纹理化地形。 那么,要做这样的地形编辑器我需要经历什么? 也许有关于该主题的宝贵资源可用? 是的,忘记了,我对3D地形编辑器感兴趣。

2
制作游戏创意原型的好方法?[关闭]
已关闭。这个问题是基于观点的。它当前不接受答案。 想改善这个问题吗?更新问题,以便通过编辑此帖子以事实和引用的形式回答。 2年前关闭。 与我的4人独立小组一样,我们有一个整个白板,看起来像涂鸦,可以用来制作我们的游戏创意原型。我们每天都在研究它,并选择在接近开始新项目时最能吸引我们的想法。我们还会随机绘制看起来有趣的角色,即使他们没有与之相关的游戏玩法。这是可行的,但似乎并不总是能使我们对我们的想法有最好的理解。我们尝试了一个规则,即如果您提出了一个游戏创意,请构建一个非常基本的原型并向我们展示,但这也浪费了时间。 因此,我的问题是“什么是原型游戏创意的好方法”。我们需要在传达想法与不跳过想法之间保持平衡,因为我们不了解它,同时又不浪费时间建立大量永远不会被触及的想法。什么是描述游戏玩法,艺术感,特色,受众等主要方面的有效方法。

5
超越“新手”游戏项目
我读这个答案对数学的类型游戏开发者应该知道,这部分真正站出来为我说: How do I move my game object? The novice might say: "I know! I'll just do:" object.position.x++. 我就是这么想的,所以我想这表明了我的技能水平。至少对于我过去制作的2D横向滚动,街机风格的游戏,这就是我所需要的。那和一点三角学。 实际上,在阅读该文章之前,我并没有使用太多线性代数,甚至没有听说过四元数。是因为这些数学在您使用3D之前不会出现,还是因为我的2D游戏相当简单,所以我摆脱了幼稚的实现。 后续问题:如果我想熟悉那种数学,应该从事哪种类型的项目?IE:编写游戏引擎,开发3D游戏等。

1
静态和动画3D模型的文件格式
此问题是从Stack Overflow 迁移而来的,因为可以在Game Development Stack Exchange上回答。 迁移 8年前。 我目前正在使用C ++和OpenGL编写3D游戏,而我即将加载3D模型。因此,我正在寻找流行的文件格式和技术来 显示静态网格物体和 渲染动画网格。 我已经发现了很多可能的格式和技术,例如关键帧动画,骨骼动画,MD2到MD5、3DS,X,Collada等。 为了简单起见,我想使用一种允许同时使用的格式(和技术),即静态和动画网格。所以我的问题是,是否有一种格式适合该任务,您建议使用哪种格式。并澄清一下:我不需要超平滑动画或全新功能。 旁注:因为我是搅拌机爱好者(但不是专家;-),所以可以将其与之配合使用-但这当然不应该成为表演的障碍。
22 c++  opengl 

3
MMO中与服务器的低流量客户端同步
我正在实施MMO,玩家将在其飞船上的太空中飞行,并使用箭头键控制它并与其他玩家合作。 我想实现它,以便玩家可以躲避火箭或其他东西躲避飞船,所以我试图使用与服务器使用相同的世界模拟算法来预测客户端的整个游戏状态。该游戏世界是用C#编写的,将直接在客户端内部调用(在Unity3D上编写),并通过C ++服务器上的CLR(在Linux下)调用。通过UDP连接。 问题是如何在单个地图上维护1000名玩家(不包括所有其他游戏对象,生物……):假设我将: 每秒将服务器与客户端同步50次 向每个客户发送他能够看到的游戏对象(和玩家)的状态(在一定范围内) 必须在视野范围内向每个玩家发送100个对象 每个游戏对象必须平均发送50个字节(ID,x,y坐标,旋转,状态...) 因此,它将需要具有这样的网络带宽:1000(客户端)* 50(每秒的次数)* 100(要发送给每个播放器的对象)* 50(每个对象的字节数)=每秒250000000字节!不可能! 是否可以通过某种方式降低此值?例如,让客户端完全模拟他们的游戏世界(很长一段时间),然后仅向其他客户端发送输入并同步游戏世界,比如说,每隔几秒钟,但这会由于浮动计算而导致奇怪的不同步问题。 无论如何,如何以通用方式对此类游戏进行编程?谢谢。

4
随机产生的故事
目前,我正在开发一款游戏,我知道随着玩家的前进,游戏的故事情节会随机生成,并且他们的行为会影响故事。 就游戏玩法而言,这将是一个坏主意,还是具有多个结局的故事情节是最佳主意?

3
暴雪如何在游戏中支持Mac OS和Windows?[关闭]
关闭。这个问题是题外话。它当前不接受答案。 想改善这个问题吗? 更新问题,使它成为Game Development Stack Exchange 的主题。 2年前关闭。 我一直认为,使用Direct X for Windows是当今使用现代图形创建游戏的最强大,最简便和最现代的方法。我知道这只是Windows,所以我认为在其他平台上制作类似的东西非常困难。确切地说,是Mac OS。但是,暴雪设法以某种方式提供了适用于Mac OS的Starcraft 2,而《暗黑破坏神3》也将适用于Mac。 因此,我感兴趣的是有关以下信息: 他们在游戏引擎中使用了哪些技术? 他们是否在两个游戏(《星际争霸2》和《暗黑破坏神3》)中都使用一个引擎,还是为每个游戏开发自定义引擎? 他们在时间和金钱上为Mac OS支持付出了什么?
22 windows  macos 

4
我的物理引擎中更新问题的动量和顺序
这个问题是我上一个问题的“后续”问题,涉及到碰撞检测和解决,您可以在这里找到。 如果您不想阅读上一个问题,这里是有关我的物理引擎如何工作的简短描述: 每个物理实体都存储在称为SSSPBody的类中。 仅支持AABB。 每个SSSPBody存储在一个名为SSSPWorld的类中,该类更新每个身体并处理重力。 每帧,SSSPWorld都会更新每个身体。 每个更新的实体都在空间哈希中查找附近的实体,检查是否需要检测与它们的碰撞。如果是,它们将调用“碰撞”事件并检查是否需要解决与其之间的冲突。如果是,他们将计算穿透矢量和方向重叠,然后更改其位置以解决穿透问题。 当一个物体与另一个物体碰撞时,只需将其速度设置为自己的速度即可将其速度传递给另一个物体。 如果从上一帧起未更改位置,则将物体的速度设置为0。如果它也与移动的物体(例如升降机或移动的平台)相撞,则会计算升降机的运动差,以查看物体是否尚未从其最后位置移动。 同样,当一个实体的所有AABB角与某帧中的某些内容重叠时,它会引发“压碎”事件。 这是我的游戏的完整源代码。它分为三个项目。SFMLStart是一个简单的库,用于处理实体的输入,绘制和更新。SFMLStartPhysics是最重要的类,其中SSSPBody和SSSPWorld类位于其中。PlatformerPhysicsTest是游戏项目,包含所有游戏逻辑。 而这是在SSSPBody类,评论和简化了“更新”的方法。如果您不想看整个SFMLStartSimplePhysics项目,则只能看一下。(即使这样做,您也应该看看它,因为它已被注释。) .gif显示两个问题。 如果将实体放置在不同的顺序中,则会发生不同的结果。左侧的板条箱与右侧的板条箱相同,只是以相反的顺序放置(在编辑器中)。 两个板条箱都应朝屏幕顶部推进。在左边的情况下,没有箱子被推进。在右边,只有其中之一是。两种情况都是意外的。 第一个问题:更新顺序 这很容易理解。在左侧的情况下,最上面的板条箱先于另一个板条箱被更新。即使底部的板条箱将速度“传递”到另一个板条,它也需要等待下一帧移动。由于它没有移动,因此底部木箱的速度设置为0。 我不知道如何解决此问题。我希望解决方案不依赖于“排序”更新列表,因为我觉得我在整个物理引擎设计中做错了什么。 主要的物理引擎(Box2D,Bullet,花栗鼠)如何处理更新顺序? 第二个问题:只有一个板条箱被推向天花板 我还不明白为什么会这样。“弹簧”实体的作用是将物体的速度设置为-4000,然后将其重新放置在弹簧本身的顶部。即使禁用重新定位代码,该问题仍然会发生。 我的想法是,当底部板条箱与顶部板条箱发生碰撞时,其速度设置为0。我不确定为什么会这样。 尽管有机会看起来像放弃第一个问题的人,但我在上面发布了整个项目的源代码。我没有任何东西可以证明这一点,但是相信我,我努力解决了这个问题,但是我找不到解决方案,并且我以前没有任何物理和碰撞方面的经验。我一直在努力解决这两个问题超过一个星期,现在我很绝望。 我认为如果不从游戏中剥离许多功能(例如,速度传递和弹簧),就无法找到解决方案。 非常感谢您花时间阅读此问题,如果您甚至想提出解决方案或建议,也要多谢。

5
C#是否适用于实时游戏服务器?[关闭]
关闭。这个问题是题外话。它当前不接受答案。 想改善这个问题吗? 更新问题,使它成为Game Development Stack Exchange 的主题。 5年前关闭。 大部分问题都在标题中。 基本上,我将开始开发2D多人动作游戏。客户端(可能)将使用XNA,我想在这里问一下使用C#进行服务器端开发是否是一个好主意。 我想管理语言是没有问题的,因为Java甚至在MMO游戏服务器中都在使用Java(如果我错了,请纠正我),那么出于这个目的有什么理由避免使用C#?我需要它快速且响应迅速,通过TCP进行通信,与SQL Server聊天。并且如果没有理由避免使用C#,我将如何部署这样的Web服务器,它将是在服务器计算机上运行的.NET EXE吗?
22 c#  server 

3
游戏机制列表[关闭]
已关闭。这个问题需要更加集中。它当前不接受答案。 想改善这个问题吗?更新问题,使其仅通过编辑此帖子来关注一个问题。 3年前关闭。 我正在尝试列出游戏机制列表,我的意思是指高级/元游戏机制,例如合作,资源管理,机会和时间操纵,而不是低级机制,例如奔跑,跳跃爬梯等。 有没有人有任何建议或可以指出我现有的良好清单?我的WIP清单已经证明对我思考游戏的方式非常有用。

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.