开发游戏是学习编程的最佳方式吗?[关闭]


21

我最近听到一位指导老师的话,开发游戏是学习编程的最佳方法。除了必须使用代码创建所有内容外,他还说,您确实可以充分体验并将OOP实施到您的程序中。换句话说,您在游戏中所做的一切从技术上和概念上都是文字对象。进行此假设是否安全?还是在学习编程时总会有例外?

请注意,它是针对.net / xna / c#开发的。


3
“必须在代码中创建所有内容的事实”。3D模型,纹理,声音和其他资源如何?您可以在没有它们的情况下创建游戏引擎,但是即使资源完全匮乏,但只有很少资源的完整游戏将是巨大的挑战。
POSIX_ME_HARDER,2011年

@Cheshire:好吧,您可以使用Processing之类的程序来编写程序。我并不是说这很实用。
安托

2
@柴郡:是的,有些人通过程序性地创建所有内容来直接面对挑战。(据我所知)在商业游戏中不太常见,但是流行只是为了证明它可以做到,而且我已经看到了一些非常令人印象深刻的演示。
FrustratedWithFormsDesigner

6
我假设这个问题在询问游戏时意味着“游戏开发”而不是“玩游戏”?无法辞职,使知识分子从“使命召唤”跃升为C ++ ...
HorusKol 2011年

1
如果您想让游戏具有可玩性,那么您很可能会发现需要权衡纯OO设计以提高速度。
彼得·泰勒

Answers:


25

我认为游戏开发是最具挑战性的开发。让我们看一个创建第一人称射击游戏的人需要知道的所有概念:

  • 图形
    • 3D计算
    • 速度优化
    • 与图形硬件接口
  • 游戏
    • 数据结构
    • 用于保存的文件格式
    • 常规设计,否则您将造成混乱,无法向其中添加功能
    • 网络知识(如果游戏是多人游戏)
  • AI算法
    • 寻找路径
    • 战斗
  • 出版
    • 操作系统知识,例如安装程序的工作方式
    • 可能是通过网络开发来宣传

您会看到,一款游戏可以同时涵盖很多领域。如果您愿意花费时间并使其变得更好,那么它就成为了很好的学习工具。

对于OOP,这是一种有效的模式。您可以使用游戏作为学习良好的设计技巧的学习工具。

但是,要回答您的问题,这不是学习编程的唯一方法。一旦您成为中级开发人员,创建游戏就会让您接触到很多编程概念和水平。此外,这很有趣!


12
您忘记了一件事情,一个游戏的故事,有时,故事就很重要。
Mahmoud Hossam

假设它是3D游戏。
亚当·哈特

1
@Adam:是的,但是2d也有它的计算。我现在特意排除基于测试的RPG;)
Michael K

1
@Mohmoud故事从来都不是“所有重要的事情”。这与故事不好/缺少一样大。制作出色的游戏有很多方面。无论故事多么精彩,我都不想玩无聊的游戏。同样,大多数成功的益智游戏也没有故事。
亚当·哈特

博弈论也很方便。
VirtuosiMedia

46

不要重言,而是编程是学习编程的最佳方法。如果您对计算机游戏感兴趣,那么编程游戏可能是学习编程的好方法。

我不在乎游戏,但是我喜欢数学,所以我的许多学习项目本质上都是数学。

最重要的是,您需要找到解决代码问题的方法,并且游戏可以为许多人工作。


这就是我最初的想法。但是请考虑您绝对是编程新手。游戏似乎是学习许多不同概念的绝佳工具。迈克尔列举了其中一些。老实说,我希望我会首先从游戏的角度学习OOP。但这可能是由于它的解释不充分,或者开发业务应用程序使它变得更难理解这一事实。观察这两个参数确实很有趣。
爱德华

@penguin将以什么方式玩《使命召唤》或《半条命》来教您编程?
jwenting 2011年

13

这是一个学习编程,除其他方式方法。编写代码时,您会学到东西。现在,这最好的方法吗?不太确定。

