游戏开发与其他软件开发有何不同?[关闭]


18

对于扎实的通用软件开发人员而言,游戏开发在本质上或仅在程度上有什么不同?

我已经完成了井字游戏,俄罗斯方块和强力数独解算器(带有UI)之类的玩具游戏,而我现在正着手进行一个中等规模的项目(中等规模的项目是因为一个开发人员,没有我完成了许多游戏),而我在这个特定项目中发现的一件事是,关注点分离要困难得多,因为一切都会影响状态,并且每个对象都可以通过多种方式与其他对象进行交互。

到目前为止,我已经设法使代码保持合理的清洁度,以使我满意,但是我发现,在平凡的游戏中保持清晰的代码比日常工作要困难得多。

我正在开发的游戏是回合制的,并且图形将非常简单(基于Web,主要是通过DOM操作),因此实时和3D作品并不真正适用于我,但我仍然会如果有兴趣,对那些答案感兴趣。虽然最感兴趣的是一般游戏逻辑。

PS可以随意重新标记,我不确定是否可以使用哪些标记。

Answers:


23

有一个主要区别。我认为,这是唯一真正重要的区别。

当然,我们可以详细介绍为何与众不同的技术细节。3D引擎,粒子物理学和许多不同的事物都在起作用。

但是许多不同形式的软件都有附加的字符串。建模软件必须做很多相同的事情。每个重要的软件都有必须使用的一些专用库。

那么,什么让GAMES与众不同?

实际情况是:软件旨在满足业务需求。您要库存系统吗?您可以定义要处理的项目类型。您可以定义所需的生产计划。您可以做所有的事情。或者,如果您需要银行软件,则可以定义要使用的软件。

使用游戏,您的业务需求是“乐趣”。尝试编写“ fun”的技术规范。

以我作为开发人员的拙见,这就是使游戏不同于常规软件的原因。您根本不能说“太好了!该软件现已根据客户的要求完成!” 因为他们想做的就是玩得开心。

话虽这么说,您并不需要3D图形和奢侈的物理学来使事情变得有趣。人们为什么仍然玩俄罗斯方块?它的物理原理包括“向下移动块”,“不要让块超出范围”和“在遇到任何东西时停止块”,尽管多年来有很多版本,但有些版本的图形要比其他版本高,但是最重要的是- 很有趣!!

因此,如果您想成为一名出色的游戏开发人员,请不要抛弃作为常规软件开发人员所学的知识。它仍然是非常有用的东西。@Sion正确分离组件,就像在常规软件中一样。但是您可以添加到游戏中的最重要的功能就是乐趣。有趣的乐趣有趣的乐趣。这就是存在游戏开发的原因,这就是使游戏成功的前提。相信我,不管它玩起来有多有趣,它的乐趣至少是它的10倍!!

祝您游戏开发顺利!!:D


2
如果将“有趣”与“有用”交换,我认为您在设计产品时会遇到相同的问题(与为客户端编写软件相对)。我想虽然程度有所不同。人们有时对有用的东西是错误的,他们通常对使他们“有趣”的东西一无所知。(不过+1)
Davy8 2011年

1
关于成人电影业以及在60年代被归类为“硬核”的内容,有一个臭名昭著的最高法院裁决。法官说:“我永远无法成功地定义它,但是当我看到它时我就知道了。” 我认为可以说同样有趣。我的意思是,我可以记下自己喜欢的游戏知识,但经常会发现自己在玩游戏,并问自己:“什么让这很有趣?” (很显然,我想知道,所以我可以在自己的一款游戏中重新创建它!!)人们不知道是什么使某件事变得有趣,但他们一定知道他们何时发现它!
corsiKa 2011年

我真的很喜欢这篇文章。你说的没错。我真的很喜欢游戏开发,但是我并没有真正看到对“普通”人来说“乐趣”是什么。这样的结果是,我只做自己和像我这样的其他懒人喜欢的游戏:)
Phil

1
@Phil很好。如果您知道自己有什么好玩的,则必须记住,这个世界上只有几百个字符原型。环顾您的工作场所,并使您的同事的个性与您上过高中或大学的人相匹配。您会发现其中大多数可以匹配。因此,如果某件事对您来说很有趣,那么对更多人来说可能会比您想象的要有趣。诀窍是让他们了解游戏,以便他们享受游戏!
corsiKa 2011年

这是我到目前为止看到的最好的答案。关于软件业务利基创意等的文章很多,但是关于游戏开发的文章并不多。嗯
约翰尼,2016年

21

我主要是游戏开发人员,而不是传统的软件开发人员,但是我认为有几个主要区别。

这些显然是几个概括,而不是全面的:
更大的团队。不同的背景(艺术家,程序员,制作人,每一个都有更多的不同)。更长的开发周期。更高的性能标准。项目规模较大。更大,更昂贵的失败风险。环境压力更大。

