8

我立即将其作为社区 wiki 事物。我不想在编程方面寻求帮助,甚至对编程有任何具体的问题,而是想要制作这样一款游戏所需的过程和资源。

简单地说:我和我的大学朋友决定给自己一个非常大的挑战来提高我们的编程技能。在六个月的时间里,我们想向自己展示一款吃豆人游戏。Pac-Man 将像 Ghosts 一样由 AI 控制,并且在一系列尝试获胜后,无论哪个 Pac-Man 寿命最长。

这不像我们迄今为止所做的任何事情。对我来说,这里的目标不是创造一个完美的游戏,而是尝试完成它,在这个过程中学习一大堆东西。即使我没有按时完成,这是一个很好的可能性,我也想至少尝试一下。

所以我的问题是:我应该如何开始准备自己?我已经开始学习向量数学、矩阵以及所有有趣的东西了。我想要的平台是 DirectX 9.0c;这是可取的吗?请记住,这不仅仅是这个项目的偏好,但我希望在图形开发方面有某种未来,所以我想选择一个未来安全的平台。

至于一般的游戏开发,我应该考虑什么?我以前从未做过真正的游戏,因此非常感谢任何关于开发中型项目(如果这将是一个中型项目)的建议。

我主要担心的是陷阱和消极因素。

对不起,如果问题如此模糊。如果它不属于这里,那么我将删除它。否则,非常感谢有关制作更大项目的任何和所有建议。

4

7 回答 7

9

鉴于您之前没有尝试过这种事情,我建议您这样做。

从 DirectX 以外的东西开始(可能是 C++)

DirectX 和 C++ 向您展示了许多您以后可以学习的低级内容。保持简单,也许可以试试 XNA 和 C#,它们足够接近,你可以稍后移植它,但现在可以让你跳过很多东西,比如内存管理和指针。

从 2D 而非 3D 开始

最初的 Pacman 是 2D 的,所以你现在不需要矢量数学。

那么,这让你何去何从?

嗯,需要考虑的一些事情是游戏循环、保持同步、更新屏幕和响应用户输入。

这些都是很好的原则,可以让你更快地启动和运行一些东西。不要低估持续看到进步的重要性——如果你一开始将技术标准设置得太高,这很难。

我会沿着这条路走(为了让事情变得有趣和有趣)

  1. 获取屏幕显示 - 这是高度可视化的
  2. 让 Pacman 响应用户输入
  3. 将 Pacman 限制在墙内
  4. 得到一个响应辅助用户输入的幽灵 - 你可以互相追逐
  5. 找出一些碰撞检测
  6. 获取点和能量丸渲染,这样你就可以得分和吃鬼
  7. 渲染更多的幽灵并找出 AI
  8. 制定代码以查找关卡何时完成
  9. 在新关卡上进行地图更改和状态重置

一旦你让这个工作和运行起来,你就可以决定是想玩更好的 AI、3D 数学还是切换到 C++。

于 2010-06-06T20:56:51.343 回答
4

我不得不用 Java 为 OO 类编写一个 pacman 游戏。我发现它非常简单,可能除了找出绘制墙壁的最佳方法之外。经过一番研究,我遇到了这个:http: //javaboutique.internet.com/PacMan/source.html它使用位移来确定墙壁。它看起来像复杂性过大,但在我稍微玩了一下数学之后,我发现它非常优雅。除此之外,pacman 是一个对数组非常友好的概念,所以使用一个数组作为棋盘,一些基本的精灵,修补速度和刷新,跟踪游戏数据,并将其扔进一个循环中。至于有鬼的人工智能,有文章写过。每个幽灵都有特定的“策略”。或者你可以自己动手..你可以将它们编程为像总是朝着吃豆人(或他的一般位置/象限)一样容易,或者像你想要的那样复杂(最短路径)。

于 2010-06-06T21:56:23.057 回答
3

我会查看Pacman的原始街机柜组装代码及其功能的描述。这是一个真正的大开眼界:)

于 2011-04-16T06:29:37.783 回答
3

玩吃豆子!这是您项目的第一个任务!

于 2010-06-06T21:14:48.437 回答
2

就个人而言,这就是会做的:

  • 研究开源游戏,看看他们做了什么
  • 买一本关于游戏编程的书(实际上,我已经有一本关于游戏编程的书,但你可能想要比这更近的东西)
  • 选择一个工具集/游戏开发库(SourceforgeGoogle Code
  • 完成该库附带的教程,如果 API 太奇怪,可能会更改为不同的库
  • 拿出一份需求文件
  • 拟定第一个设计(“计划扔掉一个”),尝试让某人审查它
  • 决定一个测试计划
  • 写一个时间表,不是因为我想按时完成,而是因为我想把事情分解成易于定义的任务
  • 编写我能写的最小的完整游戏(例如,我可以在窗口内控制的吃豆人精灵:没有迷宫、幽灵、得分、生命、死亡能力等)
  • 为该游戏添加功能,直到我实现了整个功能
于 2010-06-06T20:41:07.893 回答
1

听起来像是一个学习项目的好主意!我为您的方法推荐的两件事是

  1. 迭代工作
  2. 一路读了一堆关于 C++ 和 DirectX 的文章

从小处着手——编写一些代码,只在屏幕上绘制吃豆人。然后通过在屏幕上实现移动来构建它。然后建立地图边界和无法穿越它们。并以这种方式继续,优先考虑您需要完成的下一个任务,然后尽一切努力完成它。尽量不要让任务太大。

为了弄清楚如何完成任务,您需要阅读。书籍、网站和现有代码都非常有助于弄清楚如何做你想做的事。值得研究几种不同的方法来完成相同的任务,因为有些方法比其他方法更好,或者可能更适合您的项目。

于 2010-06-06T20:55:20.783 回答
1

好东西!我很高兴吃豆子能激励和激励你。

要开始的事情。

1) 确定开发环境。

a) Are you building a standalone game or a networked game. 

b) Which language are you targetting at to improve? 

2) 对人工智能的了解程度如何?

3) 对编程算法技术的精通程度如何——例如 A *​​(A 星)路径查找、Dijkstra 算法、碰撞检测、命中测试甚至递归编程?

4) 你们中有人在图形设计方面有天赋吗?

祝你好运。

P/S 仅供参考,如果我要编写 Pacman 游戏,我会在 C# 和 Silverlight 4.0 中完成(我可以轻松地编写 C++,但我的首要任务是加入 Silverlight 潮流)。

于 2010-06-06T22:50:35.390 回答