至少,您的老师给出两个理由是无效的

  • “一切都得在代码中创建”:当你写一个商业应用程序,实际上是写代码。它不会用魔术来写。是的,有一些助手可以让您使用自动生成的代码。不,使用它们不是强制性的。顺便说一句,自动生成的部分通常是编程中最烦人的部分(不是通过将控件添加到Windows Forms控件中,您将学到一些令人兴奋和有用的知识)。

  • “您确实可以充分体验并在您的程序中实现OOP”:有人必须向我解释为什么这仅对游戏有效,而对其他任何内容都无效。如果您确实了解OOP并想使用它,则也可以在业务应用程序中使用它。如果您不了解它或不想使用它(例如喜欢使用函数式编程),那么游戏开发将不会迫使您进行更改。

但:

开发游戏可能很有趣。大多数年轻人喜欢游戏,因此他们会喜欢开发游戏而不是编写业务应用程序,这对于大多数人来说将是无聊的。看到这一点,教师可以开始相信实际上游戏是学习编程的最佳方法,然后他们将尝试为此找到逻辑上的解释。

话虽这么说,但这些老师的最终目的是使游戏开发像开发商务应用程序一样让年轻人感到无聊。如果他们认为必须进行游戏才能学习OOP等,那么他们将要求学生做一些根本不愉快的项目。这是我上大学时老师最大的错误之一。他们经常给我们提供游戏项目以控制台方式在Ada中编写。没有图形。没有乐趣。没有用户体验。在我的一生和职业生涯中,我从未见过如此乏味的项目。


4
游戏与OOP工作得很好,因为它很容易看到每一个BadGuyWeaponPowerUp,在游戏和其他物品很容易被一个对象。您可以对对象之间的交互进行编程,并在屏幕上查看它们。我认为视觉部分是使它如此吸引人的原因。具有的类型层次业务应用程序ServerTaskSchedulerAbstractDataProcessorUserQueryAgent,等...不如令人兴奋,即使他们可以教相同OOP概念的游戏。
FrustratedWithFormsDesigner

4
@FrustratedWithFormsDesigner:也许我只是不明白这一点,因为我花了太多的时间来开发商业应用程序,但我不明白为什么会是怎么看更困难CustomerProductTransaction可以是对象。但是我知道,处理BadGuys而不是无聊的Transactions 更加有趣。
2011年

它与抽象思维的水平有关。一些程序员对名称一无所知,因为他们不知道要关联什么。例如,我遇到了一些不知道Transaction需要什么的开发人员。
Spoike 2011年

7

游戏编程是学习游戏编程的最佳方法。如果您想学习Web开发,请执行此操作,如果您想学习系统编程,请进行此类操作。

游戏编程具有挑战性,并且很可能会教给您很多东西(Michael在他的回答中提到了很多,其中许多都是非常具有挑战性的,并且在游戏外也可以使用)。创建一个RPG或大亨(或类似的游戏)会教给您很多有关OOP设计的知识,因为它们非常适合这种范例。根据图形和物理的复杂性,您还将能够学到很多有关性能方面的注意事项,一些游戏的硬核数学等等。

这是学习某些事物的好方法,也是最好的方法,但它不是学习编程的上乘方法。无论您编写了多少游戏,您仍可能不知道如何制作操作系统。我认为,即使有时间,大多数开发人员仍然可以通过开发游戏来赚钱,即使他们没有将其作为编程的主要准则。


7

问题:学习编程的最佳方法是什么

答: 您实际使用的方法

就是说,当学习或做某事时,选择哪种方法都没关系,只要选择哪种方法就可以了。

如果游戏对您来说真的很有趣,那就去吧。如果您发现解决数学问题更令人满意,请从此开始。编程有很多不同的种类,每种都需要不同的技能,因此最好从最有趣的一种开始,这可能就是您将要使用的一种。

...但是,是的,游戏是学习大量编程的好方法,因为它结合了数学,并发,算法,oop,图形等。


4

