CNDG
Würden Sie gerne auf diese Nachricht reagieren? Erstellen Sie einen Account in wenigen Klicks oder loggen Sie sich ein, um fortzufahren.


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

 

 Von Objektdefinitionen und Objektinstanzen

Nach unten 
2 verfasser
AutorNachricht
Flinti
Kadett
Kadett



Männlich Alter : 30
Anmeldedatum : 07.04.09

Von Objektdefinitionen und Objektinstanzen Empty
BeitragThema: Von Objektdefinitionen und Objektinstanzen   Von Objektdefinitionen und Objektinstanzen EmptyMo 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
Wipfmagus
Konteradmiral
Konteradmiral
Wipfmagus


Weiblich Alter : 28
Anmeldedatum : 06.03.10

Von Objektdefinitionen und Objektinstanzen Empty
BeitragThema: Re: Von Objektdefinitionen und Objektinstanzen   Von Objektdefinitionen und Objektinstanzen EmptyDi 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
 
Von Objektdefinitionen und Objektinstanzen
Nach oben 
Seite 1 von 1

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