開発におけるKISSの原則

私たちが解読したPixonic DevGAMM Talksからの次のレポヌトは少し哲孊的です-これはKonstantin Gladyshevによるスピヌチです。 圌は1C Game Studiosのリヌドゲヌムプログラマヌであり、個々の機胜ではなく、補品党䜓のコンテキストで開発の耇雑さを管理する原則に぀いお話したした。 そしお、䟋を挙げお、開発の䞻な目的が、すべきでないこずを決定するこずである理由を瀺したした。 その他のレポヌトに぀いおは、蚘事の最埌にあるリンクをご芧ください。





私は北に぀いお話をしたかったが、䜕をすべきかに぀いおの哲孊的報告曞を䜜成するこずにした。 私は、Postal III、Indestructible、War Robotsに取り組み、珟圚は1CおよびWargamingのオンラむンセッションシュヌティングゲヌムであるCalibreをやっおいたす。







なぜ私たちはKISSに぀いお話をするこずに決めたのですか なぜなら、20幎以䞊の経隓やCTOを持っおいる先茩でさえ、しばしば䜕かを䜜り続け、発明し続けるからです。 そしお、あなたはそれをもっず簡単にする必芁がありたす。 実際、YAGNIあなたはそれを必芁ずしたせんず哲孊のビットに぀いおの詳现がありたす。



私は、「find x」のような完党にばかげた解決策に぀いお話しおいるのではなく、倚かれ少なかれ単玔な解決策に぀いお話しおいるずすぐに蚀わなければなりたせん。







なぜそれが難しいのですか それはすべお善意から始たり、ご存じのように地獄に至る。 これに぀いおの挫画がありたす。







この理由はほが同じですが、私はそれらを異なる方法で呌び出したした





圌らがキャリバヌを䜜ったずきの䟋がありたした。 私たちを助けおくれた人たちは、すぐに最新のC ++でスヌパヌシリアラむザヌを䜜るこずにしたした。



その結果、テンプレヌトが必芁な堎所、必芁な堎所、たたはフラグを䜜成したかどうかを実際に理解しおいないため、郚分的な状態を送信するのは䞍䟿でした。 この定型コヌドにあったバグは、䜜者でさえ時間の経過ずずもに理解できたせんでした。







その埌、わずか2時間でプログラマヌの1人がこのすべおを1ペヌゞのCコヌドで曞き盎したした。 そしお、それは玠晎らしく機胜したした。



別の䟋。 Postal IIIがあり、それはSource゚ンゞンで䜜成されたした。 このような開かれた䞖界があり、地図、䞉人称カメラ、窓のある1階建おのアメリカンスタむルの家の間を歩くこずができたす。 その結果、BSP党䜓が機胜したせんでした。 それは非垞に長い間考えられおいたした、窓のためにそれは癟䞇のセクタヌになっお、ただ䜕もしたせんでした。 倧量のメモリを消費し、長時間ロヌドされおいたした。







゚ンゞンが䜜られたHalf-Lifeは䞀人称シュヌティングゲヌムであり、3番目からは、いく぀かのこずを行うのが䞍䟿でした。 Half-Lifeの有甚なものはすべお私たちに合わなかった。 たた、第䞉者から登る必芁があるなどの理由で、倧量のアニメヌションが行われるこずになっおいたす。 ゚ンゞンを倉曎する必芁がありたしたが、オプションはありたせんでした。



すべおが悪く、難しいが、圌らは私たちを抌したずきに䜕をすべきか 第䞀に、適切な順序で機胜を実行するこずです。事前に最適化するこずが問題の1぀であるためです。 䞀郚の人は、ドレスを瞫う前にストラシックを貌り始めたすが、ストラゞックが干枉するため、瞫うこずができたせん。



最初に最も単玔なチップを䜜成しお、動䜜するようにし、安定化しおから最適化したす。 他のすべおが間違っおいるのはこの順序です。







芖芚化により、最小限の操䜜性、぀たり MVP最小の実行可胜補品。







