6

何人かの友人と私はゲームを開発したいと考えていました。どの言語でも構いません。私は何年も C でプログラミングしてきましたが、これまでゲームを書いたことはありませんでした。私たちの 1 人は、SDL について少し知っています。また、Python+pygame を学ぶいい口実にもなります。

ゲームが「スタンドアロン」であることを願っています。スタンドアロンとは、ほとんどのユーザー (少なくとも Linux、Mac、および Windows) が、パッケージ以外のものを手動でダウンロードしてインストールする必要がないことを意味します。インストールが不足している依存関係を自動的に処理する場合は問題ありません。パッケージにバイナリが含まれている場合、Linux からのクロスコンパイルを使用してそれらを生成できるようにしたいと考えています。

プロジェクトをどのようにパッケージ化して構造化する必要がありますか? また、最適な言語は何ですか?

4

6 に答える 6

9

これまでにゲームをプログラミングしたことがない場合は、Python と Pygame から始めることをお勧めします。すでにプログラマーであれば、Python 自体は非常に簡単に習得できます。

Pygame を使用すると、「接着剤」の作成や、ウィンドウ管理やサウンド設定などのありふれた低レベルの詳細の処理にほとんど時間を費やすことはありません。ほとんどすぐにゲーム ロジックをプログラミングし、すぐにblit左右に移動することになります。さらに、ゲームのプロトタイプを実行するのは非常に簡単なので、メカニックの実験を始めることができます.単純な小さな横スクロールプラットフォーマーを数時間でプログラムしました.

パフォーマンス

Pygame を使用した Python のパフォーマンスは通常、単純なゲームではまともですが、特に Linux では、「スムーズにスクロールする」ゲームのパフォーマンスが低下する可能性があります (少なくとも私の経験では、pygame.display.update()Linux ではフレームあたり 15 ~ 30 ミリ秒かかり、4 ~ 5 ミリ秒かかりました)。ただし、これは 2 年前のことであり、Linux Intel ドライバーは最近改善されています)。さらに、物理/数学の多いコードを使用している場合、Psyco は大幅な高速化 (場合によっては 20% - 200%) を提供できますが、x86 コンピューターでは 32 ビット Python に制限されます。

ゲーム ロジックの大部分を完成させても、パフォーマンスがまだ不十分な場合は、C と SDL に切り替えることができます。ゲーム ロジックは既に記述しているので、あとは SDL を直接処理することに専念する必要があります。それもかなり簡単なはずです - Pygame は内部的に SDL を使用しているので、変換は比較的簡単です。

OpenGL

残念ながら、上記は 2D ゲームを作成している場合にのみ当てはまります。Pygame は基本的に OpenGL の助けにはなりません。ただし、OpenGL でゲーム プログラミングを開始することはお勧めしません。最初は理解するのがかなり難しい場合があるため、一度に 2 つの問題に直面することになります。まず、ゲームのロジック/物理学/AI などを取得する方法を理解しようとしています。作業しているのに、OpenGL を理解するのに苦労しています。最終的に OpenGL を学習することは価値がありますが、最初から始めるのではなく、基本から始めてそこから学習することをお勧めします。

クロスプラットフォームに関する考慮事項

クロスプラットフォームに関する限り、py2exe (Windows 用) とpy2app (Mac 用) を使用すると、依存関係 (Python インタープリターと Pygame を含む) を含む個々の実行可能ファイルをビルドできます。ただし、Linux 環境から実行可能ファイルをビルドすることはできないと思います (おそらく、Windows/Mac コンピューターを数分間借りることができる必要があります)。Linux の場合、Pygame を Dependency として (必要に応じて Psyco を Recommends または Suggests として) リストする .deb を配布するだけです。

于 2010-03-18T09:17:01.680 に答える
4

オーガを見てください。Torchlightの背後にあるエンジンです。Windows、Ubuntu、MacOS、iPhone をサポートしています。

Gamasutraもお読みください。彼らの記事、インタビュー、詳細な事後分析は、ゲーム開発プロセスにおいて非常に興味深い洞察を提供します。

于 2010-03-08T13:51:08.967 に答える
3

エンジンを含めてゲーム全体を構築するか、確立されたゲーム エンジンに基づいて構築するかによって大きく異なります。エンジン全体を構築するには、はるかに多くのオーバーヘッドとハードワークが伴いますが、多くの経験を積むことができます。

ゲーム エンジンを作成する場合、ジョブの言語は C++ です (C でも動作します。私は C++ の方が好きです)。

ビルド管理ツールについては、 CMakeを使用するのが優れたオプションであることがわかりました。CMakeは、いくつかの異なるプラットフォームでビルドを管理し、インストーラーを作成して、必要なライブラリをインストールすることもできます。

ライブラリに関して言えば、ほとんどの問題は SDL によって解決されます。これを使用するのは特に快適ではありませんが、ビデオ (OpenGL)、ウィンドウイング、入力、およびオーディオとのクロスプラットフォーム インターフェイスの頭痛の種を管理します。ゲームで OpenGL を使用するには、まだ OpenGL を学習する必要があります。SDL は初期化とセットアップのみを処理します。

Python を使用する場合、ゲームが単純 (2D、または物理演算をあまり使用しない単純な 3D) でない限り、お勧めしません。Python によって発生するオーバーヘッドの量がフレームレートに食い込み始めるからです。軽量のスクリプト言語としては、Luaが間違いなく最高です。シンプルで、柔軟で、高速です。それを統合するには、単純なソリューションが必要な場合はLuaBindを使用しますが、注意してください! コンパイル時間を完全に奪う可能性があるため、使用する場所を慎重に選択してください。

于 2010-03-17T20:41:58.137 に答える
1

i would suggest that you develop it On QT... QT will handle most of the portability issues itself... so you don't have to worry about it, plus it supports most of the platform including mobiles... and QT also has very good native support for gaming (Graphics,UI,Sound Controls.. )

Please see application Built in QT

于 2010-03-19T12:40:24.657 に答える
0

カジュアルゲームにはFlashをお勧めします

于 2010-03-18T03:01:45.233 に答える
0

あなたのゲームは3Dゲームだと思います。はいの場合、OpenGL が必要です。これは C であるため、構文に慣れているでしょうが、OpenGL は有限状態マシンであるため、アプローチは少し異なります。このトピックの詳細については、こちらをご覧ください。

OpenGL は基本的にすべてのプラットフォームに組み込まれているため、単一の全画面ウィンドウを開始するだけで、OpenGL に描画を処理させることができます。クロス コンパイルには、 C++ であるwxWidgetsをお勧めします。各プラットフォームでコンパイルされるアプリケーションのウィンドウ初期化用の単一のコードを記述できます。

wxWidgets には、 Pythonを使用することにした場合のpython バインディングもあり、その場合はPyOpenGLも必要になります。

于 2010-03-16T22:12:52.690 に答える