Preferisca la Composizione sopra Eredità
Quando la domanda arrivò se a subclasse CCSprite o usano alcuna classe modella per costruire la Sua gerarchia d'entità di gioco nel foro cocos2d, misi in rilievo che dovrebbe provare a non usare l'eredità e tenere la gerarchia d'eredità a come pochi livelli per quanto possibile. Ho lavorato con codebases con centinaia di migliaia di linee di codice, e centinaia di tipi diversi d'attori nel mondo. Tuttavia la gerarchia d'eredità fu 2 classi fantastiche (di genitori) per quasi tutti gli oggetti, solo pochissimi oggetti di gioco ebbero 3 o 4 classi fantastiche. Come può Lei fare giochi complessi questa strada? 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?
La risposta si trova in composizione, spesso riferita come come Componenti di Gioco da motori come TorqueX e il Motore di Pulsante (un motore di gioco di Lampo dai progettisti di Coppia di torsione originali). Questo video dal Pulsante conduce il progettista Ben Garney lo spiega molto bene e anche illustra il problema con sovrauso d'eredità in motori di gioco. Qualcosa che la maggior parte progettisti nuovi per orientato all'oggetto e/o la programmazione di gioco proprio in effetti tendono a sovrausare – addosso a questo la colpa a libri male scritti e altre sorgenti OOP introduttive che accentuano l'eredità senza discutere i suoi svantaggi. 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.
Lei può leggere più su sistema di Componenti di pulsante nella loro documentazione. Come loro attuarono Componenti in TorqueX e quello che le differenze sono a Componenti di Gioco XNA più lontano accresce la comprensione del concetto.
Per lettura più lontana e argomenti legge l'articolo di Wikipedia su componente basò l'ingegneria di software. In realtà, la lingua Oggettiva-C fu inventata per essere capace di creare componenti di software riutilizzabili!
La conversazione del 2002 GDC di Scott Bila su Un Sistema d'Oggetto di Gioco guidato i Dati (PDF) come usato da Assedio di Prigione sotterranea contiene più lancette su perché l'eredità fallisce per progettisti di gioco e quello che i vantaggi (ma anche alcune diffide) sono con motori di gioco situati nel componente. La conversazione può essere vecchia ma è ancora così valido oggi come questo fu di ritorno allora. In effetti, nel 2002 iniziai a lavorare in SpellForce che già incorporare un sistema componente nel suo nucleo, chiamato Aspetti, le Capacità e i Periodi. Questo ci permise di entrare in tutti i dati di gioco nella base di dati e i programmatori solo avevano bisogno di scrivere il codice generico che affrontò i dati, così come l'installazione di limiti certi e conti di validità (eg. Lei non poteva usare un periodo nocivo su Lei, ma se Lei Le volle poteva porre nemici come obiettivo con il Suo guarire il periodo, o avere edifici di partita di caccia di Sagittari … errm). 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).
Durante il 2009 GDC una presentazione simile fu considerata da Marcin Chady di divertimento Radicale. La conversazione fu chiamata la Teoria e la Pratica d'Architettura di Componente d'Oggetto di Gioco (PPT).
Mick West scrisse delle Entità di Gioco d'articolo Refactoring con Componenti che descrive le sfide e i vantaggi di cambiare Tony Hawk codebase da un modello d'eredità a un sistema di componente di gioco.
Un piuttosto più avanzato letto su uso componente è una carta fatta in collaborazione chiamata il Sistema di Componente d'Oggetto di Gioco Dinamico per Caratteri di Comportamento Mutabili che parla di componenti in contesto di macchine statali finite e comportamenti NPC con un sistema d'attivazione situato nella regola.
L'Architetto di Gioco blog lo chiama un'Anatomia di Disperazione e riassume molto buono quello che i contro di progetto di classe situato nell'eredità è e come la composizione li risolve.














gran vid e posto. la disposizione lontano migliore per classi certe IMO
L'eredità è molto buona per robe di Giava burocratiche (:
[...] Iterheim a vengono a sapere che cocos2d annunciò un buon articolo discutendo i vantaggi di composizione in giochi, e lui collegò i “Componenti di Comprensione” QuickTalk che feci per Pulsante [...]
Poteva Lei fare un seminario universitario sotto la guida di un tutor specializzato (forse compreso video) di come fare serie complete di caratteri Bitmap, e come integrarli con UILabels, cose di quella natura?
Ancora una cosa, in alcun denaro contante di giochi è rappresentata in una stenografia, allora invece di 1.000.000$ Lei riceve $1 milione, (altri esempi includono 0.25k, 0.75k, 250 chilobit, eccetera) (simile al modo che il Mondo Assennato di Calcio aveva l'abitudine di farlo), ha Lei una base di conoscenza su come meglio compiere questo?
Grazie
[...] l'Obiettivo C è una lingua veramente simpatica per estendersi a causa del suo facile per usare categorie di classe e la mancanza d'eredità multipla. Allora, quando Lei si trova sfidato con qualcosa che va al di là del motore di gioco, soltanto crei [...]
Ciao,
Sono disperato per ricevere questo libro siccome vedo che ci sono così tanti argomenti interessanti su cocos2d. Quando chiesi su Amazzone su questo libro mostra che ”questo libro non è stato rilasciato già”. Allora sono disorientato che il libro l'ha rilasciato in depositi o fa ho bisogno di aspettare un lungo per questo libro sorprendente. So I am confused that book has released it in stores or do i need to wait a long for this amazing book.
Il libro è disponibile come Alfa eBook direttamente da Apress:
http://apress.com/book/view/1430233036
[...] da Ben Garney il 12 giugno 2010 Steffen Iterheim a vengono a sapere che cocos2d annunciò un buon articolo discutendo i vantaggi di composizione in giochi, e lui collegò i “Componenti di Comprensione” QuickTalk che feci per Pulsante [...]
[...] il modello di MVC è piuttosto simile a sistema componente d'oggetto di un gioco che descrissi qui. Per entrambi i sistemi, l'idea generale non è quella di subclassificare CCSprite e inserire la Sua logica di gioco là. [...] [...]
[...] Lei proprio ha imparato OOP ed eredità. Sia l'eredità carefull può essere cattivo se abusato vedi perché: Preferisca la Composizione sopra Eredità [...] Prefer Composition over Inheritance [...]
La riunione stata di una struttura componente veramente leggera per Cocos2D.
Qui è il posto di blog: http://bit.ly/hQFdii