Ein Forum, in dem sich neue Clonk Entwickler untereinander austauschen können.
 
StartseiteStartseite  PortalPortal  FAQFAQ  SuchenSuchen  AnmeldenAnmelden  MitgliederMitglieder  LoginLogin  

Austausch | 
 

 Von Objektdefinitionen und Objektinstanzen

Vorheriges Thema anzeigen Nächstes Thema anzeigen Nach unten 
AutorNachricht
Flinti
Kadett
Kadett


Männlich Alter : 24
Anmeldedatum : 07.04.09

BeitragThema: Von Objektdefinitionen und Objektinstanzen   Mo Nov 09, 2009 1:36 pm

Manche von euch fragen sich vielleicht, warum man nicht Kill(CLNK) schreiben kann. Lest das hier, und hoffentlich werdet ihr es hierdurch erfahren.

GRUNDVORAUSSETZUNGEN:
-annähernd keine

Im Clonkordner befinden sich eine Reihe von Objektdefinitionen. Jede Objektdefinition benötigt eine DefCore und damit eine eindeutige ID: Anhand dieser ID kann die Engine gezielt auf eine bestimmte Definition zugreifen, deren (Kern-)Eigenschaften von der DefCore festgelegt werden (Kategorie, Größe, Breite, ...)
Definitionen sind als Vorlagen zu bezeichnen, anhand derer Objektinstanzen erzeugt werden. Diese Objektinstanzen sind ein "real" existierendes Objekt, wie z.B. ein Steuerbarer Clonk, der Sepp heißt oder ein Stein, den man werfen kann. Jede Objektinstanz bekommt von der Engine eine Objektnummer zugewiesen, damit die Instanz eindeutig identifizierbar ist. Zusammenfassend könnte man also die Objektdefinitionen als Baupläne bezeichnen, und eine Instanz als ein nach diesem Plan gebautes, benutzbares, annähernd individuelles Objekt.


Beispiel:

Jedes Huhn kann Eier legen; der Bauplan für das Ei ist genetisch festgelegt. Im Körper des Huhns wird so also ein Ei nach einem Bauplan erzeugt, das durchaus eine bestimmte Individualität hat, kein Ei ist genau gleich (Natürlich können in Clonk zwei Steine genau gleich sein, trotzdem werden sie von der Objektnummer unterschieden).



Deshalb kann man nicht Kill(CLNK) schreiben, weil die Engine nicht annähernd weiß, was die töten soll, wenn sie nur eine ID hat: Vorlagen kann man nicht töten, man kann nur Eigenschaften von Vorlagen ablesen, wie z.B. die Höhe eines Objekts, die aber selbst für jede Objektinstanz unterschiedlich sein kann. Deshalb nimmt Kill keine IDs als Parameter, sondern nur ein Objekt, dass die Objektnummer repräsentiert.

Variablen im Script, denen ein Objekt zugewiesen wurde, verweisen auf die Objektnummer einer Instanz, sind aber nicht selbst die Objektnummer. Die ganzen Datentypen in Clonk helfen uns, nicht irgendwie mit Speicheradressen/Objektnummern o.Ä. hantieren zu müssen, und schützen uns auch davor, sinnlose Operationen z.B. mit Objektnummern zu machen: Objektnummern zu addieren ist wohl das sinnfreieste, was es in dieser Richtung gibt.
Nach oben Nach unten
Benutzerprofil anzeigen
Wipfmagus
Konteradmiral
Konteradmiral
avatar

Weiblich Alter : 22
Anmeldedatum : 06.03.10

BeitragThema: Re: Von Objektdefinitionen und Objektinstanzen   Di März 16, 2010 1:34 pm

Danke für dieses Tutorial. Wahrscheinlich hast du dem CNDG zahllose Fragen "Warum funktioniert mein Skript nicht?" erspart. Schön wäre vielleicht noch, wenn du ein wenig zu FindObject dazuschreibst, damit die Newbies auch wissen, dass Kill(FindObject(CLNK)) genau das tut, was sie versuchen.
Nach oben Nach unten
Benutzerprofil anzeigen
 
Von Objektdefinitionen und Objektinstanzen
Vorheriges Thema anzeigen Nächstes Thema anzeigen Nach oben 
Seite 1 von 1

Befugnisse in diesem ForumSie können in diesem Forum nicht antworten
CNDG :: Anfänger :: Tutorials-
Gehe zu: