Programmierbücher für Java-Spiele: Eine vergleichende Übersicht

Das Programmieren von Spielen hat mich vor 15 Jahren zu Computern gebracht. Wenn Sie überhaupt wie ich sind, dann zieht Sie die magische, farbenfrohe Animation, die von Computerspielen ausgeht, wie eine Motte ans Licht. Von Computerspielen (und ihren Interna) fasziniert zu sein und sie programmieren zu können, sind zwei verschiedene Dinge. Ich musste das Handwerk auf die harte Tour lernen - indem ich stundenlang auf Spiele starrte, bis man sah, wie sie funktionierten. Heutzutage können Sie schummeln und eine Abkürzung nehmen: Nehmen Sie ein Buch und "verschmelzen" Sie einfach mit dem erfahrenen Programmierer, der all seine Erfahrungen, Tipps und Tricks ausspuckt.

Wenn man bedenkt, dass einige Java-Bücher (siehe das Laura Lemay-Buch, das unten im Abschnitt Ressourcen aufgeführt ist) Sie heutzutage auf verschiedene Wege führen möchten, könnten Sie schlimmere Dinge tun, als einem ehemaligen (kommerziellen) Spieleprogrammierer zu vertrauen, um die aktuellen zu überprüfen verfügbare Java-Spielprogrammierbücher.

Für diese Rezension landeten vier Titel vor meiner Haustür:

  • Schwarze Kunst der Java- Spielprogrammierung von Joel Fan, Eric Ries und Calin Tenitchi (Waite Group Press)

  • Hochmoderne Java- Spielprogrammierung von Neil Bartlett, Steve Simkin und Chris Stranc (Coriolis Group Books)

  • Entwicklung von Java Entertainment Applets von John Withers (Wiley)

  • Bringen Sie sich das Programmieren von Internetspielen mit Java bei , von Michael Morrison (Sams.net)

Bevor ich die Bücher im Detail überprüfe, beginnen wir mit einer Tabelle, die Ihnen einen Überblick über ihre Hauptmerkmale aus der Vogelperspektive gibt:

Tabelle 1: Übersicht über die Programmierbücher für Java-Spiele.

Titel (Verlag) Preis (US $) Seiten Kapitel (Anhänge) CD-ROM? Autoren Objektorientierung Vernetzter Mehrbenutzerfokus Game Framework Fokus
Schwarze Kunst der Java-Spielprogrammierung (Waite) 49,99 933 20 (5) Ja 3 ++

Sehr

Gut

Gut Gut
Hochmoderne Java-Spielprogrammierung (Coriolis) 39,99 523 21 (2) Ja 3

Sehr

Gut

Sehr

Gut

Sehr

Gut

Entwicklung von Java Entertainment Applets (Wiley) 29,95 392 100) Nein 1 Arm Arm Durchschnittlich
Bringen Sie sich das Programmieren von Internetspielen mit Java bei (Sams.net) 39,99 416 21 (3) Ja 1 Durchschnittlich Gut Keiner

Um die Tabellenüberschriften zu beschreiben, wird in der Spalte Objektorientierung hervorgehoben, inwieweit die Autoren des jeweiligen Buches Java so verwendet haben, wie es verwendet werden soll: objektorientiert. Gute Java-Bücher, unabhängig von ihrem Fokus, erzwingen gute objektorientierte Praktiken. Minderwertige Bücher verwenden Java so, als wäre es C oder Pascal - also prozedural. Spiele sind sehr gute Kandidatenanwendungen, die davon profitieren, dass sie objektorientiert entworfen und implementiert werden. Daher sollte ein gutes Java-Spielebuch besser auf OOA / OOD / OOP (OO-Analyse, Design, Programmierung) ausgerichtet sein.

In der Spalte Networked Multi-User Focus wird hervorgehoben, wie sehr sich das Buch auf das stärkste Programmierpotenzial von Java konzentriert: vernetzte Multi-User-Spiele.

In der Spalte Game Framework Focus wird hervorgehoben, inwieweit sich das Buch auf ein Game Framework stützt, um die Spieleprogrammierung zu erklären und zu entwickeln. Spiel-Frameworks sind hochmoderne Spiel-APIs, die viele der Standardaufgaben eliminieren, die alle Spiele ausführen müssen (Sprite-Verwaltung, Neulackierung des Bildschirms, Punkteerfassung usw.).

Nun ein Blick auf die Bücher im Detail.

Schwarze Kunst der Java-Spielprogrammierung