至于对象交互和布局体系结构,您仍然可以适当地分离系统。您的游戏对象和行为显然会相互依赖并且与这些系统具有依存关系。这就是游戏的本质(双关语意),它将所有这些系统组合到一个单一的,有凝聚力的单元中,这没有错。似乎是这样,因为这一切的规模都比您惯常的大。

一些容易识别和隔离的系统?

  • 碰撞检测
  • 碰撞反应
  • 物理
  • 动画
  • 图形(2D和3D)
  • 人工智能
  • 用户输入
  • 文件输入/输出
  • 联网

+1可以很好地回答问题,即使对于我的特定游戏,我也不必处理大多数问题(基于回合和基于图块,因此没有真正的碰撞,没有物理现象,图形由精灵组成并且抛出了更多的JQuery当时是2人游戏,所以还没有AI,用户输入的处理方式大多是RESTful,也涵盖了网络方面。典型游戏需要哪种IO?
Davy8 2011年

4
我同意这篇文章的大部分内容,并从我这里得到+1,但我会质疑“更大,更昂贵的失败风险”这句话。如果您在银行,大型制造公司或流量非常高的网站上工作,那么由于故障而导致的故障每分钟停机数以十万计。在一个小时内,您损失(在销售损失,客户流失等方面)的损失可能会超过一些游戏开发商店几个月的总薪水。我并不是说它不可能很大,我只是说我不相信它比传统软件还要大。
corsiKa 2011年

@glowcoder我知道您在说什么,但我想我也理解Sion试图提出的观点,即对于游戏,整个项目通常是成功还是失败,通常这是您在回答中提到的一个因素: 好玩吗?您可以对错误进行热修复,但不能对缺少的乐趣进行热修复。
Davy8 2011年

3
我根本不相信“更大的团队”是正确的,即使是概括性的。当然,AAA游戏拥有强大的团队,但是等同于复杂性的非游戏软件产品也是如此。大量的游戏是由两个或三个人的个人或团队制作的。
彼得·泰勒

@ Davy8哦,如果游戏的商业成功与游戏的乐趣成正比。:)
tenpn 2011年

2

从很难选择正确的关注点的角度来看,我认为游戏编程与其他应用程序领域没有任何不同。每当您将技能带到不同类型的应用程序领域时,您都会发现过渡并不像您希望的那样顺利,因为总是存在差异。在数据库应用程序中有效的有许多模式/习惯用法在嵌入式应用程序中无法很好地工作,在嵌入式实时应用程序中,有许多模式/习惯用语无法很好地工作,实时系统还具有许多模式/习惯用语。在游戏编程中不起作用。但是,游戏程序员离开他们的游戏编程领域时也会遇到相同的问题。这只是您所习惯的问题。

话虽如此,我认为对于许多人来说,游戏编程似乎更难,因为它要求您使用计算机中大多数程序员在实际工作中从未处理过的部分(低级图形和声音)以及比许多应用数学更多的应用数学人们感到自在,而不是因为关注点分离。尽管始终难以确定正确的选择来分离关注点,但我认为您正在遇到的关注点分离困难仅在于转移到新的问题领域。一旦构建了几个应用程序,它便会变得与众不同,您将学到自己喜欢的东西,而不使用不喜欢的东西。


0

我在这个特定项目中发现的一件事是,关注点的分离要困难得多,因为一切都会影响状态,并且每个对象都可以通过多种方式与其他对象进行交互。

我认为您在这里有一个答案,互动很多。我用XNA(C#)制作了几款游戏,现在我正在做一个中型游戏,就像您说的那样,是一种策略模拟游戏,现在已经进行了将近2个月的研究,而且我是独自一人做的,没有帮助,所以我必须保持我的代码简单。我认为,一个巨大的区别是理解和设计了一些功能类,而另一些则用于绘图,这有助于并使程序更整洁。当然,如果您正在玩游戏,则需要拥有更多资源,例如图像(2d或3d)和音乐(或声音)。因此,存在一些差异,我认为这比较困难,但非常有趣。


0

我认为游戏编程更有趣。您可以不断测试您的游戏,实现不同的物理学,从而导致不同的行为。

根据我的经验,与软件开发相比,游戏编程实际上要有趣得多。在软件开发中,您需要遵守某些业务规则,这很无聊。您正在创建一个软件,它并不有趣。使用软件很棒,有用,有用,但并不有趣。

游戏很有趣。也许仅仅是我一个人,但是无论使用什么工具,我都比传统软件开发更有趣和令人兴奋。

PS:我使用最新的软件开发工具,HTML5,Asp.Net,C#等。我仍然发现DirectX,UDK,XNA,Unity对代码更有趣。

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.