ポリゴンが無限に使えるUE5の登場がインパクトありすぎて、つい、「今までの自分のゲーム制作の苦労って何だったんだろう?」みたいな事を考えてしまい、過去の人生を振り返ってしまいました。

考えてみると、自分の人生ってゲームの進歩とともに歩んできたようなもんだったという気がします。

そして、高校生くらいから現在に至るまでずーっとゲームを作るという事についてああでもない、こうでもないとやってきた憶えがあります。

不思議な事に、そんな風に何十年もゲームを作ってた?はずなのに、実際には今まで自分の理想通りに自作ゲームが完成した試しが無いという事実に目を向けざるを得ません。
一体どういう事なんでしょうか?私の人生って何なの?

振り返ってみると、私がゲーム制作に挑戦するたびに、なんやかんやと””にぶつかってしまって挫折する事の繰り返しだったような気がします。

そうして考えてみると、この前登場したUE5は神の贈り物にしか見えません。私が高校生の頃にこれがあったら…

今の若者は、最初からタダでUE5みたいな神のゲームエンジンが触れて、Blenderも今では2.93が出て完全に神のモデリングソフトと化してますし、あまりに恵まれた環境で非常にうらやましいです!

ですが、当の若者は恵まれすぎてて逆にそういうアドバンテージに気付いてない人が多いのではないでしょうか。

というわけで、今回の記事では、自分語りをしつつもゲーム制作に挑戦した時にどういう壁にぶち当たったのか?それをどう乗り越えようとしたのか?について書こうと思います。

まあ、”しくじり先生”みたいなもんでしょう。若者は私みたいな失敗を繰り返してはいけない!という話です。

幼少期

私が生まれたのは1987年ですが、何故か生まれた時からすでに家にファミコンがありました。

なんか親が興味本位でファミコンを買ってみたものの、「F1レース」と「サッカー」だけ遊んで飽きて放置されてたようです。

自分が2歳くらいですでにファミコンで遊んでる様子が撮影されたホームビデオを見た憶えがあるので、そういう意味では生まれながらにゲームエリートだったと言えるかも。

幼少時は毎年の誕生日とクリスマスのプレゼントは500円までというキツすぎる縛りがあったので、毎回中古の安いソフトを買ってもらってました。
どういうファミコンソフトのラインナップだったかというと、
ガチャポン戦士2、ガチャポン戦士3、ガチャポン戦士4、SDヒーロー総決戦、パワーブレイザー、Zガンダムホットスクランブル、ドンキーコングJr、ドラゴンボール3 悟空伝、魔界村、第二次スパロボ

ちょっとソフトは実家に置いてるので定かでは無いですが、こういうラインナップだった気がします。
ガンダム大好き少年だったのでガンダムに偏ってるな…

今にして見るともっとマリオとかドラクエとかロックマンとかの名作を遊ばせてやれよと思います。(名作は中古価格も高いので予算の関係上買えない)

小学生~中学生

たしか小1くらいでゲームボーイを買ってもらいました。

ゲームボーイで強烈な思い出はやはり小3くらいの頃に出た初代ポケモンです。
当時のキッズはみんなそうでしたが、私も死ぬほどポケモンにハマッてました。

あとは「星のカービィ2」を遊んでカービィにも死ぬほどハマッてました。
自由帳にカービィのラクガキをしまくってました。もちろん、リアル友達を偽カービィ化して勝手に漫画にするみたいな事は当然やってました。

他で印象的だったゲームボーイソフトは「ポケットカメラ」です。
ポケットカメラにはカメラが搭載されており、30枚まで写真を保存できます。ただし、白黒の荒い写真しか撮れません。(そもそもゲームボーイが白黒だし画素も荒いので当たり前)
当時はスマホなんて当然無く、携帯電話にもまだカメラは付いてなかった時代ですから、相当先進的なソフトでした。

まだ公式サイトが残ってますね。↓
https://www.nintendo.co.jp/n02/dmg/hardware/pocket_c/index.html

ポケットカメラの機能のすさまじさは写真を撮るだけではありません。
写真を加工できるペイント機能、スタンプ機能、アニメーション作成機能、作曲機能までありました。

そして、写真の特定の位置をクリックすると別の写真にジャンプできるJUMP機能もあったので、これらを全部組み合わせると、ちょっとしたアドベンチャーゲームが作れてしましました!

もちろん当時の私はなんやかんや作ってましたが他人に遊ばせるというよりは作るだけで満足してた気がします。

ポケットプリンタという外部プリンタにゲームボーイを繋ぐと写真のプリントまでできました。
今思うとつくづく任天堂の先進性に脱帽ですね。

スーファミも小3で買ってもらいました。

やっぱり「カービィSDX」や「星のカービィ3」は死ぬほど遊んでましたし、「ドラクエ6」も死ぬほど面白かったですね。「ヨッシーアイランド」も神ゲーでした。聖剣2、マザー2、マリオカート、マリオRPG、スパロボEX

ゲーム制作への興味の芽生えという意味では、「RPGツクール」でRPGを作ったりしましたね。
内容は、自分の家の周りを完全に再現して、ボスは学校の先生だった気がします。
これは完成して自慢するために友達の家に持っていったらセーブデータが消えて非常にショックを受けました。

RPGツクールによるゲーム制作の壁
セーブデータが消えると作ったゲームが消える

小5の頃にGジェネが遊びたすぎてプレステを買ってもらいました。

プレステのポリゴンによる3Dゲームの衝撃は大きかったです。まあすでに友達の家で64のマリオとかは遊ばせてもらってましたが。

FF7とかバイオ2、バイオ3、せがれいじり、メタルギアソリッド…

FF9は死ぬほどハマってましたね。

たしか中2の頃に福袋の当たりでPS2を入手した覚えがあります。

PS2では真三国無双2に気が狂うほどハマッてました。地球防衛軍とかもやってましたし、敵が一杯出てくるのがおもろいなという風潮でした。

ICOも相当好きでした。ICOはHDRライティングとブルーム効果を実装してたのが当時としては先進的でした。

ICOの続編の「ワンダと巨像」ではさらにポストエフェクトが進化してますが、その辺の技術的な詳細については4gamerの記事で書かれてます。
当時としてはワンダのグラフィックスは”意味が分からないくらいすごい”という感じでした。

3Dゲームファンのための「ワンダと巨像」グラフィックス講座

中3でキングダムハーツが出たと思いますが、これまた当時としては異常なクオリティのグラフィックにたまげました。

キングダムハーツで衝撃的だったのは、FF7の主人公のクラウドがゲストで登場するんですが、メチャメチャカッコいいキャラデザからの、役割はただのハデスのしもべの噛ませ犬だったのでたまげました。(たしかファイナルミックスではセフィロスと戦うシーンとかが追加されて株が上がってる)

大体ここまで読んでお分かりの通り、私は生まれて以来ゲーム漬けに近い人生を送っているので、進学についても何かゲーム作れる仕事に就けそうな学校に入ろうかな~みたいな事を考え始めました。

高専生

