これからゲーム作ろうと思う方に

目次

  1. はじめに
  2. ゲームを作るには情報工学科?
  3. 道具を使いこなす
  4. いくつかのゲーム作るツールの寸評
    1. C
    2. C++
    3. Java
    4. C#
    5. Basic
    6. Visual Basic
    7. RPGツクール
    8. HSP
    9. Lisp
    10. DirectX
    11. WinGL
    12. Easy Link Library
    13. SimpleX
  5. ツールの選び方
  6. はじめに

はじめに

 このハナシは講義ではなく、あくまで随想です(※1)。でも実験レポート並に纏めようかと思います(※2)。ちなみに昨年の泰統総蒔氏の会誌と読み比べていただけると面白いかも知れません。ほら、だって機械科の人間だし。それではハナシをしていきたいと思います。

ゲームを作るには情報工学科?

 ゲームを作れるようになるためには、何も情報工学科に行かなくてはならないわけではありません。いきなりサークルの人間の大半を敵に回しそうな発言ですが(※3)。まあでもほとんどの部員(※4)は納得してくれると思います。

 それは、講義で習ったり実験で行うことが、直接ゲームつくりに役立つわけではないからです。言語の扱うのには役立つのですが。例えば講義でCPUの最適な処理をする方法やOSの効率よい制御方法を習いますが、その部分は既にあるものを使えばいいわけで、むしろその上の層にある、ゲームの面白さを追求したほうがいいゲームは作れると思うのです。ただ単にプログラムに精通していても生み出せないのです。さらに、プログラムにある程度詳しくなると、自らゲームつくりにおける可能性を封じてしまうのではないかとも考えています。

道具を使いこなす

 ゲームをつくるには、プログラミング言語で記述したり、支援ツール(ASCII社の○○ツクール系や、簡単な記述で製作できるツール等)で作ります。結構このサークル内(特に上級生)では後者をよくない様に思っている傾向がありますが、私はそうは思いません。

 結局プログラミング言語と支援ツールのどちらも、ゲームを作る上では一つの道具という意味で同じであり、双方に長所と短所を持ち合わせているだけに過ぎないのです。ちなみにプログラミング言語は主に高速か、もしくは細かいところまで手が届いたりする長所があり、支援ツール系は比較的短いステップで作成することができたりします。ちなみに細かいとこまで手が届く、比較的短いステップで作成することができるとかって、どこかで聞いたことありませんか?WindowsとLinux(BSD/UNIX)の話とか。

いくつかのゲーム作るツールの寸評

 先ほどの結論からもいえますが、ここでは「ここがいい」って言うのを話すだけで、順位付けや点数付けは致しません。興味を持ったらとにかく触ってみるのが一番よいかと思います。

・C言語

 Unixの中核を記述している言語です。最近ではJAVAやC#におされ気味ですが、かなり多くのシェアを持っています。速度は比較的高速ですが、バグが出易かったりします(とくにポインタを使い出すとすごい)。

 

 Windowsでプログラムを書くときは、少々特殊な書き方をしなければなりません。

・C++言語

 C言語に、主にオブジェクト指向の要素を取り込んだものでCの上位互換です。速度も多少落ちるくらいで、あまり変わらないかと。

 Cよりもコードの再利用がしやすいように考慮されて作られています。しかし、Cになれた人間にとっては多少気持ちわるいコードもあったりします。個人的には()が二つくっつくタイプはあまり好きになれません。

 主な製品(C,C++):Visual C++(Microsoft),C++ Builder(Borland),C++ Compiler(Borland),GNU C++ Compiler(GNU)

・Java

 サンマイクロシステムズがCを拡張して作ったオブジェクト指向型プログラミング言語です。C++と違い、結構Cに対してオリジナルの要素が含まれています(ファイル名が制限されたり)。またJAVAの趣向が、「一度書いたコードはどこでも実行できる」というもの(※5)であり、同じソースコードでWindowsでもUnixでも動かすことができます(CのウィンドウプログラミングはUnixとWindowsで異なる)。

 ただ、結構動作が重く、WindowsではDirectX(これは後述)が使用できないため、速さを要求されないゲームを作るのに向いていると思います。

 主な製品:J Builder(Borland)

