今までずっとWebプログラマー(主にrails)で、スマホアプリちょろっとぐらいでしたが、今回初めてUnityでのスマホゲームのお仕事をさせていただきました。

お仕事

ECC が社会体験アプリ「ごっこランド」に新規パビリオンを出店!〜 ECC のえいごのせんせいごっこ〜 | 株式会社キッズスター|KidsStar Inc.

https://gyazo.com/be11132e05c72011837796bd014241a0

謝辞

「Unityを仕事でやりたい!」という意気込みだけの僕を辛抱強く教えてくださった株式会社Kidsstarエンジニアの @monryさん、@fakestarbabyさん、@hanageman69さん、@lycoris102さんありがとうございます。

お仕事で開発するまで

去年の11月末ぐらいに、

komagata「Unityやりたい」

Kidsstarさん「やろう」

ってなって、まずは勉強のお題として「もぐらたたきを作ってみよう」ということになりました。

https://gyazo.com/1509a6fd598d71ae23ec03514fdf9356

(もぐらたたきの要件の図)

その辺りの途中経過はブログにも書いています。

基本的なことを理解してない俺に対して@monryさんが丁寧に辛抱強くおしえてくれて非常に感謝しております。

基本リモートなので、現在の進捗や理解をブログとしてアウトプットするのは良かったなと思います。

ブログにすると自分の中で質問できる程度にまとまります。

フィヨルドブートキャンプで最近Railsを教えているので教える側として思うのですが、初心者のブログを見てると回答や教え方が自然に頭に浮かんじゃいます。それを吐き出すのは比較的ラクなんじゃないでしょうか。

昼間Rails仕事をし、夜中に気力が無くてもなるべく公式サイトのチュートリアル動画をみたりして勉強しました。

2週間ぐらいの感じで…と言われていたのですが結局年内一杯(4週間ぐらい)かかっちゃって後半必死こいてました。

Kidsstarのゲーム開発の流れ

ゲーム開発がはじめてなのでとにかく一回やってみないとリリースまでの開発の流れがわかりません。今回一通り体験できてとっても勉強になりました。

Kidsstarさんでのゲーム開発の流れは下記のような形でした。(外部の開発者としての視点オンリーです)

  1. お客さんとの間で仕様が決まる。(esa or Googleスプレッドシートで詳細な仕様書が作られる)
  2. ゲームで使う素材が作られる。(ボイスを録ったり、イラストを作成したり)
  3. オーサリングの得意なデザイナーさん(神)がほとんどの素材をUnityに配置し、アニメーションもTimelineなどで作る。(GameObjectについてる付箋にプログラマーへの指示が書いてある)
  4. コードが必要な部分(ゲーム本体や入力に反応して動くところなど)にプログラマーがコードを入れていく。
  5. お子さん向けテスト(実際に遊んでもらってフィードバックをもらう)
  6. 多端末検証(Androidの部分を外部の会社さんに依頼してテストしてもらう)
  7. ごっこランド本体とつなぎこみをし、リリース。(個別のゲームはそれ単体でBuildできるようになっている)

真っ先に思ったのが、

「圧倒的に大変なのデザイナーさんじゃね?」

ということです。

多分デザイナーさんには3つの役割があって、

  1. 元になるキャラクターなどのイラストを書く。
  2. 上記を元にゲームで実際に使う素材を作る。
  3. 素材をUnityに配置する。アニメーションを作る。

3人ぐらいデザイナーさんが関わってると思います。

また、Kidsstarの開発で驚いた点は、

「仕様書が超書いてある」

点です。

僕は最近、コンセプトのパワポだけを元に全て話しながら作ってく感じのWeb開発の仕事が多かったので、かっちり仕様が決まってるのは1プログラマーとして入るのはとても楽でした。

今回のゲームでできなかったこと

ほとんどの実装方法も聞きながらやったようなものですが、

「あ、この画面は自分で書けるかも?」

