挫折不可能!初級ゲームプログラミング完全マニュアル  RSSを登録する

「ゲームが作りたいけどプログラミングなんて全然知らない」「文系だし数学や物理が苦手だけどゲームが作れるだろうか?」そんなアナタのためのメールマガジンです。PCの電源を入れてからどうすればいいのか?から自分のゲームが完成するまでを応援します!

最新号をメルマガでお届けします    
登録 解除

規約に同意して

登録した方には、まぐまぐの公式メルマガ(無料)をお届けします。
2008/05/25

初級ゲームプログラミング完全マニュアル [vol.0047 2008/05/25]

┏┳━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┳┓
┣┛                                                            ┗┫
┃       挫折不可能!  初級ゲームプログラミング完全マニュアル       ┃
┃                                                                  ┃
┃                       第 47 号  2008/05/25                       ┃
┣┓                                                             ┏┫
┗┻━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┻┛
                            - Ads space -
┌┬───────────────────────────────┬┐
││ はじめに                                                     ││
└┴───────────────────────────────┴┘

 みなさま、こんにちは!

 個人ゲーム制作アドバイザーの Byerkut です!

 つい先日まで寒い寒いと書いていたと思ったのですが、

 今日は蒸し暑いです。雨のあとなのでじめじめしています。

 油断しているともうすぐ梅雨になってしまうのですね…

 憂鬱です。涼宮ハルヒなんぞ目じゃないくらい憂鬱です。

 せめて自分が作るゲームの中くらいはカラッカラに晴れた空を

 描いていきたいですね。

 さて、今日はアウトソーシングに関するお話です。

┌┬───────────────────────────────┬┐
││本日のラインナップ                                            ││
└┴───────────────────────────────┴┘
 
 ・今日のメインテーマ
   【人生アウトソーシング】

 ・あとがき

┌┬───────────────────────────────┬┐
││ みんなの備忘録                                               ││
└┴───────────────────────────────┴┘

  ■Visual C++ 2008 Express Edition をインストールする手順
    http://www.game-create.com/archives/235

  ■Visual C++ 2008 Express Edition でプロジェクトを新規作成する手順
    http://www.game-create.com/archives/270

 ■VC++ 2005 EE でプロジェクトにソースファイルを登録する手順
    http://blog.mag2.com/m/log/0000240151/108824854.html

 ■画像ファイルを LoadImage() 関数で読み込めるようにする手順
    http://www.game-create.com/archives/308