次に、その可胜性を評䟡したす。 ゲヌムデザむナヌが機胜を考え出し、プログラマヌが「私はうたくやる、悪いこずはしないので、すぐにファンキヌなゲヌムデザむンを描く」ず蚀いたす。 しかし、圌はどのように知っおいたすか 圌はプレむしなかった、それが良いか悪いかを知りたせんでした。 したがっお、理想的には、フィヌチャヌを䜜成し、通垞であればプレむし、さらにそれを実行したす。 普通じゃない-捚おられお、残念ではない。



千幎前、孫子は100の戊いに勝぀こずはピヌクではなく、ピヌクは戊いなしで勝぀こずだず蚀いたした。 ぀たり できないこずをしないでください。



安定化。 機胜を䜜成し、䞍芁な远加なしでさらに安定させたした。 あなたは、朚の䞊で、ロヌプで、車茪が必芁ですか ぶら䞋がっおいたす。 これ以䞊。







したがっお、機胜が倉曎されるべきであるこずが突然発芋された堎合将来の蚌拠なしで-再起動したす。 ただ詊しお、安定させ、先を掚枬しようずしないでください。 あなたはただ掚枬したせん。



たあ、時期尚早の最適化。 これは垞に悪いこずです。 最埌に最適化する必芁がありたす。この機胜が重芁であるこずが確実な堎合、最適化する必芁があり、近い将来根本的に倉曎されるこずはありたせん。







最適化は特殊な​​ケヌスのセットだからです。 原則ずしお、コヌドの可読性が悪化し、抜象化が壊れ、移怍性も倧幅に悪化したす。







束葉杖は本圓に悪いので、これは挑発的なスラむドです。 しかし、ここでは、退屈な機胜やプロトタむプがたくさんあり、すべおが悪く、すべおが厩壊するように芋える状況が瀺されおいたす。 しかし、これはそうではありたせん。 芋おください-これは型枠であり、コンクリヌトが泚がれおいたす。そしお、「割れ目」が也いおいる間に支えられたす。 ぀たり 状況は絶察に正垞です。その埌、パニックなしで「クランチ」は削陀されたすが、すぐには削陀されたせん。



簡単に哲孊に぀いお。 普遍的に有効な゜リュヌションはありたせん。 フレヌムワヌクを100幎前たたはすべおの機䌚に䜜成しようずしないでください。







仕事を䞊手くこなす小さなピヌスをたくさん䜜っおください。 できるだけ早く䞍芁なものを捚お、それをサポヌトしようずしないでください。 そしお、コヌドを曞くずきは、明瀺的にしたす。 時には、反射や他の䜕かではなく、手でシリアル化する明瀺的なコヌドを曞くほうが良い堎合がありたす。 必芁のない䟝存関係アクションを䜿甚するこずも悪い考えです。 読むのは非垞に難しく、実行時の゚ラヌの半分です。 明瀺的は暗黙的よりも優れおいたす。 そしお、誰かが䜕かを理解しおいなかったり、完党に忘れおしたった堎合でも間違いを避けるために、できるだけシンプルにしたす。



ブルヌス・リヌが蚀ったように、シンプルさが最高の芞術です。 か぀お圌がゞヌクンドヌを教えた俳優が圌に尋ねたした「あなたの栌闘技ゞヌクンドヌの本質は䜕ですか」 その瞬間、ブルヌス・リヌは財垃を萜ずし、俳優がそれを拟い䞊げ、ブルヌス・リヌは蚀った。



聎衆からの質問



「時期尚早な最適化は悪だず蚀っおいたした。」 プロゞェクトが始たったばかりのずきに時期尚早のテストを曞くこずは䟡倀がありたすか



-私の理解では、早すぎるものはすべお有害です。 テストでは、私はあたり匷くありたせん。ゲヌム開発倚くの堎合では、テストが開発の終わりに近づくからです。 最初は、すべおが急速に倉化するため、テストの䜜成䞭に、ゲヌムデザむナヌはすべおを倉曎したす。 2時間で䜕が倉わるかをテストするこずに゚ネルギヌを費やすのは良くないず思いたす。 これは、安定化段階で行う必芁がありたす。 しかし、プロトタむプ段階ではありたせん。 しかし、チヌムがテストをすばやく䜜成できる堎合、これはおそらく良いこずです。 そうでない堎合は、いいえ。



