ゲーム開発者の分類に関する投稿が話題になっている。
今までゲーム開発者やチューターとして働いてきて、おおよそ開発者は 4 種類に分類できると分かった。
#1. なんとか開発は継続できるレベルのコードを書くが、潜在的バグや変更のしずらさを生み出してしまう人 (特にこういった人たちが作るゲームはローカリゼーション作業が地獄になりやすい)
#2. 自分は#1 だと思っている人。2 年ぐらいでプロジェクトは手が付けられない状態になる。
#3. オーバーエンジニアリング (不必要に作りこんでしまうこと) にこだわり、結局ゲームをリリースできない人。
#4. 絶妙なバランスを保つことができる人。オーバーエンジニアリングはしないし、適切な技術選択を行える。バグも少ない。
個人的な意見では #1 と#2 のほうが#3 よりマシだ。 もちろん#4 が一番いい。 だけど#4 のような開発者になるには多くの経験が必要だ。 いうまでもないけど、ほとんどのゲーム開発の現場では#1 から#4 の人たちが混在している。
-
プログラマーがコードを良くすることにこだわりすぎて、ゲームを面白くすることを忘れてしまうことはよくある。
- [OP] 「良いコード」に関する誤解が関係しているんじゃないかな。俺が思うに良いコードとは複雑なコードではない。シンプルで、柔軟性が高く、バグを生み出しにくく、書くのが簡単。ゲームを面白くすることを忘れてしまうことがあるのには同意するね。だけど、開発プロセスに意識を向けることも重要だよ。
- どちらかというと、開発者が自分たちが作りたいものをどうやって作ればいいか分からないから、思っていたものが作れないんじゃないかと思う。
- 「良いコード」≠「良いゲーム」。だけど良いコードなら良いゲームは作りやすいよ。
-
(例に出されていた Undertale のような実装方法は) ゲームの要件がきっちり決まってれば実際はそんなに悪くないよ。変更が頻繁に入る箇所ならよくないけども。Undertale の会話ログの実装はそんなに悪くない。物理演算とかリアルタイム処理部分でこれをやると地獄。
- うーん、ローカリゼーションのことを考えるともうちょっと変更が簡単な方がいい。翻訳者にスプレッドシートを渡して記入してもらい、それをそのままゲームにインポートできるとベスト。
-
Toby Fox はゲームの規模に見合った品質のコードを書いたね。もし Undertale が倍以上の規模のゲームだったら、ああいう実装方法は通用しなかったよ。
-
俺が初めて作って Steam でリリースしたゲームは “if” と “else” しか使ってなかったよ。
-
これって本当に Undertale のコードなの?逆コンパイルして復元したものに見えるけど。本当はこんな風に実装してないんじゃない。
-
いや、これは本物だよ。逆コンパイルしたら switch 文とか復元されないし (真偽不明)。
- [OP] 復元されたものかもしれないけど、実際こういったスタイルの実装は今まで散々見てきたよ。
-
Celeste のキャラクター動作の実装に関する記事を見たことがあるけど、ビックリした。1 つの巨大なクラスで全ての動作ロジックを作りこんでいたんだよね。
- [OP] そういう実装だとちょっとした変更が関係しなさそうな箇所にまで影響してしまうね。Celeste はゲームとしての評価は高かったけど、あまりよくない実装が開発の遅延を招いていたとは思うよ。
-
いや、これは本物だよ。逆コンパイルしたら switch 文とか復元されないし (真偽不明)。
-
何だって上手くいくよ。Undertale は成功したしな 😅。
-
結果が一番重要なのは分かっているけど、とりあえずで作ったコードは修正不可能になる。どこかを修正すると、別の個所が壊れる。Undertale はリリースされて成功もしたけど、ほとんどの人にとっては例外なんじゃないかな。
-
#3(オーバーエンジニアリング)を経験しないと#4(素晴らしい開発者)にはならないんだよね。
動くコードときれいなコードのどちらがいいかは永遠のテーマ。 聡明な読者諸君の感想もぜひお聞かせ願いたい。