・C#

 パチモンつくってSUNに訴えられてふてくされた某Microsoft社が、腹いせに作った言語です。・・って書くと近所のMicrosoft調布センターから秘密工作員がやってきそうな感じですな。訂正します。Microsoft社がC++を発展させて作った言語です。JAVAに結構似ています。ただ、DirectXが使えたり、結構早かったりするらしく、さらにCやC++言語に比べWindowプログラムがしやすいので、意外と顧客側の受けは良くシェアは多いです。

 主な製品:Visual C#.net(Microsoft)

・Basic

 他のが最近でも良く使われてるのに対し、これはあんまり使われてないです。背景が真っ黒な世代です。”How many files(0-15)?”とか、”FILES”とか覚えている世代って、もう若者じゃないんだよなぁ。

 Cに比べ深刻なエラーはずっとおきにくいです。あと英語そのままに近いので普通の人間がとっつきやすいです。

 後述するVisualBasicは別物と見たほうがいいです。

 主な製品:N88-Basic(NEC),F-Basic(富士通)

・VisualBasic

 文法はBasicで、構造はC++なものです。深刻なエラーはCよりおきにくく、またWindowプログラムを作るのが楽ですが、速度は落ちます。

 主な製品:Visual Basic(Microsoft)

・Pascal

 教育用に作られた言語ですが、これを拡張させてObjectPascalとした、DelphiというものがBorland社から市販されています。

 ソースは、Cに似ていますがCよりも読みやすく、Basicに比べ大分早いそうです。ちなみにUnixなどでは、PascalのソースをCに変換したりしています。

 主な製品:Delphi(Borland),Kylix(Borland)

・RPGツクール

 プログラミング言語でなく、ゲームを作るソフト。プログラミングに関する専門知識は必要なく、RPGのデータを記述するのみでOK。ある程度の形式に沿ったRPG作るなら、プログラミング言語で書くよりも数分の1以下で作れるでしょう。

 ただ同じバージョンだと、戦闘画面が背景以外固定だったりして、「ああこれはRPGツクールでできてるな」ってすぐに判別されてしまいます。灰色のウィンドウに黒の文字とか、緑のグラデーションのウィンドウとか。で、手軽に作れるぶん、作りこみが甘く見られたり、実際に作りこみが甘かったりします(そこらへん、プログラミング言語にくらべ作業時間が少ないということもあるかもしれませんが・・)。ツクールでも仕様書くらいは書けと。

 で、悲しいことに、やってて面白いなと感じたゲームは、RPGツクール2000なのに擬似リアルタイムバトルだったりと、元からあるシステムを破棄して・・って、普通にプログラムしても変わらないんじゃないか?って、そういう疑問もあったりなかったり。

・HSP

 これはプログラミング言語の一つに入るのかな?まあプログラムを書くのですが。割合簡単な記述でゲームなりWindowsアプリケーションなり作れます。うちのサークル内にも何人か使い手がいるようです。

・Lisp

 えっと、これでグラフィカルなゲームって作れるのかなぁ? プログラミング言語です。あんまりゲーム作るのには関わりなさげですが、書いておきました。だって情報工学科の必修だし。

どうでもいいがAmusementMakersのLispRPGってLisp言語で記述されているのであろうか。

ちなみにこの言語は関数型といわれる言語で、CとかBasicとかPascalなど手続き型言語とは多少毛色が違います。関数型言語は手続き型言語に比べ、わかる人にはわかりやすくて、わからない人にはよりわかりづらい感が強まっています。

・DirectX

 これは言語じゃなくてライブラリと呼ばれる類のもので、Windowsでハードウェアを直接制御するために用いられます。バージョン7までは2D処理が中心でしたが、8以降は2D描画が3D描画の一部となりました。

 これを使って作らないとWindowsで高速な描画ができませんが、3D支援機能がつんでいないノートでは、X8以降でまともに動作する速度を得ることができないわけで。

 あとはっきり言って記述する箇所多いです。最初からC++言語とDirectXを用いてプログラミングするのは、無謀行為といえます(※6)。記述を省くライブラリを用いたり、ツールを使ったほうがいいです。

 ちなみに私はC++言語+DirectX8.1で現在開発を行っています(いずれX9.0に移る予定)。

