BACK / TOP / NEXT

2 基本画像描画系の利用

ここでいう画像描画系とはそれぞれの言語でユーザインターフェースを作るための基本機能を指します。…というか、DirectXを用いない場合の方法について挙げていきます。

2.1 VisualBasic編

はじめにVBです。理由は私が最初に弄ったのがVBだったからだったりします(ということで文章が長めです)が。VBの特徴としては、GUIを使ってフォーム1に簡単に様々なコントロール(部品)を配置することが出来ることでしょうか。これによって色々な入出力インターフェースを備えたツールなどを簡単に作ることが出来るのです。

VBの場合は、VBの特徴である画像を表示するコントロールをばら撒いてそれらを適当に動かす2…のでは無くて、BitBlt6などの基本的な描画命令を用いてフォームに絵を描いていくという方法です。VBは特殊な座標系を使っていたりするので手間取るかもしれませんが、この方法なら普通に画像ベースのゲームが作れます。あ、画像描画先はフォームではなくて基本的なコントロールであるピクチャボックスを使ったほうが何かと便利かもしれませんね。

ただし、基本的にVBはイベントドリブン3ですが、ゲーム制作はリストドリブン4で作るのが基本だと思うので、ツール制作をやっている人がいきなりゲームを作ろうとするとかなり戸惑うかもしれません(戸惑いました)。後は普通にツール製作に使うようなソースコードでゲームを作ることもできてしまうはずです。がんばってみましょう。色々なフォーマットの画像を操作することや、サウンドの再生、入力の受付などに関しても、基本関数、API5共にそれなりにあるのであまり苦労することは無いでしょう。ただし、BitBltなどで作ると、すぐに速度の限界にぶつかってしまうかもしれません(ぶつかりました)。また、最近のゲームでよくあるような綺麗な画像処理を行うのは大変7なので、後述するDirectXを使った方法に移行したほうがよいのではないかと個人的には思います8。後は…あえていうなら、言語そのものがWindows 以外に応用できないので、他のプラットフォームでの開発には生かせないのが残念です(当然、アルゴリズムは使えますよ)。

以前はよくVBはインタプリタ9なので実行速度が遅いと言われていましたが、最近はマシン自体が高速なのであまり気にならなくなってきています。BitBltなどを激しく連続的に使用することですぐに耐えられなくなりますが。ただし、VBで作られた実行ファイルは実行時にランタイムを使うので、配布時にはその辺まで気を使わないといけません。気をつけてください。

2.2 HSP編

HSPの特徴としてはインタプリタのスクリプト言語(簡易プログラム)ということであり、変数が宣言なしに使えてしまうなど、初心者でも使いやすいことが挙げられます。また、ものすごい数の便利なライブラリ(機能を拡張するための部品)があり、それらを組み合わせることで色々なソフトを作ることが出来るので便利です。

割と最近でてきたこの言語は、ゲーム制作に関しても数多くのライブラリが出ていて、Webに解説ページが数多く存在するので、ゲーム制作にもかなり有効だと思います。初心者への解説のサイトも数多く存在しているようなので、初めてプログラミングを行う人でもなんとかなるのではないでしょうか?画像処理なども簡単に行えるのでゲームを作るのにも不便は無いでしょう。

前述の通り、HSPもVBと同じくインタプリタですが、やはり最近のマシンは処理能力が高いのであまり気にならないでしょう。それにうまくプログラミングできれば少しぐらいの遅さはカバーできるはずです。事実、HSPを使っている高速アプリケーション、ゲームも数多く存在します。ただし、HSPはその性質上大規模なアプリケーションを作るのには向かないと言われているので気をつけましょう。また、基本的にアイコンが同一のティーカップになってしまうので、面白くないと思ったらちゃんと書き換えましょう10。他にも演算子の優先順位や変数の型など他の言語比べると挙動が違う点もあるのでちゃんと確認しましょう。ちなみにプラットフォームはWindowsのみ、他の言語との互換性も無いので覚悟しておきましょう(笑)。

ちなみにHSPは無料で開発環境やライブラリを入手できるので、そういう意味でも初めてプログラミングに触れるには適している言語かもしれません。 11

2.3 Delphi編

DelphiはPascalという、変数の型チェックが厳しく、教育用として広く使われている言語を拡張したもので、VisualBasicに対抗する言語として有名です。

うちの学校では学科によってはPascalについて学習します。このPascalの流れを汲んだのがDelphiなわけで、人によってはこれを使ってゲームを作りたいと思うかもしれません。幸いなことに、Delphiを使えばウィンドウズでもPascalベースでプログラムを組めるので、そういう人は試してみるとよいでしょう。DelphiもVisualBasicと同様フォームにコンポーネント(部品、VisualBasicでいうコントロール)を配置してツールを作ったりするのが基本ですが、やはりフォームに描画を行うことで画像ベースのゲームを簡単に作ることが出来ます。また、特徴的なのが、細かい機能を実現するためにAPIを多用する必要があったりするVBと違って12、数多くの用意されたライブラリがあり、プラットフォームさえも越えたプログラミングが可能だということがあげられます。更にはUNIX系のプログラミングにさえ応用が利きます(というかほぼ同じソースが使えます)。広く応用が利くのはうれしいことです。