という状態にβ版リリース一週間ぐらい前にやっとなりました。1ヶ月前にその状態になっとけよなぁ〜頼むよぉ〜😢

音声の録音やビルド周りなど、難しい部分はほとんど@monryさんや@fakestarbabyさんにやっていただき、ランダムで生徒のキャラクターが生成されるアバター部分も@hanageman69さんにやっていただいて、簡単な部分を僕が書くといった程度だったので、次のアプリからはそういった部分も一人でできるように勉強していく所存です。

AssetBundleとか全然理解できていないですしね。

やる前の自分に教えておきたいこと

オーサリングツールは習うより慣れろ

UnityはC#から呼べるランタイムとオーサリングツールで成り立っています。実際はかなりの時間オーサリングツールを弄り回すことになるので概念理解もいいですが、どこに何があるのか、どこの機能を使えばどうなるのか、とにかく慣れです。

Photoshopの使い方をマスターすることを想像するとわかりやすいと思います。

UnityはあくまでHierarchy本位

プログラマー的には「C#で書けることをGUIからでも書けるだけでしょ?」と思いがちですが、Unityはそんなコード本位な思想ではなく、オーサリングツール上のGameObjectにHierarchyがメインで、C#コードはあくまで、

「GameObjectにつけることができる1コンポーネント」

という位置付け。そういった流儀だと理解しないと色々と分かりづらくなってしまいます。

Rider最高

JetBrains社製のC#のIDEであるRiderはUnityに最適。基本的な作法を指摘してくれるので特に勉強中の人間にとっては最高。すぐ買え。

静的型付けコンパイル言語の流儀に従え

言語入門経験が少ないと陥りがちですが、入門時に別言語のスタイルを無理矢理持ち込むのは理解の妨げになる。新しい言語を学ぶ時は郷に入っては郷に従え。

  • 暗黙的より明示的
  • 型をつけろstringにするな
  • クラスが増えることを恐れるな
  • コーディングはなるべくIDEに任せろ

rubyをvimで書いているときは頭の中で思い浮かべたコードをすばやくタイプしまくる感じですが、C# + Riderのときは自分の書いた原型をIDEにたびたび投げてコントロールを渡しつつすばやく補完し、指摘点の自動修正をしてもらって仕上げていく感じ。

感想

既に次のゲームの開発が始まっているのでゆっくりしてられませんが、Unityに入門してやってみてとっても良かったです。

やはり新しいことを学んでできることが増えるのは楽しいです。僕の場合、webでは新しい言語を覚えたといってもそれほどできることに違いはありませんが、webとゲームだと全く違うので感動もひとしおです。

まだ2Dゲームだけで3Dはさっぱりなのですが、個人的にも3Dのゲームを作ってみたいです。

https://gyazo.com/136a552ebb38092fc5826e99a81a575b

弊社(フィヨルド社)が5月18日に行われるRailsGirls Tokyo 9回目のスポンサーになりました。

途中でスポンサートークさせていただけることになりそうです。

https://gyazo.com/7755a80b90607921f334bde906c69f11

RailsGirlsでプログラミングって面白いなと思った方へ、

「さらにガチで学んでプログラマーになりたい人はフィヨルドブートキャンプへ」

という流れは良いかなと思ったためです。

僕自身もコーチとして応募していますが、受かるかどうかはまだわからないです。

今回のオーガナイザーの@usamimiemiさんとスタッフの@naotyomeさんが両方ともフィヨルドブートキャンプ生なので、

「みんな関わってるのにまさか@komagataさんコーチに応募しないわけないよね?」

という無言の圧力を感じています。

考えました。

1)
オペラシティを仰ぎ見て
 若人叩くはキーボード
若葉に萌ゆるギットハブ
 コミットログを積み上げて
 作らむ未来のオーエスエス
あゝ 我らフィヨルドブートキャンプ

2番、3番と曲募集中です。

知り合いの方が中国人の同僚と一緒に深セン行くというので同じオフィスの @bluerabbit777jp と @machida と行ってきました。

