概要
30歳になり、4月で社会人として10年たったので、
自分でもどんなことがあったのか気になったので、振り返ってみる。
といっても、前職(5年ぐらい)のことしか書いていないです。
後半の5年を書きました
新社会人〜6年目
20歳で都内の中堅ゲーム開発会社にプログラマとして入社した。
もともとゲーム会社に入るために田舎から上京し、都内の専門学校に通っていたので、順調な滑り出しと言える。
というのもゲーム系の専門学校は希望通りゲーム業界に入ることはおろか、卒業できることもままならない人が多い。
そんな中、大企業とはいえずとも業界では名のある会社に入れたことは成功したほうだと思う。
入社理由
その会社に入社を決めた理由は、そこしか知らないから。が大半をしめる。もちろん任天堂とかは知っていたが、そこまで愛着というものがなかった。その会社へ愛着もった理由は、中学高校の頃、お金がなくパッケージ買いで購入したゲームが大当たりで、シリーズとして購入したからだ。FFやDQもシリーズ購入はしていたが、それぞれの理由で購入を辞めている。そんなこんなでそこしか受けていなくて、そこだけ受かり、そこに入社した。
選考
ちなみに内定貰うまでの面接や試験は、焼酎をロックで1杯飲んでから挑んでいる。
朝までオールしてたとか、アル中とかそんなではなく理由はちゃんとあって、
同じ時期ぐらいだと思うが、漫画こち亀に部長がバイオリンの腕前を人前で披露することになっていたが、思いのほか人が多く、部長が緊張してたら両津がお酒を部長に差し入れし、少し飲むことで気持ちをリラックスできる。と言っていたのを覚えている。(オチは言わない)
その話が頭に残っている状態で、自分が緊張せず本来の自分を開放するには、どうすればいいか?と考えた結果、そこに至った。若すぎる。
入社後
入社後、プログラマということもあり、教育期間は技術部に配属された。
その技術部で自分はちょっとした有名人になってた。
自分を採用してくれた上司に話をしたら教えてもらった。
どうやら自分はおもしろかったから採用されたらしい。
続けてもちろんそれだけでなく、こいつおもしろそうだから呼んでみよう。で呼んだら意外とできる奴だったらしく採用になった。
それが理由で部署内ではほぼ全員に覚えられていた。
詳細は避けるが、どうやら履歴書に書いてたことがぶっ飛んでいたらしい。
自分もあまり覚えていない。ただ変なこと書こうと思って書いたつもりは一切なく真面目に書いたのは覚えている。
研修期間
研修中一人は途中で研修打ち切りで会社からいなくなった。
最近になって知ったが、その人は今は別会社の優秀な役員になっている。人柄が良くて研修中はよく話す仲だったので良かった。
メンター
話戻って。ちなみにこの会社には、自分にとって今後の人生に影響させるメンターとなる神が2人いた。社内では四天王と呼ばれてた。
特に片方は開発前線に入ってからずっと一緒に仕事をしてきた人で、今になっても敵う気がしないし、その頂に到達できる気がしない。
もう一人は新人教育時期のOJT担当だった人で、今もやっているか分からないがUnity日本の人だ。(これ以上は書かない)
その二人に共通しているのは「優しいスパルタ」だった。
手厳しい歓迎
開発前線の方の人とは、開発前線に入る前に新人歓迎会で会って話しており、奮起させられたのを覚えている。
神「君何ができるの?」
自「プログラムができます!」
神「それは当たり前じゃん、プラスアルファは何が出来るの?」
自「(なんもねぇな・・・)笑わせることができます!」
神「じゃだめ、いらない。3年待ってあげるからそれでなんとかして」
自「1年でやります!」
研修期間終了
新人研修が終わり開発前線へ参加した。
PS3の開発ラインだった。
メインプログラマは、歓迎会でいらないと言われた人だった。
その人の下で主にFrontend(UIやメニュー系)の処理を任された。
メイン以外にも2人いた。
一人は気さくで明るくいい人だった。話しやすかったので、色々と本を借してもらったり、教えてもらった。
もう一人は韓国から来てた人で、とても優しい人で、どんなに迷惑をかけても結局一度も怒られたことがなかった。
初めての会社での開発。アマや学生と比べ何が違うのか全然分からない状態だったので、かなり不安だった。
ソース管理ツールにAlienbrainを使ってたが、最初は自分のコミットでぶっ壊れたらどうしようと、心配ばかりして、最初は何度もコミットの仕方と、コミット後にすぐに別実機で確認してもらってた。
数年後には、そのラインでのソース管理ツールの管理担当者になってた。
初めてTVに表示
自分が初めて作ったUIはHP・MP・SPバーだった。
バーは2レイヤー構成で値が変動したら1フレで影響するゲージと、その値に向かってスムーズに動くバーだった。
学生の時からゲーム作りはしてたけど、会社クオリティに自分が作ったものが表示させたときは、かなり新鮮で嬉しかった。
ちなみにスムーズに動くバーは、画像はあったけど、企画からは特に指示されてなかった。だけど勝手に入れた。あとで何も言われなかったから問題ないだろう
今思えば、この行動は良かったと評価できる。既に自走できているためだ。もしこの行動の潜むリスクを強く見る人は、クリエーター職には向いていないと思っている。金・リソース優先しすぎるゲームは、つまらないゲームができやすいと思っているからだ。たかだか安い新人が余分な動きをしたところで、知れているし、良くしようと動いているのなら、儲け物だと思う。
その後も既存のUIは既にいくつか実装済みでそれを改修したり、新規で作ったりして何十個も作ってた。
メニュー以外にも手をだす
メニューだけでなく会話周りのシステムもやってみないか?と言われ、大まかな作りは教えてもらったので、そこから自分で作った。
システムなので、その上で動く実際の会話を構築したわけではないが、
小さいシステムながらも一から作れたことは何かと成長できた。
ボス敵AIの骨組み作成の手伝い
企画側のボス敵作成まわりで人手が足りなくなり、新人である自分と、同期の一人がアサインされた。
敵制御はゴール思考タイプでスクリプトはLuaだった。
スクリプトとしての雛形の作成と、敵の動きのたたき台の作成を手伝った。なので、そのゲームで自分が作ったボス敵が手に取るように分かるので雑魚より雑魚だった。
バランスチェックで、全ての武器でボスが倒せることを確認する作業で、自分はわざわざ防具を脱いで武器を捨て、パンツ一丁で左ジャブだけで倒してた。
変態ではなく立派なバランスチェック作業です。
締め作業(マイルストーン対応)
プログラム業務以外では、Bluerayに焼いてチェックする作業が出た時は、自分が引き継いで、締め作業におけるリソース管理をしていた。
理由は、管理が好きそうだから、あと家が近いから(歩いて5分) 締め作業は翌日に偉い人達に見せるために、締め作業は終わっても納品用に焼くことがあり、その場合、(終電に)間に合わないから。
言われずに勝手にやってたこと
褒められたくて、やってた気がする。
情報収集と展開
PS3SDKのバージョンが上がると、リリースノート読んで面白そうな機能が追加されてたら、すぐに試してメインPGに教えては、すぐにwikiに書き込んでライン内のPGに展開してた。
バグ探し
理由は不明だが、自分が触るとバグが出たり、再現しないバグを再現できたりしてたので、触りまくってバグをチケットに上げたり教えていたりした。
途中、エンジニアなんだから報告だけじゃなくて、原因調べてよと怒られたので、ソース追いかけてそれっぽい所見つけたら、仮説として原因書いてた。
飲み会
おもしろ採用ということで、ライン内プログラマの飲み会は全部自分がやらされていた。まぁ自分が食べたいもの食べれる感じだったので。
ゲーム雑誌購入
ファミ通をたまに買って読んでたら、プロディーサー兼ディレクターからお金出すから毎週買ってきてと言われたから、毎週買って自分が読み終わったら自分の机に置いといて、月1でお金貰ってた。
マスターアップ後
ゲームが紹介された時やマスターアップして発売された時など、反応が気になって2chでスレッドを見まくってた。
なかなか好評だった。なかなかというか、かなり好評で神ゲー扱いされて国内外で色々な賞を取ってた。正直、敵配置丸暗記だし、敵の動きまる分かりだし、3Dアクションでジャンプできねーゲームの何が面白いんだ。って少し思ってた部分もあって、こんな結果になったことにびっくりした。
2作目
次のラインも同じで、世間的に続編と言われているゲーム開発をした。
メンバーは大体同じだけど、キャラ制御やプレイヤー制御、敵制御、AI、アニメーション制御、エフェクト制御、経路探索制御をやってた人が別ラインに異動した。
結論先に書く
気がついたらウェイトはあれど、全部自分が引き継いでいた。元々はAIとそれに関係してくる制御という範囲だったけど、AIに付随って結構広く、しかも同期が鬱で辞めたので、同期の分も自分がやったので、プラスしてイベント制御とFrontend(戻ってきた)も担当してた。
ゲームの全部?違う。オブジェクト制御と描画、物理は一切触っていない。神から触るなと言われたから。
でもコード読んで、分からなかったら質問して、その考えとかを自分の担当領域に盛り込んでた。
AI/敵の引き継ぎ
AIの引き継ぎは自分から希望した。
もともと学生の頃に作ったゲームに敵制御を入れた時、自分は何も動かしていないのに勝手に敵が動くのが楽しくて、好きだったため。
「やりたいこと」を「できること」に変えて伝えてた
企画には、やりたいことを伝えても分からないので、導入することで、企画が何をやれば、敵がどういった行動ができるのかを伝えてから入れてた。
じゃないと入れても、使ってもらえなかったら意味ない。
ゲーム業界のAIで有名な人
AIの知識に関しては、社内にいたAIに詳しい人が開く講義や直接教えてもらっていた。その人は業界的にも結構有名で、よくどっかでプレゼンしてた。経歴が異色だったのを覚えてる。入ってすぐの講義の頃、質問コーナーで「どうやったら自立するのか?」と質問投げたら、ものすごく長く複雑でついていけない話なりそうなフレーズが耳に入った直後、一緒に講義受けてた同じラインPGが「それを聞くんじゃない!w」と止めて、次の講義へ進んだ。
メインPGと一緒に裏方システムの作成
2作目はマップをシームレスに繋ぎたいという要求がはじめから上がっていたらしく、リソースのバックリードが重要ということで、経路探索の処理を使うことになり、自分もマップのシームレスにつなぐ処理を手伝えた。デバッグでリソースを見ながらマップの区切りを渡れた時は、楽しかった。
グラフィッカーが作成した巨大なマップすべてが繋がり、遠くに見える背景が、実は歩いていけるという驚きに貢献できたことは、いい経験だと思う。
副産物
ついでに経路探索が全マップに繋がるほどの品質になった副産物として、敵が描画範囲が許す限り永遠に追いかけてくるようになった。
ここは結局、企画の方で敵の移動範囲に制限をかけた。
なのでニコ動でどこまでも追いかけてくるって驚いている実況がよくいたけど、彼らは本気を出していない。
頑張ったら効果があった
プレイヤーしかできなかったことを敵でもできるようにして、それが動くととても充実感を得られた。
プレイヤーができていたことをやるだけでなく、敵がプレイヤーを見つけたら、他の敵に知らせたり、黒板システムを使ってチーム連携を高めたりと、超大変だったけど、思い返せば楽しいことをやっていたと思う。
敵がプレイヤーと同じ操作をできるようにしたことで、敵がこっそりレバーを動かしたり、敵がプレイヤーをカウンター攻撃したり、梯子を上ってきたりしたのは、楽しかった。
頑張ったけど効果が薄かった
ボス敵が炎を吐く攻撃の実現方法を「ブレスに沿った細長い攻撃判定を出す方法」から「エフェクト1個1個に攻撃判定をつけて、エフェクトに物理オブジェクトをアタッチし、摩擦係数を調整して地面を這う炎」に変えたりもした。
これもメインPGとから苦情を受けて作ったやつ。
攻撃システムは、引き継ぎだったので既存機能を壊さず、新しい機能を盛り込んで、それを使った新しい仕様が出来るのは楽しかった。
残念ながら見分けると全く違うんだけど、ニコニコや2chでは誰も突っ込んでいなかったので、そこはがっかりだった。
でももし対応しなかったら、炎は物理的に当たらないはずなのに、当たるという理不尽を回避できたと思う
頑張ったら少し効果があった
魔法でプレイヤーから衝撃波を出す魔法があって、矢を衝撃波で弾ける作りを企画に見せたら採用されたことがあった。
最初は、別のことしてたんだけど、前回の攻撃系が把握できたこともあって、衝撃波の衝突モデルと矢の衝突モデルが衝突したら、矢の移動ベクトルを変えてみたら思ってたよりできがよくて、おもしろくてメインPGに見せたら、そんなつもりなかったのに企画呼ばれて採用になった。
頑張ったけど却下になった
企画からドラゴンを自由に飛ばしたいって言われたから、四苦八苦しながら空中にナビゲーショングラフを構築して、その線上にそって飛び回るドラゴン作ったけど、あまり滑らかに飛ばなかったのと、空中に飛ばれると一方的すぎてゲームにならなくて却下になった。
ちなみに飛ぶドラゴンっぽいゲームがよく出るあのゲームは、必ず決まった複数ポイントどれかに移動し、移動が完了してから、アニメーションを再生している。あと別パターンとして、カメラワークで上を見えないようにして、ドラゴンを一気に空まで飛ばしてユーザ視点をマップに促してる。
スカイリムのドラゴン出たときは、日本無理だと思った。
自動テスト
マップのシームレスを実現するために問題となったのがリソース管理。つまりメモリ管理だった。それを確かめるためにテストをするしかなく、手動でマップ中を走り回ってテストするしかなかったが、
AIと経路探索を使って、プレイヤーの操作エミュレータを敵と同じAIで動くエミュレータにして、プレイヤーなんだけど、手動で定めたポイントまで経路探索で起動させて、全部移動できるかプロファイリングしながら検証するテストを作った。
同じ時期ぐらいにJenkinsの話が別メンバーの方で動いていた。
この会社にいる間、なんのことなのか全然分からなかった。
クロスプラットフォーム対応
2作目はXbox360も対象だったので、初期フローがすこぶる大変だった。PS3はそういう所が意外とゆるくて助かってた。
火消し隊
2作目がマスターアップし、3作目の間に別ラインの火消し隊として別フロアに異動した。
PGとしてではなくスクリプターとして。
2作目と比べるとあまりにも簡単な内容で、口出しできる立場、状況じゃなく、自分としてはあまり楽しくなく、何もやった感じがしなかったので、メニュー担当してた同期にスタッフロールに自分の名前があったら、消しといてくれと伝えた。
次世代エンジンの設計
火消し後、戻ったら3作目には次世代エンジンを作ることになっていたが、エンジン設計途中で、寿退社することになった。
まとめ
できない自分がメインPGの右腕となり活躍できるようになった要因
自分は頭も悪く、記憶力も悪く、数学もできない、学歴もないと自覚しています。
そんな自分が、おそらくあれをやっていたから、それなりの経験を詰めたのだろうと思うことを列挙します。
- 金を諦める
- 給与・残業代すべて諦める。そもそもそれを優先順位に載せない
- 趣味はプログラムかゲーム
- ゲームっていうのは、モチベーションと分析用です。凄いゲームに出会うと、自作したくなりますし、どうやって作っているのか勉強になります。
- 会社から5分圏内に住む
- 健康は二の次
- 異性ではなく担当機器(PS3/Xbox360)を愛する
- 人の恋人は諦める。
- 好きではなく愛する(つまりダメな部分も受け入れる)
- どうやったら作れるか常に、常に!常に!!考える
- 食事中、トイレ、風呂はもちろん寝る直前まで考え、夢に出てきて、妖精さんが教えてくれるまで。
- 全ては企画のためではなく、ユーザーのためだと妄想する
- 社会人が有給を使って夜中にゲームを買ってプレイしてくれる人までいます。
- 考えに考えて装備や敵パターン分析をして頑張ってプレイして敵を倒す人もいます。
- 体が弱くて外に出れないからゲームをプレイする人もいます。
- そんな人たちを裏切らない、自分らの手のひらで踊らせるために頑張る
- メインPGが作った機能を頭に叩き込んで、家で作り直す
- 中の作りが一番よく分かったのがこれかもしれない。
- メンター/恩師/尊敬できる人と一緒に働く
- 褒められる。認められる。という1種の原動力がありました。
- 先輩やメインPGのコードを見まくる
- 風邪以外は、雨だろうが台風だろうが、大遅刻だろうが、会社に行く
- 風邪は移すので。
- 12時出社3時退社を苦だと思わない
- 10時出社ですが、遅れて12時出社してます
- 当時は遅刻も深夜まで仕事も気になっていませんでした。
IT/Web業界でもマインドは同じだと思う
特に何かを明示的に書いているわけではないですが、ものを作るにあたっての考え方や姿勢っていうのは、どこも同じだと思っています。
残念ながらお金優先にしている企業も存在しますし、そのほうが給与がいいのも事実です。
しかし色んな分野に手を出して、自分で作る範囲、触る範囲を広げることは、将来的な仕事の幅を広げることになるので、やるべきだと思います。
若い内に苦労しろと言うのは、若い内は守るものが少ないし、失敗も許してもらえやすいし、体力があるからだと思います。
大手に長年勤務してて、樽しか作れないモデラーさんが会社に応募してきた話を聞いたこともあります。怖い話です。
樽のモデリングやUV貼り,場合によってはテクスチャ作成ぐらい私でもできます。
得意分野から広げていき、ビジネス領域に手を伸ばす
私自身の考えになります。
現職はオフショアと仕事することが多く、原価がとても安いです。
日本でエンジニアを抱えるより遥かに安いです。しかも、彼らの中には想像を絶する速さで成果物を作ってきます。
今のところ、設計・リスクの観点が弱いので、手直しも多いですが、この先はどうなっているかは分かりません。
気がついたら埋もれているという恐怖から抜け出すために、今できることを武器に少しずつ領域を広げて、
ゆくゆくはエンジニア領域だけでなく、企画の領域にも手を出したほうがいいと思います。
極端な話、効果的な収益モデルを考えられる人(会社にお金を流し込める人)が、会社では重宝されるからです。
最後に
最後まで長い文章を読んでありがとうございます。全て実話ですが、どこで働いていたとか、何を作っていたとかは、伏せてあります。
そのため「◯◯作ってたでしょ!?」といった特定は避けるようお願いします。セリフぐらいならいいかな。。
追記
語弊がないように追記すると、
- 金を諦める
- 給与・残業代すべて諦める。そもそもそれを優先順位に載せない
これは、他業界と比べると期待できないから期待しないという意味です。
会社自体に依存する考えではないです。