なんとなく「ゲームを作るにはプログラミング?が必要らしいね」ぐらいの適当な知識だけで高専の情報系の学科に入った気がします。

それまでマトモにPCを触った事も無かったので、具体的にゲームってどうやって作るのか?などは一切知りませんでした。ゲーム会社の特殊な機材が無いと作れないんだろうなくらいに思ってました。

情報系の学科というだけあって、学校の授業ではC言語を学びました。

どういう感じかと言うと、教科書にプログラミングの課題があるので、PCのメモ帳でコードを書いてコマンドプロンプトの黒い画面でコンパイルして実行する…みたいな感じです。

↑こんな感じです。(これはVisual Studioなのでちょっとちがうけど)

当時の私の正直な感想としては「これがプログラミング…クソつまんねえな…」と思いました。
アレコレ苦労してコーディングさせられる割りには出力結果はなんか黒い画面に文字がチョロッと出るだけ…インプットの苦労に対してアウトプットの対価がヘボすぎるんだよなあ…。
余談ですがこのようなプログラミング授業と対極にあるのがパチンコじゃないかなと思います。パチンコはハンドルを回すだけで画面演出がジャンジャンバリバリ表示されます。インプットの簡単さに対してアウトプットのド派手さがすごいです。インプット:アウトプット比が大きいほど人間はハマると言われてます。
人間を夢中にさせる仕組みというのはこうあるべきで、C言語の授業は人間を退屈させる仕組みの極致と言わざるを得ないでしょう。面白いのは、そういうパチンコのソフトウェアも中味は多分C言語とかで書かれてるであろうという点です。

教科書に沿ってプログラミング言語を学ぶ時の問題点は、やっててもこれが具体的に何の役に立つのかサッパリイメージできない点にあるのではないでしょうか。
おもしろくもないし、何の役に立つのか分からない事には学習意欲が出ません。

まあなんだかんだ言ってもこの段階でポインタの概念やらまで理解できたのは後々役に立ったのでありがたい授業だったと思います。

そういえば、ちょっと戻りますが中学生の頃にパソコンの授業でちょっとだけhtmlの書き方について教わりました。
htmlは簡単に書けるし、出力されるホームページはC言語のコマンドプロンプトよりよっぽどグラフィカルでたのしいです。画像とかもバシバシ表示されます。
C言語とかよりhtmlの方がよっぽど簡単にゲーム作れそうだな…と思いました。

C言語によるゲーム制作の壁
C言語にはグラフィックスがそもそも無い

C言語にはグラフィックスが無いと言いつつも、クラスメイトのK君はなんとコマンドプロンプト上で工夫してゲームを作っていました!

どうやったのかというと、こちらの画像↓のような感じで文字を使って迷路マップやキャラクターを表現していました。

プレイヤーが移動方向を入力すると、迷路全体が再描画されてバーッと上にスクロールして画面が更新されるといった風です。

私としてはたしかに凄いなと思って感心して真似したりはしたものの、でもすでに三国無双やキングダムハーツを味わっていた私としては、「俺が作りたいゲームってこういうんじゃないんだよな…」と思ってイマイチ気が乗りませんでした。

↑当時自分が作った迷路ゲームが発掘されたのでスクショ

この際ついでなので物申しておこうと思いますが、去年から義務教育でのプログラミング授業が始まったみたいですが、「頼むからメモ帳でC言語教える授業みたいなのはやらないであげて」と言いたい。
子供の内からプログラミング→つまらない みたいな刷り込みが出来てしまうと将来の可能性の芽が潰えるかもしれません。

実際、現状では小学校のプログラミング授業って何をやってんだろ?と思って検索してみました。

なるほど。Scratchとかマインドストームとかやってるのか。
まあ、正直言ってイケてるチョイスですね。

マインドストームというのは私も高専の授業で当時触りましたが、これはかなり面白いです。
モーターやらコンピュータやらバッテリーやらがくっ付いたコアユニットがあって、これをプログラミングで制御できます。
コアユニットにタイヤを付ければ走らせることができますし、なんか複雑な機構を考えれば歩かせたりもできるでしょう。レゴなので好き勝手に形を作れます。

プログラミングした通りに実際に自分が作ったマシンが目の前で動くわけですから、手ごたえが大きいです。色々試行錯誤して試してみる意欲が湧いてきます。メモ帳C言語とは大違いです。

小学生大喜びだろうなあ。

ちなみにマインドストームはMicroPythonというPythonでプログラムを書くようです。最近はノードによるビジュアルプログラミングも可能だとか。

一方、Scratchは元々教育向けのプログラミング環境でした。

こちらもブロックを使ったビジュアルプログラミングが採用されていて、いいですね。
メモ帳でC言語書いてると「何で俺こんなに文字打たされてんだろ…」という気持ちになってきますし、なんか一か所だけ文末のセミコロン付け忘れて、「何が何だか分からんけど動かない」とかなりがちです。そういうのってなんかプログラミングの本質的な部分と無関係なところで躓かされて腹立つ気がします。

ビジュアルプログラミングならそういう厄介な事はありません。

そしてScratchはコマンドプロンプトと違って”絵”がすぐ出せます。ここが大きいですね。
後で話しますが、C言語でなんかちゃんと絵を出そうとしたら理不尽なくらい大変です。

パッと絵が出て動かせるならゲーム気分でたのしめるでしょう。
今の子供たちは恵まれたプログラミング教育が与えられそうで羨ましいですね。私が小中学生の頃はプログラミングのためのPCさえ手元に無く、プログラミングが何なのかも全然知らないような有様でした。

そういえば最近のキッズ達はプログラミング教育云々関係なしに、ことごとくマイクラにドハマりしていて、小学生にしてMod導入技術やサーバーホスティングなどのITリテラシーがメキメキと鍛えられているとかいないとかいう噂を耳にしますね。

そんなにキッズ達がマイクラに夢中なら、せっかく教育版マイクラがあるんだからプログラミング教育にもこれを使うのも良さそうですね。

https://forest.watch.impress.co.jp/docs/serial/progedu/1278765.html

やっぱプログラミングと言えばゲームっすよ。
教育版マイクラではMicrosoftのMakeCodeとかいう、あんま聞いた事無いですがScratchと同じようなブロックビジュアルプログラミングを使うみたいですね。

さて、話が大幅に逸れましたが、私の高専時代に話を戻します。
そういえば当時は高専生は全員がポケコンを購入させられました。

ポケコンは関数機能が豊富なので、一部の授業で使ったんだと思います。
このポケコンは授業中に触ってても怒られません。そしてBASICが内蔵されており、プログラミングが書けます。

そんな訳で、クラスメイトの中には授業中に延々とポケコンを触ってなんかゲームを作ってるヤツもいました。
このBASICには画面の液晶を使ってちょっとしたグラフィックスを描画する機能もありました。

私はポケコンでのゲーム制作はやってませんでした。
たしか電池が切れるとメモリが消えちゃいますし、多少グラフィックが描けても自分の作りたいゲームってもっと違うんだよな…とか思ってたのかもしれません。
というか、私は授業中はひたすらラクガキするのに忙しかったので。