Black Art of Java Game Programming ist eines dieser Bücher vom Typ Bibel - alle 933 Seiten. Das Buch ist logisch in drei Teile gegliedert:

  1. "Grundlagen der Java-Spieleentwicklung"
  2. "Fortgeschrittene Spiel- und Grafiktechniken"
  3. "Spielegalerie"

Teil 1, der vollständig vom Hauptautor des Buches (Joel Fan) geschrieben wurde, verwebt gekonnt die drei Themenbereiche Java, Objektorientierung und Spielprogrammierung zu einem klaren, erfrischenden und zusammenhängenden Ganzen.

Teil 2 konzentriert sich auf Netzwerk- und 3D-Techniken. In einem Kapitel wird ein serverseitiges Highscore-Managementsystem entwickelt, in einem anderen ein gesamtes Chatroom-System. Beide Systeme umfassen clientseitige und serverseitige Programme (mit anderen Worten Applets und Server). Die einzigen zwei Kapitel, die sich mit 3D befassen, lesen sich wie ein Buch in einem Buch: Auf über 110 Seiten geht Calin Tenitchi alle klassischen 3D-Grundlagen durch und analysiert in seinem zweiten Kapitel die Verwendung eines großen, aber sehr gut gestalteten 3D-Spiel-Frameworks namens App3DCore. Mit der offiziellen Java 3D-API am Horizont wird dieser Teil des Buches bald teilweise veraltet sein, obwohl sich ein Großteil des Frameworks mit übergeordneten Aspekten als Java 3D befasst, sodass dies für das Buch kein Problem darstellt. In jedem Fall ist es sehr aufschlussreich, die Innenseiten eines solchen 3D-Frameworks erklären zu lassen.

Teil 3, die Spielegalerie, enthält acht Kapitel, von denen jedes ein ganzes Spiel entwickelt. Die Spiele unterscheiden sich in ihrer Raffinesse, was den Eindruck erweckte, dass dieser Teil des Buches ziemlich hastig zusammengestellt wurde. Das individuelle Design und die Implementierung der Spiele sind jedoch (insgesamt) von der gleichen hohen Qualität wie der Rest des Buches. Es gibt einen vektorbasierten Asteroids-Klon, Othello, einen webbasierten Mahjong, ein horizontal scrollendes Edutainment-Spiel mit Wortschießen, zwei verschiedene Magic-Square-Spiele und eine Inkarnation des klassischen Worm- (oder Snake-, wenn Sie es vorziehen) Spiels .

Obwohl das Buch nicht ohne Pannen, Fehler usw. ist (zum Beispiel enthält eine Seite eine Code-Liste, die unglaublich verstümmelt ist), hat es mir sehr gut gefallen. Das Buch hat viele Stärken und wenige Schwächen. Es ist stark auf gute Programmanalyse und Design. (Ah! Sie dachten, Sie könnten diese Phasen überspringen, nur weil sie Spiele sind? Falsch.) Das Buch verwendet verschiedene Arten von Diagrammen sehr effektiv (Objektdiagramme, Klassendiagramme, Flussdiagramme, Zustandsmaschinendiagramme, Bildschirmprototypdiagramme usw.). und die meisten Codelisten sind sehr gut lesbar. (Dieser Aspekt schwankt ebenso wie der Schreibstil von Autor zu Autor. Dies ist die unvermeidliche Kehrseite von Büchern, die von mehreren Autoren geschrieben wurden.)

Modernste Java-Spielprogrammierung

Ich bin normalerweise sehr skeptisch gegenüber Titeln, die mit "Advanced", "Cutting-Edge" und dergleichen beginnen, einfach weil sie es normalerweise nicht sind! Im Fall der hochmodernen Java- Spielprogrammierung hat die Marketingabteilung von Coriolis nichts hochgespielt: Das Buch ist definitiv nicht für Anfänger oder fortgeschrittene Java-Programmierer gedacht. Tatsächlich sind alle bis auf das erste und das letzte Kapitel des Buches einer eingehenden, sachlichen Analyse des Designs und der Implementierung von zwei Spiel-Frameworks gewidmet. Das erste Framework richtet sich an Einzelbenutzerspiele (Standalone-Spiele), während das zweite auf internetbasierte Mehrbenutzerspiele ausgerichtet ist.