もう一つ、最近のDelphiは無料でグラフィカルな開発環境が手に入る(WindowsでもUNIXでも)という魅力的な点があります。お金をかけずに様々なプラットフォームで使えるのはとても良いことだと思います。

2.4 JAVA

個人的には今一番開発に熱が入っている言語のような気がするJAVA。おかげでバージョンアップの際に少々違いが出て困ることもあるようですが。とにかく、オブジェクト指向13を前面に持ち出した(初心者には逆に難しいかもしれない?)新しい言語です。この言語の特徴といえば、なんと言っても「Write Once, RunAnywhere」、一度ソースコードを書けば、どんなプラットフォームでも動くことでしょう。携帯電話上でのJAVAや、Microsoftが勝手に拡張してしまったJAVA など、若干の問題はあるものの、基本的にどんなプラットフォームでも動かせるので、いろいろなところで応用が利く言語といえるでしょう。

JAVAでゲームというと前述の携帯電話上や、webブラウザ上でのJavaApletが有名ですが、最近はフルスクリーンで動くプログラムを作れたり、高速な描画機能が備わったりで、ゲーム製作にもかなり有効な言語になってきています。

JAVAも開発環境が無料で手に入りますし、解説サイトや本もたくさんあるので挑戦してみる価値は大いにあると思います。

2.5 VisualC++編

本来はBorlandC++Builderなどにも触れるべきなのですが、使ったことが無いので割愛です14。また、VCのプログラムというとよくMFC15を利用したプログラムが出てきますが、MFCはツール製作には便利ですがゲーム製作には向かない代物(…だと思うんですけどねぇ?)16なのでここでは触れません。とりあえずVCは基本的にC言語なので様々なプラットフォームに応用が利くのですが、ウィンドウ表示などはWindows独特の記述になるので注意しましょう。

さて、正直な話、VCでゲームを作るのは大変です。理由は、ウィンドウを出すなどの基本的なことに他の言語と比べて労力を必要とするからです。更に、完全な初心者にとっては基本的なC言語を覚えることができても、ゲーム製作に使うような処理を覚えるには苦労するように思います。ただし、ある程度わかってしまえばAPI関数の呼び出しなどは楽なので、結構組みやすくなるかもしれません。個人的には、C言語の書き方を覚えたところで、後で述べるライブラリを用いたDirectXプログラミングなどに手を出してみたほうが近道になる気がします。

とりあえず、全くのプログラミング初心者がプログラムの組み方=ゲームの組み方として習得するのには的していないような気がします。

ただし、C/C++自体はUNIXなど本当に様々な環境で使えるので、習得しておくととても応用が利きます。がんばってみるだけの価値はあると思います。


・脚注
1)さまざまなコントロールを配置できる、VBの基本ウィンドウ。
2)私は最初こうやりました(笑えない)。
3)ある事象(イベント)が起きたらそれに対して何をする、と言う風に記述していく考え方。例としてはマウスがクリックされたら弾を撃つ、みたいな感覚。
4)例えて言うなら、イベントドリブンが「マウスがクリックされたら処理を行う」のに対して、リストドリブンでは「マウスがクリックされているかを調べてその結果に対して処理を行う」、みたいな感覚。
5)OSの機能を呼び出すための関数群。VBからWindowsのAPIを使うには、いちいち先頭で長ったらしい宣言をしなくてはならない、しかも関数で利用する定数なども必要なのでめんどくさい。楽するためのツールもついてるけど。
6)矩形描画を行う超基本的な描画関数。矩形描画用でありながら、同時に論理演算も行うことができるため、マスク画像を用意することにより不定形描画を行うことなども可能。
7)Bitbltで加算半透明なんてできるのかなぁ…?
8)この辺はある意味どの言語にも共通して言えるので以降改めて述べません。
9)コンパイルせずに一行ずつ実行することができる形式。普通は書かれたソースコードを全部コンパイルしてから実行するもの。インタプリタなら対話的に、気軽に開発・テストができる。
10)フリーソフトのライブラリに行くといっぱいありますよ、ティーカップ(笑)。
11)それと、HSPはVCで作られているらしいです。その変は良く知らないんですがね。
12)VBで色々やろうとすると、結構APIだらけになったりするんです。…え?私だけですか?
13)プログラムにおけるさまざまな要素をオブジェクトという単位で管理する…のだが、この説明はあまりに長くなりそうなので割愛。
14)ごめんなさい。他にもいじったことの無い言語について書いているんですけどね。
15)MicrosoftFunkeyControl…じゃなくて、MicrosoftFoundationClassLibrary(Lは?)の略(もっとやばいネタもあるけどとてもここには書けませんw)。アプリケーションをフレームワークといった捉え方で扱う。また、様々なクラスを標準で備えており、複雑なインターフェースや難しい処理を一手に引き受けてくれる。AppWizardという付属のウィザードでアプリケーションの根幹を一気に作成できてとても便利だが、一見するとブラックボックス過ぎて何が何だかわからない。プログラムを理解するという観点からは、私はこれを使用することを絶対にお勧めしない。
16)最近プログラムのアルバイトでMFCを扱っていますが、正直言ってもうイヤです。偏見ですが、こんな変態モジュールを使ってもちっとも嬉しくありません。一からWinMain書かせてください。

BACK / TOP / NEXT