この記事は、2024年traP新歓ブログリレー4日目です。
皆さん
ゲーム制作してますか?
ゲームを作るにはいろいろな方法があります。
今回は、その方法を思想の強さ順に紹介します。
新入生の皆さん!思想の強いゲーム制作をしよう!!
Lv.1 Unity
言わずと知れた有名ゲームエンジンUnity。traPでも大半の人がUnityを使ってゲームを作っています。情報は、ネット上にも、traPにも、どこにでもあるので、とてもゲームを作るのに向いています。
一般人はUnityを使いましょう。
Lv.2 Unreal Engine
Unityの対を成すものとして有名でしょう。リアルに近い3Dゲームを作る時は、Unityよりもよく使われる印象があります。
Unityよりも少し難しいので、見た目を優先する人はUnreal Engineを使いましょう。
Lv.3 Scratch RPGツクール
小学生用のプログラミング言語(?)として名高いScratchですが、極めれば3D表示もできるポテンシャルを持っています。ただし、ただの縛りプレイにしかならないので、競プロで計算量を減らすマニアの人はやってみるとよいのではないでしょうか。
RPGツクールは基本的にRPGしか作れない、かつ見た目の制限が強く独自性が出しづらいので、あまり使われません。一応RPG以外のゲームを作る変態にもなれます。
もちろんExcelとかでもいいですよ?
(基準は画面へ何かを表示する難易度です。基本的に何もしなくても表示できるものがこのレベルです)
Lv.4 DXライブラリ
ここから本格的にプログラミング色が強くなっていきます。
DXライブラリは、WindowsAPIとDirectXを徹底的に隠して使いやすくしたライブラリです。言語はC++で、DXライブラリのホームページにある"DXライブラリの使い方"に書いてあることをそのまますれば、とりあえず黒い画面が出ます。後は、画像を読み込み、ウィンドウ上の座標を指定して画像を描画したり、ライトの方向とかを設定して、カメラの位置とかを設定して、3Dデータを読み込み、三次元座標を指定して描画したりするだけです。実際に、読点で区切られている内容一つに対し、その動作をしてくれる関数があるので、引数に気をつけながら呼ぶだけで、簡単に画面に好きなものを表示できます。キーボードやマウスからの入力も、動画の再生も、音の再生も、やりたいことのほとんどが関数1,2個で完結します。残念ながら物理演算、当たり判定などはないので、自分でプログラミングしましょう。ただし、処理の速さは保証します。
高fpsのゲームを作りたい人は検討しましょう。
traPでやってる人はほぼいません。
Lv.5 WindowsAPI+DirectX or OpenGL
WindowsAPIとDirectXはWindowsを使っている人なら基本的はすでに入っています。OpenGLはダウンロードしましょう。
DXライブラリは、これらの使いにくさをガッチガチに隠したものです。言語はもちろんC++。使いにくくなった代わりに自由度が爆上がりします。代わりに難易度も爆上がりします。具体的には、WindowsAPIを使ってウィンドウを出すだけで普通に100行近く書きます。入力を受け取るのにさらに100行、音の再生に100行、図形を画面に出すのに200行、動画の再生に500行、3Dの表示に1000行とC++に似た別の言語(HLSL)を100行書きます。(3DはDirectXの場合。書き方によるが、誇張しすぎている訳でもない)しかも、それぞれ関数を沢山呼ぶのですが、その動作の内容や引数の設定などをミスるたびに全てが止まります。なので逐一呼ぶ関数を理解しながら、壁にぶつかり、エラーを分析、修復、次のステップへ、少しずつできることを増やしていきます。
そしてその先で手に入るモノは、圧倒的なコンピュータとWindowsへの理解度と、それを操る能力です。
全てを掌握できるようになったあなたは、強烈な万能感の下ゲーム制作を楽しめるでしょう。
きっとその時には3年くらい経ってます。
DXライブラリを触ってみて満足できなかった変態にお勧めです。
traPでWindowsAPIとDirectXをやってる人を聞いたら誰もいませんでした。
つまり自分が多分唯一の変態です。
さみしいので新入生の誰か仲間になってください。待ってます。
有名なPCゲームでUnityもUnreal Engineも使われてなかったら基本的にはこの方法で書かれているハズなので夢がありますね。(?)
Lv.max FPGA
この世の中にはFPGAというものが存在します。誤解を恐れずに言うと、自分で後から設計できるCPU+ちょっとしたメモリです。これを使えば、自分のゲームに最適化されたCPUでゲームを動かせます。お値段は数千~十数万。(上を見れば百万するのもあります)これはキーボード入力のUSBから来る信号からHDMIに出力する信号まで自分でプログラミングしないといけないので、ゲームのハードウェアも全て事細かく知りたい人にお勧めです。
実際にはFPGAはゲーム用ではなく単純に計算用で、あったとしてもエミュレータとして使う位です。
アーケードゲームを専用のコントローラーとか外装から本格的に作りたい人にはいいかもしれません。知らんけど。
自分はWindowsAPIとDirectX12でゲームを作ろうと試みているのですが、1年経ってできることがDXライブラリのちょっと下くらいです。できるとわかったらすぐできることを増やすために別のことを始めるので、肝心の中身が何もできていません。
今は特に3D関連を頑張っているのですが、1ヶ月かけてできるようになったことが、MMDモデルの読み込み、とりあえずの表示、とりあえずのボーン操作のみです。↓
速さだけが取り柄なので、みんなもやろう!(そこ!DXライブラリでいいとか言わない!)
明日のアドベントカレンダーは@H1rono_Kと@Tennessine_699が担当します!お楽しみに!