ゲーム開発の現場では、設計の良し悪しが、その後の調整・レビュー・デバッグのしやすさにそのまま影響します。
オブジェクト指向やポリモーフィズムは、もちろん有効な設計手法です。ただし、すべての場面で「抽象化すれば読みやすくなる」「共通化すれば保守しやすくなる」とは限りません。
SS事業部では、設計手法の名前だけで判断するのではなく、実装する人、レビューする人、QAで不具合を追う人、そして最終的に遊ぶユーザーまでを見ながら、現場で扱いやすい形を考えることを大切にしています。
この記事では、ゲームロジックの設計を題材にしながら、SS事業部がどのような価値観で開発に向き合っているのかをお伝えします。
設計は「正しさ」だけでなく、あとから扱えるかまで見る
ゲーム開発では、運営中のタイトルでも開発中のタイトルでも、実装後に必ず調整や検証が入ります。
たとえば、キャラクターの挙動、攻撃判定、UIの振る舞い、敵AI、エフェクト、入力処理などは、一度作って終わりではありません。仕様変更が入り、QAで不具合が見つかり、レビューで観点が追加されることがあります。
そのときに大切なのは、コードが一見きれいに分割されていることだけではありません。
「どこを見れば仕様が確認できるのか」
「不具合が出たときに、原因を追いやすいか」
「後から入ったメンバーでも、同じように判断できるか」
こうした観点も含めて、私たちは保守性だと考えています。
オブジェクト指向は便利です。共通処理をまとめたり、種類ごとの振る舞いを差し替えたり、拡張しやすい形を作ったりするうえで役立ちます。
一方で、仕様として確認したい分岐まで抽象化されすぎると、レビューやデバッグのときに追いにくくなることがあります。
SS事業部では、設計手法を否定するのではなく、「その領域に合っているか」を見るようにしています。技術の名前よりも、現場でどう使われるかを大切にする考え方です。
仕様として見たい分岐は、あえて見える場所に置く
ゲームロジックには、条件分岐そのものが仕様になっている領域があります。
たとえば格闘ゲームであれば、地上ヒット、空中ヒット、カウンター、ガード、投げ、無敵時間、吹き飛び方向など、判定の組み合わせがゲーム体験に直結します。
こうした処理は、単に内部実装として分けたいだけではありません。
調整や検証のときに、「どの条件で、どの結果になるのか」を一覧で確認したい領域です。
このような場面で、すべてを多態性で隠してしまうと、ひとつの挙動を確認するために複数のクラスやオーバーライドを追う必要が出てきます。
実装した本人には自然に見えていても、レビューする人や、後から改修する人、QAで再現条件を確認する人にとっては、全体像がつかみにくくなることがあります。
もちろん、すべてを大きな条件分岐に寄せればよいわけではありません。分岐が増えすぎれば、別の読みにくさが生まれます。
大事なのは、分岐を「隠したい」のか、「見せたい」のかを考えることです。
拡張が続く種類を扱うなら、抽象化や多態性が向いている場面があります。
一方で、条件の組み合わせを見ながら仕様を確認したいなら、明示的な分岐や設定テーブルのほうが扱いやすいこともあります。
SS事業部では、こうした判断をチームで言語化しながら進めます。個人の好みや流行だけで決めるのではなく、レビューしやすさ、調整しやすさ、デバッグしやすさを含めて考えます。
保守性は、チームで確認しやすいことでもある
保守性という言葉は、抽象化されていることや、責務が細かく分かれていることだけを指すものではありません。
ゲーム開発の現場では、次のようなことも保守性に含まれます。
- QAで見つかった不具合の原因を追いやすいこと
- 仕様変更が入ったときに影響範囲を確認しやすいこと
- レビュー時に、抜けや順番の違和感に気づきやすいこと
- 新しく参加したメンバーが、処理の意図を理解しやすいこと
- 調整担当者が、見たい条件にたどり着きやすいこと
たとえば、当たり判定まわりで不具合が出たとします。
このとき最初に確認したいのは、「どの条件で、どの処理に入ったのか」です。ログを見て、再現条件を確認し、該当する処理を追っていきます。
そのとき、処理が細かく抽象化されすぎていると、実際に呼ばれた処理にたどり着くまでに時間がかかることがあります。さらに、その分岐が仕様上の意味を持つものなのか、実装上の都合で分かれているだけなのかも判断しにくくなります。
SS事業部では、人を責めるのではなく、仕組みや構造を見ます。
「なぜ見落としたのか」ではなく、
「見落としにくい形にできないか」
「次に同じ調整をするとき、もっと追いやすくできないか」
「レビューで確認する観点をそろえられないか」
そうした会話ができるチームでありたいと考えています。
パフォーマンスを見る場面では、測りやすさも大切になる
ゲームでは、1フレームの中で何度も呼ばれる処理があります。
当たり判定、移動、アニメーション更新、AI、エフェクト、入力処理などは、小さな処理の積み重ねがフレームレートや体験に影響することがあります。
もちろん、仮想関数の呼び出しや抽象化が常に問題になるわけではありません。多くの場合、まずは読みやすく、変更しやすく、意図が伝わる設計にすることが大切です。
ただし、パフォーマンスを計測し、原因を切り分ける段階では、処理の流れが見えやすいことが大きな助けになります。
どの条件で何回呼ばれているのか。
どの分岐で処理時間が増えているのか。
キャッシュや分岐予測まで見る必要があるのか。
そもそも、計測しやすい形になっているのか。
こうした観点は、設計の見た目だけでは判断できません。
SS事業部では、最初から過度に最適化することを良しとしているわけではありません。必要になったときに測れること、原因を切り分けられること、チームで改善に向かえることを大切にしています。
設計の美しさだけでなく、現場で確認できること。
ここにも、ゲーム開発らしい実務感があると感じています。
技術は、チームで価値を出すために選ぶ
オブジェクト指向も、ポリモーフィズムも、switch文も、設定テーブルも、それぞれ向いている場所があります。
大切なのは、「どの設計手法が正しいか」を先に決めることではありません。
その処理は、今後も種類が増え続けるのか。
条件の組み合わせを一覧で確認したいのか。
レビュー時に、仕様の抜けや順番を見る必要があるのか。
QAで出た不具合を、どの条件から追うのか。
1フレーム内で大量に呼ばれる処理なのか。
計測時に、原因を切り分けやすい形になっているのか。
こうした問いを置くことで、設計の選び方は変わります。
SS事業部で大切にしているのは、個人の技術力だけで完結する開発ではありません。実装する人、レビューする人、調整する人、QAする人が、それぞれの視点を持ち寄りながら、より良い形を探していくことです。
もちろん、毎回きれいに判断できるわけではありません。あとから「この形のほうがよかったかもしれない」と気づくこともあります。
それでも、現場で起きていることを見て、チームで会話し、次の実装に活かしていく。
その積み重ねが、プロダクトにも、エンジニアとしての成長にもつながっていくと考えています。
SS事業部には、派手な言葉で語るよりも、目の前の実装やチームのやり取りを少しずつ良くしていく文化があります。
ゲーム開発における技術判断を、現場の文脈まで含めて考えたい方にとっては、面白い環境だと思います。
この記事は、次のような方に読んでいただけるとうれしいです。
- ゲーム開発の実装や設計に関心がある方
- 「きれいなコード」と「現場で扱いやすいコード」の両方を考えたい方
- レビュー、デバッグ、QAとの連携まで含めて開発を良くしていきたい方
- 設計手法を目的ではなく、価値を出すための手段として考えたい方
- チームで会話しながら、より良い実装を探していく働き方に興味がある方
- 自分の技術だけでなく、周囲と一緒にプロダクトを育てることに面白さを感じる方
すでにゲーム開発の経験がある方はもちろん、これからゲーム領域で実務経験を深めていきたい方にも、SS事業部の考え方を知っていただくきっかけになればと思います。
SS事業部では、技術をただ使うだけでなく、「なぜその設計にするのか」「誰があとから触るのか」「どうすればチームで確認しやすくなるのか」まで考えながら開発に向き合っています。
少しでも興味を持っていただけた方は、ぜひ一度お話しできるとうれしいです。
すぐに応募するほどではなくても大丈夫です。
まずはカジュアル面談で、SS事業部の開発現場やチームの雰囲気について、気軽に聞いてみてください。
https://www.tatsu-mi-systemsolution.jp/
本記事は、市野壮太のnote記事をもとに、辰巳電子工業株式会社 SS事業部の採用広報向けに再構成・編集したものです。