┏┳━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┳┓
┃┃                                                              ┃┃
┃┃                      今日のメインテーマ                      ┃┃
┃┃                                                              ┃┃
┃┃                   【人生アウトソーシング】                   ┃┃
┃┃                                                              ┃┃
┗┻━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┻┛

 前回から、地球防衛ゲームの具体的なコーディングを開始しました。

 前回メルマガ上で解説したソースコードは次のようになっています。

  ------------------------------------------------------------------
    /* 前略 */

    #include "study_bitmap.h"

    Study::Bitmap background;

    void InitializeGame(HWND hWindow, HDC hBackBuffer)
    {
      background.load(hBackBuffer, TEXT("background.bmp"));
    }

    void DrawGame(HWND hWindow, HDC hBackBuffer)
    {
      BitBlt(hBackBuffer, 0, 0, 640, 480,
             background, 0, 0, SRCCOPY);
    }

    /* 後略 */
  ------------------------------------------------------------------

 これは当サイトで配布しております template.cpp を基に

 地球防衛ゲームの背景を表示するソースコードの抜粋です。

 template.cpp は次のページで配布しております。

    http://www.game-create.com/archives/86

 ちなみにこのソースコードを実際にビルドしてみたい方は、

 前回のメルマガを参照ください。詳しい手順が載っています。

    http://archive.mag2.com/0000240151/20080517201413000.html

 さて、前回のソースコードによって地球防衛ゲームの土台となる

 背景を表示するところまで作ることができました。

 しかし、覚えていらっしゃいますでしょうか?

 実は、同じことをやっているはずのダウンロードサンプルには

 もっと多くのソースコードが付随しておりました。

 ちなみにダウンロードサンプルは次のページにあります。

    http://www.game-create.com/archives/360

 このダウンロードサンプルにはソースコードが5つついています。

 Visual C++ のプロジェクト上では次のような構成になっています。

  ------------------------------------------------------------------
 プロジェクト
 │
 ├ソースファイル
 │├background.cpp
 │├study_bitmap.cpp
 │└template.cpp
 │
 └ヘッダファイル
  ├background.h
  └study_bitmap.h
  ------------------------------------------------------------------

 しかし、前回メルマガで解説したソースは次のような構成になっています。

  ------------------------------------------------------------------
 プロジェクト
 │
 ├ソースファイル
 │├study_bitmap.cpp
 │└template.cpp
 │
 └ヘッダファイル
  └study_bitmap.h
  ------------------------------------------------------------------

 わかりますか?つまり、ダウンロードサンプルの方には

 background.h と background.cpp というファイルが

 追加されているのです。前回メルマガで解説したソースも、

 ダウンロードサンプルも、実行すると全く同じ結果になります。

 にも関わらず、なぜダウンロードサンプルの方が

 ファイルが多いのでしょうか?

 それこそ、今回のメインテーマ「アウトソーシング」です。



 「アウトソーシング」とは「業務を外注すること」を意味します。

 本来はプログラムには用いる言葉ではなく、

 主にビジネスのシーンで使われる言葉です。

 しかし、私は「ソース」を「アウト(外注)」するという点で

 プログラミングにも転用できるのではないかと考えています。

 つまり、ダウンロードサンプルの方が

 ソースファイルの数が多かった理由は…



   template.cpp が background.cpp に

   「背景を表示する」という仕事を「外注」していた!



 …のです。

 ダウンロードサンプルをダウンロードして圧縮ファイルを解凍し、

 background.cpp を開いてみてください。

 次のようなソースが見つかると思います。

  ------------------------------------------------------------------
    #include "background.h"

    static Study::Bitmap background;

    void InitializeBackground(HWND hWindow, HDC hBackBuffer)
    {
      background.load(hBackBuffer, TEXT("background.bmp"));
    }

    /* 中略 */

    void DrawBackground(HWND hWindow, HDC hBackBuffer)
    {
      BitBlt(hBackBuffer, 0, 0, 640, 480, background, 0, 0, SRCCOPY);
    }
  ------------------------------------------------------------------

 中カッコ({})の中身に注目してください。

 実は、冒頭に掲載した template.cpp と同じ関数を使っているのです。

 しかも引数も同じです。

 同じ関数を同じ引数で使うと結果も同じになります。

 「前回のメルマガで解説したソースコードとダウンロードサンプルとでは、

  背景を描いている場所は違うものの中身は同じである」ということが

 お分かりいただけるかと思います。

 たとえば、みなさまもご自宅のエアコンが壊れたら自分で直したり

 なさるでしょうか?おそらく相当の知識が必要となりますので、

 自分では直さずに専門の業者に外注することになると思います。

 外注という言葉が難しいかもしれませんが、要はお願いするということです。

 今回の地球防衛ゲームも同じことです。

 template.cpp が背景描画の専門家である background.cpp に

 「背景を描いてね」とお願いしているのです。

 なぜ、わざわざこういう関係を作る必要があるのでしょうか?

 これは理解するのに経験を要するので「ふーん」と思う程度に

 聞いていただきたいのですが、実は、ひとつのソースコードに

 プログラムをまとめると、後で手を入れるのが大変になるのです。

 おそらくピンと来ないと思います。

 しかし、これは先に進めば必ずわかります。

 「自分で作ったゲームなんだから自分が一番よく理解している」

 というのは最初は正しいのですが、数ヵ月後に間違いだと気付きます。

 一般的に、プログラミングの世界では「3ヶ月後の自分は他人」という

 考えが常識となっております。つまり、3ヶ月後には

 3か月前のことを忘れてしまっているのです。

 たとえば前回のメルマガで解説したソースコードを例にすると、

 今日の私は「背景は template.cpp が描いている」と覚えています。

 先週書いたのですから。しかし、3ヶ月後の私はこの事実を

 忘れている可能性があります。

 「あれ?背景を変えるにはどうしたいいんだ?」となったとき、

 ソースコードが template.cpp がひとつしかないと大変です。

 検索機能を駆使して background.bmp を使っているところを

 見つけなければなりません。ですが、もしソースコードの中に

 background.cpp という名前のファイルがあれば、

 「あ!こいつが背景について詳しそうだ!」と想像がつくのです。

 「後から手を入れやすい」とはこういうことを意味します。



 今回のお話はゲームプログラミング入門には直接関係しませんので、

 必要になったらあとから思い出してください。

 ただし!今後はサンプルプログラムを眺める際に、

 ソースファイルの数や名前に注意して、

 「あ、こうやって後から手を入れやすくしているんだな」と思ってください。

 ソースファイルを増やさないとゲームが作れない

 ということではありません。後々のために増やしているのです。



 さて、アウトソーシングの必要性がなんとなく

 お分かりいただけたかと思います。

 そこで次回は、アウトソーシングの具体的なやり方をご説明します。

 「どうやって専門家を作ればいいのか?」

 「どうやって専門家にお願いするのか?」

 これがわかったとき、ゲームプログラミングの階段を

 またひとつ上ることができるようになるのです。

 お楽しみにお待ちください!



 今週も最後まで読んでいただきましてありがとうございます!

 それでは!

                                                            Byerkut.

