Du bist nicht angemeldet.

Stilllegung des Forums
Das Forum wurde am 05.06.2023 nach über 20 Jahren stillgelegt (weitere Informationen und ein kleiner Rückblick).
Registrierungen, Anmeldungen und Postings sind nicht mehr möglich. Öffentliche Inhalte sind weiterhin zugänglich.
Das Team von spieleprogrammierer.de bedankt sich bei der Community für die vielen schönen Jahre.
Wenn du eine deutschsprachige Spieleentwickler-Community suchst, schau doch mal im Discord und auf ZFX vorbei!

Werbeanzeige

Dave

Alter Hase

  • »Dave« ist der Autor dieses Themas

Beiträge: 757

Wohnort: Berlin

  • Private Nachricht senden

1

28.11.2004, 13:06

Objek Manager

ich hatte vor einiger zeit schonmal angefangen mir nen kleinen objekt manager zu basteln. allerdings komm ich nicht wirklich weiter und zweifel an dem nutzen...
benutzt ihr einen objekt manager? und wie ist der aufgebaut? kann mir irgendjemand ein bisschen lektüre zu dem thema geben? habe nichts gescheites gefunden...

Dave

Alter Hase

  • »Dave« ist der Autor dieses Themas

Beiträge: 757

Wohnort: Berlin

  • Private Nachricht senden

2

02.12.2004, 19:33

keiner nen tipp?

3

02.12.2004, 19:34

Na, was meinste den mit Objekt Manager?

Dave

Alter Hase

  • »Dave« ist der Autor dieses Themas

Beiträge: 757

Wohnort: Berlin

  • Private Nachricht senden

4

03.12.2004, 07:09

eine klasse, welche alle objekte verwaltet und ein nachrichtensystem zum kommunizieren zur verfügung stellt...

5

03.12.2004, 14:59

Also für Windows oder für ein deiner Anwendungen?

Dave

Alter Hase

  • »Dave« ist der Autor dieses Themas

Beiträge: 757

Wohnort: Berlin

  • Private Nachricht senden

6

03.12.2004, 15:29

für eine eigene anwendung, also zB ein manager, welcher alle objekte eines spiels verwaltet und die kommunikation koordiniert...

7

03.12.2004, 16:33

Also so wie der Texturen Manager in der TriBase Engine?

Soll das für DirectX sein?

Da hab ich nämlich schon mal was gesehen, sollte sich auch schnell wieder finden lassen. ;p

PD

unregistriert

8

03.12.2004, 19:04

Ich würd mal vielmehr sagen er meint eine allgemeine klasse die sich möglichst auf alle Objekte anwenden lässt. Ich hab ne Klasse genommen welche nen void* vector hat und eine template Methode mit deren hilfe ich ein entsprechendes Objekt holen kann. hatte aber diverse Nachteile. Zum einen konnte ich durch die Typ Erkennung blos ein Objekt pro Klasse im manager verwalten und zum anderen wurde der Aufruf der einzelnen klassen über die Get methode ziemlich langsam da er alle objekte im Vektor durchlaufen musste um es zu finden. Der Ansatz war aber gut und hat auch gut geklappt ist aber sicher noch verbesserungs würdig. Der große Vorteil war eben das es mit jeder klasse funktioniert hat ohne das ich diese in irgendeiner weise ändern musste (Vererbung oder dergleichen).

9

04.12.2004, 14:47

Ein Objektmanager ist API unabhängig. Nur Programmabhängig. Hm...ich weis nicht ob ein Objekt Manager wircklich so viel Nutzen bringt.
Wir nutzen jedenfalls keinen. Dafür aber ein Resourcen Manager. Ein Objekt besteht immer aus verschiedenen Resourcen (Mesh, Texturen, etc.). Der Resourcen Manager kümmert sich um das laden und entladen der Resourcen. Damit das au was bringt, liegt er erstens in einem anderen Thread und zweitens kann er au Resourcen währen der Laufzeit (InGame) entladen.
Das setzt natürlich einiges Voraus :)

Objekte in einer Liste zu verwalten und sie dann ständig suchen zu müssen, ist wircklich nicht die richtige Wahl. Es sollte dann eher einen Handle geben, der Angibt wo sich das Objekt befindet. Z.B. eine Adresse (wenn man std::list verwendet).
Der Vorteil eines Objektmanagers ist natürlich das man immer alle Objekte wieder freigibt. Spätestens wenn der Destruktor des Objektmanagers aufgerufen wird.
Wenn ein Objektmanager aber Objeke freigibt muss er sie auch laden können. Sonst ist es kein Manager mehr. Das setzt allerdings vorraus das der Objektmanager alle Objekte kennen muss. Man brauch als sowas wie eine Factory. Damit das Dynamisch bleibt, sollte es einen ObjMGr Client geben. Ein Objekt wird dann zusammen mit einer ID (Zahl, String) beim Manager Registriert und über die Factory kann dann der Manager das Objekt mit der ID erzeugen.


Void-Pointer sind zwar immer leicht zu handhaben, aber sie haben ein dickes fettes Problem. Man kann sie in jeden Pointer Konvertieren. Man läuft gefahr, das man ein void* in den Falschen Typ konvertiert und so das Programm einen nicht mehr Definierten zustand bekommt.
Man sollte also ein void* auf jedenfall vermeiden.
Wichtig! Ich übernehme keinerlei Verantwortung für eventl. Datenverlust oder Schäden am Rechner ;D

Dave

Alter Hase

  • »Dave« ist der Autor dieses Themas

Beiträge: 757

Wohnort: Berlin

  • Private Nachricht senden

10

04.12.2004, 17:44

so in die richtung gingen meine überlegungen auch. wie hast du dir das mit dem client gedacht? könntest du das noch ein bisschen ausführen?
im endeffekt komme ich aber immer zu dem schluss, dass es sich nicht lohnt. im prinzip ist der einzige wirkliche vorteil, dass mit dem destruktor des managers auch alle objekte ins daten-nirvana geschickt werden...
so ne art nachrichtensystem ist zwar auch was feines, braucht man aber eigentlich nicht wirklich.

Werbeanzeige