JLI Spieleprogrammierung Foren-Übersicht JLI Spieleprogrammierung

 
 FAQFAQ   SuchenSuchen   MitgliederlisteMitgliederliste   BenutzergruppenBenutzergruppen 
 medals.php?sid=458cd2eea1a10bb37505483d67ed2f9fMedaillen   RegistrierenRegistrieren   ProfilProfil   Einloggen, um private Nachrichten zu lesenEinloggen, um private Nachrichten zu lesen   LoginLogin 

Ich hab mich eingekapselt
Gehe zu Seite Zurück  1, 2
 
Neues Thema eröffnen   Neue Antwort erstellen    JLI Spieleprogrammierung Foren-Übersicht -> Entwicklung
Vorheriges Thema anzeigen :: Nächstes Thema anzeigen  
Autor Nachricht
DirectXer
Dark JLI'ler



Anmeldedatum: 05.02.2005
Beiträge: 1201
Wohnort: Köln
Medaillen: Keine

BeitragVerfasst am: 23.03.2008, 22:29    Titel: Antworten mit Zitat

User_User hat Folgendes geschrieben:
Kann man das nicht durch Textersetzung steuern (z.B.: ein Makro oder #include), sodass man sich viel Schreibarbeit erspart?
Makros sind kein effektiver Bestand von C++. Für solche programmierinterne Probleme, sind sie nicht geeignet. Da bietet C++ schon genug Ersatzmöglichkeiten. Welche Schreibarbeit würdest du dir denn dadurch spaten? Gib mal bitte ein Beispiel.

Gruß DXer
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden
User_User
JLI'ler



Anmeldedatum: 05.08.2004
Beiträge: 137

Medaillen: Keine

BeitragVerfasst am: 24.03.2008, 01:52    Titel: Antworten mit Zitat

DirectXer hat geschrieben:

Zitat:
Welche Schreibarbeit würdest du dir denn dadurch spaten? Gib mal bitte ein Beispiel.


Sorry für den unbrauchbaren Vorschlag Embarassed , hast ja Recht!

Ich dachte zuerst, dass man nach einer bekannten Definition diese Definition bei der nächsten Definition verwenden kann. Aber hier ist ja die Reihenfolge umgekehrt.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen
DirectXer
Dark JLI'ler



Anmeldedatum: 05.02.2005
Beiträge: 1201
Wohnort: Köln
Medaillen: Keine

BeitragVerfasst am: 24.03.2008, 02:31    Titel: Antworten mit Zitat

User_User hat Folgendes geschrieben:
Sorry für den unbrauchbaren Vorschlag :oops: , hast ja Recht!

Ich dachte zuerst, dass man nach einer bekannten Definition diese Definition bei der nächsten Definition verwenden kann. Aber hier ist ja die Reihenfolge umgekehrt.

macht ja nix ;) Aber allgemein gilt, Makros eher nicht zu benutzen, es sei denn es ist unumgehbar.

Gruß DXer
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden
Hazel
JLI MVP
JLI MVP


Alter: 39
Anmeldedatum: 19.07.2002
Beiträge: 1761

Medaillen: Keine

BeitragVerfasst am: 24.03.2008, 09:01    Titel: Antworten mit Zitat

DirectXer hat Folgendes geschrieben:
User_User hat Folgendes geschrieben:
Sorry für den unbrauchbaren Vorschlag :oops: , hast ja Recht!

Ich dachte zuerst, dass man nach einer bekannten Definition diese Definition bei der nächsten Definition verwenden kann. Aber hier ist ja die Reihenfolge umgekehrt.

macht ja nix ;) Aber allgemein gilt, Makros eher nicht zu benutzen, es sei denn es ist unumgehbar.

Gruß DXer


Sagt wer? Im Half-Life Code, nur zum Beispiel, werden haufenweise Makros benutzt. Solange es das Game zur Fertigstellung bringt, ist doch wohl jedes Mittel recht.. hinterher fragt dich eh keiner, ob du da Makros benutzt hast. ;)

