我对游戏编程很感兴趣。我目前正在使用 Lua 作为脚本语言与 Shiva 构建一个 iphone 游戏。在那之后,我不确定我应该做什么或应该学习什么语言。我的目标是继续制作游戏,但我也想制作自己的游戏机。当然,这不会持续多年,但我现在需要学习一些正确的编程知识。我知道编程游戏与应用程序完全不同,这就是我需要帮助的原因。你推荐我学习什么语言或东西?我也希望能够创建应用程序,但编程应用程序和编程游戏是完全不同的事情。
7 回答
我写的第一款游戏是用 Turbo Pascal 编写的蛇游戏。我正在摆弄并设法(使用一系列点)在屏幕上移动一条线。一旦我这样做了,我就改变了线路的方向。我把它连接到箭头键上,很兴奋。两个小时后,我在屏幕上看到了一个不同颜色的点作为“食物”,这是一场蛇游戏。我写的每款游戏都让我更进一步,迫使我学习新事物(想法往往会相互叠加。)
- 尝试并坚持街机风格的游戏。Breakout、Pong、Snake 等。构建 Halo 所需的时间无需计算!
- 不要担心你学什么语言。这些年你会学到很多东西。现在是时候问哪个最容易开始编写游戏了。如果您已经具备 C 的基础知识,那么这就是您的答案。
- 如果您不知道从哪里开始,请开始制作动画而不是游戏。一旦你习惯了你的工具,想法就会出现。
编写一个在屏幕中间绘制笑脸的程序。更改屏幕模式和使用大型图形引擎可能会为此大材小用。把事情简单化。让笑脸四处走动,改变它的颜色,让它成为一张不开心的脸,等等。在你知道它之前,你会获得一些好的动力。
要问的问题是我如何在屏幕中间而不是在控制台的下一行写一个笑脸。在我的第一个蛇游戏中,答案是写一大堆空格 ' ' 字符,直到我到达我想要的地方。显然,更好的答案是 ncurses。如果您使用的是 Windows XP,那么 MingGW 编译器是免费的,您可以获得(非标准)conio.h库。这就是我在我的第二个蛇游戏中使用的,它会让你很快开始。
好走!
研究改装。
我发现 QuakeC(Quake1 模组是如何制作的)非常容易上手,而且您已经拥有非常丰富的游戏内容库可供使用,因此您可以专注于游戏玩法等。我发现当你从一个有趣的游戏开始并添加你自己的变化时,保持兴趣要容易得多,而不是开始制作 3d 盒子演示或其他过于简单但需要低级编程步骤。
Quake1 已经很老了,但它的优势在于它所涉及的几乎所有东西都是开源的并且可以免费扩展。您可以轻松地开始修改任何较新的游戏。
当今许多知名游戏商店都开始制作 Quake 或 Halflife 模组。
也许在这里查看一些游戏编程链接:http: //lazyfoo.net/SDL_tutorials/index.php
这些教程假设 C++ 在游戏编程中被大量使用,因此可能值得学习。
或者,如果您对 Java 感兴趣,可以查看本教程http://www.cokeandcode.com/node/6
亚当
在这个行业工作了几年,这是我能找到的最好的总结:
http://gamesfromwithin.com/so-you-want-to-be-a-game-programmer
我的建议:
从里到外学习 C++。每天都在里面编程。如果您已经准备好进行 iPhone 开发,请学习 OpenGL。如果您可以使用 PC(也可以查看 XNA),那么学习 Direct3D 也没有什么坏处。如果图形不是您的菜,请确保您知道寻路(A* 算法)或碰撞检测的工作原理。
继续构建自己的项目,并找到一个可以在您有问题时为您提供支持的良好在线社区。雇主希望看到你很聪明,但更重要的是,你很敬业——游戏编程非常难,不要让任何人告诉你不同的说法。
您可以在此处下载适用于 Windows 的免费开发工具:http: //www.microsoft.com/express/download/
您想要的是 Visual C++ 2008 Express Edition。
您应该查看Unity3D 网站。他们现在有一个供个人和商业使用的免费版本(名为 Unity)。您可以将脚本与 C#(可能是任何 .NET 语言)、JavaScript 和 Boo 结合使用。
XNA 也很适合。
当您刚开始时,C、C# 和 C++ 可能会有点复杂。如果你对游戏开发很认真,你最终可能需要学习 C++,但如果你只是想快速完成一些事情,那么你已经走上了 lua 的正确轨道。
Javascript 是另一种语言,它在许多方面与 lua 非常相似(在其他方面则非常不同)。javascript 的一个优点是世界上的每个人都在他们的计算机上安装了 javascript。另一个优点是它非常容易学习。也有缺点,但它们并不像大多数“认真”的程序员想象的那么糟糕。Javascript 得到了不应该的坏名声。
这是一个非常好的学习javascript的教程: http: //eloquentjavascript.net/
不幸的是,它不包括游戏编程——但它确实涵盖了与游戏编程和应用程序编程相关的概念。
这是一个涵盖游戏编程的 javcascript 教程:
http://billmill.org/static/canvastutorial/index.html
您需要一个网络浏览器才能学习该教程。这不包括 Internet Explorer,因此您可能需要使用 safari、firefox 或 opera。
一旦你习惯了用 javascript 或 lua 等简单的语言制作游戏,那么学习用 C 或 C++ 等硬语言制作游戏就不会那么难了。
另一方面,你可能会很高兴只用简单的语言制作游戏,这没关系,没有规定你必须学习 C 或 C++ 才能制作好游戏。好游戏来自好创意,而不是难编程。
游戏程序员的优先顺序。
任何需要分析思维和逻辑问题解决的学科。以下领域的必要知识。
- 数学
- 数据结构
- 电脑图像
- 物理
- 人工智能
- 计算机网络
- 网络技术