「ゲームを作ってみたい!」
少年・少女時代に思ったことのある方、また現在進行形で思っている方は結構いるんじゃないでしょうか。
ゲームとは?
ゲームとは、遊びや遊戯と訳され、勝敗を決めるためのルールや環境または他人との相互作用を元にした普通楽しみのために行なわれる活動である。・・・ゲーム – Wikipediaより引用
最近では「ゲーム」というとコンピュータゲームを意識しますが、そもそも「ゲーム」というのはコンピューターゲームだけではありません。よくよく考えれば、「ゲームを作る」ってコンピュータゲームじゃなければ、そんなに技術的には難しいものではないです。
トランプ、麻雀、じゃんけん、ボードゲーム、TRPGなど、アナログでできるゲームも沢山あります。スポーツの試合もゲームです。
私の友達にTRPGのゲーム制作をすごく熱く語っているやつがいます。まさに「ゲームする内容」を作りたいのであれば、むしろこっちの方がゲームらしいのでは?と思ってしまうこともあります。
ノベルゲームなども、本質的には小説や漫画に近いものです。
つまり、本質的にゲームを作りたいのならば、アナログ的に考えた方がいいと個人的には思います。
やっぱりコンピュータゲームが作ってみたい
ですが、やっぱり「コンピュータ上で動くゲーム」が作ってみたいですよね。
近年では、3DCGが出てきて、色んな複雑な動きもできるようになり、さらにインタフェースもWiiリモコン・キネクトなどが出てきて、非常に高度なこともできるようになってきました。また、携帯やスマホやブラウザでのゲームなんてのも大量に出てきました。
私はARの研究をしていたので、なんとなくですが「これから現実環境を交えたようなARとかMR的なゲームなんてのも沢山出てくるんだろうなぁ~」なんて思っています。ARG(代替現実)ゲームなんてのも面白いです。
今までの概念を飛び越えて、すごくゲームの幅が広がってきました。
プログラミング・・・?
さて、色々できるのはいいんですが、これらを一個一個触っていくと、とんでもなく時間がかかります。非常によくあるパターンなのですが(体験済み)、ゲーム制作というよりプログラミング生活が始まります。
「プログラミング大好き!」みたいな方なら別にいいのですが、私はそこまで好きではないです。デバック作業とか発狂しそうになる。
ということで、まず「作りたいゲーム」の目標を決めることをオススメします。できるだけ完成形が見えていた方がいいです。
ある程度妄想はできたでしょうか?
では、技術レベルに分けて、いくつか作り方を挙げていこうと思います。
レベル1:プログラミングってなに?おいしいの?レベル
ツクールシリーズ
やはりこれでしょう。
私もプログラミングの”プ”の字も知らない中学時代にRPGツクールで作りました
特に説明も必要ないと思いますが、圧倒的に「プログラミングしている」という感覚がないです。難しい単語もほとんど出てこないので、ゲーム制作に没頭できます。
プログラミング生活の挙句、挫折するくらいなら、ツクールシリーズを使ってある程度しっかりしたゲームを作った方が、ゲームを作る楽しみも得られますし、多分そっちのゲームの方が面白いです。また、ゲームを作る際のノウハウなんかも得られるんじゃないかと思います。
- 関連サイト
ノベルゲーム
ノベルゲームはプログラム的にそれほど難しいものではないので、制作ツールが沢山あります。同人ゲーム製作研究所::HOW TO::製作ツールでまとめてくれています。
レベル2:ちょっとくらいならプログラミングしてもいいレベル
FLASH
Webではもう当たり前になったFLASHです。
作例は「FLASH ゲーム」とでも検索すれば大量に出てきます。FLASHゲームはブラウザ上ですぐ遊べて、結構遊んでもらえるゲームの1つです。
作る側としてはツール(Adobe Flashなど)が必要になりますが、それに見合ったものは作れると思います。
本来はブラウザでアニメーションを再生するためのもの(Youtubeとかニコニコ動画とかはFLASHで再生されている)なので、当然ながら動画の再生といったこともできます。なので、ゲーム中にFLASHムービーを差し込むなんてこともできます。
当然のことながら、資料も山ほどあるので、資料に困ることはほとんどありません。 ウェブアプリ開発に慣れておくと、携帯アプリやmixiアプリなんてのを作る時にも役立つかと思います。(ただし、モバイル向けFLASHの開発は終了したので、作るならPC向けコンテンツをオススメします。また、iPhoneやiPadはFLASHに対応していません。)
私の弟が中学生くらいの時にFLASHゲームを作っていたので、多分そんなに難しくなく作れると思います。ただ、レベル2に割り振りましたが、やり込めば普通に上級に割り振れるようなものなので、極めていけば色々なことができます。
近年ではスマホなどの普及から、こういうミニゲーム的なものが流行っているので、個人的にはオススメです。
Hot Soup Processor(HSP)
無料で使うことのできるプログラミング言語HSPです。
プログラミング言語といっても、いわゆるC言語のような難しいものではないです。
ゲーム制作に利用している人が沢山いて、資料も沢山あります。
どんなものが出来上がるのか気になる方はHSPの公式サイトからたどっていけば色々と見れると思います。
本を見ると、本当かどうかは知りませんが12歳でも作れるみたいですね。
- 関連サイト
レベル3:プログラミングしてもいいけど、面倒な部分ははぶきたいレベル
Unity
様々なプラットフォームに対応したゲームエンジンです。
通常版は無料で、Pro版は1500ドルです。
とりあえず、大儲けしない限り(10万ドル以上の売り上げがある場合はPro版を使う)無料なゲームエンジンです。勿論商用もできます。
ゲームエンジンというのは、要するにゲームを作る際に必要な機能(3D描画、物理演算、音など)をある程度提供してくれるものです。ゲーム会社なんかでは、大体それぞれ独自のゲームエンジンを会社内で持っています。
このUnityというゲームエンジンの売りとしては「民主的」であることらしく、趣味レベルで作ることができるレベルで開発されています。と言っても、PhysX(物理エンジン)、fmod(サウンド再生)、Umbra(レンダリング高速化技術)などの超高度な機能も標準で盛り込まれているので、やろうと思えばとても素人とは思えないものも作れます。というか、これだけのものを個人または少人数で実装しようと思ったら、多分数年かかります。(普通にゲームプログラマになれるレベル)
また、何と言ってもプラットフォームが広い事が挙げられます。
PCだけでなく、iPhoneなどのスマートフォン、家庭用ゲーム機の開発もできます。
これらの事から、近年では様々なところから注目を集め、個人ユーザー・少数チームは勿論、ゲーム関係の企業(GREE、Mobage、セガなど)も導入するようになってきました。 3DCGソフトの中でもAutodesk製品やLightwaveなどはUnity対応を始めているくらいです。
3DCGソフトが使えて、Unityが使えれば割と簡単に3Dゲームが作れる時代が来ました。
資料については、少し前まで日本語資料が皆無に近かったのが、「これはすごいソフト!」と一気に広まったために、資料が沢山増えました。 勿論、英語であればコミュニティがにぎわってるそうなので大量にありそうです。
- 関連サイト
Unity – Japanese information (日本公式サイト)
DXライブラリ
Windowsのゲームには大体使われている「DirectX」というゲーム開発・マルチメディア処理用のAPIを、使いやすくライブラリ化したゲーム用ライブラリです。
2Dゲームを作るならこれがオススメです。
DirectXのややこしい部分はDXライブラリがやってくれるので、ゲーム制作に集中できます。利用している人が沢山いて、資料も沢山あります。
3Dでも作り込まれたものでなければ作れるみたいです。(公式によるとプレステ2くらいの見た目らしい)
- 関連サイト
DXライブラリ置き場(公式サイト)
レベル4:プログラミング生活はある程度覚悟しているレベル
XNA Game Studio
マイクロソフトが開発したゲーム開発者向けの統合開発環境です。
マネージ環境(.NET環境)に対応しています。とりあえずC#言語で開発できるのだと思っておけばいいと思います。
Expressバージョンというものが無料で配布されています。趣味プログラマ向けに作られているようで、割と簡単にゲームの開発ができます。
これのすごいところは、Xbox360で実行できるようなものも作ることができるところです。ただし、Xbox360で実行するには年間99ドルを払わないといけません。Windows(PC上)で利用する分には無料です。
特定のジャンルのゲームのフレームワークを提供する「スターターキット」なるものもあるようで、作りやすい環境が整っています。XNAを使っている人が沢山いて、資料も沢山あります。
- 関連サイト
ミニゲーム
実行した瞬間にすぐ遊べるようなミニゲームです。
言語や環境は問わず、とにかく割と簡単なロジックでできているものです。iPhoneアプリなどなら製品化もできそうですね。雰囲気的にはミニゲーム集みたいなゲームの一個を作るイメージです。
これはとても勉強になり、発想力みたいなものも鍛えられます。
特に新しい技術なんかを使うときは、これを大量に作ってみることをオススメします。
ミニゲームに色々なステージやシナリオをくっ付けて、シーン遷移などをすれば、それだけで一本のゲームになります。
レベル4:プロを目指しているor作り込んだゲームを作ろうと思っているレベル
若干このレベルって説明する必要性あるのかなという感じですが一応。やることいっぱいです。
基本描画
2Dはそんなに難しくないので、3Dの話です。DirectXやOpenGLなどを使った描画です。できる方は自作エンジンでも。
ただ「描画ができました」というレベルならレベル3です。 様々な描画方法やシェーディング、影付け、エフェクトなど、速度を気にしながら、そのゲームに合った見栄えを作ります。メッシュの読み込みなども自分でフォーマットを作ったりします。
数学
3DCGには数学が付いて回ります。ジャンルによって様々ですが、幾何計算くらいはできるようにする必要があります。
AI
人工知能です。
全てプレイヤー操作ならいいのですが、コンピュータが勝手に動かすキャラがいる場合があります。あれをどう動かすかといったところです。
スクリプト
チーム制作でプログラマじゃない人がいる場合は、これが重要です。
敵の動き方やマップの配置やシナリオの流れなどを、それぞれの担当の人がある程度作れるようにするものです。書いてもらったものを実行エンジンに通して使います。
物理演算
物理演算を盛り込むのならば、物理を勉強する必要があります。
物理エンジンを使うのならば、その物理エンジンの使い方を覚えなければなりません。
アルゴリズム
ゲームには「高速化」という問題が付いて回ります。 いかに最適な形で計算をするかという問題です。
ゲームエンジン、フレームワーク、デザインパターン、設計
ゲームエンジンを作る際に、各機能をどういう風に使えるようにするかとか、その設計関係です。シーン遷移やメモリの管理なども多分この辺が絡んできます。
ロジック
面白いゲームが思いついたとして、それをどういう機構で動かすかといった問題です。
ハード
コントローラーがキネクトやWiiリモコンのように特殊な場合、それの制御をしなくてはなりません。また、PCではなく携帯、スマホ、ポータブルゲーム機などの場合は、そのハードに合わせて最適化する必要性がありますし、プログラミング環境が変わる可能性もあります。
ネットワーク
オンラインゲームを作る場合はネットワークの勉強をしなければなりません。 プロトコルなど通信関係の知識が必要になってきます。
まとめ
ぱっと思いついたものを挙げただけなので、これ以外にも作り方は沢山あります。
探すとツールだけでも結構あるので、探してみてください。
とりあえず、これはあくまでプログラム的な部分を書いただけで、加えて画像や3Dモデルや音といった素材を作ることや、シナリオやゲームデザインといった考える事もあることを忘れないでください。
ある程度のものを作ろうと思ったら、チームを組んで分担することをオススメします。