Spielprogrammiermuster
Game Programming PatternsVon Robert Nystrom
Rezensionen: 30 | Gesamtbewertung: Gut
Ausgezeichnet | |
Gut | |
Durchschnitt | |
Schlecht | |
Schrecklich |
Spielprogrammiermuster bringen die Vorteile wiederverwendbarer Entwurfsmuster in die Welt der Spielprogrammierung. Der Experte für kommerzielle Spieleentwicklung, Robert Nystrom, präsentiert eine Reihe allgemeiner Lösungen für Probleme bei der Spieleentwicklung. Sie erfahren beispielsweise, wie die doppelte Pufferung es einem Spieler ermöglicht, reibungslose und realistische Bewegungen wahrzunehmen, und wie der Service Locator
Rezensionen
Die erstaunlichste Leistung war das erste Programmiermusterbuch, das mich wirklich dazu brachte, meine Lebensentscheidungen zu programmieren, anstatt sie in Frage zu stellen.
Dieses Buch folgt dem Standardmuster für Entwurfsmusterbücher: kurze Kapitel zu jedem bestimmten Stil mit Definition, Vor- und Nachteilen, einfachem pädagogischem Beispiel, Vergleichen mit anderen Entwurfsmustern und möglicherweise einige Diskussionen über reale Implementierungen und Spiel-Engines. Ich habe noch keinen anderen Ort gehört, an dem man solche spielorientierten Ratschläge zum Programmdesign finden könnte, und in dieser Hinsicht ist dieses Buch konkurrenzlos.
Obwohl sie nicht enzyklopädisch sind, scheinen die ausgewählten Designmuster für Videospielprogrammierer alle eine vernünftige Wahl zu sein: Es gibt einige architektonische wie Fliegengewicht & Singleton was jeder wissen muss, und dann eine gute Portion leistungsstarker oder spielspezifischer Muster (z. Datenlokalität/Objektpool/Dirty Bit & Doppelter Puffer/Spielschleife/Räumliche Teilung) sowie einige ziemlich exotische Muster, die oft in Spielen auftauchen, aber nicht so viele andere Bereiche (zum Beispiel Bytecode taucht in vielen Spielen auf, um Modding zu unterstützen, aber ansonsten werden Sie solche Dinge nur in einigen extrem erweiterbaren Anwendungen wie Texteditoren oder Programmiersprachen entdecken.
Die eigentlichen Kapitel sind überraschend kurz (aus meiner Sicht der Nicht-Spielprogrammierung jedenfalls) und wirken eher als ungewöhnlich lange Blog-Beiträge als als fleischige Buchkapitel. Nystrom erwähnt mehrmals, dass er sich um Kürze bemüht hat, aber ich würde sagen, dass er Einfachheit zu Einfachheit gebracht hat. Ich hätte gerne mehr von allem gesehen: mehr Beispiele, mehr reale Anwendungen, mehr Benchmarks, mehr Vergleiche mit anderen Sprachen (insbesondere für übergeordnete Sprachen wie Python / JavaScript / Haskell, die mit zunehmenden Hardwareressourcen zunehmend von Spielprogrammierern verwendet werden; Wir Haskeller sagen, dass Designmuster einfach Sprachfehler sind, und ich bin gespannt, wie viel von Nystroms Schreiben einfach darauf zurückzuführen ist, dass C- und Java-Probleme umgangen werden.
Die Webpräsentation ist im Standard 2.0-Stil: große Schrift, viel Leerzeichen. Nicht schlecht zum Lesen, obwohl die Notizen in der Seitenleiste ärgerlich waren, da viele von ihnen besser in den Text aufgenommen oder einfach gestrichen worden wären und ihre Beziehung zum Text sehr verwirrend sein könnte, wenn sich 2 oder 3 auf derselben Seite befänden . Die Webpräsentation lässt auch einen großen Vorteil der Online-Präsenz aus: Bemerkungen! Ich habe die Website nur deshalb gelesen, weil ich eines der Kapitel gesehen habe, die bei Hacker News eingereicht wurden, und fand es interessant. Durch eine schnelle Zählung gibt es 18 relevante Diskussionen zu Hacker News und ein anderer 37 auf Reddit, aber jemand, der es liest, hat keine Ahnung. In diesen Beiträgen gab es viele interessante Kommentare und Vorschläge. Warum nicht das Beste daraus machen? Oder verknüpfen Sie sie zumindest am Ende jedes Kapitels als "weiterführende Literatur" oder so?
Die Codebeispiele befinden sich in C ++, sodass sie für Personen, die zuvor C ++ studiert haben, leichter zugänglich sind. Ich denke jedoch, dass die Ideen immer noch auftauchen, auch wenn Sie die Details von vtables, Freundesklassen und anderen C ++ - Kuriositäten nicht verstehen.
Als leitender Softwareentwickler (LOB) mit begrenzter Erfahrung in der Spieleentwicklung fand ich dieses Buch sehr gut geschrieben, leicht zu befolgen und zu verstehen.
Codebeispiele sind gut geschrieben und vereinfacht oder abgeschwächt, damit die Essenz jedes Musters leichter zu sehen und zu erfassen ist. Der meiste, wenn nicht der gesamte Code ist in C ++ geschrieben. Aber ein großes Lob an den Autor für die Verwendung einer einfachen und grundlegenderen Form von C ++ ohne all die moderne Syntax und das zuckerhaltige Zeug. Ich bin ein C # -Entwickler und hatte keine Probleme, dem Beispielcode zu folgen.
Ich mochte die grafischen Diagramme, mit denen abstrakte Konzepte erklärt wurden. Sie waren die perfekte Ergänzung zu dem Text, der das Lesen eines technischen Buches wie dieses sehr angenehm machte und es einfacher machte, alles zu befolgen.
Die kleinen Notizen am rechten Rand sind auch sehr interessant und haben das Buch angenehmer gemacht.
Es ist wichtig zu beachten, dass dies KEIN schrittweises Spielprogrammierbuch ist !!!; Am Ende des Buches wird kein Spiel codiert sein, und Codebeispiele dürfen nicht kopiert und in die von Ihnen verwendete IDE eingefügt werden (sie sind nicht produktionsbereit und versuchen es auch nicht). In diesem Buch werden Ihnen die gängigen Muster erklärt, die von Spieleentwicklern verwendet werden. Dieses Zeug soll verdaut und verstanden werden, um es in Ihrem eigenen Code anzuwenden.
Zusammenfassend ist dies ein wirklich gutes Buch, gut geschrieben, mit einer guten Menge an Text, Codebeispielen und Diagrammen und es ist auch gut strukturiert. All diese Eigenschaften machen es einfach, diesem Buch zu folgen und es zu verstehen (und es macht auch Spaß).
Ich denke, es ist ein Muss für jeden Entwickler, der sich für Spieldesign und Spielmuster interessiert.
Selbst wenn Sie ein wenig über Spieleprogrammierung wissen, denke ich, dass dies eine gute Lektüre ist - es ist kein langes Buch, und Sie können ein paar Dinge lernen. Einige der nützlichsten Lektionen in diesem Buch sind nicht, wann ein Muster verwendet oder wann etwas getan werden soll, sondern wann ein bestimmtes Muster NICHT verwendet werden soll oder wann es sich nicht lohnt, Optimierungen, starke Änderungen oder ähnliches vorzunehmen. Ich denke, die meisten Programmierer könnten davon profitieren, auch ein bisschen darüber zu lernen.
Der spätere Teil mit spezifischeren Mustern ist mehr oder weniger in Ordnung, außer dass er mit räumlichen Datenstrukturen im Buch über Muster endet.
Zusammenfassend würde ich sagen, dass dieses Buch eine Menge schlechter oder zumindest umstrittener Ratschläge enthält. Ich hoffe, dass dieses Buch nicht von Personen gelesen wird, die noch nicht mit den ursprünglichen GoF-Mustern vertraut sind
Für mich war der störende Punkt auch ein ziemlich freier Schreibstil, aber das ist Geschmackssache
Zunächst denke ich, dass ein Teil des Grundes darin liegt, dass der Autor das Szenario, das er zu beschreiben versucht, nach jeweils 3 Sätzen jedes Absatzes buchstäblich ändert. Zum Beispiel spricht der Autor in den ersten drei Sätzen über Zauberer und ändert dann das Thema in etwas über die Bäume und Mobs, die alle generiert werden müssen.
Das große Problem bei dem, was mich als Leser dazu gebracht hat, mit diesem Buch zu kämpfen, ist, dass es keine Schritt-für-Schritt-Bilder aus dem wirklichen Leben gibt, die Ihnen das Ergebnis zeigen, das es hervorbringt, sondern nur grobe Zeichnungen über das Ergebnis. Ich verstehe, dass der Code nur in Pseudocode geschrieben ist, aber How-to-Szenarien würden dem Leser wirklich helfen, vollständig zu verstehen, wie das Konzept wirklich auf die Spieleentwicklung angewendet werden würde.
Nachdem ich dieses Buch gelesen hatte, bekam ich Antworten auf viele Fragen wie
- Warum sind Game Engines so konzipiert?
- Was kann schief gehen, wenn Sie nicht so entwerfen?
- Welches ist das beste Muster für ein bestimmtes Spielproblem? und welches ist das schlimmste?
- Wie kann man herausfinden, welches Muster im Anwendungsfall besser funktioniert und andere nicht?
Hinweis
- Um dieses Buch vollständig nutzen zu können, müssen Sie über grundlegende Kenntnisse der Game Engine und von C ++ verfügen
Was kann verbessert werden
- Der Autor hat eine Tendenz zu bestimmten Lieblingsthemen, die zu tief in der Erklärung liegen, wie z. B. Zustandsmaschinen, obwohl es gut ist, wenn dies auch Ihr Lieblingsthema ist, aber im Allgemeinen nicht so wichtig in Spielen.
Wie für den Inhalt des Buches. Ich denke, man kann viele Dinge als "Muster in der Programmierung" bezeichnen, da sich viele Codes tatsächlich wiederholen. Die meisten der in diesem Buch beschriebenen Muster sind diejenigen, die wir aus den Entwurfsmustern "Gang of Four" kennen. Einige von ihnen sind tatsächlich interessant und neu.
Nun zum interessanten Teil - es bietet einige gute Beispiele für diese Muster, wenn es um die Spieleentwicklung geht. Darüber hinaus werden die Dinge einfach gehalten, sodass Sie den Ansatz besser verstehen.
Ich empfehle dieses Buch jedem, der mehr darüber erfahren möchte, was es bedeutet, ein Spieleentwickler zu sein und welche Herausforderungen Sie haben könnten.
Jedes Kapitel enthält eine klare und kritische Erklärung zu den Fallstricken und Vorteilen bei der Verwendung eines bestimmten Entwurfsmusters.
Besonders interessant finde ich die Kapitel über Optimierungs- und Sequenzierungsmuster.
Machen Sie keinen Fehler, wenn Sie ein Spiel entwickeln, ist es sehr wahrscheinlich, dass Sie mit diesen arbeiten müssen.
Ich kann dieses Buch jedem Videospielentwickler empfehlen, egal ob Anfänger oder Fortgeschrittene.
Ich fand den Inhalt dieses Buches nützlich und größtenteils gut geschrieben. Es würde niemandem empfehlen, der gerade erst anfängt. Die meisten Muster waren mir vorher bekannt, einschließlich des Schreibens von Interpreten und des Erstellens von Byte-Code-Sprachen. Obwohl dieser Teil für mich interessant war, fühlte er sich in der Art und Weise, wie er präsentiert wurde, etwas unnötig an. Ich stimme zu, dass die Konzepte der Schlüssel sind, aber vielleicht könnten einige Details übersprungen worden sein.
Als Webentwickler finde ich einige Kapitel (Zustandsmuster, Komponentenmuster) sehr nützlich.
Der Autor fügt von Zeit zu Zeit ein paar Humor-Teile hinzu (Entschuldigung für das Wortspiel). Erwarten Sie also nicht, dass es sehr trocken ist (erneut Entschuldigung).
Außerdem habe ich jede Sekunde des Lesens dieses Buches wegen seiner klaren Erklärung und seines aufregenden Ansatzes genossen.
Dies ist auch eines meiner Lieblingsprogrammierbücher im Allgemeinen.
Erstens: Muster aus diesem Buch können auf alle anderen Domänen angewendet werden
Zweitens: Es ist sehr interessant und macht Spaß, etwas über Spielprogrammierung zu wissen
Drittens: Ich mag den Schreibstil des Autors. Es ist klar, leicht und macht Spaß
Dies ist ein sehr gutes Buch für Entwickler, nicht nur für Spieleentwickler, sondern auch für allgemeine Softwareentwickler. Ich werde versuchen, es so oft wie möglich zu lesen.
Prägnant, einnehmend und auf reale Situationen anwendbar. Ich würde dies als erste Station für alle Spielprogrammierer betrachten, die ihre Softwarearchitektur und Effizienz optimieren möchten.
Wenn Sie GoF-Muster und ein gutes OOP-Buch lesen, überspringen Sie es. Wenn Sie mit dem Thema noch nicht vertraut sind, lesen Sie es.