Ich werde dies mit der Bemerkung vorwegnehmen, dass ich nicht viel von Spielquellen gesehen habe und auch nicht viel in der Art von Spielen gebaut habe.
Aber wenn ich versuche, 'Enterprise'-Codierungspraktiken in Web-Apps anzuwenden, schadet es mir ernsthaft, wenn ich mir den Quellcode eines Spiels anschaue: "Was macht diese Sichtweise mit Geschäftslogik? Diese muss umgestaltet werden "
Das beunruhigt mich, als ich im Begriff bin, ein Spielprojekt zu starten, und ich bin mir nicht sicher, ob der Versuch, den Entwicklungsprozess zu mvc / tdd zu machen, uns behindern oder helfen wird, da ich nicht viele Spielbeispiele sehe, die dies verwenden oder viel drängen auf bessere Architekturpraktiken in der Gemeinde.
Das Folgende ist ein Auszug aus einem großartigen Artikel über Prototyping-Spiele , obwohl es mir genau so vorkam, wie es viele Spieleentwickler beim Schreiben von Serien-Game-Code zu tun scheinen:
Fehler Nr. 4: Aufbau eines Systems, kein Spiel
... wenn Sie jemals an etwas arbeiten, das Sie nicht direkt vorwärts bringt, hören Sie sofort damit auf. Als Programmierer tendieren wir dazu, unseren Code zu verallgemeinern, ihn elegant zu gestalten und in der Lage zu sein, mit jeder Situation umzugehen. Wir finden, dass ein Juckreiz schrecklich hart nicht kratzt, aber wir müssen lernen, wie. Es hat viele Jahre gedauert, bis mir klar wurde, dass es nicht um den Code geht, sondern um das Spiel, das Sie am Ende versenden.
Schreiben Sie kein elegantes Spielkomponentensystem, überspringen Sie den Editor vollständig und verdrahten Sie den Status im Code, vermeiden Sie das datengetriebene, selbstanalysierende, verrückte XML und codieren Sie einfach das verdammte Ding.
... Holen Sie sich einfach Sachen auf dem Bildschirm, so schnell Sie können.
Und verwenden Sie niemals das Argument „Wenn wir uns etwas mehr Zeit nehmen und dies richtig machen, können wir es im Spiel wiederverwenden“. JE.
Liegt es daran, dass Spiele (meistens) visuell orientiert sind, so dass es sinnvoll ist, den Code in der Ansicht stark zu gewichten, sodass die Vorteile einer Verlagerung auf Modelle / Controller relativ gering sind. Warum also die Mühe machen?
Ich habe das Argument gehört, dass MVC einen Performance-Overhead einführt, aber dies scheint mir eine vorzeitige Optimierung zu sein, und dass wichtigere Performance-Probleme behoben werden müssen, bevor Sie sich Gedanken über MVC-Overheads machen (z. B. Render-Pipeline, AI-Algorithmen, Datenstruktur) durchqueren, etc).
Gleiches gilt für TDD. Es kommt nicht oft vor, dass Spiele Testfälle verwenden. Dies liegt jedoch möglicherweise an den oben genannten Designproblemen (gemischte Ansicht / Geschäft) und an der Tatsache, dass es schwierig ist, visuelle Komponenten oder Komponenten zu testen, die auf wahrscheinlichen Ergebnissen beruhen (z. B. in Physiksimulationen) ).
Vielleicht schaue ich nur auf den falschen Quellcode, aber warum sehen wir nicht mehr von diesen 'Enterprise'-Praktiken, die im Spieledesign angewendet werden? Sind die Anforderungen von Spielen wirklich so unterschiedlich, oder handelt es sich um eine Frage der Menschen / Kultur (dh Spieleentwickler haben einen anderen Hintergrund und daher unterschiedliche Codierungsgewohnheiten)?