大ヒットゲーム『Balatro』のコードが“力業”だとして共感呼ぶ。コードが汚くても、ゲームが完成してちゃんと動けばそれでいい

 

ゲームを制作する際に必要となるプログラム。そのコードの記述にあたっては「コーディングルール」などとして、構造の把握のしやすさなどが求められることがある。一方で今回、あるユーザーが『Balatro』のコードの一部を公開。コードにif文が多用されている点などから注目されているものの、「見づらかったり、複雑なコードでもほぼ問題なくゲームを完成させられる」事例として共感も呼んでいるようだ。


コードのわかりやすさ

ゲームの制作にあたっては、基本的にはプログラミング言語を用いてソースコードを書くといった、プログラムの記述が必要となる。プログラミング言語としては、「C++」「C#」のほか「Java」「Ruby」など、さまざまな種類の言語が存在している。

またゲーム開発に限らず、複雑なプログラムを作成する際には、効率性や可読性が重視される傾向にある。つまり、ゲーム機やPCにおけるメモリやCPUなどといった、ハードウェアのリソースの使用量を節約したり、開発者間で作業を共有しやすい状態にしたりといった心がけだ。後者では、たとえば不具合の修正やコンテンツの追加を契機として、コードを一部書き直したり、付け足したりということもありうる。その際には、特に複数人で開発をおこなう場合には一番初めにコードを書いた人が手がけるとは限らない。そのため、変数などの命名規則、コメントでの注釈、インデントの調整といった手法などで、コードをわかりやすくすることも求められうる。

今回、あるユーザーがローグライクポーカーゲーム『Balatro』のコードの一部とする画像を投稿した。同作は今年2月にリリースされ、高い評価を受けつつ約1か月で売上100万本を突破している人気作だ。

そんな『Balatro』のコードを勝手に公開したとみられる投稿は本稿執筆時点ではすでに削除。ただ、同作開発者のLocalThunk氏が投稿に反応しており、これに返信するかたちで、本作のコードの一部とみられる画像も投稿されている。

if文多めのコード

返信での投稿も含め、元投稿ではif、else-ifなどを多用したコードの一部分が収められていたと思われる。そしてそうした点から、一連のコードを目撃した一部ユーザーからは読みにくくなる、最適化が不十分などといった“可読性”の低さを指摘するコメントも散見される。if文は通常、プログラムに条件分岐を実装するために用いられる。

しかしプログラムによっては複雑な条件になる、あるいは分岐の数が多くなることもある。その際には、多重のネスト(入れ子構造)が発生したり、数多くの分岐によってプログラムの構造が把握しにくくなったりという問題が生まれることもある。そのためプログラマー間では、長いif文のほか、switch文なども忌避される傾向もある。

でも動けばそれでいい

一方で、意外にもこの『Balatro』のコードについて、「読みづらい」という声よりも、「これでいいじゃないか」「コードは複雑でも問題ない」という声が多く見られる。特に『Balatro』はLocalThunk氏による個人開発であるため、読みにくくとも当人が読めればそれでいいといえる。ほかにも、同作は複雑なロジックを実装しているわけでもなく、実際に致命的なバグも報告されていない。ユーザーは基本的には完成したゲームしか見ることがないため、読みにくいコードでも目に見える問題が生じなければ結果として成功といえるだろう。

加えてユーザー反応では、「ついif文を並べてしまう」といった点が数々の共感も呼んでいる。なかには自身が開発しているゲームのコードの一部を投稿し、「自分もそのような手法を取っている」と公開する制作者もみられる。


ちなみにLocalThunk氏だけに限らず、過去にも可読性や効率性を度外視したコードが注目を集めたことがある。たとえば『溶鉄のマルフーシャ』の開発者であるhinyari9氏が同作のコードの一部を公開。ハイスコアテキストなどに関する該当のコードはif文で記述されており、多層の入れ子構造となっていることがわかる。この投稿について、『天穂のサクナヒメ』などの開発を手がけた「えーでるわいす」のなる氏も、「結局これがゲームを完成させられるコード」と引用しつつコメント。特に個人開発者間では、ほかのプログラマーからの見やすさやメンテナンス性よりも、まずは自分のやりやすい作り方でゲームを完成させることが優先される傾向はあるのかもしれない。

ほか、チーム制作の現場でも、“プログラマーのやりやすい方法”が重視される事例が存在。たとえば龍が如くスタジオの技術責任者・伊東豊氏からは今年1月に、『龍が如く8』のコードの一部が公開され話題となった。その一連の投稿のなかで、同氏は「コーディング規約はありません」と、記述に対する細かなルールを設けていないことを明かした。伊東氏によれば20年間の経験のなかで、細かいことを気にするよりは、プログラマーがストレスなく、効率的に仕事ができることがベストだという結論に達したとのことだ。

プログラムにおいては、コードの見やすさ、メンテナンスのしやすさが確保されているに越したことはないだろう。とはいえ、チームの決まりや慣例に無理にあわせることで制作が遅れてしまったり、ストレスが生じたりするようでは、本末転倒ともなりうる。今回注目を集めた『Balatro』も、ゲーム開発では必ずしもコーディングが“綺麗”でなくとも完成させられることを示す一例といえるだろう。