8

私はすぐにこれをコミュニティウィキのものとして配置します。私はまだプログラミングの助けを求めたり、プログラミングについて具体的な質問をしたりしたくはありませんが、そのようなゲームを作るために必要なプロセスとリソースを求めています。

簡単に言うと、大学の友達と私は、プログラミングのスキルをさらに伸ばすために、本当に大きな挑戦をすることにしました。6か月後には、パックマンのゲームを披露したいと思います。パックマンはゴーストのようにAIで制御され、一連の試行が勝った後、パックマンの寿命が最も長くなります。

これは、これまでに行ったこととは異なります。ここでの目標は、私にとって、完璧なゲームを作成することではなく、それを試して完成させるために、その過程でたくさんのことを学ぶことです。時間内に終わらせなくても、それは良い可能性ですが、少なくともこれを試してみたいと思います。

だから私の質問はこれです:私はどのように自分自身を準備し始めるべきですか?私はすでにベクトル数学、行列、そのすべての楽しいものを始めました。私が望むプラットフォームはDirectX9.0cです。それはお勧めですか?これはこのプロジェクトだけの好みではありませんが、グラフィックス開発に何らかの未来を持ちたいので、未来に安全なプラットフォームを選びたいと思います。

ゲーム開発全般について、何を考慮すればよいですか?私はこれまで実際のゲームをしたことがないので、中規模プロジェクトの開発についてアドバイスをいただければ幸いです(これが中規模プロジェクトの場合)。

私の主な関心事は、落とし穴とデモチベーターです。

質問があいまいな場合は申し訳ありません。ここに属していない場合は削除します。それ以外の場合は、大規模なプロジェクトの作成に関するすべてのアドバイスをいただければ幸いです。

4

7 に答える 7

9

この種のことを試したことがない場合は、ここにいくつかお勧めします。

DirectX (およびおそらく C++) 以外のものから始めます。

DirectX と C++ は、後で学ぶことができる多くの低レベルの事柄にさらされています。物事をシンプルに保ち、おそらく XNA と C# を試してみてください。これは、後で移植するのに十分近いですが、メモリ管理やポインターなどの多くのことを今のところスキップできます。

3D ではなく 2D から始める

元の Pacman は 2D なので、今のところベクトル計算は必要ありません。

それで、それはあなたをどこに置きますか?

ゲーム ループ、同期の維持、画面の更新、ユーザー入力への応答など、いくつか考慮すべきことがあります。

これらは優れた原則であり、何かをより早く稼働させることができます。進捗状況を確認し続けることの重要性を過小評価しないでください。最初に技術的な基準を高く設定しすぎると、これが難しくなります。

私はこのルートをたどります(物事を楽しく興味深いものにするために)

  1. 画面を表示する - これは非常に視覚的です
  2. ユーザー入力に応答する Pacman を取得する
  3. パックマンを壁の中に閉じ込める
  4. 二次ユーザー入力に応答するゴーストを取得します-お互いを追いかけることができます
  5. いくつかの衝突検出を理解する
  6. ゴーストを獲得して食べることができるように、ドットとパワー ピルのレンダリングを取得します。
  7. いくつかの幽霊をレンダリングして、AI を理解する
  8. レベルが完了したときを見つけるためのコードを考え出す
  9. 新しいレベルでマップを変更し、状態をリセットする

これが機能して実行されたら、より優れた AI、3D 数学で遊ぶか、C++ に切り替えるかを決定できます。

于 2010-06-06T20:56:51.343 に答える
4

OOクラス用にJavaでパックマニアゲームを作成する必要がありました。壁をマッピングする最良の方法を考え出すことを除いて、それは非常に簡単であることがわかりました。少し調べた後、私はこれに出くわしました:http: //javaboutique.internet.com/PacMan/source.htmlこれは、ビットシフトを使用して壁を決定します。複雑さはやり過ぎのように見えますが、数学を少し試してみると、かなりエレガントであることがわかりました。それ以外は、pacmanは非常に配列に適した概念であるため、ボードに配列、いくつかの基本的なスプライトを使用し、速度と更新をいじくり回し、ゲームデータを追跡し、ループに入れます。幽霊のいるAIについては、幽霊について書かれた記事があります。各ゴーストには特定の「戦略」があります。または、自分でロールすることもできます。常にpacman(または彼の一般的な場所/象限)に向かうのと同じくらい簡単に、または必要に応じて複雑(最短経路)にプログラムすることができます。

于 2010-06-06T21:56:23.057 に答える
3

パックマンの元のアーケードキャビネットアセンブリコードとその機能の説明を見てみます。それは本当の目を見張るものです:)

于 2011-04-16T06:29:37.783 に答える
3

パックマンで遊ぼう!これがプロジェクトの最初のタスクです。

于 2010-06-06T21:14:48.437 に答える
2

個人的には、次のようします。

  • オープンソース ゲームを研究して、その機能を確認する
  • ゲーム プログラミングに関する本を購入する (実際、私はゲーム プログラミングに関する本を既に持っていますが、おそらくそれよりも新しい本が必要になるでしょう)
  • ツールセット/ゲーム開発ライブラリを選択 ( SourceforgeGoogle Code )
  • そのライブラリに付属のチュートリアルを実行します。API が奇妙すぎる場合は、別のライブラリに変更する可能性があります
  • 要件文書を考え出す
  • 最初のパスのデザイン (「1 つを捨てる計画」) を作成し、誰かにレビューしてもらいます。
  • テスト計画を決める
  • スケジュールを立てるのは、スケジュールを守りたいからではなく、物事を簡単に定義できるタスクに分解したいからです
  • 私ができる最小の完全なゲームを書きます (たとえば、ウィンドウ内で制御できるパックマン スプライト: 迷路、ゴースト、スコア、ライフ、死ぬ能力などはありません)。
  • すべてを実装するまで、そのゲームに機能を追加します
于 2010-06-06T20:41:07.893 に答える
1

学習プロジェクトの良いアイデアのようですね! あなたのアプローチのために私が推奨する2つの一般的なことは次のとおりです

  1. 繰り返し作業する
  2. 途中で C++ と DirectX についてたくさん読んでください。

小さなことから始めましょう -- 画面にパックマンを描くだけのコードを書きましょう。次に、画面全体の動きを実装して、それに基づいて構築します。次に、マップの境界を構築し、それらを通過できないようにします。そして、このやり方を続けて、次に完了する必要があるタスクに優先順位を付け、それを完了するために必要なことは何でもします。タスクを大きくしすぎないようにしてください。

タスクを完了する方法を理解するには、読む必要があります。書籍、Web サイト、および既存のコードはすべて、目的を実行する方法を理解するのに非常に役立ちます。いくつかの方法が他の方法よりも優れているか、プロジェクトにより適している可能性があるため、同じタスクを完了するためにいくつかの異なる方法を検討する価値があります。

于 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) AI にどの程度精通していますか?

3) A * (A スター) パス検索、ダイクストラ アルゴリズム、衝突検出、ヒット テスト、さらには再帰的プログラミングなどのプログラミング アルゴリズム技術にどの程度精通していますか?

4) グラフィックデザインの才能のある人はいますか?

幸運を。

P/S 参考までに、パックマン ゲームを作成する場合は、C# と Silverlight 4.0 で作成します (C++ は問題なく作成できますが、Silverlight の時流に乗ることを優先します)。

于 2010-06-06T22:50:35.390 に答える