如果我想制作吃豆人游戏?

时间:2010-06-06 20:21:08

标签: c++ pacman

我立即把它作为社区维基的东西。我不想在编程方面寻求帮助,或者甚至没有关于编程的具体问题,而是想要制作这样一个游戏所需的过程和资源。

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

这与我们到目前为止所完成的任何事情都不一样。对我来说,这里的目标不是创造一个完美的游戏,而是试图完成它,在这个过程中学习一大堆。即使我没有在时间上完成,这是一个很好的可能性,我想至少试过这个。

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

对于一般的游戏开发,我应该考虑什么?我以前从未做过真正的游戏,所以任何和所有建议中型项目的开发(如果这是一个中等规模的项目)都非常感谢。

我主要担心的是陷阱和失败者。

很抱歉,如果这个问题太模糊了。如果它不属于这里,那么我将删除它。否则,非常感谢任何和所有关于制作大型项目的建议。

7 个答案:

答案 0 :(得分:9)

鉴于你之前没有尝试过这类事情,我建议你做一些事情。

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

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

从2D而不是3D开始

原始Pacman是2D,所以你现在不需要矢量数学。

那么你离开了什么地方?

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

这些都是很好的原则,可以让你早日获得更多的东西。不要低估继续看到进展的重要性 - 如果你最初设置的技术栏太高,这很难。

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

  1. 显示一个屏幕 - 这是高度可视化的
  2. 让吃豆人回应用户输入
  3. 让Pacman受限于墙内
  4. 获取幽灵以响应次要用户输入 - 您可以互相追逐
  5. 找出一些碰撞检测
  6. 获取点和力量药丸渲染,这样你就可以得分和吃鬼
  7. 渲染更多幽灵并找出AI
  8. 制定代码以找到关卡何时完成
  9. 在新的级别上更改地图并重置状态
  10. 一旦你有了这个工作和运行,你就可以决定是否想要更好的AI,3D数学或切换到C ++。

答案 1 :(得分:4)

我不得不用Java编写一个用于OO课程的pacman游戏。我发现它非常简单,可能除了找出绘制墙壁的最佳方法之外。经过一些研究,我发现了这个:http://javaboutique.internet.com/PacMan/source.html,它使用位移来确定墙壁。它看起来像复杂的矫枉过正,但在我玩了一点数学之后我发现它非常优雅。除此之外,pacman是一个非常阵列友好的概念,所以使用一个数组用于电路板,一些基本的精灵,修改速度和刷新,跟踪游戏数据,并将其抛入循环。 至于鬼与人工智能,有关于他们的文章。每个鬼都有一个特定的“策略”。或者你可以自己滚动......你可以把它们编程为像往常一样朝着pacman(或他的一般位置/象限),或者像你想要的那样复杂(最短路径)。

答案 2 :(得分:3)

玩pacman!这是您项目的第一项任务!

答案 3 :(得分:3)

我会看看Pacman的原始街机柜assembly codedescription of what it does。这真是令人大开眼界:))

答案 4 :(得分:2)

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

  • 研究开源游戏,看看他们做了什么
  • 买一本关于游戏编程的书(实际上,我已经a book about game programming了,但你可能想要一些比这更新的东西)
  • 选择一个工具集/游戏开发库(SourceforgeGoogle Code
  • 完成该库附带的教程,如果API太奇怪,可能会更改为不同的库
  • 提出要求文件
  • 制定第一次通过设计(“计划扔掉一个”),try to have somebody review it
  • 决定测试计划
  • write up a schedule,不是因为我想保持按计划,而是因为我想把事情分解为容易定义的任务
  • 写下我能做的最小的完整游戏(例如,我可以在窗口内控制的Pac Man精灵:没有迷宫,鬼魂,得分,生命,死亡能力等等)。
  • 在我实施整个内容之前为该游戏添加功能

答案 5 :(得分:1)

对于学习项目来说,这听起来不错!我推荐的两个一般性的方法是

  1. 在迭代中工作
  2. 沿途阅读了一堆关于C ++和DirectX的文章
  3. 从小处开始 - 编写一些代码,除了在屏幕上绘制吃豆人之外什么也不做。然后通过在屏幕上实现移动来构建它。然后建立地图边界和无法穿越它们。并以这种方式继续,优先完成您需要完成的下一个任务,然后完成任务。尽量不要让任务太大。

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

答案 6 :(得分:1)

好东西!我很高兴Pacman激励和激励你。

要开始的事情。

1)决定开发环境。

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

b) Which language are you targetting at to improve? 

2)对AI有多精通?

3)精通编程算法技术 - 如A *(A星)路径查找,Dijkstra算法,碰撞检测,命中测试甚至递归编程?

4)你们中的任何人都有图形设计的才能吗?

祝你好运。

P / S FYI,如果我要写一个Pacman游戏,我会用C#和Silverlight 4.0来做(我可以舒服地编写C ++,但我的首要任务是跳上Silverlight的潮流)。