如果您喜欢游戏,那么编写游戏将是进入开发的一种好方法,但我不会说这是最好的方法。我认为最好方法是CS学位课程,然后是软件公司的工作,该软件公司将投资于培训和指导初级员工。

除了那种公认的大手笔的回答外,是的,我认为游戏开发会教给您很多良好的技能,并且,如果您喜欢计算机游戏,它将使您对开发过程保持兴趣。它必须比您在书中看到的许多其他简单应用程序更有趣。


2

我想说,学习编码的最佳方法是让它变得有趣。它不一定是真实的游戏,但对您来说却是某种游戏。对我来说,这是一个游戏,可以解决某些数学问题,从而开发算法,使我能够以最快的速度解决复杂的问题。挑战自我,每当尝试解决问题时,我都会成为更好的编码器。问题越难解决就越好。

至于学习编码(最佳实践),我想说您将不得不面对更大的挑战。单个输入/输出挑战更大


2

我从未听说过玩半条命或使命召唤会教你编程技能的说法。

可以对它们进行编程,但是对像这样的东西进行编程并不是初学者甚至应该尝试的。尤其是初学者通常会以自己不具备的编程知识来创造下一个轰动一时的印象。告诉他们先尝试制作PacMan或Tetris克隆,然后他们尖叫着这不是他们想要做的,您应该“给我zuh koduz”。


1

真的不是。没有一个项目的学习编程的最佳类型。最好的项目类型是与您的兴趣相关的项目。

例如,我尝试通过两种不同的方式学习编程,包括学习编程游戏。只是似乎从来没有坚持。

然后,当我需要学习如何为研究中的工作编程时?现在,我很舒服地说我会两种语言,并且正在研究第三种语言。为什么?因为这与我的利益有关。除了书中的“练习8”之外,我还有一个坚持的理由,一个学习的理由以及更多的尝试要尝试的问题。

顺便说一句,这并不意味着编程流行病模型是学习编程的最佳方法。但这对我来说是最好的方法。找到你的。可能是游戏,但可能不是。


为“最佳项目类型是与您的兴趣相关的项目” +1。阿们
布莱恩·奥克利

0

以我自己的经验,通过编写游戏(假设您是在自己的/小型开发团队中进行的),您不仅被迫考虑编程的算法/分析部分,还被迫考虑用户体验和设计。

除此之外,如果它是一个相当复杂的游戏,那么您将花费几个月的时间进行研究,并且您将意识到记录所做的一切的重要性-以后将使您成为团队的更好成员。


...但是,如果您编写了与用户交互的任何程序,您是否不被迫考虑用户体验和设计?您是说使用传统的客户端应用程序时,您实际上不必考虑这些事情,但是游戏会迫使您这样做吗?大型桌面应用程序也不能跨几个月并且需要您做一些文档吗?这如何适用于游戏,但不适用于其他类型的编程?
布莱恩·奥克利


0

我同意,除了...

这很可能是许多人第一次构建和编程Lego机器人(Mindstorms)的编程经验。

虽然通用术语“游戏”可以定义一个巨大的类别,以至于几乎涵盖了所有程序设计,但是当在原始海报中使用时,它似乎总是意味着“编写《毁灭战士》游戏”。

如前所述,学习编程的最佳方法是拥有您真正想要的东西,而这需要程序。也就是说-通过编写所需的程序来学习编程。

我的第一个Windows程序之一是MIDI控制器程序,因为我真的想要一个MIDI控制器程序,而Windows似乎是最合适的选择(滑块,按钮,对MIDI的SDK支持等)。我从该程序中学到了很多有关Windows编程的知识(这可以追溯到Win 3.1天)。

由于这里提到的原因,我也从未参与过游戏编程-我画的不好,所以我制作的任何游戏的图形效果都比画家的差。我想学习编程,而不是管理“游戏开发团队”(值得称赞但完全不同的练习)。

最后,我完全不同意老师的陈述。学习编程的最好方法是编写您真正想要的程序。

-R

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.