
木戸裕樹
2012年入社(中途入社)プレイヤーキャラクターのダメージ判定、死亡した際の処理といったキャラクター制御に関するプログラムの実装などを担当。
“全力でゲームを開発したい”
という願いが叶った
前職でも6年ほどプログラマーとしてマップの制作といったゲーム開発に携わっていたのですが、「より全力でゲーム開発に挑みたい」という思いがありました。当時いちプレイヤーとして『Demon's Souls』や『DARK SOULS』シリーズに触れていた中で、「ここでなら世界に向けてより全力投球ができるのではないか」と思い、フロム・ソフトウェアに入社しました。
入社後は『Bloodborne』のAI部分を担当したのですが、変形武器の実装などキャラクター制御に興味があると伝えたところ、AIと兼務でキャラクター制御を担当することになりました。
『Bloodborne』ではモーションのブレンドなど複雑なモーション設定をできるようにするため、キャラクター制御の仕組みやツールを、Havok Behaviorに乗せ換えることになりました。ステートマシンを一新することになり、なかなか大変な作業でしたが、結果として、ここで構築したキャラクター制御の仕組みは『SEKIRO: SHADOWS DIE TWICE』にも活かされ、大きな自信となりました。これもコツコツと築き上げてきたものが評価され、やりたいと思ったことをできるように整えてもらった結果だと思います。中途で入社して10年が経ちましたが、「ここでなら全力でゲーム開発に挑める」という思いは間違っていなかったと実感しています。

騎乗システムを実装するまでの道のり
『ELDEN RING』では、キャラクター制御全般に関するプログラムを担当しました。キャラクターのモーションの遷移は、ゲームプランナー側で組んだスクリプトで制御されています。たとえば、待機中に攻撃ボタンを押すと攻撃のモーションが出ますよね。この場合、待機のステートのスクリプトでボタン入力を判定して攻撃のステートに遷移させ、攻撃のステートに遷移することで攻撃モーションが再生されるようになっています。ステートの構成やスクリプトの実装は、ゲームプランナーやシステムプランナー(アイデアを技術的に検証し、効率化された開発のための仕様を作成する職種)が担当することが多いです。プログラマーとしては、スクリプトからボタン入力の結果やダメージ判定の結果を取れるようにしたり、アイテムを使用する処理や死亡時の処理などスクリプトやモーションの特定のタイミングから呼び出される処理を実装することになります。
『ELDEN RING』では騎乗のシステムを実装しました。当初はキャラクターと霊馬をそれぞれ単体で制御する仕様も検討していたのですが、ゲームプランナーやシステムプランナーと幾度も議論を重ねて調整し、騎乗中はプレイヤーキャラクター側で霊馬を制御する仕様にしました。これによって単体で制御するのに近い形で2体を制御できるようになりました。また、騎乗したときに手綱をちゃんと握らせたい、鐙に足を掛けたいという要望があり、対応を行いました。起伏に富んだ地形も多かったので、ゲームプレイが破綻しないように制御を工夫することにも注力しました。

開発の効率化につながるプログラムを

ゲームプランナーやシステムプランナーはもちろんですが、3Dグラフィックアーティストやサウンドデザイナーから要望が来ることもあるので、さまざまなセクションがどのような業務をしているかを把握し、その希望を実装するプログラムを組み、どのように共有すればスムーズに進むのかを考えることも大切な業務になります。ここで意識しているのは、自分以外のスタッフが見ても、仕組みを理解しやすい環境を作ることです。こうすることでバグを未然に防げたり、バグの原因を調べて修正点を共有しやすくなったり、新しい仕様を追加しやすくなるなど、開発の効率化につながるからです。
たとえば、デバッグ情報として、キャラクターに掛かっているバフやデバフといった特殊効果が確認できるようになっています。少し前のタイトルだと特殊効果に割り振られているIDしか表示されていませんでしたが、効果の名称を表示するようにしました。名称を表示することで、今キャラクターがどんな状態になっているのか分かりやすくなります。これがわりと好評だったようで、今では多くのタイトルに入っている機能になりました。
ひとりのプログラマーとして、各部署と連携してプログラミングをしているのも楽しいのですが、最近はプログラマーを統括することも増えてきました。この業務も「新しい挑戦ができる」と向き合って楽しんでいます。私と同じように、どのような状況でも楽しめる人、情報を自発的にチェックできる人がフロム・ソフトウェアのプログラマーには向いているのかもしれません。