・WinGL

 上記の理由により、DirectXを隠蔽して記述を省いたライブラリが使った方がいいわけで。そのためのライブラリその1となります。筆者は大学入りたての頃このライブラリを使っていましたが、シェアウェアだったので他のライブラリに変えました。結構昔からあるライブラリなんですが、最近更新はされないのかな?

・Easy Link Library

 これもDirectXを隠蔽したライブラリです。こちらはフリーソフトです。大学入ってからサークルの先輩から知ったやつです。ほとんど#define文だったりしてデバッグがちょっとつらかったですが、作者のページにサンプルが大量にあったりして参考になったりします。

・SimpleX

 これもDirectXを隠蔽したライブラリです。実はこれは私がメインで使っていた言語ではないのですが、サンプルのあまりの短さに驚きを隠せなかったりして、これな最も人に教えやすいかなということで、同じサークルのTIMA氏がこのライブラリでゲームを作って調布祭で公開しました。

 難点は3D面が弱いのと、開発が終了してしまったことでしょうか。

・SGLib

 で、人に教えやすくて、かつ3Dも使えるようなDirectX8(だけでなく、OpenGLなど他のプラットフォームでの描画ライブラリも取り込めると望ましいが・・)ベースのライブラリを、サークル内で使えるようにしようと企んでいたりします。すでに2Dのみで最低限の機能を実装した版がサークル内でも公開されていたりします。「されています」ってのは、私がコード書いているわけではないからでありまして、企画者って感じですね。この会誌の咎人氏のSGLibの原稿も私が校正加えたりしています。SGLibにつきましてはそちらのページに概要がありますんでご参照ください。ちなみにSGLibっていうのはSuperGreatLibrarySimple Game Libraryの略です、たぶん

ほかにもDxLibとかYaneuraoGameScripterといったライブラリがありますが、筆者が使ったこと無いので紹介程度にとどめておきます。

ツールの選び方

 さて、ここまでいくつかツールを紹介したわけなのですが、ここでツールを選ぶ基準をメモ程度(いやだってほとんどの人が知ってそうな内容ですし)に書いておきます。

 いろいろ触ってみて、その中で自分にあってるものを選ぶとよいでしょう。

 なおゲームに限らずプログラムをするうえでは、一番大事なのは速度でも安定性でもなく(いやこれらも重視すべき内容ですが)、やる気の維持と作業内容の計画立てだったりします。(※7)

最後に

 さて、ここまで、延々と書いてきたわけですが、実はこれ、

今年ゲームが展示できなかった

言い訳であったりします。

 もうゲームの基盤は出来上がっているんですよ。スクリプターとか3D表示エンジンとか、敵が出てキャラが動いたり。でもそれは敵が出てキャラが動かせる、背景のあるプログラムであって、ゲームじゃないんです〜。というわけで今からゲームの内容を考えようかと思うのですが・・

え、卒研大分遅れているから急がないと間に合わないって?がーん。

もし調布祭に私の作った作品が展示されて遊べるようになっていたら、「ああ最後の命のろうそくを引き換えにして作ったんだなぁ(※8)」とでも思って黙祷をささげてください。

追記

ゲームは強制提出になりました。南無南無チーン(-人-)。ゲームに関しては「オダタダンシング」のページを参照ください。

参考文献

日本ブレイク工業 http://www.nbk.gr.jp

補足(※の事)

  1. その方が、個人的に書きやすかったからです。無駄に
  2. とかいいながら1年次必修の物理学実験を一回落としたり、3年次の実験を落としそうになったり。正直スミマセンデシタ>諸先生方
  3. このサークルのやさしさの半分は会員の50%以上は情報工学科の人間
  4. 同好会なのに部員です
  5. Write once,run anywhere.
  6. 言えます、って断言していいのかどうかはともかく、少なくとも私の体験したうちでは、プログラムのうまい構造化とか知らないうちに作るのはまずいと思われます。
  7. 最近のプロのゲーム業界は延期が当たり前で、計画がちゃんと立っていないのか、それとも遅れるように計画が最初から立てられているのか・・
  8. ろうそく消えると「ざんねん、わたしの人生はここで終わってしまった」ってことになります。もとネタわからない方はシャドウゲイトで検索してください。