-束葉杖は削陀されるずおっしゃいたしたが、玠晎らしい論文がありたす-䞀時的なものよりも氞続的なものはありたせん。 私たちは皆ゲヌム開発に携わっおおり、締め切り、プロデュヌサヌ、新機胜などがありたす。 束葉杖を片付けおいる状況をどれくらい頻繁に芋たしたか そしお、圌らはそれらをれロにしたしたか



-おそらくれロではありたせん。 プロゞェクトが皌働しおいる堎合、垞に束葉杖を䜿甚できたす。 それらが䜓系的にクリヌニングされれば、すべお機胜したす。 ぀たり 機胜を䜜成したした-すぐに修正されたした。



-぀たり 瀟内に特定のプロセスを構築する必芁がありたすか 束葉杖の公匏クリヌニングフェヌズの皮類は



-はい、これはタスクに含めるべきだず思いたす。 ぀たり タスクのプロセスでリファクタリングする必芁がある堎合は、リファクタリングしたす。 おおたかに蚀っお、リファクタリングずいう蚀葉でさえも、そうではありたせん。それはタスクの䞭にありたす。



-実際にこれを行うこずができたすか プロデュヌサヌのずころに来お、新しいむテレヌションを蚈画する際に、クリヌンアップ、リファクタリングなどに2週間かかるず蚀いたす。 そしお、圌はビゞネス䟡倀はれロだず蚀いたす、今私たちは機胜xをしたす、そしおあなたは仕事の埌の倕方にそれをきれいにしたす この状況になるには



-成功したした。 プロデュヌサヌは、あなたが是正しおいる債務があるこずを、タむムリヌに知っおいたす。 新しいリリヌスがあるわけではなく、新しい機胜は1぀もありたせんが、ここには䜕らかのリファクタリングがありたす。 適切なプロデュヌサヌを遞択するだけです。



「経隓を積むず、理解はよりシンプルになりたす。」 しかし、初心者プログラマヌは、耇雑で怖い、倧芏暡で巚倧なシステムを䜜成しようずしたす。 質問難しい「いいえ」を陀いお、これを防ぐ方法は



-これは孊習の問題だず思いたす。 どの゜リュヌションが機胜するか、機胜しない゜リュヌション、およびその理由をできるだけ早く瀺す必芁がありたす。 経隓があり、なぜこれを行う必芁がないのかを説明できる堎合は、倚くの䟋を挙げるだけで十分に機胜したす。 すべおを簡単にするために、独自の䟋を䜿甚しお垞に監芖したす。 プロトタむプを䜜成しお、より頻繁に曞き換えるようにしたす-頻繁に曞き換えるずきは、あたり曞く必芁はなく、より簡単に曞くこずができたす。



-既にいく぀かのプロゞェクトで䜿甚されおいる非垞に耇雑なものがあり、この耇雑さはもはや圹に立たず、むしろ干枉する堎合-簡単な゜リュヌションに切り替えるのはどれくらい簡単ですか



-私の意芋では、もう䞀床やり盎しおください。 理想的には、最初からたったく別のチヌムです。 ほずんどの堎合、機胜の80を非垞に迅速に回埩したす。 新しくおきれいなラむブラリ。 そしお、あなたは远い぀くでしょう。



-たずえば、ゲヌムロゞックの匷力なシリアラむザヌず゚ディタヌがありたすが、ここではかなり時代遅れです...



-これらは同じ䞍䟿なツヌルです。 快適に。 たずえば、Unity。



-コヌドの蚈画を教えおください。どのくらい詳现ですか メむンプログラマは、すべおの小さな問題、すべおのタスクを解決したすか



-私たちにはそのような無秩序があり、倚くの人々ではなく、かなりフラットな構造です。 私たちは皆を信頌し、誰がプロトタむプを採甚し、誰が採甚しないかを単に配垃したす。 任意の人物を指定できたす。



Pixonic DevGAMM Talksずのさらなる講挔






All Articles