Kapitel 2 enthält die vollständige Implementierung eines gesamten Asteroids-Klons, der spielbar und flimmerfrei ist und flüssige Animationen und Sound verwendet. Und das in nur 250 ungeraden Codezeilen - oder nur 18 Buchseiten! Dieses Kapitel sollte daher jeden davon überzeugen, dass die Verwendung von Spiel-Frameworks und Frameworks im Allgemeinen eine der besten Möglichkeiten ist, um ein hohes Maß an Programmierproduktivität zu erreichen, indem die Wiederverwendung von Design und nicht die Wiederverwendung von Code betont wird (aber dabei auch Berge von Code).

Wenn Kapitel 2 ein klares, vielversprechendes Zeichen für die hohe Qualität dieses Buches ist, verstärkt Kapitel 3 diesen Eindruck, indem es uns das Kernthema des Buches vorstellt: die eingehende Erforschung eines (sehr) gut gestalteten Spiel-Frameworks. Im Vorbeigehen erklärt der Autor, was CRC-Karten (Class / Responsibilities / Collaborators) sind, die Essenz von Booch-Klassendiagrammen und Objektnachrichten-Interaktionsdiagrammen. Dies ist übrigens keine Seitenfüllung, da der Rest des Buches diese leistungsstarken Software-Engineering-Tools verwendet, um den Text zu verbessern!

Das Einzelbenutzer-Game-Framework namens GameWorks basiert auf der bewährten Metapher für die Spielprogrammierung einer von Schauspielern bevölkerten Bühne. Mit dieser intuitiven Abstraktion können Sie jede Art von Spiel implementieren - von klassischen Brettspielen bis zu schnellen, actionreichen Arcade-Spielen. Ich war etwas enttäuscht darüber, dass die Autoren Kartenspiele als Beispiel für einen Spielstil ausgewählt haben (ich bevorzuge etwas, das das Adrenalin zum Fließen bringt), obwohl sie es dennoch schaffen, alle Standardprobleme und -techniken fachmännisch (unter anderem: Bildverarbeitung, Eingabemanagement, Sprites, optimierte Bildschirmaktualisierung, Audio, Zufälligkeit, künstliche Intelligenz).

Obwohl das Buch nicht nach Teilen strukturiert ist, sollte es so sein. Ab Kapitel 15 gibt es einen deutlichen Fokuswechsel. Kapitel 15, "Network Game Programming", stellt eine eindeutige Verschiebung in einen höheren Gang dar, wobei ein neuer Autor das Schreiben übernimmt. Nachdem die Hauptprobleme bei netzwerkbasierten Spielen (Verbindungstopologien, Latenz, Synchronisierung des Spielstatus) vorgestellt wurden, entwickelt das Buch einen Klon von Risk, das klassische Strategie-Brettspiel (im Buch Domination genannt). Dominanz ist nur eine Ausrede, um ein neues Spiel-Framework für die allgemeine Klasse netzwerkfähiger Mehrbenutzerspiele zu entwickeln. Diese letzten fünf Kapitel sind schwierig, und ich vermute sehr, dass Leser ohne Datenkommunikationshintergrund sich mit den eher technischen Argumenten nicht wohl fühlen werden. Sie können diese Kapitel jedoch auf keinen Fall überspringen:Sie enthalten eine sehr gründliche Behandlung der kritischen Probleme der De-Synchronisation und der Latenz des Spielzustands sowie eine Reihe immer ausgefeilterer Lösungen.

Das Buch endet mit einem Kapitel über Codeoptimierung und einem interessanten Kapitel über das Design von FRED, einem in Java geschriebenen "Doom" -Klon! FRED verwendet Ray Casting (ja, in Java), um dieses klassische "Doom" -Gefühl zu erzielen, und diese Kerntechnik wird ausführlich erläutert.

Zusammenfassend ist die hochmoderne Java-Spielprogrammierung hervorragend. Das Schreiben ist klar und auf den Punkt. Die von den Autoren entwickelte Software ist von sehr hoher Qualität. Die Auflistungen sind klar und lesbar, und ich weiß nichts über Sie, aber nachdem ich 15 Jahre lang die Programme anderer gelesen habe, betrachte ich die Lesbarkeit des Quellcodes nicht als Luxus.

Java Entertainment Applets entwickeln

