Bevorzugen Sie Zusammensetzung über das Erbe

Am 11. Juni 2010, in der Programmierung, Von der Erfahrung Sprechend, durch Steffen Itterheim by Steffen Itterheim

Als die Frage heraufkam, ob zur Unterklasse CCSprite oder eine Musterklasse verwenden, um Ihre Spielentitätshierarchie im cocos2d Forum zu bauen, betonte ich, dass man versuchen sollte, Erbe nicht zu verwenden und die Erbe-Hierarchie zu als wenige Niveaus wie möglich zu behalten. Ich habe mit codebases mit Hunderttausenden von Linien des Codes, und Hunderten von verschiedenen Typen von Schauspielern in der Welt gearbeitet. Und doch war die Erbe-Hierarchie 2 (super elternteil)-Klassen für fast alle Gegenstände, nur sehr wenige Spielgegenstände hatten 3 oder 4 Superklassen. Wie können Sie komplizierte Spiele diesen Weg machen? Yet the inheritance hierarchy was 2 super (parent) classes for almost all objects, only very few game objects had 3 or 4 super classes. How can you make complex games this way?

Die Antwort liegt in der Zusammensetzung, häufig gekennzeichnet als Spielbestandteile durch Motoren wie TorqueX und den Drucktaste-Motor (ein Blitz-Spielmotor von den ursprünglichen Drehmoment-Entwicklern). Dieses Video von der Drucktaste führt Entwickler Ben Garney erklärt es sehr gut und illustriert auch das Problem mit dem Erbe-Übergebrauch in Spielmotoren. Etwas, was die meisten Entwickler, die dem neu sind, objektorientiert und/oder Spielprogrammierung wirklich tatsächlich dazu neigen zu überverwenden - mache ich das auf schlecht schriftlichen Büchern und anderen einleitenden OOP Quellen verantwortlich, die Erbe betonen, ohne seine Nachteile zu besprechen. Something that most developers new to object-oriented and/or game programming do in fact tend to over-use – i blame that on poorly written books and other introductory OOP sources which emphasize inheritance without discussing its disadvantages.

Sie können mehr über das Teilsystem der Drucktaste in ihrer Dokumentation lesen. Wie sie Bestandteile in TorqueX durchführten, und was die Unterschiede zu XNA Spielbestandteilen sind, weiter erhöht das Verstehen des Konzepts.

Weil weiterführende Literatur und Argumente den Wikipedia-Artikel auf dem Bestandteil lesen, stützte Softwaretechnik. Eigentlich wurde die Objektive-C Sprache erfunden, um im Stande zu sein, Mehrwegsoftwarebestandteile zu schaffen!

Das GDC 2002-Gespräch von Scott Bila über Ein Datengesteuertes Spielgegenstand-System (PDF), wie verwendet, durch die Kerker-Belagerung enthält mehr Zeigestöcke darauf, warum Erbe für Spielentwickler scheitert, und was die Vorteile (sondern auch einige Verwahrungen) mit teilbasierten Spielmotoren sind. Das Gespräch kann alt sein, aber es ist noch heute ebenso gültig, wie es zurück dann war. Tatsächlich 2002 fing ich an, an SpellForce zu arbeiten, der bereits ein Teilsystem in seinen Kern, genannt Aspekte, Geistige Anlagen und Perioden einbauen ließ. Es erlaubte uns, in alle Spieldaten in der Datenbank einzugehen, und Programmierer mussten nur den allgemeinen Code schreiben, der sich mit den Daten, sowie dem Festlegen bestimmter Grenzen und Gültigkeitskontrollen befasste (eg., konnten Sie nicht eine zerstörende Periode auf sich selbst verwenden, aber wenn Sie zu Ihnen wollten, konnte Feinde mit Ihrem ins Visier nehmen, Periode heilen, oder Bogenschütze-Schuss-Gebäude … errm haben). In fact, in 2002 i started working on SpellForce which already had a component system built into its core, called Aspects, Abilities and Spells. It allowed us to enter all the game data in the database and programmers only needed to write the generic code that dealt with the data, as well as setting certain limits and validity checks (eg. you couldn’t use a damaging spell on yourself but if you wanted to you could target enemies with your heal spell, or have archers shoot buildings … errm).

