ある分野を極めた達人が持つ超次元の技術を支える共通する考え
こんにちは!ジェイです。みなさんはオンラインゲームを作りたいと思ったことはありますか?私は作りたいオンラインゲームがあって、この半年間ずっと作り続けていて、何度も何度も挫折して、その度に新しい知識をつけて解決して乗り越えてきました。
そして、現在進行形で今日また壁にぶち当たりましたが、友人のヒントのおかげで解決できました。しかし、このまま作り続けていてもいいのかという疑問もまた持ち始めました。
達人になるには自分なりの型を持つべき
どの分野を学ぶにしても最初は型を模倣することから、始める事が学習効率が良いというのは知ってる人は多いと思います。
空手や柔道などの武道にも型はありますし、ライティングスキルやプログラミングなどにも型はありますし、将棋や囲碁ではその型の事を定石と呼んだりもします。ちなみにこの文章もPREP法というライティングの型を使って書いてます。
型があると行動する時の判断の基準ができる
あらゆる技術のある物事について型がありますが、ではそれを学ぶのはなぜでしょう?
それは何かを比較するには、必ず基準がいるからです。
例えば、型の稽古を何度も反復練習することによって、その型を覚えると何となく自分なりに上手くいく時と失敗する時の感覚が身に付きます。この歩幅でやると感覚的によいとかダメとかそういった感じです。
この型を覚えるのが非常に大事で、私が必死に取り組んでいるゲームプログラミングにもデザインパターンや定番のアルゴリズムがあり、それを覚えて状況に応じて変化させて対応しています。
ゲームプログラミングで型を有効に利用する具体例
私はゲームプログラミング歴13年でオフラインのゲームに関しては、どんなジャンルのゲームを作るにしても、すべて自分なりの型がありゲームの企画や内容によって、適切な設計やコーディングの手法を使っています。
かなり具体的にいうと弾幕シューティングのゲームプログラミングの講座で説明したコマンドパターンというのがあります。
これは同じインターフェイスを実装して、コマンドが決定した瞬間にそのすべての処理の中身を入れ替えるという、オブジェクト指向の多様性を利用したデザインパターンの一種です。
ここではファイルを読み込んで、敵の出現や会話シーンの発生や待ち時間など、様々なコマンドを一定の時間おきにイベントを発生させるのに使ってます。
このコマンドパターンを覚えておけば、一定の時間に何か行動を発生させるような状況の場合はすべて対処できます。他のパターンやアルゴリズムを覚えれば、あらゆる状況に対処することが可能になります。
自分流の型
そして、これらをずっと使いこなしてるうちに、自分にやりやすいように型を変化させて、自分流の型ができていくようになり、これがどんな分野で学習する時にも成長する近道になります。
私はたくさんの本を読み実践して、ゲームを作りを学んできましたが、一番の自分の中のゲームプログラミングの核となる型は、実際にお会いした事はありませんが、この世で最も尊敬するプログラマーである松浦健一郎先生から学びました。
当時の自分にとってはまるで松浦健一郎先生の繰り出す技術すべてが、衝撃的で当時DirextX9を勉強していた自分の心に突き刺さり、一心に本を読み漁り、技術を実践していきました。その結果が今の自分のゲームプログラミングの技術を支えていると言っても過言ではありません。
オンラインゲームを作る上での苦悩
今までずっとオフラインゲームを作ってきましたが、オンラインゲームを作るようになって理解した事は、同じゲームでもまったく別の技術が必要になるということです。
もちろんオンラインゲームを作る時にもあらゆる情報を参考にしてきましたが、重要な内容ではあるものの根本的な技術を支える型の様なものではありませんでした。
ようやく出会えたオンラインゲームでの技術の型との出会い
これらの経験を蓄積していく上でようやく最近になって、Unityのアセットストアで、PhtonCloudPUN2で作られたオンラインゲームの技術の型といえるべきものと出会いました。以下のアセットです。
他のオンラインゲームのアセットもたくさん購入しているのですが、私の心に深く突き刺さったソースコードは、これらのアセットだけでした。
これらは今まで私が苦労した、RPCの遅延実行や途中入出した人の状態の違いの管理など、非常に頭を悩ませた問題をスマートに解決する方法がはっきりと提示されてます。
型という意味でも、PhotonClousPUN2とゲームの実行の中間に位置するライブラリのようなベースがしっかりできていて、これならどんなオンラインゲームだろうが対応できるということを確信しました。
Unityオンラインゲームスペシャリストに相応しい自分になるために
これから私はUnityオンラインゲーム制作に特化したコンテンツを発信する事を決めています。自分の限界を超える程の作業を立て続けに行ってきただけにすごく悩みましたが、今まで作ってきたUnityChanShooterとは別に新たに作ろうと思います。
目的はもちろん自分なりのオンラインゲームの技術の型を手に入れるためです。 具体的にはMFP:Multiplayer First Personのアセットを使い、次のオンラインゲームを作ります。
今まで支えてくれたみなさんへ
私のオンラインゲーム制作は自分1人でやって来たわけではなく、YouTubeの配信で何度もテストして、バグを直し1つずつ進んできました。
こうして支えてくれたみなさんには、感謝の気持ちで一杯です。何度も挫折してやりなおしているのにあきれずに付き合ってくれる人がたくさんいる事は本当にありがたいです。
UnityChanShooterは同じ武器を拾えない様にするという事で幕を閉じるようになりますが、新しいオンラインゲーム制作にチャレンジし、さらなる高みを目指します。
今まで手伝ってくれたみなさんの期待を裏切るような非常に心苦しい決断ではありますが、やはりオンラインゲームでも自分なりの限界を超えていく事を決断します。
