SHOEISHA iD

※旧SEメンバーシップ会員の方は、同じ登録情報(メールアドレス&パスワード)でログインいただけます

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

japan.internet.com翻訳記事

さまざまな言語に対応するゲームプラットフォーム「Simple DirectMedia Layer」

スペースインベーダー似のゲームで巡るSDLの世界

  • このエントリーをはてなブックマークに追加

Simple DirectMedia Layer(SDL)は、クロスプラットフォームサポートとゲームの面白さの両方を追及するために役立つソリューションです。 「ゲームエンジンのことを知るには、サンプルコードを見るのが一番」ということで、今回は「スペースインベーダー」を模してつくられた「aliens(エイリアン)」というゲームを、最も重要な部分だけに焦点を当て、レーザービーム級の密度で解説します。

  • このエントリーをはてなブックマークに追加

数々の3Dゲームで利用されるゲームエンジン

 ゲーム開発の世界では、他のプログラミング分野に比べて、ごく初期の段階からプラットフォームを正しく特定しておくことが特に重要です。Windows、Linux、およびOS Xをすべてサポートしたいとお考えですか?

  実際、ゲームプラットフォームの草分けとして、1996年にOpenGL向けに開発された革命的なゲーム「Quake」を引き合いに出す人も多いでしょう。しかし、Quake並みのゲームプレイ水準に達するためには、第一級のオーディオサポート、ネットワーク接続、ユーザー入力デバイスサポート、リアルタイム管理機能なども必要になります。

 この2つの課題、つまりクロスプラットフォームサポートとゲームの面白さの両方を追及するために役立つソリューションがSimple DirectMedia Layer(SDL)です。これは、オーディオ、キーボード、マウス、ジョイスティック、OpenGL、および2Dビデオフレームバッファに対する低レベルのアクセスを可能にする、クロスプラットフォームのマルチメディアライブラリです。

 SDLは、Linux、Windows、各種のMacOS、WinCE、Dreamcastなど、およそ考え得るほぼすべてのプラットフォームをサポートしています。SDLはGNU LGPL v2で配布されているため、提供されるDLLにリンクしさえすれば、商用プログラムでも自由に利用できます。SDLはMPEGプレイヤーやハードウェアエミュレータのほか、数多くの人気ゲームでも利用されています(有名なLinux用の「Civilization: Call To Power」もその1つです)。

 SDLはCで書かれていますが、C++でもネイティブに動作し、他の言語にも対応しています(Ada、Eiffel、Java、Lua、ML、Perl、PHP、Pike、Python、Rubyなど)。

 SDLの活躍範囲は幅広く、私の大好きなオープンソースのフライトシミュレータ「GL-117」でも、SDLがエンジンとして使われています。現在、SDLのホームページには、SDLエンジンを利用しているゲームが568本も登録されています(うち450本はWin32実行可能ファイルをビルドできます)。

図1 GL-117のプレイ画面
図1 GL-117のプレイ画面

簡単なサンプル:エイリアン来襲!

 ゲームエンジンのことを知るには、サンプルコードを見るのが一番です。今回は、Sam Lantingaが1980年代の「スペースインベーダー」を模して作成したゲームを取り上げたいと思います。その名もシンプルに「aliens(エイリアン)」です。

 なんと、このゲームのソースコードは全体で560行しかありません。すべてのコードを紹介したいのはやまやまですが、少々長くなりすぎるので、最も重要な部分だけに(それこそレーザービーム級の密度で!)焦点を当て、それ以外の部分は割愛します。本稿のコードリストではaliens.cでの行番号を併記しますので、Visual Studioで実際にコードを見るときの目安にしてください。

図2 aliensのゲーム画面
図2 aliensのゲーム画面

 最初に説明しておくと、このゲームでは、全体の動作を実現するためにSDL_mixerSDL_imageという別々の2つのSDLプロジェクトのコードを利用しています。

 SDL_mixerは、SDLアプリケーション用の、プラットフォーム非依存のサウンドミキシングライブラリプラグインです。このプラグインを利用すると、ミキシングアルゴリズムを書かなくても、音楽と一緒に複数のサンプルを再生できます。たとえば、砲撃音をBGMにシームレスにミックスすることができます。また、さまざまなファイル形式のサンプルや音楽の読み込み、および再生を容易に行うことができます。

 SDL_imageは、SDLアプリケーション用のプラットフォーム非依存のグラフィック読み込みプラグインです。これにより、BMP、PNM(PPM/PGM/PBM)、XPM、LBM、PCX、GIF、JPEG、PNG、TGA、およびTIFFファイル形式をアプリケーションに読み込むことができます。

 以降で紹介するコードを実際に試してみたい場合は、この2つのパッケージをダウンロードしておいてください。

会員登録無料すると、続きをお読みいただけます

新規会員登録無料のご案内

  • ・全ての過去記事が閲覧できます
  • ・会員限定メルマガを受信できます

メールバックナンバー

次のページ
main()関数

この記事は参考になりましたか?

  • このエントリーをはてなブックマークに追加
japan.internet.com翻訳記事連載記事一覧

もっと読む

この記事の著者

japan.internet.com(ジャパンインターネットコム)

japan.internet.com は、1999年9月にオープンした、日本初のネットビジネス専門ニュースサイト。月間2億以上のページビューを誇る米国 Jupitermedia Corporation (Nasdaq: JUPM) のニュースサイト internet.comEarthWeb.com からの最新記事を日本語に翻訳して掲載するとともに、日本独自のネットビジネス関連記事やレポートを配信。

※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です

Victor Volkman(Victor Volkman)

1980年代末から『C/C++ Users Journal』などのプログラミング雑誌に記事を執筆。ミシガン工科大学を卒業し、WashtenawコミュニティカレッジCIS学部の諮問委員会のメンバーを務める。『C/C++ Treasure Chest』など数々の書籍の編集者であり、Loving Healing Pressのオーナーでもある。オープンソースのツールやライブラリについての相談、お問い合わせはsysop@HAL9K.comまで。

※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です

この記事は参考になりましたか?

この記事をシェア

  • このエントリーをはてなブックマークに追加
CodeZine(コードジン)
https://codezine.jp/article/detail/2524 2008/06/05 00:00

おすすめ

アクセスランキング

アクセスランキング

イベント

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

新規会員登録無料のご案内

  • ・全ての過去記事が閲覧できます
  • ・会員限定メルマガを受信できます

メールバックナンバー

アクセスランキング

アクセスランキング