Gamemaker

05/04/23

ゲーム統合開発環境。海外のシェアウェアだが、未レジストのままでも十分使える。
イベントドリヴン、オブジェクト指向、プログラムはブロックを組み合わせるようにして組んでいく。GMLという言語も内蔵している。
対応プラットフォームはWindowsのみ。実行ファイル作成可能。

インストール方法は
http://gamemaker.main.jp/
を参照のこと。

バージョンによる差異

旧バージョンと最新バージョン、日本では諸々の理由で使い分けられています。
どちらも本家からDL可能ですので、用途にあわせて選びましょう。

5.3A

・日本語パッチが存在する。(インターフェースの日本語化が可能)
・DirectX5
・ファイル形式は.gmd

6.0

・どうにも英語。
・日本語ヘルプが存在する。
・8MBのビデオメモリが必要です。ちょっと前のPCだと動かないことも。
・DirectX8が必要。
・エディタが少し使いやすくなっている。
・ファイル形式は.gm6
・実行ファイルが小さくなってます。

6.0はグラフィック周りが総書き換えされているので、安定した代わりに動作要件が厳しくなっています。
6.0では5.xのgmdファイルも読み込むことができます。ただスクリプトの仕様が変わっているので、そのままでは動かないこともしばしば。

レジストによる差異

Gamemakerはそのままでも十分な機能を備えていますが、
お金を払ってレジストすると、いくつかの拡張機能が使えるようになります。

・起動時のバナーが消える

・3D機能
 モデルの読み込み機能もないようですし、コリジョンなどの基本的な機能も備えていない、あくまで簡易的なものです。

・アルファブレンド
 アルファチャンネル付きの画像合成が出来るようになります。加算合成は?

・スプライトの回転

・データ構造が使えるようになります
 うーん、便利かも。アクションゲームには必要なさそうですが。

・DLLによる拡張
 これはでかいです。OGGの再生や3D表示など色々なライブラリが公開されています。

等々

レジストしてなくても出来る、見落としがちな機能

・スプライトの半透明表示
変数alpha(0〜1)を変更することで半透明表示できます。

・スプライトの拡大縮小
変数xscale、yscaleを変更することで拡大縮小できます。

・スプライトの回転もどき
あらかじめ回転させたアニメーションを用意し、スクリプトでdirectionに対応したindexを表示させることで可能です。(ボイドトランサ参照)
ただ、元がアニメーションしている場合難しくなります。

 

大まかなこと

まずは、
http://gamemaker.main.jp/
のチュートリアルをやってみるといいです。

GM6の日本語ヘルプは
http://www.geocities.jp/hogehige2005/
ここにあります。

 

概念について少し
(僕はプログラムについては素人に近いので、間違っていたらごめんなさい)

Sprite(スプライト)というのはものの見た目のことです。
見た目と本質というものは違うものです。 ゲームグラフィックはここに登録してあげます。

Object(オブジェクト)というのは、あらゆるものの設計図です。
Objectには、そのもの自身の性質を記述してやればいいわけです。
たとえば、飛行機というObjectは、飛びますね。
ただ飛ぶだけでは紙飛行機と変わりませんから、進行方向を変えたり高度を変えたり出来るものを飛行機と定義することにします。
ゲームではこれを、左キーが押されていたら左へ向かう、右キーが押されていたら右へ向かうといった風に記述します。

Instance(インスタンス)というのは、Objectから作られる実体のことです。
たとえるならObjectは設計図、Instanceは飛行機そのものです。
同じものはいくつでも作ることができます。敵の戦闘機というオブジェクトを作れば、敵戦闘機の編隊を作ることは簡単なことです。

さて、Gamemakerではゲームの仕組みを記述するのに、イベントドリヴンという仕組みを用いています。
イベントドリヴンというのは、「何が起こったら、どうする」でゲームの仕組みを記述するやりかたです。
そんなんでうまく行くんでしょうか。いくんです。

簡単なシューティングの例を考えてみましょう。どういったことができるでしょうか?

・自機は移動できます。
・自機は前方に弾を撃つことができます。
・敵に当たるとゲームオーバー。
・敵を弾で撃ち落とすことが出来ます。

「何が起こったら、どうする」で考えられますか?
ちょっと考えてみて下さい。

 

僕なら、こういう風に書きます。

自機のオブジェクトはziki
弾のオブジェクトはtama
敵のオブジェクトはteki

・zikiはカーソルキーが押されると、対応した方向に移動する
・zikiはスペースキーが押されると、新しいインスタンスtamaを前方に撃つ
・zikiがtekiと衝突すると、ゲームを終了する。
・tekiとtamaが衝突すると、両方消滅する。

こんなとこでしょうか。こういった風にゲームを記述していきます。

 

細かいこと

・Gamemaker内での角度の扱いは反時計回り

・スプライトは、左下の一点と同じ色が透過される


この場合白が透明色になりますね

 

 

参考リンク

 

サンプル

ボイドトランサ(GM6)

WispLisp++(GM5)

(グラフィック・音楽の無断使用はしないで下さい)

 

スクリプトなど

miniscript.gml(GM5)
ちょっとした短いサンプルコード。メニューからImport Scriptsで取り込み、Stepイベント内にexecute scriptで指定して実行して下さい。
//Viewの外のインスタンスを削除
//Roomの境界でバウンド
//点滅
使用改変転載自由

 


ヤルハリ大学 文責:丼

TOPへ


[PR]就職、仕事にも県民性が出る?:無料カンタン占いで日払いもアップ