一年级CS专业的建议[关闭]


17

我即将结束CS的第一学年,这主要是一门基于Java的课程。我想着手进行一些游戏开发,但是我不确定从哪里开始。

有人建议我从具有C样式脚本语言(应该很容易上手)的游戏制作者开始,因为它可能是最简单的,并且允许我主要关注游戏设计以及整个游戏如何组合。

我看到很多人推荐XNA,因为XNA通过其API具有对opengl和DirectX的良好抽象。我还听说C#与Java非常相似。

我也考虑过用Java进行游戏编程,因为我对此非常满意,并且一直在多线程和2D图形API上进行额外的阅读。

最后,一个朋友最近向我展示了pygame,尽管我对此并不十分了解,但它听起来也很不错。

我不知道C ++是否是一个很好的起点,我在初学者游戏开发人员中看到的许多帖子都不推荐将其用于第一个游戏项目。

我将不胜感激,尤其是那些从Java背景参与游戏开发的人。


5
C ++很难,该死,但是从长远来看,如果您在Java真正设置它之前就全神贯注,那么它会更容易。从Java背景学习C ++绝对比从C ++背景学习Java更加困难。 joelonsoftware.com/articles/ThePerilsofJavaSchools.html
David Young,2010年

1
从Java开始尝试学习C ++之前,我已经死了,从旧风格的C ++开始,然后学习了Java。如果您担心跳转到指针,建议您直接学习C和Unix编程。它使您拥有全新的思维方式,因此您不太可能应用不适用的Java概念。
michael.bartnett

Answers:


14

有很多不错的选择。(我教CS1和CS2以及游戏编程。)首先,当然要学会像计算机科学家一样思考。不要太拘泥于语言,因为概念确实是通用的。

Java是一种非常不错的语言,但是用Java构建游戏有点乏味。有一些有趣的引擎可以使该过程更容易一些。不幸的是,将游戏引擎附加到您的编辑工具可能会有些痛苦。

我喜欢FANG引擎(很遗憾,我还不能发布超链接,所以请在Google上查找。)该项目的一个有趣部分是在线编辑器。这意味着您可以立即开始,而不必担心日食设置。

我真的不喜欢Game Maker。GUI非常适合不想学习编程的人,它是一个不错的(但不是很好)的原型制作工具。但是,有两件事我不喜欢。首先,它是商业性的。这不是一件坏事,但是如果有免费的开源替代品同样好(并且有),也许您应该首先研究它们。Game Maker的最大问题是脚本语言。最终,您将超出GUI的范围,并且将要真正开始编写代码。GM中的脚本语言相当落后。因为您是CS专业的学生,​​所以(希望)您对代码重用,优雅,清晰,高效和模块化感兴趣。GM语言会让您失望。

我喜欢Python和Pygame。(实际上,我写了一本关于它们的书。如果需要,可以在我的网站上查看我所有的笔记和在线视频。无论您是否有这本书,都欢迎您使用这些资源。)Python是一种很好的优雅语言,它不是太难学了(特别是如果您已经知道如何编程的话。)Pygame是流行的SDL 2D引擎的包装。实际上,我在pygame中添加了第二个包装器,以使其与Flash一样容易使用。

说到Flash,我认为这不值得。(我知道您没问过),这是一个很好的平台,但是成本和不确定性如何在移动设备上普及意味着它可能不是一个很好的学习工具。(我也写了一本关于Flash游戏开发的书,但我不再教Flash。)

这里还有其他一些很棒的尝试。从麻省理工学院获取草稿副本: scratch.mit.edu 它是为孩子们准备的,但是不要让它让您。这是一个绝对不可思议的游戏和动画工具。编程使用图块,因此很容易上手。您将对使用它所能做的一切感到惊讶。

您也可以尝试来自Carnegie Melon的Alice,网址为www.alice.org。最新(第三版)实际上是Java的扩展,它使用Sims2模型。

Scratch和Alice都是免费的。

Blender www.blender.org是另一个值得研究的工具

它是3D建模工具,但很多人不知道它还是具有拖放式编程界面的完整游戏引擎。一旦您不再使用图块,它就会内置Python支持。

现在,我对HTML5非常感兴趣(几乎不包含HTML-实际上是HTML,CSS和JavaScript。)作为游戏开发环境,它还不存在,但我相信它将发挥很大的作用。我的下一本书将介绍HTML5中的游戏开发。