ネットで見た通りだったところ

https://gyazo.com/c4482ffae94ab570c30717e7534d5eb0

o) ビルが高い。

Tencentとかビルでっかい。

https://gyazo.com/52df2b65e3b325f18b93c58599b26dcb

o) 華強北(秋葉原的なとこ)が広い。

ここ好き。

https://gyazo.com/585a91225eb7e1e00b911d0656048c14

o) 物価が安い。

ご飯は日本の半額ぐらい?

https://gyazo.com/fb5bfe36ba2f1c9f0355a3589da2edd5

o) ガソリンのバイクは走っちゃ駄目なので電動バイクがたくさん。

このカンガルー印のUber Eats的なやつはたくさん配達すれば儲かるらしいので、スゴく急いでて運転がクッソ荒い。電動なので音がしなくてさらに怖い。

https://gyazo.com/00482851d408d492a21142c8c9c537e9

o) シェア自転車たくさん。

たくさんあった会社はofoとmobike以外はほとんど潰れたっぽい。シェア自転車のビックデータを売れる先は結局なかったんだと思う。

https://gyazo.com/546ab6ec4aeffd77c2767b0dcc50cfea

o) WeChat Payばっかりで現金使ってるのをほとんどみない。

Alipayは見たこと無い。

https://gyazo.com/0457a61590c95f0dd1c58c0a5f8d2628

o) iPhoneなどの部品がバラでなぜか売ってる。(写真は全部パーツ)

「HUAWEIのMATE9いくら?」って言ったらオバちゃんが馬鹿にした笑いをして見せてきたら売ってたのはMATE9のケースだけだった。

https://gyazo.com/f4f8181d8dba8d52680755879a49a00d

o) ご飯が美味しい。

違ったところ

https://gyazo.com/e3f886b873deb9a1670f759191e2509b

x) 人が優しい。

優しくない。サービスは概念が無い。

ホテルの清掃員が俺のハブやケーブル使って勝手に自分のスマホ充電する。

ながらスマホで電動バイクのおっさんが歩道走るので怖い。

自転車でエスカレーター登るオバちゃんが危ない。

https://gyazo.com/64e7a3e66fabba30e1813e67e79b5ced

x) WeChat Payが便利で未来だ。

便利じゃない。自分で金額をスマホに入れたりステップが多いのでSuicaやカードの方が速くて便利だと思う。レジ遅い。

Suicaと違うのは本人確認ができてるところ。そこはカードと同じ。アプリと密接なのでその辺で色々できそうなのは良いと思った。

https://gyazo.com/d62e08b5bf6b0e1485b9ae085018fbe0

x) 無人コンビニ・無人屋台・無人ジムが便利で未来だ。

日本で昔実証実験やってたのとあまり違いがない。こちらも実証実験で終了するんじゃないかと思う。

全体的に客の利便性より運営側の利便性を重視してる感。

その他

https://gyazo.com/719632077ddab11b3c3586207ff77178

CITEという大きい展示会行きました。

写真ぐらいのフロアが5個ぐらい?あってでかくて凄いけど内容はとくに面白くなかったです。

HUAWEIはもうスマホに力入れてなくてスマートシティに全力中らしいです。

Xiaomiはスマホのイケメン広告をよく見ました。家電頑張っててインドで凄いらしい。

https://gyazo.com/f689e0cf506ade02bb26f16561648e21

華強北は15年ぐらい前の秋葉原を10倍の面積にした感じでとても楽しい。ハード系の人にとっては最高かも。でも俺はネットのソフト系だからGoogle使えないのはちょっと・・・。

https://gyazo.com/524f78022d19c8b284043e2c122918ff

ゲーセンは活気がありました。テーブル筐体系では圧倒的にKoFシリーズが人気。1ゲームは40円ぐらい。

全体的に70%ぐらいは日本のゲームでした。

https://gyazo.com/d6600498daa1879d5c6450c69f6d7e50