My 0.2c.
_________________
*click* Dabuu!?
Twitter: http://twitter.com/Ollie_R
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Hazel
JLI MVP
JLI MVP


Alter: 39
Anmeldedatum: 19.07.2002
Beiträge: 1761

Medaillen: Keine

BeitragVerfasst am: 24.03.2008, 09:11    Titel: Antworten mit Zitat

@Jonathan_Klein: Ich habe mir deinen Post vom Anfang nochmal durch den Kopf gehen lassen.

Dein Hauptproblem ist anscheinend, dass du Probleme bekommst bestimmte Werte zu teilen, bzw. in der Ableitungshierarchie nach unten zu geben.

Was hälst du von folgendem Vorschlag: Anstatt mit vielen Ableitungen zu arbeiten, definiere dein SceneObject, bzw WorldObject als eine Art leere Kapsel.. eine leere Entität. Um ihr Leben einzuhauchen kannst du dann aus verschiedenen Bestandteilen wählen, und sie dort hineinstecken. Wie du dein Problem damit lösen kannst?

Nehmen wir an, du hast eine Klasse Scavanger.. diese fiesen Schnabeldinger. Ein Scavanger ist eindeutig ein fester, "anfassbarer" Bestandteil deiner Welt, also könntest du ihm die Komponente AvatarComponent geben. Diese verwaltet die Darstellung des Monsters in der Welt... Attribute wären Model/Animationen, BoundingBox und natürlich Position und Geschwindigkeitsvektor. Neben dieser AvatarComponente wird er vermutlich auch eine AIComponent besitzen, die vielleicht einen einfachen endlichen Automaten implementiert, da Scavanger vermutlich nicht sonderlich schlau sind. Damit die KI jedoch korrekt funktionieren kann wird sie sicherlich auch wissen wollen, wo sich der Scavanger befindet. Diese Informationen befindet sich jedoch in der AvatarComponent. Problem...
Um dies Lösen zu können, braucht jede Komponente einen Zeiger auf ihren Besitzer.. nun kann die Komponente ihren Besitzer fragen "Hey, hast du zufällig eine AvatarComponent?". Falls ja, prima, falls nein kannst du einfach eine Warnung ausgeben, dass AIComponent ohne AvatarComponent nicht arbeiten kann.

Ein großer Vorteil ist, dass du dich nicht in großen Ableitungsbäumen verstrickst.

Ein weiterer Vorteil dieses Modells ist, dass du später im Level Editor einfach neue Objekt-Typen zusammenwürfeln kannst. Man könnte den Komponenten auch noch Parameter geben, die man im Editor oder per XML konfigurieren kann... :)

Naja, hoffe das Hilft vielleicht dabei eine andere Herangehensweise an dein Problem zu finden... eine mit der man weiter kommt und das Spiel fertig kriegt! ;) Nix ist frustrierender als sich am Anfang gleich über Softwarearchitektur den Kopf zu zerbrechen und den eigenelichen Sinn des Spiels -> Spaß!, aus den Augen zu verlieren. :)

Gruß,
Ollie
_________________
*click* Dabuu!?
Twitter: http://twitter.com/Ollie_R
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Hazel
JLI MVP
JLI MVP


Alter: 39
Anmeldedatum: 19.07.2002
Beiträge: 1761

Medaillen: Keine

BeitragVerfasst am: 27.03.2008, 12:41    Titel: Antworten mit Zitat

Anscheinend keine gute Idee für dich? ;)
_________________
*click* Dabuu!?
Twitter: http://twitter.com/Ollie_R
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Fallen
JLI MVP
JLI MVP


Alter: 40
Anmeldedatum: 08.03.2003
Beiträge: 2860
Wohnort: Münster
Medaillen: 1 (mehr...)

BeitragVerfasst am: 27.03.2008, 20:21    Titel: Antworten mit Zitat