祝您好运,如果您还有其他问题,请告诉我。


感谢您的输入,我们在讲话时正在检查您的网站。我敢肯定,如果有人在您这里为您做出贡献,那将是无价之宝
avatarX 2010年

指针处理是不是万能=(骂我的Java起来把。
大卫·杨

我想知道为什么您认为用Java开发游戏很乏味。另外,似乎您在暗示Python不太乏味。有这么多优秀的以Java游戏为中心的框架和库,这似乎是一个非常大胆的声明。
zfedoran 2010年

1
对于初学者来说,Java中的所有内容都可能更加繁琐。比较类似printf的东西。在python中,它是print语句的一部分:打印“%s,您的分数为%d”%(学生,分数)。在php中,您必须将所有原语强制转换为包装器类,将其强制转换为对象,并建立一个匿名对象数组。我喜欢Java。(我已经教了很多年,并写了一本关于它的书。)但是,如果目标是让某人从事游戏编程,那么我想要一种尽可能避免干扰的语言。
两个PI

感谢你花时间来评论。它帮助我了解您来自哪里。但是,我还不太喜欢python是一种对学生来说更好的语言,类似于我大学的老师一直在质疑他们最近对一年级学生使用Python的转变。也许,学生只是停留在新问题上。过去是学生使所有内容成为“公共静态”,现在他们很难理解类型之间的区别。
zfedoran 2010年

5

这取决于您的目标是什么,以及您想进入游戏开发的哪一部分。

您是否对游戏引擎如何工作以及从头开始构建某些东西的实际细节感兴趣,还是您希望尽快进入开发的游戏部分。

细节: XNA是将脚趾浸入该舞台的好方法。该框架为您做了很多事情,但是随着您对C#的适应程度提高,您可以用自己的代码慢慢替换每一部分。学习C#对于将来的游戏开发职位很有用,因为通常使用C#构建工具。

游戏编程: Unity是一个不错的选择。免费提供,并允许您使用多种语言编写代码,包括JavaScript和C#。您将能够快速启动并运行,这是一个很好的动力提升。另外,您可以过渡到另一种语言,甚至可以混合使用多种语言,以帮助您练习以加深理解。

令人高兴的是,它们都可以免费使用,并且可以以最低的成本连接到各种硬件。


4

总是可以做一些基于Java的游戏,这些都没错(http://zetcode.com/tutorials/javagamestutorial/)

XNA和AS3非常接近,并且可以根据需要创建复杂或简单的游戏。(尽管Java也是如此)

要记住的一件事是,总是练习,并且只玩弄代码。


3

Java Monkey引擎

如果您最熟悉Java,则可以使用Java Monkey Engine作为框架来制作游戏。它还有大量的文档/教程,包括有关与Netbeans和Eclipse集成的说明。


我必须说JMonkeyEngine看起来不错。我一定会检查出来的。感谢您的输入
avatarX

2

统一

我会说尝试Unity。他们有一个免费版本,您可以按照Unity提供的两个教程在几个小时内掌握基本思想:

关于统一性的另一个很酷的事情是,您可以使用JavaScript作为脚本语言,并且可以在Windows,MacOS,Web,iPhone上发布游戏,现在还可以在Android设备上发布版本3。

另外,他们使用Unity答案的 StackExchange引擎,他们为所有与Unity相关的问题提供了一个很好的社区。


1

作为一个最初在Java中学习过CS的开发人员来说,这些都是不错的开始。

C#与Java非常接近(有时我开玩笑说它是具有更好库的有限平台Java),因此XNA可能是一个不错的选择。Minecraft是使用lwjgl游戏库以Java开发的,因此,如果您要坚持使用Java,那是一个好方法。当然,3D开发有点复杂。根据您的知识,经验和毅力,您可能要等待3D(甚至在基于3D的系统中为2D),直到获得更多的教育。

对于2D解决方案:Game Maker非常简单,已用于制作一些出色的游戏。您应该能够轻松选择其脚本语言,但是对于具有一年Java经验的人来说,这可能简单了。我使用纯AS3(教程)在Flash中进行开发,该AS3 与Java足够接近,您可以轻松进行翻译。


1

我强烈建议您使用XNA。这是一个功能强大且得到良好支持的平台,并且社区不断壮大。现在XNA真正开始在生态系统中找到自己的“位置”,因为该框架比以往任何时候都可以在更多平台(包括Windows Phone 7)上发布。但是,更重要的是,使用XNA将迫使您学习C#和常规.NET开发。随着.NET开发的不断发展和拥有非常健康的就业市场,无论您是否决定从事游戏开发,都应该获得使用该平台的经验。另一方面,Java过去已经慢慢死亡了,最近的事件只是加速了它的消亡。如果您的CS程序(如我完成的程序)高度以Java为中心,那么它将很适合您自己学习C#/。NET。

即使Java确实存在,并且您决定从事Java开发事业,您仍然可能最终还是必须与.NET系统集成。因此,不管结果如何,从长远来看,这种经验只会对您有所帮助。


实际上.com / jobtrends?q = java&l = jobtrends? l确实 jobtrends? l =可以很好地代表这两者的市场需求。看起来Java实际上是在增长。
David Young 2010年

我没有考虑过Android平台的成功带来的Java开发潮。这可能与2008年底和2009年初相关职位空缺的增加有很大关系。很有趣的是,WP7以及iOS的MonoTouch和Android的MonoDroid的可用性如何影响Java的移动业务。
Mike Strobel,2010年

1

如果您对游戏设计感兴趣,为什么不从制作纸牌游戏或根本不需要编程的东西开始呢?这样一来,您就可以专注于游戏的设计和机制,而不用通过自己不熟悉的API,语言和框架来奋斗。


1

您可能还喜欢使用http://Processing.org。这是学习图形编程的绝佳环境。虽然不是严格的游戏开发工具,但它提供了很多功能。它的语言是java的扩展/简化,它很快就会学习。


0

来自我的与编程无关的建议:

创建一个简洁的项目并将其展示给您的教授。

这就是我在学校一年级和二年级后担任暑期程序员的方式。


这可能很有用,但是并不能真正解决OP即将遇到的语言/ API危机。
共产党鸭子2010年

0

如果您只是想开发游戏,为什么还要同时学习另一种语言?我会坚持使用Java,除非您想学习一种新语言。

我知道的Java的主要选项是jMonkeyEngine,它是3D图形引擎,通常被认为非常不错。

还有jOGL,它是OpenGL上的Java包装器。这自然要低很多。

如果您只是刚起步并且想要更多地使用逻辑,而不是处理缓冲区和着色器绑定等,请使用jMonkeyEngine。如果您想深入了解入门,请使用jOGL。

如果您想学习一种新语言,请使用C#和Python,我可能会说C#。语法与Java非常相似,XNA和SlimDX对于图形非常有用。XNA的级别更高,并且为您做了一些事情。但是,这确实具有仅Windows的限制,没有Mono。

Python是一种非常容易获得的语言(最多花了我大约一周的时间,而本书很少引起人们的关注,而这本书来自一年的C ++)。Pygame是来自C的SDL库的包装,因此可能不具备与XNA相同的功能。


0

再次投票支持Unity。在接下来的CS学习中,您将有大量时间从事C ++和其他语言的学习。如果您的目标是开发游戏,那么开发引擎的工作实际上将花费很多时间。如果您想成为引擎设计师,一定要回来尝试较低级别的实现。

Unity引擎将使您能够抽象出大部分细节,因此您可以专注于游戏编程。论坛上的社区和基于Stack Exchange的Unity Answers都非常有用。您可以使用Javascript或C#进行编程。来自Java,我从Javascript开始,因为许多教程都是为此编写的,但是切换到了C#(这很容易切换)。

我认为XNA和Pygame也可能很好(因为它们将一些乏味的东西抽象了出来),但是我没有经验。

最后,不要在第一款游戏中瞄准太大目标。容易低估将功能实现到游戏中会花费的时间。从核心游戏机制开始,该机制使您可以快速将游戏置于可玩状态。然后,您可以开始添加其他元素。

玩得开心!


0

如果您不使用Java,那么XNA是一个很好的解决方案。C#将为您查找和读取几乎与Java完全相同的内容,因此您无需学习新语法就可以快速跳入。XNA框架提供了大量可使用的优秀API,并且有许多免费的“ Microsoft许可”开放代码可帮助您开始某些项目。

我不建议您使用Java,大多数图形API都很糟糕,没有大量的3d支持,并且通常Java运行缓慢。对于大多数Java应用程序而言,这并不是什么大问题,但是视频游戏需要性能的提升。

C ++是制作电子游戏的一种方式,在相当长的时期内。但是,从java-> C ++迁移将非常麻烦。更不用说大多数底层硬核图形编程实际上是C风格的,而不是C ++,因此,您将要进行大量的指针运算,以尝试提高性能。这可能很有趣,但是很耗时。您也可能需要大量时间才能入门。

有很多像Ogre这样的优秀游戏引擎,但是随后您必须花费大量的时间来学习如何使用它来做事,否则会感到过于复杂。

请注意,尽管您的许多游戏创意可能很棒,但请记住,视频游戏价格昂贵,开发时间长且拥有庞大的开发团队。

如果您想制作游戏并且是唯一从事该游戏的人,那么您几乎就要将其制作为2D游戏(尽管无论如何您都应该从2D开始),并且您将必须真正地开始,真的很简单。

您几乎可以想象得到的任何乐趣现在可能都过于雄心勃勃。

我的建议:如果没有免费的Visual Studio 2010 Express,请获取它。下载XNA游戏工作室和.net框架。4.下载XNA演示。运行演示,然后浏览代码,看看有什么用。尝试阅读一些有关XNA如何进行2D游戏的文档。

然后,选择您喜欢的老派超级简单游戏。吃豆人?傍吗 小行星?太空侵略者?马里奥?选择一些STUPID,简单的STUPID。然后,完全照原样重新制作游戏。您已经足够担心编程和学习不需要费心设计游戏的新API。它只会分散您的注意力。

然后,一旦获得了马里奥克隆副本或所做的任何事情,就可以开始尝试玩法并尝试添加新的东西。

从小步开始,这会变得更加有趣,并且您会学到更多。

尝试跳入用C ++修改Quake3源代码以制作游戏的过程中,您会感到非常沮丧,即使使它工作了,也不会从中学到很多东西。

刚刚有乐趣:D


0

Flash的AS3是一种奇妙的语言,用于将您的头围绕重要的OOP概念而不必担心内存管理和编写头文件。它还几乎是一个完整的2D游戏引擎,具有显示树,事件系统以及所有其他方便的功能。

那里有一个庞大的Flash游戏开发人员社区,与流行的看法相反,您可以使用开源工具开发Flash游戏。如果您使用Windows,则建议使用FlashDevelop

我会说Flash比Java或除Unity以外的任何其他技术都更加跨平台友好。99%的人可以在其桌面浏览器中查看Flash内容,因此可以轻松地与世界分享您的创作。大多数智能手机都在缓慢地获得Flash支持,而对于iOS(一个不支持Flash浏览器的平台),您可以使用Flash CS5创建应用(尽管这确实需要一定的成本)。

我认为当您现在可以开始使用AS3学习游戏创建的基础知识时,不得不与C ++甚至C#之类的更复杂的东西作斗争对您来说是一个耻辱。一旦了解了AS3,以后便可以轻松切换到其他语言。就我自己而言,我是一名Flash开发人员,但是我学会了如何使用Objective-C进行编程,并成功制作了一款出色的iPhone游戏。帮个忙,请访问http://www.flashgamedojo.com/-我认为您不会失望的!

统一

Unity具有Flash的许多相同优势,但具有3D优势。

使用Unity,您可以使用C#或UnityScript(JavaScript-y)进行编程。它不是开源的,但是是免费的。它得到了很好的支持,并且有一个很棒的社区。开发3D游戏的问题在于,对于大多数游戏而言,您将需要大量艺术品和资产。这对于2D游戏也可能是个问题,但是通常3D艺术花费的时间更长,制作“程序员艺术”的难度也更大。

关于开源的注释

使用开源软件没有什么错,但是如果仅使用它那是因为它是开源的,因此您在进行自我换代。选择最好的语言和工具,以帮助您以最小的摩擦学习最快的语言。同样,“先学习最难的东西”(即C ++)的想法是疯狂的。您真正应该学习的是逻辑,而不是语法,因此,请学习哪一种语言的行李和进入障碍最少。我认为这是AS3。

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.