2dgames.jp

ゲーム開発に役立つ情報とゲームを公開しています

ゲーム開発環境のまとめ

■このページについて

「これからゲームを作ってみよう!」と考えている人のために、自分が使ったことあるゲーム開発環境を紹介してみます。

■更新履歴
  • 2012-12-02 Objective-C / PHP を追加
  • 2013-10-28 GameMaker:Studio を追加
  • 2014-04-21 誤字脱字や分かりにくい表現を修正

■言語一覧

完全に主観ですが、それぞれの言語を使ってみた評価をまとめてみました。

言語 Webでの情報量 お手軽さ 拡張性 言語仕様 実行速度 デバッグ効率 配布ファイルサイズ 環境整備 特記事項
HSP (ゲームを作るための)情報量が断然多い
C/C++(DirectX) 高速で動作する。何でもできる
C/C++(DXライブラリ) 高速で動作する。MMDが使える
Python(Pygame) × コーディングが楽
Ruby/SDL × コーディングが楽
D言語 × 高速で動作する。しかし情報量少なめ
Flash(Flex) × Web上で高速で動かすならやはりFlash
Objective-C iPhone(iOS)専用
PHP - ソーシャルゲーム作るならPHP
GameMaker:Studio マルチプラットフォームに出力可能

■言語詳細

▼HSP

私が一番最初にゲームを作っていた環境です。プログラム言語(正確にはスクリプトですが)としては非常にシンプルで分かりやすいですし、特にWeb上にチュートリアルがたくさんあるのが魅力的です。例えば、「hsp ゲーム 作り方」でGoogle検索すると、かなりの情報が見つかります。何よりも、絵を出したり音を出したりするのが、数行で記述できるのが楽ちんです。

例えば、

 picload ”hoge.bmp”

こう記述するだけで、”hoge.bmp”をロードして表示することができます。

Windows APIやDirectXをやっていた人なら分かりますが、画像を表示するのはとても面倒なことです。例えば、Windows APIを使用してWindowの初期化をするだけでも100行を超えるプログラムを書く必要があります。ですがHSPなら画像を表示するために必要なコードはたった1行です。HSPがいかに簡単に書けるのかが分かります(なおDirectXを直接使用する際、面倒な手続きを減らすためにライブラリを作ることとなります)。

…ただ、言語仕様が貧弱でやや独特なのが欠点です。例えば、

  • 変数が全てグローバル(ローカル変数が書けない)
  • 構造体が書けない
  • 関数が書けない(マクロ的な記述となる)

というC言語などのプログラム言語をすでに習得している人からは、 「なんでこれができないの?」などと、とても不評です…。ですが裏を返せば、「余計な機能がないから分かりやすい」と言えますし、OMEGAさんの一部のゲームはHSPで作られていますし、

がHSP製ながら独創的で面白いゲームを作っています。結局はアイデア次第なんじゃないかと思います。

▼C/C++とDirectX

私が次に手を出したのが、この環境です。正直、HSPの楽チンプログラミングに慣れていたため、DirectXの初期化処理とか独特のお作法に苦労した記憶があります。ただ、ライブラリを書くのはとても勉強になりますし、ゲーム会社(特にコンシューマー業界)に就職するならやるべきですね(実際専門学校に入るとDirectXでライブラリ作成の授業をするところが多いようです)。個人的にも、試行錯誤でライブラリを作った経験が、今の自分のライブラリの基礎となっているので、無駄にはなっていない気がします。

とは言え、今ならライブラリを一から書くよりも、「DXライブラリ」というDirectXを使いやすくしたものが公開されているので、それを使うと楽できます。

あとDXライブラリなら、MMDを簡単に読み込んで描画する仕組みが用意されているのもいいですね。

▼PythonとPygame / RubyとSDL

C言語でゲームを作ると、メモリ関連の問題にぶち当たることが多いです。主にメモリリークやメモリ破壊ですね。とくにメモリ破壊はハングアップの原因となり、調査に多くの時間が取られることとなります。そういった問題が嫌になって「スクリプト言語でゲーム作ればクール」と思い、PythonやRubyに手を出したりしました。

実際、メモリ破壊の心配がほとんどなく、記述もすっきり書けるのでとても作りやすかったですけど、配布するときにランタイムを付属する必要がありファイルサイズが大きくなるのと、実行速度がやや遅いのが気になり、後述するD言語に環境を移行しました。

ただ、現在もツール作成(データコンバートなど)やプロトタイピングではPythonやRubyを使うことも多く、補助ツールとしてスクリプト言語を覚えておくのは悪くないと思います。

▼Java

昔、携帯電話(iモード)のゲームを作る仕事をしていたこともありました。JavaにはEclipseという開発環境があったのでとても開発がしやすかった記憶があります。

携帯電話のゲーム作成ですが機種依存の不具合が多く、色々と面倒な事をする必要があった記憶があります。