そんなこんなで、当時の私は「C言語のプログラミングってつまらんな…プログラマになったら一生こんな仕事をしなきゃ行けないのか…やだなあ」みたいな感じでコーディングへの嫌悪感を募らせていました。
自分はただ単にゲームが作りたいだけなのに、なんでこんな苦行をさせられなきゃいかんのだ?とか思ってました。

転機が訪れたのはそんな頃でした。
当時の私は一部のクラスメイトとMTG(マジックザギャザリング)でひたすら遊び狂ってました。

そんなMTG仲間の内数人が、電算部とかいう部活に入って何やら面白い事をしているという話を聞きました。
電算部というのは要するにパソコン部です。厳密にはプロコンに出場するみたいな目標があるにはあったようですが、実態はパソコンで遊ぶだけの部活でした。基本的には部室のLANで無限にAge of empireⅡで遊んでるとかそういう部でした。

そんで、みんなで電算部の部室に見学に行ったら、先ほどC言語で迷路作ってたK君が、
「俺電算部でゲーム作ってんねん」
とか言い出しました。

そこでK君が部室のPCで見せてくれたのが、大体こういう感じのテトリスのゲームでした。

作ったー!?

私が人生で最大級の衝撃を受けた瞬間だったかも。
プログラミング使えばゲーム作れるらしい?→C言語とかこんなん書いててもカッコいいゲーム作れないじゃん…
という、上げて、落として、からのこれだったので。

テトリスできとるやん!!

C言語だと全然グラフィックスが出せなかったのに、K君はどうやってテトリスの画面を出したんでしょうか?

その秘訣は、Visual Basicでした。(当時は6.0)

Visual Basicは、フォームエディタという、画面上にボタンや画像などの部品を直接配置して編集できる神機能が搭載されてました。

これにより、C言語と違ってなんも考えないでもグラフィックスが表示できます
コードについても、例えばあるボタンがクリックされた時のイベントを記述する…みたいな感じでイベントベースで直感的に書けます。

C言語のによるゲーム制作の壁、簡単にグラフィックスが出せないという点を、VisualBasicで克服できた!

ここで気付いたのは、ゲームを作るにしても、”コーディングだけだとほぼ無理”であって、フォームデザイナみたいな”ビジュアルエディタ”が無いと作れないという事実です。

電算部では他にもすでに卒業されたOBが残されたという、ダンレボのクローンゲームも触らせてもらいました。当時の私たちにとっては完全に神扱いでした。

高専生はアプリ側とコントローラのハード側で分担して音ゲー作りがち(そして高専祭の出し物として展示される)

そんなワケでしたから私は興奮のあまり即日で入部届を書いて入部したのでした。
それからは毎日部室に入り浸ってVisual Basic触ったり、エイジオブエンパイアやったりMTGやったりする日々が始まりました。

ちなみに私達が部室で遊んでたゲームはEOAだけではなく、ネットで配布されてたフリーゲームとかもよく話題になってました。

当時(2003年~2006年くらい)は色んなフリーゲームが「ふりーむ!」や「Vector」で公開されてました。

当時の私はこういう個人制作フリーゲームを遊んで、「個人でもゲームが作れるんだ!」って夢と希望がムクムクと湧いていました。

当時はまだ3Dゲームの作成はノウハウが広まっておらず困難でしたので、本格的な3Dゲームを制作されていた灯さんなんかは崇拝の対象でした。

私は部室だけでは飽き足らず、家でもパソコンが触りたくなってきたので、1年生の冬休みに年賀状配達のバイトしてその金でパソコンを買いました。メモリが256MBしか無く、Cerelonの2.4GHzシングルコアとかそんなパソコンでした。
インターネット回線はADSLが高すぎたのでケーブルテレビの5Mbpsくらいしかないけど月3千円の回線を引いてもらいました。

パソコンを買ったと言ったらいとこが「月姫」を貸してくれて、遊んでみたらドハマりしたという話があるんですが詳細は省きます。

私は自分でもVisual Basicでテトリス作ってみたり、格ゲー(といってもキャラに複雑な動きはさせられないので分離したパーツを動かすジョイメカファイトみたいな感じ)に挑戦して挫折してみたりとなんやかややってました。

↑当時作ってたゲームの例。下から床がせり上がってくるので天井に潰されないようにどんどん下へ降りていく。

C言語のせいでうんざりしていた私もVisual Basicのおかげでかろうじてプログラミングに興味を抱けるようになりました。
しかし、色々やってる内に段々とVisual Basicに限界を感じ始めました

そもそも論として、Visual Basicはゲームを作るためのソフトではありません
業務アプリとかを作るためのものです。(ちなみにVisual Basicを覚えるとエクセルとかのVBAも書けるようになって便利)

当然、3Dゲームなんて作れません。

VisualBasicによるゲーム制作の壁
ビジュアルエディタが付いてるのは良かったけど、そもそもゲーム向けじゃないし、3Dゲームが作れない。

2年生になったあたりから、Visual Basicに限界を感じ始めた我々の間では、Windowsプログラミングというものが話題になってました。
いわゆる、猫でも分かるWindowsプログラミングです。

どうやら、Win32APIなるものを叩けば、C言語でもウインドウやビジュアルが表示できるとか。
しかし、私はWindowsプログラミングでウインドウを表示するためだけに意味不明のおまじないみたいな大量のコードを記述するハメになるのが気に入りませんでした。VisualBasicなら1行も書かなくてもウインドウ出せたのに。

http://www.kumei.ne.jp/c_lang/sdk/sdk_00.htm

個人的にはWindowsプログラミングにはあんま意欲が出ませんでした。それに、当時の私は月姫のファンアート描くので忙しかったのです。

そうこうしてる内に、電算部の方ではさらに一歩進んで「どうやらDirectXという技術を使うと憧れの3Dゲームが作れるらしい」という噂になってました。

3Dゲームが作れるとあっては、さしもの私も食いつきました。
果敢にチャレンジしたものの、DirectXによる3Dゲーム開発は、Windowsプログラミングの20倍くらい意味不明でした。
当時は現在と違って、ググったらなんでも情報が出てくるというものではありませんでした。

「デバイス?レンダーステート?ドローコール?メッシュ?マテリアル?テクスチャ?シェーダー?スキンメッシュ?行列?ベクトル?透視変換?VRAM?」

ハッキリ言って全てが意味不明でした。(そうは言っても当時のDirectX9.0は今のDirectX12に比べると大分簡単だったかもな…)

私は結局挫折したんですが、我々の中でDirectXの書籍を読んでなにかしら理解できていそうなのはA君だけでした。

それでA君は高専祭に向けて3Dゲームを作るぞ!という目標を立てて、私も制作への参加を誘われました。私が頼まれたのは3Dゲームのキャラクター制作でした。ずっとラクガキしてたので、プログラミングよりもデザイン方面の能力を見込まれたという事でしょう。
私自身ももうプログラマよりもイラストレーターか何かになりたいな~という気分でした。