┌┬───────────────────────────────┬┐
││ 重要記事のダイジェスト                                       ││
└┴───────────────────────────────┴┘

  ■C++ は計算と記憶しかできない
  ■外部の機能(関数)を借り受けるには #include を使う
  ■#include で借り受けた機能を使うには関数を呼び出す
    http://archive.mag2.com/0000240151/20080203171350000.html

  ■Windows プログラムには必ず WinMain() 関数から開始する
    http://archive.mag2.com/0000240151/20080209215231000.html

  ■プログラムは関数の集まり
  ■プログラムは関数を増やしてソフトウェアを作る
  ■関数には次の要素がある(名前・機能・引数・戻り値)
    http://archive.mag2.com/0000240151/20080216090000000.html

  ■ゲームを作るためには「入力」「出力」「条件分岐」が必要
    http://archive.mag2.com/0000240151/20080301221623000.html

  ■LoadImage() 関数はコピペで使い回せる。
  ■LoadImage() 関数の第2引数は
    メモリに読み込みたい画像ファイルの名前を渡す。
  ■LoadImage() 関数で読み込むファイルは
    プロジェクトディレクトリにおいてある必要がある。
    http://archive.mag2.com/0000240151/20080413174135000.html

┌┬─────┬─────────────────────────┬┐
││ あとがき │  発行者のつぶやきです                            ││
└┴─────┴─────────────────────────┴┘

 アドエスを買いました。

 スマートフォンが若い世代に人気らしいので気になっていたのですが、

 気分だけでも若返ろうと思い、頑張って買ってみました。

 仕事の TODO やスケジュールが同期できるので非常に便利です。

 電話なわけですから、通話やメールはもちろん、

 無線 LAN 対応で高速な通信も体験することができます。

 日本のモバイル不振を払拭できればモバイラーとしてはうれしい限りです。

┌┬───────────────────────────────┬┐
├┘                                                            └┤
│  購読の解除はこちら↓                                            │
│  http://www.game-create.com/contents/gp_beginners_ml             │
├┐                                                             ┌┤
└┴───────────────────────────────┴┘
                            - Ads space -
┌┬───────────────────────────────┬┐
├┘                                                            └┤
│ 「挫折不可能!初級ゲームプログラミング完全マニュアル」は、       │
│ 「いちばんやさしいゲームの作り方」が運営しています。             │
│                                                                  │
│  サイト     : http://www.game-create.com/                        │
│  発行元     : http://www.game-create.com/menu/about              │
│  発行者     : http://www.game-create.com/menu/profile            │
│  問い合わせ : http://www.game-create.com/menu/contact            │
│  利用規約   : http://www.game-create.com/informations/agreement  │
├┐                                                             ┌┤
└┴───────────────────────────────┴┘
                 POWERED BY LIBERTIASTER GAME STYLE.
最新号をメルマガでお届け
登録 解除

規約に同意して

登録した方には、まぐまぐの公式メルマガ(無料)をお届けします。

最近の記事

上へ戻る