最近のJavaの使い道としては、Androidの開発環境ですね。

▼D言語+SDL/OpenGL

D言語は一般的にはあまり知られていないですが、メリットとしては、

  • コンパイル爆速
  • GC搭載
  • モダンな書き方ができる

デメリットとしては、

  • VisualStudioやEclipseみたいな開発環境が整備されていない
  • Webの情報がやや少なめ
  • コンパイラにバグがある、、、らしい(個人的にはあまり気になったことはないですが)

という感じです。 特にWeb上に情報があまりないのが少し大変でした。(今はそれほどでもないかもしれません)

あとVisualStudioみたいなデバッガがないので、RPGのようなシステム重視のゲーム開発は大変かもしれません。(追記:VisualDというプラグインが開発されており、VisualStudioからコードの定義ジャンプ・コード補完、ステップ実行・変数のウォッチが可能となっていて結構快適にデバッグできます)

欠点ばかり書いてしまいましたが、言語仕様を調べたり開発環境の構築したりする手間がかかり、初心者向きではないのは確かです。

▼D言語+DXライブラリ

D言語でDXライブラリを使うというのも試してみました。D言語はC言語との親和性が高く、DXライブラリを使っている方もいます。

▼FlexSDK+FlashDevelop

Flashの開発環境の1つであるFlexSDK+FlashDevelopという開発環境です。FlashDevelopだと普通にコードの定義ジャンプや補完、ステップ実行・変数のウォッチができるので楽です。ただ個人的には実行速度を60FPSまで上げられなかったのが不満でしたね。頑張れば高速化できるかもしれませんが、私の力では30FPSあたりが限界でした…。ブラウザで動くこともありWebとの連携が強いのが強みですね。CGIと組み合わせてネットワークゲームを作るのも簡単そうです。

▼Objective-C

iPhoneブームで急速に普及している言語です。iPhoneでゲームを作る場合はObjective-Cを覚えることがほぼ必須です(Objective-CをラップしてJavaScriptで作ることもできるライブラリもありますが…)

個人的な印象ですが、言語仕様としては、C言語になれた人にとっては非常に分かりにくい記法となっており、とっつきが悪いです。

ただ、XCodeでのコード補完やデバッグ機能が強力であったり、iOS SDKで多くの機能が提供されていること、普及していることもあり情報が豊富というのが開発として非常にメリットがあると思っています。

▼PHP

最近はゲームの枠組みが広がり、ソーシャル・ネットワーキングサービスを活用したゲームが拡大しています。

そういったソーシャルゲームを作る際に、今一番使われているのがPHPです。サーバ上で動作すればいいのでPHP以外の言語でもいいのですが、WebサーバーのApacheやデータベースであるMySQLとの親和性を考えるとPHPが無難です。情報量の多さも圧倒的です。

個人的には、C言語が使えれば覚えやすい言語ではありますが、拡張による拡張で謎な言語仕様やハマりどころが多い(例えば比較演算子の扱いなど)、エラー処理をちゃんと組まないとバグりやすい(実行時エラーとならずにスルーしてしまう)、など大規模な開発に使うには危険な言語かなと考えています。

個人開発で使うには開発効率がよく、これで十分なのかもしれません。

▼GameMaker:Studio

長年理想のゲーム開発環境を探し求めていたのですが、ついにファイナル・アンサーを見つけてしまったのかもしれません(2013.10.28現在)。位置づけとしては「プログラムができなくてもゲームが作れる」といったツクール系に近いのですが、

  • GMLという独自言語でプログラム(スクリプト)をガリガリ書くこともできる
  • イベントコールバックによるすっきりとした記述ができる
    • 衝突判定もイベントなので、自分で衝突判定のコードを書く必要がない!
  • オブジェクト指向的なゲームインスタンスの管理
  • ファイルがすべてXMLのテキストなのでSubversionでの差分管理も可能

とプログラマが使っても満足のいく環境ではないかと思っています。

また、

  • ゲームを作るためのエディタが充実
  • さらにマルチプラットフォームへのエクスポート機能がある

ため開発効率もかなり良いです。(特にHTML5にエクスポートしたらほぼそのまま動いたのは感動でした…!)

欠点としては

  • 有料の開発環境(フリー版でも頑張れば作れるけど、凝ったゲームを作ろうとするとオブジェクト数制限に引っかかる)
  • GMLがスクリプト言語としては前世代的(リストやマップ、クラスの言語レベルでのサポートがなく記述が冗長)
  • 日本語の情報が少ない。IDEのメニューが全て英語

というところでしょうか。

とはいえ、リアルタイムゲーム(アクション・シューティング)が効率的に開発できることもあって、現時点ではかなり気に入っている開発環境です。




はてなブックマーク - ゲーム開発環境のまとめ

Tags: , , , , , , , ,


メニュー

よく見られているページ