Während GDC 2009 wurde eine ähnliche Präsentation von Marcin Chady der radikalen Unterhaltung gehalten. Das Gespräch wurde Theorie und Praxis der Spielgegenstand-Teilarchitektur (PPT) genannt.

Mick West schrieb einem Spiel des Artikels Refactoring Entitäten mit Bestandteilen, der die Herausforderungen und Vorteile beschreibt, den Toni Hawk codebase von einem Erbe-Modell bis ein Spielteilsystem zu ändern.

Ein auf dem Teilgebrauch gelesener etwas fortgeschrittenerer ist ein zusammenarbeitendes Papier genannt das Dynamische Spielgegenstand-Teilsystem für Veränderliche Verhaltenscharaktere, das über Bestandteile im Zusammenhang von Zustandsmaschinen und NPC Handlungsweisen mit einem regelbasierenden Aktivierungssystem spricht.

Der Spielarchitekt blog nennt es eine Anatomie der Verzweiflung und summiert sehr gut, was das Lernen des auf das Erbe gegründeten Klassendesigns ist, und wie Zusammensetzung sie löst.

11 Antworten, um Zusammensetzung über das Erbe "zu bevorzugen",

  1. Blenderificus sagt:

    großer vid und Posten. viel besseres Lay-Out für bestimmte Klassen IMO

  2. Max sagt:

    Erbe ist sehr gut für das bürokratische javanische Zeug (:

  3. [...] Iterheim daran erfahren, dass cocos2d einen guten Artikel anschlug, die Vorteile der Zusammensetzung in Spielen besprechend, und er die "Verstehen-Bestandteile" QuickTalk verband, den ich für die Drucktaste tat [...]

  4. N.Chr. sagt:

    Konnten Sie einen hingebungsvollen Tutorenkurs (vielleicht einschließlich des Videos) davon tun, wie man Bitmap Schriftarten tut, und wie man sie mit UILabels, Dingen dieser Natur integriert?

    Ein mehr Ding, in einem Spielbargeld wird in einer Schnellschrift vertreten, so statt 1,000,000 $ bekommen Sie $ 1 Million, (andere Beispiele schließen 0.25k, 0.75k, 250 Kilobyte, usw. ein) (ähnlich dem Weg, wie die Vernünftige Welt des Fußballs pflegte, es zu tun), haben Sie eine Kenntnisse-Basis an, wie man am besten das vollbringt?

    Dank

  5. [...] Ziel C ist eine wirklich nette Sprache, um sich wegen seines leichten auszustrecken, um Klassenkategorien zu verwenden und von der Mehrfachvererbung zu fehlen. Also, wenn Sie herausgefordert mit etwas finden, was den Spielmotor übertrifft, schaffen Sie gerade [...]

  6. Abdul sagt:

    Hallo,

    Ich muss dringend dieses Buch bekommen, weil ich sehe, dass es so viele interessante Themen über cocos2d gibt. Als ich auf dem Amazonas über dieses Buch überprüfte, zeigt es, dass "dieses Buch noch nicht veröffentlicht worden ist". So bin ich verwirrt, dass Buch es in Läden veröffentlicht hat oder tut, muss ich auf einen langen für dieses erstaunliche Buch warten. So I am confused that book has released it in stores or do i need to wait a long for this amazing book.

  7. [...] durch Ben Garney am 12. Juni 2010 Steffen Iterheim daran erfahren, dass cocos2d einen guten Artikel anschlug, die Vorteile der Zusammensetzung in Spielen besprechend, und er die "Verstehen-Bestandteile" QuickTalk verband, den ich für die Drucktaste tat [...]

  8. [...] MVC Muster ist dem Teilsystem des Gegenstands eines Spiels etwas ähnlich, das ich hier beschrieb. Für beide Systeme ist die allgemeine Idee nicht zur Unterklasse CCSprite und stellte Ihre Spiellogik in dort. [...] [...]

  9. [...] Sie erfuhren wirklich OOP und Erbe. Seien Sie carefull Erbe kann schlecht sein, sieh wenn missbraucht, warum: Bevorzugen Sie Zusammensetzung über das Erbe [...] Prefer Composition over Inheritance [...]

  10. Terence sagt:

    Das gewesene Zusammenstellen eines wirklich leichten Teilfachwerks für Cocos2D.
    Hier ist der Blog-Posten: http://bit.ly/hQFdii

Verlassen Sie eine Antwort