
GameMakerのゲームを移植する
GameMakerのゲームを、書き出しライセンスのいらないプロジェクトへ移植する
GameMakerのゲームの移植とは、権利のあるプロジェクトを作り直すことだ。ルームはシーンに、オブジェクトはノードに、GMLのイベントはスクリプトのコールバックになる。
GameMakerのゲームの移植とは、権利のあるプロジェクトを別のエンジンで作り直すことだ。GMLはGameMaker固有で、.yypのプロジェクトファイル、ルーム、オブジェクト定義を取り込むものは他にない。とはいえ作り直しは機械的に進む。GameMakerのモデルはシーンツリーにきれいに対応するからだ。
自分のGMLと自分のアートは自分のものなので、GameMakerの移植の大半は持ち出せる。マーケットプレースのアセットは個別に確認する。ライセンスがGameMakerのプロジェクトに用途を限っていることがある。
Summer Engineは作り直しの受け皿になる。スクリプトを持つシーンとノード、GameMakerが扱う範囲をカバーする2Dのツール、そしてゲームが育ったときの3D。プロジェクトは自分のもので、ロイヤリティはなく、デスクトップ、モバイル、Web、コンソールへの書き出しは別売りではなくエンジンの一部だ。
ルーム、オブジェクト、イベントはシーンツリーに対応する
ルームはシーンになる。オブジェクトはスクリプトを持つノードになり、オブジェクトのインスタンスはインスタンス化したシーンになる。Createイベントはreadyのコールバック。Stepイベントは毎フレームのprocessコールバック。Drawイベントは描画のコールバック。アラームはタイマーになる。オブジェクトの継承はシーンの継承かスクリプトの継承になる。原点を持つスプライトはオフセット付きのスプライトノードになり、GameMakerの衝突マスクは衝突シェイプになる。
書き直しが要るGMLの書き方
そのままは移らないGMLの習慣もある。グローバル変数とwith文は平たい構造を促すが、ノードツリーはそれを別の形、たいていはノード参照とシグナルで扱う。ds_map、ds_list、ds_gridは辞書、配列、入れ子配列になり、メモリは自動で扱われるので手動のdestroy呼び出しは消える。instance_createとinstance_destroyはシーンのインスタンス化とノードの遅延削除になる。ルームの永続化とインスタンスの順序は、ルーム設定に頼らず明示的に扱う。
ピクセルアート、カメラ、解像度
GameMakerの2Dプロジェクトはたいてい固定のルームサイズとカメラのビューポートを定義している。基準解像度に設定したビューポートと、ピクセルアート向けの整数倍スケーリングとニアレストネイバーフィルタでそれを再現する。よくある劣化はサブピクセルの移動だ。GameMakerのプロジェクトはピクセルを揃えるために座標を丸めていることが多く、作り直しでその工程を飛ばすとカメラ移動中にスプライトがちらつく。オブジェクトごとに継ぎ当てるのではなく、最初にピクセル吸着の方針を決める。
プラットフォームごとのライセンスなしで書き出す
GameMakerは歴史的に、書き出し先をライセンスの等級やモジュールで分けてきた。Summer Engineでは、デスクトップ、モバイル、Web、コンソールは同じエンジンのプラットフォームの方向であり、プロジェクトは完全に自分のもので、ロイヤリティも収益分配もない。GameMakerのゲームが後から3Dや重いシェーダー作業を望んだ場合も、別のツールに移らず同じプロジェクトの中に余地がある。
よくある質問
GameMakerのプロジェクトファイルを他のエンジンに取り込めるか
取り込めない。GameMakerの.yypプロジェクト、ルーム、オブジェクト定義を取り込むものは他のエンジンになく、GMLはGameMakerの外では動かない。移植は作り直しだが機械的だ。ルームはシーン、オブジェクトはスクリプトを持つノードに対応する。
GameMakerのイベントはどう対応するか
Createはreadyのコールバック、Stepは毎フレームのprocessコールバック、Drawは描画のコールバック、アラームはタイマーになる。オブジェクトの継承はシーンまたはスクリプトの継承になり、衝突マスクは衝突シェイプになる。
ds_map、ds_list、ds_gridは何になるか
辞書、配列、入れ子配列になり、いずれもメモリ管理は自動だ。GameMakerのデータ構造が必要とした手動のdestroy呼び出しは要らなくなり、作り直したコードから漏れの一種類がまるごと消える。
移植後にピクセルアートがちらつくのはなぜか
サブピクセルの移動だ。GameMakerのプロジェクトは、スプライトをピクセルグリッドに揃えるため座標を丸めるのが普通だ。作り直しでスプライトが小数座標で動くと、カメラ移動中にちらつく。最初にプロジェクト全体のピクセル吸着の方針を決める。
書き出しプラットフォームごとに別のライセンスが要るか
要らない。デスクトップ、モバイル、Web、コンソールは同じエンジンの方向であり、プロジェクトは自分のもので、ロイヤリティも収益分配もない。ゲームはC++とGDScriptで書き、C#もWeb以外では使える。
さらに見る
Summer Engine で創るその他の方法
AI ゲームメーカー
説明するだけで完全な 2D・3D ゲームを作れるハブ。
開くMake a game from a picture and the idea it holds
Bring a picture and Summer Engine builds a game inspired by its look and concept: scenes, gameplay, and matching art in one project you own.
開くPort a 3DS game by rebuilding it, not converting it
Porting a 3DS game means rebuilding a game you own as a new project that runs on platforms that still sell games. There is no file converter for this.
開くPort a Nintendo DS game to platforms that still sell games
A Nintendo DS port is a rebuild of a game you own. The stylus design is the asset worth keeping, because touch is native on every phone.
開くPort a Wii game and decide what happens to motion control
Porting a Wii game means rebuilding a title you own for hardware without a Wii Remote. The pointer and the motion gestures need a new input design.
開くPort a Wii U game off the smallest console audience
Porting a Wii U game means rebuilding a title you own for platforms with a single screen. The GamePad layer is the part that has to be redesigned.
開くPort a PSP game and give it a second analog stick
Porting a PSP game means rebuilding a title you own. The camera design is the biggest change, because the PSP had one analog nub and no right stick.
開くPort a PS Vita game before the platform disappears entirely
Porting a PS Vita game means rebuilding a title you own. The rear touch pad is the one input with no modern equivalent.
開くPort a GameCube game from 480p to a modern project
Porting a GameCube game means rebuilding a title you own. The analog triggers and fixed camera design are the parts that need deliberate decisions.
開くプラットフォーマーのテンプレート
既成のプロジェクトから始めて、変更を説明するだけ。
見るすべてのゲームテンプレートを見る
既成のプロジェクトから始めて、変更を説明するだけ。
見る