さて、そうは言っても3Dキャラクターのモデリングなんてどうやればいいのかさっぱり見当も尽きませんでした。
教えてもらったのは、メタセコイアというモデリングソフトが使えるとの事で、しかも無料版でも普通にモデリングして出力可能だそうで。

↑とりあえずなんやかんや作ってみたモノ

さて、3Dゲームを作るとなると、3Dモデルだけでなく、アニメーションも付ける必要がありますが、当時は学生が触れるもので3Dアニメーションを作成できるソフトはロクにありませんでした。

名前は忘れましたが、海外のフリーソフトをアニメーション作成に使いました。
スキンメッシュには対応しておらず、関節ごとにパーツをばらして動かす必要がありました。

そんなこんなで、A君がプログラマで、私が3Dキャラを作成を担当したゲームは完成して高専祭で展示できました。

Visual Basicによるゲーム制作の壁、3Dゲームが作れないという問題を、DirectXで克服できた!(ただし克服できてるのはA君であって私ではない)

ちなみに、当時からすでにBlender(多分Version2.3の頃)はあったはずですが、今は神ソフトと化したBlenderも、当時から無料で高機能ではありましたがネット上に全く情報がなく、意味不明なインターフェースを備えていて完全に謎のソフトで素人は手を出してはいけないという雰囲気だった気がします。

さて、ゲームができてめでたし。ではあるものの、自分はDirectXに挫折して、プログラミングしたのはA君であるという点に私の中で引っかかるものがありました。

3Dゲームは作りたいけど、DirectXはチンプンカンプンで触りたくない…」と考えた私は、HSPに手を出してみる事にしました。