Viel zu viel Text und viel zu wenig Bilder über Bienchen und Blümchen du Schuft!

Ich finde die Idee gar nicht mal so übel, der einzige Nachteil den ich nun noch sehe ist das man Objekte ohne eine ID nur schwer voneinander zu unterscheiden kann (muss allerdings Nichtmal gewollt sein).

Ebenso könnte es problematisch sein das man für zusätzliches verhalten eine neue Komponente schreiben muss (dies hat wiederum den Vorteil das man so eine höhere Vielfalt erreichen kann).

Btw zum Thema HL-Code: Sobald Hacks angewendet werden ist der Spass vorbei und Makros an unnötigen Stellen verschlechtert die Wartbarkeit sowie den eigenen Codestil, ansonsten hast du schon recht, verachten sollte man die Nachteile dennoch nicht Wink
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen
DirectXer
Dark JLI'ler



Anmeldedatum: 05.02.2005
Beiträge: 1201
Wohnort: Köln
Medaillen: Keine

BeitragVerfasst am: 28.03.2008, 02:50    Titel: Antworten mit Zitat

Hazel hat Folgendes geschrieben:
DirectXer hat Folgendes geschrieben:
User_User hat Folgendes geschrieben:
Sorry für den unbrauchbaren Vorschlag Embarassed , hast ja Recht!

Ich dachte zuerst, dass man nach einer bekannten Definition diese Definition bei der nächsten Definition verwenden kann. Aber hier ist ja die Reihenfolge umgekehrt.

macht ja nix Wink Aber allgemein gilt, Makros eher nicht zu benutzen, es sei denn es ist unumgehbar.

Gruß DXer


Sagt wer? Im Half-Life Code, nur zum Beispiel, werden haufenweise Makros benutzt. Solange es das Game zur Fertigstellung bringt, ist doch wohl jedes Mittel recht.. hinterher fragt dich eh keiner, ob du da Makros benutzt hast. Wink

sagt Bjarne Stroustrup, Entwickler von C++, in diesem Artikel (der 3. beitrag von unten ist der zentrale) Razz Razz Razz Spaß beseite, aber Bjarne sagt dort im Grunde alles was wichtig ist für die Diskussion. Es gibt auch tausende davon hier im forum, s. Bordsuche. Im Endeffekt hast du recht, hinterher fragt dich keiner mehr. Aber was ist, wenn du dir durch macros deinen ganzen code abwandelst und später trotzdem nochmal mit arbeiten willst? was wenn du dann nicht mehr durchsteigst weil du vielleicht dann in c++ programmierst und nicht mehr c, da man sich mit macros immer ein teil von der ursprünglichen sprache entfernt und die eigene hineinbringt? Lieber ordentlich und strukturiert, dann steigt auch jeder andere durch der nicht deine macros kennt sondern nur die sprache c++ in der macros normalerweise nicht gebraucht werden (s. Artikel). Smile Achja, der HL-Code ist in C programmiert.

Gruß DXer
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden
Hazel
JLI MVP
JLI MVP


Alter: 39
Anmeldedatum: 19.07.2002
Beiträge: 1761

Medaillen: Keine

BeitragVerfasst am: 28.03.2008, 09:26    Titel: Antworten mit Zitat

Kommt halt drauf an wie man Makros einsetzt... die sind immerhin ein Bestandteil der Sprache. :) Bei der Entwicklung von PlugIns sind sie mir damals sehr zugute gekommen.

Und zu HL..da muss ich dich korrigieren, das ist eindeutig C++. Der Code wurde damals von Quake( -> C ) nach C++ portiert.

Beispiel: http://hosted.planethalflife.gamespy.com/fixxxer/hltuts/hl_weap1.htm
_________________
*click* Dabuu!?
Twitter: http://twitter.com/Ollie_R
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Hazel
JLI MVP
JLI MVP


Alter: 39
Anmeldedatum: 19.07.2002
Beiträge: 1761