ネカフェも人気。ちらっと見た感じ、Tencentの王者栄耀やPUBGやってました。

https://gyazo.com/0e36f5f4bb98c9c15f5bd0bb43a74116

弊社のAndroid検証機のMaxバージョンが4.3という悲惨な状態だったので、Androidスマホを買うというのが今回の目的の一つでした。

MEIZUや深センに本社があるZTEのスマホが欲しかったのですが、どのメーカーも独自カスタマイズが激しくて調べた感じ日本語ロケールを使うのがかなり面倒だったので、中国ではメジャーなOPPOのA73を買いました。

感想

「大体ネット通りだった」という感じ。こちらからは以上です。

弊社(フィヨルド社)がRubyKaigi2018のシルバースポンサーになりましたー。

といっても @machida がRubyKaigi2018サイトのデザインでいただく予定のお金を一部返す形なだけですが・・・。

Ruby25周年イベントにつづいてFjordBootCampのチラシやステッカーを配布しに行こうと思っています。

ピヨルドのきぐるみを着てチラシを配りたいと言ったんですが、社内で却下されました。高いっすねーきぐるみ。

FjordBootCampはリモート・ローカル(社内にきて勉強する人)ともにちょっと増えてきて賑やかな感じがします。

勉強している方々はがんばってますね〜。僕もスト2(ウル2)頑張ってます。

ss

Fjord Boot CampでRails入門終わったぐらいの人のために、普通どんな感じでrailsで開発していくのかをペアプロ感覚で何を考えているか喋りながら1機能作ってみる動画を作りました。

適当にググりながら作っていく感じとか、間違っているときどうしてるのかの雰囲気が伝わればいいなと思います。

https://gyazo.com/3f6b9abce93b4a01eb14e467df6f4920

無い。

ときどき「何言ってるのかわからない」って人見ます。

文章でも口頭でも説明が上手くない。

プログラマーも仕事では大抵がチーム開発なので、GithubのIssueやコメント欄で「何言ってるのかわからない」と非常に辛い。

元弊社インターンだった @sukechansan さんもそのタイプで、「もう一度整理してから話して欲しい」とか「箇条書きにしてみたらどうか」とか「本を読んだら良いのではないか」とかアドバイスしてましたが、

「国語力ってのは大人になったら変わらないものかなぁ」

なんて諦めてました。

しかし、プログラマーとして就職して2〜3年ほどたった @sukechansan さんが飲み会で現在の会社の状況や他のプログラマーを目指す人に対するアドバイスを話しているのを聞いてびっくりしました。

@komagata と @machida「@sukechansan さんの言ってることが・・・わかる・・・!!結論もそれに至る経緯もめちゃくちゃわかる・・・!!」

「@sukechansan さん、何、ふつーにわかりやすく話してるんですか・・・!?」

多分、チーム開発する中で、何かをわかりやすく伝えなきゃいけない場面がたくさんあったんだとおもいます。

仕事でたびたび「え?どういう意味?」などのフィードバックを受けつつ何度も話す訓練になっていたんだろうなーと。

人間大人になっても国語力は伸びるもんなんですね。希望が持てました。

ありがとう!なにいってるかわかんなかった @sukechansan さん!

holiday_jpのswift版を作られた@pineさんから連絡頂いたのでholiday-jp Organizationに入れさせていただきました。

holiday-jp/holiday_jp-swift: Japanese holiday for Swift

よい。

J小K

https://gyazo.com/c72228fc1a4074a2249361ac6593a712

通称欽ちゃん蹴り。神。下に判定がクッソ強い。めくりもコレ。出てる時間が長いのもGOOD。

J小P

遠距離・中距離でとりあえず出しとけば空対空などほとんど勝てる。出てる時間がJ小Kより短めなのでちょっと遅らせて出す。

J大P

https://gyazo.com/8518d7afe34cee92d87d31a43b43ceb0

早めに出すと空対空。近距離で相手が飛ぶと読んだら上りで出す。

