UMGウィジェットだけでゲームを作る実験中
「UE4で2Dゲームというと、Paper2DやSpriteStudioを使って、3D空間に2Dキャラクターを表示するのが主流だけど、ウィジェットだけでもゲームは作れるはずなので、それをやるとどういう問題が起きるのか、というのを確認している」
妹「じゃん……けん?」
「海外ドラマを見ていると、どうもアメリカでもじゃんけんをやってるらしくて、国際的な感じを醸し出そうかと。でも絵が3枚も必要だし、もっと簡単なやつがよかったかもしれない」
妹「これもう動くの?」
「いや見た目だけの、ただのハリボテ。これに相手の手をランダムで出したり、勝ち負けの判定が出来るようにすれば、原理的にはゲームが作れるはず。ただ表示物をウィジェットで思ったように作るのが結構大変」
妹「Paper2Dじゃダメなの?」
「それは出来ればこの期待のプラグインが完成してからにしたい。今はUMGの利点とか限界とかを調べる。とりあえずマウス操作への反応を作るのが簡単なのはいい」
妹がRPGツクールに挫折した時の話
妹「RPGツクールに失敗した時の話も思い出した」
「プレステ版のやつだっけ?」
妹「それもちょっとやったけど、パソコン版のも使ったんだよ。なんだっけ、VX……なんとかという」
「VXAce。あー、そういえばセールだったから妹用のも買っといたような」
妹「で、それを使って、とりあえず主人公を作って、装備品を作るあたりで挫折した。なんというか、靴を4つ履かせたかったんだよ。ケンタウロス的な生物だから。でも装備品の欄が上手く変えられなくて」
「なるほど……」
妹「とりあえず鎧とか盾とか書いてある部分を、靴に変更して、見た目はそれっぽくなったんだけど、結局のところ鎧とか盾とか別ジャンルでしょ? そうすると元々鎧だった靴は、元々鎧だった靴の枠にしか装備出来なくて、これは思ったのと全然ちがうじゃないかと、だいたいそれで挫折した」
「VXAceなら、Rubyでスクリプトを書くか、誰かが作ってるのを探してくると丁度いいのあったんだろうけど。例えばこれなんかだとキャラごとに装備欄の数変えられるから、ひとりだけ靴(アクセサリ)を4枠とかも出来そう」
妹「それだとあんまり自分で作った気がしないというか、足りない部分が出た時に結局困りそうな予感がするというか。そういうゲームが作りたいというよりは、自分でそういう風な仕組みが作りたかったから。そのRuby? とかいうのでわたしが作れるならあれだけど」
「RPGツクールでRubyを覚えたという人もいるから、それもアリといえばアリだったかも。ただ他人が作ったプログラムの、どこをいじれば思ったように改造出来るかというのは、自作するのとは別のハードルはある。一般的なRubyの入門書とは違うルートになるし、ネット上にはいくつか情報あったと思うけど、それ専用の本とかは出てない」
妹「そんなこんなで、やっぱり自分で1から作らないとダメな気がして、いまUE4にたどりついてるんだけど」
「全部再現して+こだわりの部分とかだったら、やっぱり改造していくやり方がいいと思うけど、こだわりたい部分以外妥協していくやり方なら、1から作った方が早そうな場合はあるね」
妹「UE4でも便利なプラグインを見かけると、肝心なとこが調節出来なくて困りそうだなーと思ってしまう。全部ブループリントで作ってあって、わたしが中身を調べられそうなやつが望ましい」
妹がJavaで挫折した時の話
妹「そういえば……先日のスライドに出てた、Javaの話なんだけど、あれなんで上手くいかなかったかをちょっと思い出してきたんだけど」
「なんで上手くいかなかったんだっけ? そもそもなんでJavaだったのかというあたりから」
妹「色々候補はあったんだけど、一番の理由は、インターネットで見てたらわかりやすそうなサイトがあったことかな」
「たしかに、良い言語だけど日本語の説明がほぼゼロってことはよくある」
妹「でも結局そのサイトはあんまり見てないかもしれない。まず図書館で借りてきた本でやってみようとして、そしたら最初の段階からサイトのやつと違ってて。本ではEclipseをダウンロードしましょうって書いてあるんだけど、サイトの解説では、たしかなんとかビーンというのが」
「NetBeansかな。兄もどちらかといえばそっちの方が好きかも」
妹「好き嫌いはいいんだけど、あんまり色々あるのは困る……まあでもHello Worldは出せたんだよ。ただ一番簡単な、ダブルクリックしたらウィンドウが出るやつが作れなくて、本をペラペラめくっても作り方がさっぱり書いてなさそうな感じがヒシヒシと」
「それは……多分書いてなかったんだと思う」
妹「なんで入門書なのにそういう一番肝心なことが書いてないの? コレ絶対要るやつでしょ?」
「実はそうでもない。HelloWorldと同じような、文字だけで完結してるプログラムというのも世の中にはたくさんある。そういうの作る場合にはウィンドウの出し方とかは脇道の話になる」
妹「文字だけ出てきてもしょうがないのでは?」
「例えばディープラーニングで作った超強い将棋プログラムとかも、敵味方の駒の位置は文字データで入力して、結果どこに置けばいいかも文字で出せばいいから、プログラムとしては実は文字のやり取りが出来れば作れる。問題なのは強いか弱いかで、将棋盤の絵を出して見やすくとか、マウスで駒を操作したりとかは、別にあってもなくてもいいというか」
妹「そういうものなのか……でも、プログラムの初心者が作りたいのって、そういうのではない気がするんだけど」
「Javaは初めてだけど、他の言語の経験があるという人も入門書読むし、あと対象がWindowsかどうかでもちょっと変わってくる。それとゲーム向きのウィンドウの出し方と、ゲームじゃないアプリ向きのウィンドウの出し方なんてもあって……Javaを使ったゲーム制作系の入門書だったら、そのへんも載ってるはずなんだけど」
妹「ゲームとか書いてある本もあったような気がする。でもなんかダウンロードしなきゃいけないとか書いてあって、また兄に頼むのもめんどくさいなあという気持ちになった記憶が。そもそもウィンドウ出すだけでそんなに色々必要ないだろっていうのが」
「たしかにAWTとかSwingとかウィンドウを出す仕組み自体はJavaに標準で入ってたと思うけど、その方法だと後がめんどくさかったのかも。ゲーム用として考えると特に」
妹「ウィンドウ1つ作るのがなぜそんなおおごとに……」
「ゲームって画面を高速に何回も書き換える必要があるから、普通のアプリとはちょっと作り方が変わってくる。あとフルスクリーン処理とかも。でもJavaはわりと親切な方な気がする。他の言語だと開発環境以外にプラグイン的な物をダウンロードしないとウィンドウ1つ出せないというのはよくあることだから。そしてWindows以外は別の方法で、とか」
妹「でもUE4だと新しいプロジェクトを作れば、とりあえずウィンドウ出来るよね? あんな感じでよかったんだけど。真っ黒とかので」
「最初からゲーム用に作られてるゲームエンジンだからね。Unityとかもそう。ゲームを作るのに便利なように設計してある。入門書もゲームの入門というのが前提だからわかりやすい。でも汎用プログラミング言語の入門書だと、説明から何からあんまりゲーム向きではないから、最初からゲームと名のつく本を読んだ方が良さそうな気がする」