Die Entwicklung von Java Entertainment Applets ist ein sehr enttäuschendes Buch. Wenn Ihnen ein Publisher 400 Seiten zur Verfügung gestellt hat, auf denen Sie alles, was Sie über das Programmieren von Spielen in Java wissen, überfüllen können (okay, okay, "Java-Unterhaltungs-App-Lets"), beginnen Sie nicht mit einem Kapitel, das wiederholt wird: bis zum Erbrechen, die Geschichte von Java. Oder fahren Sie mit "Java Fundamentals" (Kapitel 4) fort, einer völlig überflüssigen Aufarbeitung der Sprachgrundlagen (Variablen, Unicode, Ausdrücke, Kommentare, Kontrollfluss, Objekte, Klassen, Pakete - wie Sie es nennen!). Der Autor ahnt immer noch nicht, dass er sich ganz auf das falsche Thema konzentrieren könnte. In Kapitel 5, "Fortgeschrittenere Techniken", dröhnt er mit Arrays, Vektoren, Zeichenfolgen, Ausnahmen, Multithreading und Applets. Etwas heißer wird Kapitel 6, "Grafik, Sound und Ereignisse". Es wird Ihnen jedoch auch schwer fallen, hier Hinweise auf die Spielprogrammierung zu finden. Stattdessen wird kostbare Seite Immobilien gewidmet Sie nicht weniger als 13 Halb Seite Screenshots der trivialen Ergebnisse zu bringen draw3DRect(), drawOval(), drawArc()und dergleichen!

In der Mitte des Buches (Kapitel 7, Seite 219) erscheint zum ersten Mal Java - Spielcode, in diesem Fall ein Versuch des Solitaire-Kartenspiels (Kartenspiele müssen eindeutig in der Saison sein). Das Design des Spiels, die Implementierung des Spiels und die Lesbarkeit der Auflistungen sind im Vergleich zu den gleichen Aspekten der anderen Bücher in dieser Rezension so schlecht, dass es klar ist, dass die Entwicklung von Java Entertainment Applets Probleme hat.

Einige bemerkenswerte Aussagen des Autors und eine allgemeine Schlamperei oder ein Missbrauch von Begriffen mit kristallklarer Bedeutung helfen nur, dieses Buch zu versenken, bevor es eine Chance zum Segeln hat. Der Layout-Management-Mechanismus von AWT wird wie folgt kritisiert: "Die Art und Weise, wie mit Layouts umgegangen wird, ist ziemlich verpfuscht. Nicht, dass es keinen Sinn ergibt und nicht aus gutem Grund, aber es ist immer noch verpfuscht." Die Netzwerk-API von Java gefällt dem Autor auch nicht: "Die Art und Weise, wie Java sich mit anderen Standorten im Internet verbindet, ist fehlerhaft, und obwohl es nicht völlig unbrauchbar ist, ist es im aktuellen Zustand sicher nicht sehr funktional." Seltsamerweise hätte ich geschworen, dass andere und ich es schaffen, mit derselben API (Webcrawler,DAMPP - Verweise auf meine vorherige JavaWorld finden Sie unter Ressourcen untenArtikel zu diesen Themen). Das letzte Zitat stammt aus Kapitel 8, "Multiplayer Gaming", wo uns dennoch "ein dummes kleines Beispiel" (um das Buch zu zitieren) in Form einer Chat-Anwendung gezeigt wird. (Andere Beispiele für Sprache, die ich in diesem Buch nur schwer schlucken kann, sind "es in deinem Kopf zu zementieren" (S. 283) und "Dinge über eine Steckdose zu spucken" (S. 284), um nur zwei zu zitieren.)

Gibt es zu diesem Buch nichts Gutes zu sagen? Tatsächlich gibt es: Kapitel 2, "Die Prinzipien des Spieldesigns", ist eine interessante Analyse dessen, was ein gutes Spiel gut macht. Hier glänzt der Autor, indem er verschiedene Aspekte identifiziert, die alle guten Spiele haben, wie eine gut gestaltete Spieloberfläche, Wahrhaftigkeit (Realismus), Anpassbarkeit, KI und so weiter. Das nächste Kapitel, "Game Design in Action", analysiert einige echte Spiele und hebt deren Verwendung guter Game-Design-Elemente hervor. Dann gibt es ein großes Kapitel (Kapitel 9), das sich mit dem Studium und der Verwendung des Gamelet Toolkit befasst (ein gemeinfreies Spiel-Framework von Mark Tacchi, das mit einem JavaCup International-Preis ausgezeichnet wurde). Diese drei Kapitel sind leider die einzigen Teile des Buches, die das Papier wert sind, auf dem sie gedruckt wurden.

Bringen Sie sich das Programmieren von Internetspielen mit Java bei

Vergleichende Bewertungen sind schwierig, da selten zwei (oder mehr) Bücher in genau derselben Kategorie sind. Teach Yourself Internet Game Programming mit Java richtet sich laut Rückseite an Benutzer in den Kategorien "Neu" bis "Gelegenheits". Mit anderen Worten: Anfänger.