J大K

https://gyazo.com/af456b3e7444de231868881ec7c125b4

波動を飛び越したら最大距離のコレ。ギリギリ届く距離でウロウロすべし。

垂直J大P

空対空での強さは最強。難しいが要所で出したい。

近中P

https://gyazo.com/3372dc0557e72003633aca5b88e20714

出がクッソ早い頼れる兄貴。飛び込みにくらい投げを出そうとする輩にはこれと下中Kを食らわせてやれ。

レバー入れ中P

https://gyazo.com/079811ccca9181de556bc0e3e997e24c

ヘッドバットの二段技。出が遅いので飛びが浅いと投げられることがあるが、決まればピヨリが見えるのできちんと決めていきたい。一段目キャンセル前ステで裏に回るのもGOOD。

大P

https://gyazo.com/9334d5b3a624872bf3acf5b5f2605820

通称ちゃぶ台返し。終わりの方を当てるようにして対空に使う。判定の強い技には負けるので過信は禁物。

遠中P

近中Pがこれに化けてよく泣く。かろうじて対空に使える。

小K

アンクレットより先は判定が無いのでいろんなものに勝てる。連射は効かないのでやはり過信は禁物。

下中K

https://gyazo.com/518ff7c65eb6c78d28cf75455b637990

キャンセルがかかるのはこれとレバー入れ中P一段目だけなので最重要技といっても過言ではない。飛びからの三段は下中Kを遅めに出すのがコツ。投げやキャンセル前ステ投げ、大Pなどレパートリーを増やしておきたい。サガットの開幕ニーや洗脳ケンの開幕ダッシュに下中K×2 > ローリングでゴッソリいける。

下大K

https://gyazo.com/559cc55072bc3e325004daecd763716f

ダウン技はこれと電撃ぐらいしかないので重要。しかし出がクッソ遅いので当てるのが結構難しい。先端に当てたぐらいの距離から相手の起き上がりに中ローリングを出すとギリ裏に回るので大チャンス。

下小K

https://gyazo.com/518ff7c65eb6c78d28cf75455b637990

ブランカの近距離技では最速かも?困った時に暴れたり、当てて投げたり。

下中P

出が早く、判定も強いが、当たっても互角?ぐらいなので使い所が難しい。多用はできない。

下大P

https://gyazo.com/cab0ad1a69c1478f616c7a748a5ebac1

通称のびーるパンチ。長いし判定も強い。昇竜などで暴れる相手にはキッチリこいつで咎めよう。先端に当てる感じで。

投げ(噛みつき)

https://gyazo.com/a77de1aecabac088630fd34b65f90bdd

ブランカ最重要技。上手い人は一度噛み付いたら離れない連携をもっている。求む連携情報。

アマゾンリバーラン

スライディング。ソニックとエアスラは抜けられる。下小Pなどでバリアを作られると止められる。先端を当てる感じで。

サプライズフォワード/サプライズバック

重要技。バックでJ小Pが一方的に勝てる距離に調整したり、ローリング着地に良い距離を保ったり。フォワードはローリング警戒で固まった相手を投げたり、飛びから裏周りなどに。

エレクトリックサンダー

https://gyazo.com/dc249f07dae842541bd6a8ea45118745

昔より判定が弱い。削りぐらいにしか?暴発が怖いので無い方が良かったかも。

ローリングアタック

https://gyazo.com/b97c0790da24bf6fc65cae1f3bf8cd1e

キャラごとの確反は要暗記。いつくるか警戒させられれば他の選択肢が生きる。移動用に当てない出し方も同じぐらい重要。小は開幕よりほんのちょっと遠いぐらい、中は端と端の距離で目の前に落ちる。

バーチカルローリング

https://gyazo.com/e490b52408099ca6b447fb75c4dcafe9

無敵は無いが発生が早いので出せてればほぼ相打ちには持ち込める。早めに出す感じで。

グランドシェイプローリング

忘れてもよい。