大体この辺まで読んでいただいた方はお分かりかと思いますが、私は”とにかくゲームさえ作れれば手段はどうでもいい”というタイプの人間で、プログラミングなんて好きでやってるわけでは無いのです。やらないとゲームが作れないと言うから仕方なくやってるだけで、やらなくて済むならこんなもんやりたくないのです。(今でもそう

参考にした書籍はこれです↓

HSPを使えば、Win32APIやDirectXみたいなややこしいプログラムをすっ飛ばして簡単に3Dモデルを表示したりできます。

これでいいじゃん!と思ってしばらく触ってましたが、最終的にはスキンメッシュのキャラが表示できないかなにかの理由で断念しました。

HSPは簡単にグラフィックスが出せたり3Dモデルが表示できるけど、用意された機能しか使えないからあまり凝った事ができない

さて、プログラミングについてはそんな感じで試行錯誤してましたが、3Dモデリングの方にも結構熱中してました。
当時はメタセコイアのコミュニティが結構盛り上がってました。

メタセコイアはC++でプラグインが書けて、自由に拡張できるのですが、当時は色々な便利なプラグインを開発されてる方一杯いました。

例えば、Sio29さんのCelshadeを使うとメタセコ上でトゥーンシェーダ調表示ができました。

プラグインでは無いですが、Mikotoというフリーソフトはメタセコの3Dモデルを読み込んでスキニングしてポーズを付ける事が出来ました。(ただしXファイルなどにエクスポートしたりはできない)

さらに、時期は少し遅れますが、mqdlさんが作ったKeynoteは、メタセコ上でMikotoのようなスキニング、ポージングを可能にして、さらにXファイルやFBXファイルもエクスポートできるという神プラグインでした。

余談ですが、メタセコ開発者の方は、後年になってメタセコの4.0アップデートで2万円のEXバージョンを用意する事にして、スキニング、FBXエクスポート機能を目玉に据えようと思ったものの、すでにKeynoteなどのユーザープラグインで同じ機能が実現されてしまっているので、しょうがないので今までのプラグインの互換性を切ってしまいました。
それでKeynoteプラグイン作者のmqdlさんや大勢のプラグイン作者達との確執が生まれ、mqdlさんは今ではXISMOという自前の3Dモデリングソフトを開発されているみたいな話があったりします。(この余談は噂、ゴシップレベルの話で、正確なところは当事者にしか分かりません。間違ってたらすいません)

プラグイン開発コミュニティ以外にも3Dモデラーコミュニティも盛り上がってました。

その中でも私が完全に神として崇拝してたのはntnyさんでした。

ntnyさんの作る3Dモデルはクオリティが凄く、さらに製作されたモデルをドシドシ配布してくれていたので、私はいつも配布モデルを舐めるように眺めていました。
クオリティが高いというか…ntnyさんのモデリングは一種の”発明”のようなもので、二次元キャラを3Dキャラに立体化するテクにおいては当時、神の領域でした。
当時配布されていたモデルは全部私のHDDの中に保存されてます。

また余談ですが、その後ntnyさんはフライトユニットさんに所属されたようです。
フライトユニットさんがキャラクターのモデリングを行った「シャイニングフォースイクサ」のキャラクターモデルは、当時としてはクオリティが異常でした。

↑シャイニングフォースイクサのキャラクターメイキングです。メタセコを使ってモデリングしてますね。詳しい事は分かりませんが、私はntnyさんの貢献が大きかったんじゃないかと勝手に思ってます。

ntnyさんはその後、Unityのユニティちゃんのデザインとモデリングを担当され、Unityテクノロジーズに所属されています。

ntnyさんが書いた「ローポリ スーパーテクニック」はバイブルです。

↑すいません、ntnyさんの本のページから引用させてもらいますが、こんな風にメタセコ特有の下絵を投影しながらのモデリングと、エッジだけで形を整えていってから面張りする手法が元イラストの再現性を高めるための秘訣だったんじゃないかと。これはかなり真似させてもらいました。

ntnyさんの起こしたモデリング革命がその後の日本のゲームのアニメ、イラスト風3Dモデルのクオリティ底上げに繋がったんじゃないか…そんな風にまで思ってしまいます。

話したい事はいくらでもありますが、一旦私の学生時代の話に戻しますが、3年生になって、またA君の3Dゲームの第二弾を作ろうという話が持ち上がりました。
私は今回もキャラクターモデル担当ですが、今回のチャレンジとしては、スキンメッシュモデルを作ってみようという事になりました。

↑その時作ったモデルがこれ。う~ん、まあこんなもんじゃないですかね。

たしか当時すでにペンタブ(intuos2の一番小さいヤツ)を買っていたので、それでテクスチャを描いたんじゃないかな。

当時はメタセコのKeynoteプラグインはまだ無かったので、おちゃっこさん(当時はおちっこさん)が開発された、RokDeBone2という素晴らしいフリーソフトを使用させていただきました。

RokDeBone2を使うと、メタセコの3Dモデルを読み込んで、頂点ウエイトペイントしてスキニングしてアニメーションを付けてXファイルをエクスポートできます。

A君のプログラミングスキルは相当向上していて、今回のゲームは野菜の栽培パートとダンジョンパートに分かれており、ダンジョンでは敵がA*アルゴリズムによるAIでこちらを追跡してくるといった様相でした。

私もこうして完成したゲームには満足したものの、やっぱり自分でプログラミングして自分のキャラを自分で制御したいなあという気持ちも強まっていきました。

たしか、この頃の電算部界隈ではC#が流行っていた気がします。
C#を使うとVisual Basicみたいなフォームデザイナも使えるし、C++より簡単に書けるし、何よりもインテリジェンスで入力補間してくれるのが神!みたいな感じでした。(フォームデザイナはC#の機能と言うよりVisualC#の機能かな。当時はなんかC++だとちゃんとインテリジェンスが表示されなかった)

私もちょっとオセロのAIとか作ってみましたが、それっきりでした。
今さらフォームデザイナとか言われても、私の気持ちは完全に3Dゲーム開発の方を向いていたからです。(実はManaged DirectXを使えばC#でもDirectXが使えるんだけど、それこそ書籍やネット情報が皆無で、手の出しようが無かった)

それよりはA君からC++について色々教わったりしてました。(クラスって何なの?みたいな話)

そういえばこの頃は「ひぐらしのなく頃に」がメッチャ面白いらしいとネットで噂になっており、修学旅行で東京に行った際にメロブかどっかで(地元には同人ショップは存在しない)ひぐらしを買ってプレイした結果ドハマりしてましたね。

そうこうしてる内に4年生になり、そろそろ進路について考える時期になりました。
まあ言うても、結局はゲームプログラマ目指す感じかな?という気分でした。

ゲームプログラマ志望で就活するとなると、当然自作ゲームの提出が要求されますので、ゲームを作らなければなりません。もちろん3Dゲームでしょう。

DirectXはトラウマなので触りたくないけど、3Dゲームは作らなきゃいけない…

このジレンマを解決するために私が着目したのが、葉迩倭さんLunaライブラリです。

https://web.archive.org/web/20060203120746/http://www.twin-tail.jp/

LunaライブラリはDirectXのラッパーライブラリです。Win32APIやDirectXの面倒な部分を一切省いてCやC++でゲームを開発する事が出来ます。
衝突判定やスキンメッシュの表示、地面の上を歩けるようにする機能など、ゲームに必要そうな機能が当時としてはかなり充実してました。

↑Lunaライブラリで遊んでみてる様子

「なんかHPSの時の話と似てるなあ…」と思われるかもしれませんが、HSPと違うのは、Lunaは単なるラッパーライブラリなので機能が足りなければ直接生のDirectXを触る事も可能です。(もしHSPでも可能だったらすいません)

ちなみに、Lunaライブラリの作者の葉迩倭さんは当時スクエアで働いていたそうですが、今はSPARKという会社の副社長兼CTOをされてるそうです。

そんな訳で、私はC++を勉強しつつ、Lunaライブラリで就活提出用の3Dゲーム制作を始める事になりました。

当時の私がネットでよく見てたのは、自作ゲーム開発コミュニティ?みたいな界隈の人達です。
ゲームヘル2000というコミュニティが盛り上がってました。

OMEGAさんという方は、Every ExtendがPSPで商業ゲーム化されててメチャメチャ尊敬してました。(Every ExtendもLunaライブラリが使われてるらしい)えぐぜりにゃ~も面白かった。

↑2009年のIGDAのOMEGAさんのセッション

ABAさんはシューティングゲームを沢山作られていました。BulletMLという弾幕記述言語を生み出しました。

kenmoさんのゲーム制作に関する記事はいつも参考にさせてもらってました。

https://kenmo.hatenadiary.org/

今ではサクナヒメで有名なえーでるわいすのなるさんが当時公開していた花咲か妖精というゲームはアクションが爽快で尊敬してました。

D5さんが作られたシスプリガントレットという同人ゲームは、体験版しか遊べてませんがメッチャ面白くて印象に残ってます(辺境に住んでたので買いに行けない)

https://web.archive.org/web/20070305233604/http://d5-dot.net/

さて、Lunaライブラリで何やかややってた私に話を戻します。

Lunaライブラリではシェーダも使えるんですが、私のPCのマザボオンチップのグラフィックスチップではプログラマブルシェーダ(2.0)に対応してなくてシェーダが読み込めませんでした。
慌ててSapphire製の安いグラボを買った気がします。

↑当時モデリングしたキャラ

↑これは当時発売されたDS版FF3のモデルのテイストに衝撃を受けてパクリにかかってる

↑どうやってフィールドマップを作成しよう?と考えた時に画像でマップを書いて、それを一旦C#のプログラムでテキストデータに変換して、そのテキストデータを自作したメタセコプラグインで読み込んでハイトマップメッシュを生成しているの図

↑最初はこんな風にキャラがフィールドを歩いて敵を倒す、アクションRPGを目指してましたが、ジャンプ処理やらなんやら考え始めると、意外と面倒という事に気付きました。

↑結局作り直して、こういう人魚の主人公にして海の中を泳ぐゲームにすることで、地面を歩く場合の諸々のアクション実装の面倒さを回避しました。

↑これはハッチング風シェーダとか作って遊んでる様子

初めて自分でちゃんと3Dゲームを開発してる中で、結構色々な学びがありました。
例えば、処理のボトルネックをプロファイラで確認したら、ドローコールの発行が一番クソ重かったことなどです。
メッシュが分かれたり、マテリアルが分かれたりすると、その度にドローコールが増えてしまいます。
ですので、キャラクターのメッシュ、マテリアル、テクスチャは絶対に一つにまとめた方がよい事。
この辺は今のUnityでのゲーム開発でも通じる所です。

3Dゲームを作ろうとして気付いた事ですが、まず、普通のWindowsプログラムには、C#のフォームデザイナみたいなグラフィックエディタは付いてません!
UIとかの部品は全部コードで設定するハメになります。面倒です。

さらに3Dゲームだと、実際は3Dのグラフィックエディタが無いと制作は困難を極めます!例えば敵キャラの配置をコードだけで設定しようとしても、画面上のUIと違って不可能に近い問題になります。
私は悩んだ挙句、メタセコを3Dエディタだと見做して、敵を置きたい場所に頂点を配置して、それを自作プラグインでデータエクスポートしてゲームに読み込めるようにしました。

本来なら3Dエディタをまず自作すべきなんでしょうけど、そんな事やってたらいつになったら実際のゲーム制作が開始できるのか分かったものではありません。

DirectXによるゲーム制作の壁
ビジュアルエディタが無い
(要自作)

そんなこんなで就活が始まるまでに慌ててゲームをでっち上げて、就活が終わった頃には5年生になっていたという感じでした。

恒例のA君とのゲーム制作もやっていましたが、やはり本格的な3Dゲームを作る時間は取れなくなってきたのでダンレボクローンみたいな音ゲーを作ったりして、私はイラストをちょっと提供するだけとかになってましたね。(入部当時は神扱いだったダンレボクローンをA君は乗り越えたんだなあという感慨)
この頃のA君はGame Programming Gemsとかいう分厚いゲーム開発Tips集とか読んでました。

5年生になると、卒業まで1年かけて卒業研究をする必要があります。
大体は指導教員のお手伝いみたいな感じでやるものですが、私は教員の方の専門とは違う事を一人で勝手にやる事にしました。

何をやるかと言うと、3Dのシミュレーションの研究をやる事にしました。とは言え、それは研究としての体裁を整えるための方便で、本当の目的はDirectXの勉強でした。

実は、就活で提出したゲームが、生のDirectXじゃなくてLunaライブラリを使用しているという点でウケがイマイチだったのが引っかかってました。やっぱりゲーム会社に入る前にちゃんと生のDirectXを勉強しといた方がいいかもな。と思いました。
また、過去のDirectX挫折のトラウマも払拭する必要がありました。

計画としては、Lunaライブラリみたいな感じで自作のDirectXライブラリを構築しつつ、その上で研究の3Dシミュレーションを実行すればよいというものです。

↑最初の頃やってみた布のシミュレーション

布のシミュレーションはすぐできたしあんま面白くないなあと思いましたが、A君からヒントをもらって、水の流体シミュレーションに挑戦する事にしました。

自作のDirectXライブラリの方は、イチからコツコツと書いていきました。(結局半分くらいはLunaライブラリの写経だったと思うけど、それでも自作したと言い張る)

↓参考になった書籍はこれです。

シェーダの本ですが、最初の方に分かりやすい3Dプログラミングの解説があります。

DirectXライブラリの自作で一番厄介だったかもしれないのは、Direct3Dデバイスがロストした時の復旧作業ですかね。テクスチャから何からいい感じに全部再ロードしてあげる必要があります。
なんかウインドウモードとフルスクリーンの切り替え時?とかにデバイスがぶっ壊れたりするそうです。こんな処理自動でいい感じにやってくれよ…。

他にはファイル上のテクスチャとメモリ上のテクスチャとVRAM上のテクスチャをいい感じに管理してあげなきゃいけないのがややこしくて混乱しました。今ならUnityならこの辺何も意識する必要無いのに。

あとはスキンメッシュアニメーションの実装は概念も数学もコーディングも全てが厄介で大変でしたね。

C++の勉強でよく参考にさせていただいたのは、ロベールのC++教室さんですね。

DirectXの勉強で参考にさせていただいたのは、まるぺけつくろーどっとコムさん、もんしょの巣穴さん、t-potさん、電波の缶詰さん、など。大変助かりました。

そういえば、この頃はニコニコ動画がメチャメチャ盛り上がってて、毎日ランキングの1~100位を舐めるのが日課でした。
ニコニコのMADで東方を知って、そういや東方にハマッてる友達いたな…って彼から東方原作を借りてドハマりして…って感じで当時は東方厨になってました。
ZUNさんを崇拝して個人制作ゲーム熱がさらに加速するといった面もありました。

そんなこんなで卒業が近づき、卒業研究は、このブログで以前に触れた事もありますが、SPHを実装して水の流体表現を行いました。

SPHを実装しただけで特に新規性も無いし、どこが研究なの?と今の僕なら言うかもしれませんが、まあ高専生の卒研なんてこんなもんです。

さて、振り返ってみると、私やA君の間では、ゲームと言えば例えばキングダムハーツとか(野村哲也さんは神格化されていた)ダーククロニクルとかそういうので盛り上がっていて、我々が作ろうとしていた3Dゲームは常にそういうクオリティを目指していたわけです。(理想と現実の違いは大きい)

しかし、この頃になって私はようやく気付き始めていたんですが、
「もしかして3Dゲーム作るのってメチャメチャ大変なんじゃね?
という点です。まず、3Dビジュアルエディタが無い時点で詰んでます。
3Dエディタの自作なんてそれだけで途方もない労力がかかります。

あと本格的なゲームを作るんだったら実はエクセルこそが最強のゲーム制作ツールなんじゃね?という事も段々理解してきました。

また最初の頃に疑問に戻ってきますが、「私はゲーム作りたいだけなのに、なんでここまで苦労しなきゃいけないんだ」という話です。
悩んだ末に、「3Dゲームじゃ無くて2Dゲーム作ればいいんじゃね?」という結論に至ります。
直近でハマってるゲームが東方である事も影響しているでしょう。

↑これはABAさんのBulletMLを自作ゲームで読み込んで表示してみてる様子
影響というかモロに東方クローンを作りにかかってました。

↑これはC#製の2Dコリジョンエディタ。2Dのこういうちょっとしたエディタ作るくらいなら全然手に負えるわけです。3Dになっちゃうとそもそも表示できない(Managed DirectXとか使わない限りは)ので、3Dのエディタってどう作ればいいのか見当も付きませんでした。ああ~、3Dのゲームエディタさえあればなあと夢見る日々(そして後々Unityに出会う)

3Dゲームが作りたくてわざわざDirectXライブラリまで自作したのに結局2Dゲーム作るとか馬鹿なんですか?と思われるかもしれませんが、実は大量の弾幕表示は2Dとは言えDirectXでポリゴンとして一括描画した方が描画負荷的に有利だったりしますので、無駄ではありません。

社会人

さて、就職してからも自作ゲームの熱はまだ続いていました。上の東方クローンは飽きて放棄されましたが
私は一応ゲーム会社に就職できて、A君も某有名ゲーム会社に就職しました。
今にして見ると、電算部のみんなやA君との出会いが無かったら私ってここまで来れてなかったよな…それは感謝なんですが、まあ感傷的になるのは今回の記事の目的ではないのでその辺にして。

2008年のこの頃、私はC++によるゲーム制作に心底ウンザリし始めていました
何かというと、C++で開発していると、コードを変更するたびにコンパイル&ビルドしないとテストできません。そしてC++はC#と違ってコンパイル時間がクッソ長い
本当にちょっとしたテストプログラムだったらすぐビルドできるので、開発の最初の頃は気になりませんが、ゲーム規模が大きくなってくると、ちょっとしたコード修正やデバッグの旅に数分~10分待ちとかになってきて段々と開発の進捗が出なくなってきます。

つまり、C++はイテレーションに弱すぎる!(今思えば今度こそManaged DirectXでC#使えば良かったかも。この頃はもうXNAが出てたけど)

ついでに言えば、C++はちょっと循環参照しただけですぐコンパイルエラーを吐いて文句言ってくるのも軟弱だと思ってました。例えば、AクラスがメンバにBクラスを持っていて、BクラスもメンバにAクラスを持ってたりするとアウトです。C#なら文句言わず動いてくれるはずなのに(まあそもそも設計に問題があるかもだし、今考えれば工夫すれば回避できそうだけど)

ダメ押しで言うと、C++は油断するとすぐメモリリークしてしまいます。メモリ管理が面倒です!(自分で全部管理できるのは良い面もあるけど…勝手にガベコレ走られたりしないし)

ちょっと最近の話に飛びますが、こういうC++への忌避感があっただけに、Unreal Engine 4が発表された時に、コードでスクリプト書くならC++しか使えないと聞いて、私はイヤでした。
現実問題として、今でもUE4のC++コンパイル待ち時間は問題になってるようです。分散ビルドなどのテクを使えば緩和できるようですが。

C++によるゲーム制作の壁
コンパイル待ちでイテレーション止まる

さて、C++のコンパイル待ちに業を煮やしていた私は、あるアイデアを思い立ちました。
Lua言語の組み込みです。

↓参考になった書籍はこれです

Luaというのはスクリプト言語ですが、C++などのプログラムに実行系を埋め込んで、実行時に動的にLuaスクリプトを読み込んでコンパイル、実行ができます。

凄いのは、コンパイルは一瞬で終わるし、実行速度もスクリプト言語とは思えないほど高速でした。
LuaとC++間のやり取りのオーバーヘッドも小さいです。
要するに、ゲームで使って問題ないくらい高速だという事です。

Luaは基本的な言語機能を持ってますが、面白いのはテーブルという連想配列機能です。
テーブルにはキーにもバリューにも好きな型を自由に入れられます。
なんなら、関数をバリューに入れる事も出来ます。
関数を持ったテーブルはクラスに見立てて扱う事も可能です。(バリューを上書きすれば継承みたいな事もできます)

そして、toLuaというツールを使えば、例えばC++の指定したクラスのメソッドを全部Lua側に自動で公開するみたいな事も可能です。

つまり、私の計画というのはこうです。
私の手元には、自分で実装したDirectXのラッパーライブラリがありますが、この中のメソッドを全てLuaに公開してしまうという事。
そうすれば、私はもう一切C++に触れなくてもLuaだけでゲームロジックが実装できてしまいます
何が嬉しいのか?というと、あれだけイライラさせられていたC++のコンパイル待ちから完全に開放されるという事です。イテレーション速度が爆速になります!Luaのコンパイルは一瞬だからです。

実際に試してみたら、上手い事行きました!
ちなみに、上述した通り、私は3Dゲーム制作には懲りていたので、2D機能だけです。

(そういえば、UE4の話に戻りますが、UE4にC++だけじゃなく、ビジュアルスクリプトのブループリントも用意されてるのは、私がC++にLuaを乗せた話と似てるかもしれません。ブループリントのコンパイルは一瞬で終わるので、高速なイテレーションで開発する事が可能です。)

この成功で、私は今まで散々ぶつかってきたゲーム制作上の壁を全て取り払えたと思ってました。
今までどういう壁にぶつかってきたかおさらいしましょう。
・C言語だとビジュアルが出せない! → Visual Basic使えばOK
・Visual Basicだと3Dゲーム作れない! → DirectX使えばOK
・DirectXはチンプンカンプン! → じゃあHSPにしよう
・HSPは3D機能が弱い! → じゃあLunaエンジンを使おう
・Lunaエンジンだと就活で評価されない! → 観念してイチからDirectX勉強しよう
・3Dゲーム制作には結局3Dエディタが必要! → なら3Dは諦めて2Dゲームを作ればいい
・C++での開発はコンパイル待ちが苦痛! → Lua上でゲームを実装すればOK

一通りの問題が片付いたと思った私は、気を良くして一気に大作ゲームの開発を構想します!

当時の私の状況は、今考えると明らかに洗脳か何かされていたとしか思えないくらい東方に入れ込んでました。でも当時のオタクはみんなそんなもんだったんじゃないかなあ。同期の同志達とカラオケ行って「えーりんえーりん!」とか歌ってた頃です。

私は、東方の原作シューティングになにか洗脳効果が仕込まれてるんじゃないかと思ってます。つまり、シューティングゲームなので画面をずっと凝視する必要がありますが、そこに非常に美麗な弾幕模様が映し出されて、それに加えてZUNさんのあの音楽が鳴り響く事で、頭がトリップしてしまうという説です。まあこれは冗談ですが。

当時の東方の盛り上がりっぷりを説明するのは難しいんですが、二次創作音源界隈ではビートまりおとか石鹸屋が席捲しており、ニコニコ動画では二次創作紙芝居動画がドシドシ投下されており、同人誌や同人ゲームの熱量も異常でした。

私は就職で都会に引っ越してきてメロンブックスとかに行けるようになったので、そういう同人の熱量を目の当たりにしてました。

ちなみに当時崇めていた同人サークルは、徒歩二分さん、ZAZEN BEATさん、雨山電信社さん、YAYUYOさん、フミンバインさん、モスグリーンさん、Felis Ovumさん、武者プルーンさん、奴は仮名さん、めるくまあるさん、FLIPFLOPsさん、ダイオキシンさん、他多数。

というような、過熱した東方の供給を一身に受けた私が、どのようなゲームを開発しようとしたか?

戦国ランスのシステムで東方二次創作ゲーム作ろう!
という計画に至りました。

なぜ戦国ランスか?と言うと、当時ハマっていて、「こんなおもろいゲームがあるんか!」と思ってたから。

それから、当時は東方二次創作イラストを描くのにハマっていました。
そして、当時の私の脳内では常に消化しきれないほどの二次創作の話のネタが溜まっていってました。
ついでに言えば、当時はやっていたニコニコの東方二次創作動画みたいなのも作りたくなってました。
それでいて、やっぱりどうしてもゲームも作りたいという気持ちもありました。

イラストが描きたいのか動画が作りたいのかゲームが作りたいのか、どれかに絞れよ!」と思われるかもしれませんが、私の計画では全てをひっくるめて満足させる事が出来るはずでした。

計画はこうです。
①戦国ランス風ゲームなので、立ち絵が沢山必要になる。立ち絵をどんどん描いて、どんどんpixivにアップする。これでイラスト描きたい欲求が満たせる。
②描いた立ち絵を使ってシナリオを実装する。シナリオが進んだらそこまでのゲームプレイ動画を収録してニコニコ動画にアップする。これは実質ゲーム制作進捗動画と東方二次創作紙芝居動画を兼ねる。これで東方二次創作欲求が満たせる。
③これをどんどん繰り返していたら、最終的には大作ゲームが完成するので同人ゲームとして販売する。

とりあえず、バトルシステムやシナリオパートの実装をやってみたら上手くいったので、立ち絵とシナリオ制作とニコニコへのアップを行いました。

この計画はかつてないほど上手くハマッていたのは確かでした。
実際に2008年~2010年の2年間くらいはずっとこの計画を進めていました。

しかし、2年くらいかけてようやく気付いたのですが、これはキリがないぞと。
当時の構想メモを見ると、妄想だけは無限に膨らんでるものの、2年でこの進捗だと、完成するまでに10年くらいかかってしまうのでは?

いくら何でもそれはキビシイよな…という事に今さら気付いて、この計画は残念ながら頓挫しました
二次創作がしたいならゲームじゃ無くて素直に同人誌描けばいんじゃね?みたいなアドバイスも頂いて、「言われてみればそうかもな…」みたいに思い始めてました。

二次創作ゲームの壁
構想が壮大過ぎてエターナる

そんなこんなでゲーム制作へのボルテージがやや萎み始めていた私ですが、そんな時に出会ったのがこちらの動画でした。

なんだこれは!?

美麗なグラフィックの超本格派に見えるストライクウィッチーズの3Dフライトシューティングゲーム!?
こんなものを個人で開発した!?
明らかに当時の同人ゲームの3Dゲームの水準を超えているように見えます。
魔法ですか?
学生時代にK君が見せてくれたテトリス以来の衝撃で、完全に度肝を抜かれました。

作者さんのコメントを見ると「Unity3Dで開発中」との事。

Unityって何だ?

これが私とUnityの出会いだったわけです。

当時はバージョン3とかだったUnityに触れてみた私は、一目でその革新性に気付きました。
何と言っても、Unityは高度な3Dエディタを搭載しています
今まで3Dエディタが無いせいで3Dゲームの開発は実質不可能でしたが、Unityは問題を完全に解決してくれました!

さらにたまげたのは、ゲームをいちいちビルドしなくてもエディタ上ですぐ実行できる事です!
私がC++でイライラして苦労してLuaを組み込んだのと同レベルのイテレーション速度が実現されています!

そして高度な物理演算システムや、キャラクターの制御、テレインシステムなどなど、今まで見た事もないレベルの高度な機能が至れり尽くせりで搭載されています

これほどの神機能にもかかわらず、Unityには無料バージョンが用意されていて、基本機能は無料で使えました。
さらに、Unityはマルチプラットフォームに対応しているようで、じわじわと流行し始めていたiPhone(当時はiPhone4)上でゲームを実行できるとの事!(当時はUnityのiPhoneサポートとAndroidサポートはそれぞれ4万円のアドオン)

Androidアプリをネイティブ開発するにはjavaが必要で、iOSアプリを開発するにはObjective-Cが必要で、それぞれ習得する手間がありましたが、UnityならC#だけでマルチプラットフォーム開発できます。(まあ理想と現実は少し違うという話は当時の私は知らない)

この時期からUnityに飛び付いていた人というのは結構珍しいのかもしれません。当然、当時の私には、後々になって誰も彼も、猫も杓子もUnityを使い出すなんて事態になる事は想像できてませんでした。

私はUnityがもたらしてくれる革命性を完全に理解してさっそく飛び付きましたが、今まで散々苦労したからこそすぐにUnityのメリットに気付く事が出来たのかなと思います。
C言語や生のDirectXの問題点は実際に自分で触ってみないと気付きにくいもので、ポッと出のUnityが何がどう優れているのか判断するのは意外と難しい事なのかもしれません。

2011年の初頭、auから初めてのandroidスマホの発売が始まったので、さっそく私は機種変してみました。(悪名高いアアアッ、レグザフォン)

スマホを触ってる内に、そのゲーム端末としてのポテンシャルの高さを感じました。
当時の私は、「こりゃあコンシューマゲームはいずれスマホゲームに駆逐されるわ」と思い込んでましたが、今にして見るとそうはなりませんでしたね。

「よし、unityでスマホゲーム作って一発当てよう」と私は決意しました。
iOSアプリ開発のために、iPodTouchを買って、Macbookも買いました。
あと会社も辞めました。

初めてUnityで作ったゲームはこんなんです。

いわゆる球を割っていくゲームですね。

せっかくUnityを使ってるのに何故か2Dゲームを作ってます。
よく憶えてませんがいくつか理由が考えられます。

まず、今まで3Dゲーム開発にトラウマを抱いていたから。
そして構想を広げ過ぎてエターナる事にもトラウマがありますから、小さいミニゲームを作ってみたのでしょう。
さらに言うと、実は当時のスマホの性能では普通に3Dゲームを実行するのは困難で、メチャメチャ最適化する必要があったので、2Dゲームにしとくのが無難という風潮だった気がします。

とは言え、Unityには当時2D機能なんて無かったので、3D上で無理やり2Dゲームを作るという荒業が要求されました。

さてさて、Unityに出会った後も紆余曲折あったのですが、キリが無いので今回の記事では一旦ここまでにしておきましょう。

私が青春時代にゲーム制作に挑戦して、そしてぶつかった多くの困難と、それを乗り越えてきた苦労を感じていただけたでしょうか?

まとめ

さて、改めて申し上げますが、

今、はじめからUE5に触れる事ができる若者は非常に幸運です。

Unityに出会ってからの話は端折りましたが、実際はそれからもUnityで数々の壁にぶち当たりました。

例えば、作成した3Dモデルをリトポとかして最適化するのが面倒問題
→UE5ならNaniteによって最適化無しでほぼ無限にポリゴン表示可能

イチイチライトマップ焼くのが面倒問題
→UE5ならLumenによってリアルタイムGIできるのでライトマップのベイク不要

結局高品質なアセットが足りないからすごいグラフィックスのゲーム作れない
→UEならMegascansを無料で使い放題

いや~、私の学生時代にUE5があったらな~。

私は自分の青春時代がそれほど悪かったとは思ってませんが、ただ悔いが残るのは、ゲーム開発で立ちはだかる様々な障壁と格闘してるのに精いっぱいで、肝心のゲームの中身、本質部分に集中する事が出来なかった事です。

ゲーム開発の環境なんて時代とともに移ろっていきます。かつては生のDirectX、それからLunaのようなラッパーライブラリ、そしてUnity、UE5など。
肝心なのはゲームの中身です。本質的な部分はうつろいにくいですから。
だから私ももっとゲームの中身の部分に集中して取り組みたかったですね。

そもそも私はプログラミング自体は好きという訳ではありません
ゲーム作るのに必要だったからやるハメになってただけです。
まあ、それで人一倍苦労こいたおかげで今はエンジニアやってるわけですが。

ただ当時、生のDirectXに真剣に取り組んで、3Dの基礎的なアーキテクチャを学ぶことが出来たのは今でも通用する知識で役立ってるかなと思います。

UE5なら、ゲーム開発初心者でもゲームの中身の部分に集中して取り組めるはずです。
CやらC++やら知らなくても、ブループリントでサクサクロジックが組めますし、マケプレに行けばゲームテンプレートも充実しています。

ゲーム制作に興味ある若者は、UE5の登場という爆アドを活かして、是非ともチャレンジしてみてください。

UE5が何がどう爆アドなのか?は、この記事をここまで読んでいただいた方なら、しみじみとお分かりいただけたと思います。

私も歳は食ってしまったものの、ゲーム作りたい気持ちは今でも変わらないので、今からでもUE5で今度こそ何かを作ってみたいと思ってます!

そういえば、あれは2015年くらいの事だったかと思いますが、久しぶりにA君と会った事がありました。
その時に、「また一緒にゲーム制作しないか?あの頃みたいに」と振ってみました。
そしたら「…ゲーム制作……?」みたいな反応だったのが印象的でした。
学生の頃はあんなに徹夜してゲーム作って、3度の飯よりゲーム制作が好き!みたいな感じだったA君が。

しかし、時間が経てば人は変わるものですし、むしろいい歳こいてゲームゲーム言ってる私の方が異常なんだろうな。
劇画オバQのラストみたいな気分になったのを憶えてます。

我々はどこから来たのか 我々は何者か 我々はどこへ行くのか