Medaillen: Keine

BeitragVerfasst am: 28.03.2008, 09:31    Titel: Antworten mit Zitat

Fallen hat Folgendes geschrieben:
Ich finde die Idee gar nicht mal so übel, der einzige Nachteil den ich nun noch sehe ist das man Objekte ohne eine ID nur schwer voneinander zu unterscheiden kann (muss allerdings Nichtmal gewollt sein).


Ja okay *gg* Das wollte ich garnicht ausschließen. Irgendeine Klasse muss die Dinger natürlich auch managen.

Fallen hat Folgendes geschrieben:

Ebenso könnte es problematisch sein das man für zusätzliches verhalten eine neue Komponente schreiben muss (dies hat wiederum den Vorteil das man so eine höhere Vielfalt erreichen kann).


Jopp da kommt es halt drauf an, wie light-weight man das ganze gestaltet. In meinem Entwurf hatte ich z.B. eine Animationsklasse und Entities die unsichtbar waren haben diese dann einfach nicht enthalten. Andersrum konnte die KI von Monstern der Animationsklasse sagen "Hey, jetzt spiel mal ne Sprunganimation weil ich grad gesprungen bin!". Was es auch gab, war eine Lua-Script Komponente mit der man Funktionen dann einfach in Lua scripten konnte... also eher weniger größere Komponenten als für jeden Furz eine Mini-Klasse. :)
_________________
*click* Dabuu!?
Twitter: http://twitter.com/Ollie_R
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
DirectXer
Dark JLI'ler



Anmeldedatum: 05.02.2005
Beiträge: 1201
Wohnort: Köln
Medaillen: Keine

BeitragVerfasst am: 28.03.2008, 14:06    Titel: Antworten mit Zitat

Hazel hat Folgendes geschrieben:
Kommt halt drauf an wie man Makros einsetzt... die sind immerhin ein Bestandteil der Sprache. Smile Bei der Entwicklung von PlugIns sind sie mir damals sehr zugute gekommen.

Und zu HL..da muss ich dich korrigieren, das ist eindeutig C++. Der Code wurde damals von Quake( -> C ) nach C++ portiert.

Beispiel: http://hosted.planethalflife.gamespy.com/fixxxer/hltuts/hl_weap1.htm

Naja also Macros sind kein Bestandteil der Sprache C++ laut Bjarne (er musses ja wissen, er hat sie entwickelt). Aber sie werden trotzdem oft benutzt da hast du recht.. Hmm das Codestück mag zwar versuchtes C++ sein, aber gescheitertes, da einige veraltete Elemente von C drin sind, für die C++ neue und saubere Methoden zur Verfügung stellt (sowas passiert meist wenn frühere C-Programmierer nach C++ umsteigen). z.B: c-style cast, UTIL_Remove, etc. Naja aber ich will mich deshalb aber nicht mit dir streiten also lassen wir das dabei ok? =D

Zum Thema: Den Lösungsvorschlag von hazel kann ich auch empfehlen, hab mich da mal was reingelesen. Wenn du das gut einarbeitest müsste das problemlos passen.

Gruß DXer
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden
Beiträge der letzten Zeit anzeigen:   
Neues Thema eröffnen   Neue Antwort erstellen    JLI Spieleprogrammierung Foren-Übersicht -> Entwicklung Alle Zeiten sind GMT
Gehe zu Seite Zurück  1, 2
Seite 2 von 2

 
Gehe zu:  
Du kannst keine Beiträge in dieses Forum schreiben.
Du kannst auf Beiträge in diesem Forum nicht antworten.
Du kannst deine Beiträge in diesem Forum nicht bearbeiten.
Du kannst deine Beiträge in diesem Forum nicht löschen.
Du kannst an Umfragen in diesem Forum nicht mitmachen.


Powered by phpBB © 2001, 2005 phpBB Group
Deutsche Übersetzung von phpBB.de

Impressum