2008/04/06
初級ゲームプログラミング完全マニュアル [vol.0040 2008/04/06]
┏┳━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┳┓
┣┛ ┗┫
┃ 挫折不可能! 初級ゲームプログラミング完全マニュアル ┃
┃ ┃
┃ 第 40 号 2008/04/06 ┃
┣┓ ┏┫
┗┻━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┻┛
- Ads space -
┌┬───────────────────────────────┬┐
││ はじめに ││
└┴───────────────────────────────┴┘
みなさま、こんにちは!
個人ゲーム制作アドバイザーの Byerkut です!
ついに 2008 年度へと突入いたしました。
ちょうど良い具合に、気温も暖かくなってきており、
新生活をフレッシュな気分で始めるにふさわしい陽気となって参りました。
進学、就職など不安で迎える春の日かもしれませんが、
「なんとかなるさ」の精神でがんばりましょう!
我ながらためにならない言葉ですね。
なにはともあれ、今年度もよろしくお願いします。
┌┬───────────────────────────────┬┐
││本日のラインナップ ││
└┴───────────────────────────────┴┘
・今日のメインテーマ
【画像ファイルから絵を表示する基本】
・あとがき
┌┬───────────────────────────────┬┐
││ みんなの備忘録 ││
└┴───────────────────────────────┴┘
■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
┏┳━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┳┓
┃┃ ┃┃
┃┃ 今日のメインテーマ ┃┃
┃┃ ┃┃
┃┃ 【画像ファイルから絵を表示する基本】 ┃┃
┃┃ ┃┃
┗┻━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┻┛
前回、画像ファイルの内容を画面に出力するサンプルをお届けしました。
しかし、ソースコードの内容や、新たに登場した関数の具体的な解説は
今年度以降に持ち越しという形になっていたと思います。
早速、画像ファイルから絵を表示するサンプルソースの解説に
映りたいところなのですが、今後のゲームプログラミングに役立つ
基本的な前提知識がありますので、
今回はそれを押さえてしまおうと思います。
あまり前置きが長いと読む方が大変ですので、
いきなり要旨をお伝えします。今回一番重要な点は…
画像ファイルの絵を画面に表示する時は、画像をメモリに読み込む
…という点です。
「これブログに書いてなかったか?」と思われた方、正解です。
基本的にしてかなり重要なことですので、
メルマガとブログの両方にてお伝えすることにしました。
「画像を表示する前にメモリに読み込むのは当たり前だろ」と
思われた方は、今回のメルマガを読み飛ばしていただいて問題ありません。
おそらくパソコンに詳しい方にとっては当たり前すぎる話だと思います。
では、なぜ画像ファイルの絵を表示する際に
メモリに読み込まなければならないのでしょうか?
それは記憶装置の特性に起因しています。
そもそも、パソコンの記憶領域はふたつに大別することができます。
ひとつが主記憶装置、もうひとつが副記憶装置です。
主記憶装置とはメモリのことで、次のような特徴を持っています。
【長所】
・データへアクセスするのが早い
・データを移動するのが早い
・CPU から近い
【短所】
・容量が少ない
・1MB あたりの単価が高い
・揮発性が高い(油断するとデータが消える)
副記憶装置とはハードディスクや光学式ドライブ、
USB メモリやテープなどの記憶デバイスのことです。
Windows ユーザの方はドライブレター (C:\) がつくデバイスが
副記憶装置であると理解すると早いかもしれません。
副記憶装置には次のような特徴があります。
【長所】
・容量が多い
・1MB あたりの単価が安い
・揮発性が低い(運用を間違えなければデータが消えにくい)
【短所】
・データへアクセスするのが遅い
・データを移動するのが遅い
・CPU から遠い
主記憶装置と副記憶装置は、ちょうど長所と短所が逆転している関係に
あることがわかると思います。
コンピュータでは、このような異なる特性を持つ記憶装置を
うまく使い分けでプログラムを動かしているのです。
たとえば Windows パソコンは、電源が入っていないときは、
全てのデータが副記憶装置に保存されています。
電源を入れると、最初は副記憶装置に保存されている
Windows のプログラムを読みに行きますが、
いかんせん副記憶装置とはアクセスが遅いため、
快適にパソコンを動かすために、
必要なファイルを主記憶装置へコピーを始めます。
主記憶装置は非常にアクセスが早いので、
ユーザがマウスを動かせば即座にポインタが移動しますし、
キーボードをたたけば、即座に入力した文字が
画面に表示されるようになります。
普段パソコンを使っていれば不思議なことではないですよね?
ユーザの入力に素早く反応できるのは、 Windows などのプログラムが
主記憶装置上にコピーされているからなのです。
もし、 Windows が副記憶装置に入ったままだと、
入力した文字が画面に表示されるのは数秒後になるかもしれません。
マウスを動かして、ポインタが動くのが数秒後になるかもしれません。
…と、ここまで来て、おそらく大半の方は
今回お伝えしたいことが予想できたかと思われます。
そうです、画像ファイルの絵を画面に表示する際に、
メモリへ読み込まなければならない理由は、
「副記憶装置に保存されている画像ファイルを
直接、画面へ表示するのでは時間がかかりすぎるから」なのです。
ゲームは1秒間に数十回もの頻度で画面を書き換えますので、
少しでもゲーム画面を描画する時間を短縮するために、
高速なメモリを通じて絵を表示する必要があるのです。
ちなみに、これは Windows に限った話ではありません。
PlayStation などのゲーム専用機でも同様の手順を踏む必要があります。
たとえば PS2 の場合は、画面に表示したい絵は、
グラフィックスシンセサイザー(通称 GS )という装置のメモリに
読み込まれていなければなりません(例外もありますが…)。
「カートリッジで動くファミコンもか?」と思われるかもしれませんが、
おそらくファミコンも同様の手順を踏む必要があるはずです。
今回の内容は、あまり難しく考える必要はありません。
「画像ファイルの絵を表示する際には、効率化のために
アクセス(速度)が早いメモリを使う」というだけの話です。
なぜ、このような内容をお伝えしたのかと申しますと、
既存のゲーム制作ツールが非常に良くできておりまして、
この辺の知識を意識することなくゲームが作れる時代になっているからです。
RPG ツクールで「画像ファイルをメモリに読み込む」などと
いちいち意識して作ったりはしないはずです。
それはツールが裏でこっそりがんばってくれているからなんですね。
でも、自分でゲームプログラミングする場合は、
そのあたりを意識する必要があるため、
今回このような内容をお伝えしました。
面倒ごとが増えてしまったかもしれませんが Windows の場合は楽です。
LoadImage() という関数を使うだけです。
名前もそのままで非常にわかりやすいですね。
この関数も含めて、次回はサンプルプログラムを解説したいと思います。
今回も最後まで読んでいただきましてありがとうございます!
それでは!
Byerkut.
┌┬─────┬─────────────────────────┬┐
││ あとがき │ 発行者のつぶやきです ││
└┴─────┴─────────────────────────┴┘
最近、予想以上にゲームが売れないっぽいです。
投げ売りされているゲームは大抵予想より売れなかった作品らしいです。
先日 Amazon をのぞいたら、いまだに PS2 ハルヒの限定版の在庫があって
かなり驚きました(マーケットプレイスではありません)。
原作があるゲームはファンが買わなくなったら誰が買うのでしょうか…
┌┬───────────────────────────────┬┐
├┘ └┤
│ 購読の解除はこちら↓ │
│ 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.



