JLI Spieleprogrammierung Foren-Übersicht JLI Spieleprogrammierung

 
 FAQFAQ   SuchenSuchen   MitgliederlisteMitgliederliste   BenutzergruppenBenutzergruppen 
 medals.phpMedaillen   RegistrierenRegistrieren   ProfilProfil   Einloggen, um private Nachrichten zu lesenEinloggen, um private Nachrichten zu lesen   LoginLogin 

Engine/System Kopplung

 
Neues Thema eröffnen   Neue Antwort erstellen    JLI Spieleprogrammierung Foren-Übersicht -> Projekte
Vorheriges Thema anzeigen :: Nächstes Thema anzeigen  
Autor Nachricht
Christian Rousselle
Site Admin


Alter: 47
Anmeldedatum: 19.07.2002
Beiträge: 1630

Medaillen: Keine

BeitragVerfasst am: 29.08.2003, 10:15    Titel: Engine/System Kopplung Antworten mit Zitat

Hallo,

ich bin gerade dabei ein paar Demos zu schreiben. Ich würde gerne meine Engine möglichst von außern konfigurierbar machen.

Momentan denke ich daran, zwei getrennte Applikationen zu schreiben. Einmal die Engine und einmal die Konfigurationsapplikation. Die Konfigurationsapplikation soll ein Dialogfenster sein, in dem man Einstellungen usw. vornehmen kann. Mein Problem ist momentan die Form der Kommunikation zwischen beiden. Man könnte die generelle Kommunikation über Messages realisieren.

Das Problem ist aber viel eher, wie die Engine ihren Status (Einstellungen, Rendermode, Texturnamen usw.) nach außen bekannt und konfigurierbar macht. Ideen?

Christian
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden
X-FILE
Super JLI'ler



Anmeldedatum: 12.07.2003
Beiträge: 349

Medaillen: Keine

BeitragVerfasst am: 29.08.2003, 11:18    Titel: Antworten mit Zitat

Hallo Christian,

ich hoffe das hilft dir, weil ich nicht sicher bin, ob ich richtig verstanden habe, was du willst. Aber ich hab jetzt erst aehnliches gemacht.

Ich hab das bei mir so gemacht:
Ich hab eine MFC-Anwendung geschrieben, die alle fuer meine "Engine" relevanten Daten einstellen kann (Adapter, Farbtiefe, Schatten, Wieviele Billboardstages usw, usw...). Das schreibt das Ding in eine (noch nicht binaere) Textdatei. Wird die Engine dann aufgerufen, ruft diese die verschiedenen Funktionen auf und belegt die Variablen damit.

Zu anfangs tand eben eine Texttdatei, die sozusagen Vorkonfigueriert war von der Engine. D.h. so wie die Engine Initial aufgerufen wird. Die wird dann neu geschrieben wenn die Anwendung aufgerufen wird.

Aber du willst wohl die Parameter waehrend der Laufzeit aendern, oder? Das geht ja nur mit MFC-Anwendunge denke ich, so wie im SDK beschrieben?
Kommt eben drauf an, wie ich dich jetzt richtig verstanden habe Wink
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Christian Rousselle
Site Admin


Alter: 47
Anmeldedatum: 19.07.2002
Beiträge: 1630

Medaillen: Keine

BeitragVerfasst am: 29.08.2003, 11:23    Titel: Antworten mit Zitat

Hallo,

du hast es richtig verstanden. Ich will die Eigenschaften zur Laufzeit ändern. Das es geht ist mir klar, ich suche momentan nach einem eleganten Weg.

Christian
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden
X-FILE
Super JLI'ler



Anmeldedatum: 12.07.2003
Beiträge: 349

Medaillen: Keine

BeitragVerfasst am: 29.08.2003, 12:01    Titel: Antworten mit Zitat

hi,

ok sorry Embarassed . Dann wars ned sonderlich hilfreich. Ne da kann ich auch nix zu sagen Wink
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: 29.08.2003, 12:35    Titel: Antworten mit Zitat

Hmm... ob es sowas wie Memory Sharing gibt, weiß ich nicht. Mir fallen aber 2 Möglichkeiten ein:

- Über die Nachrichtenschleife
- Übers Netzwerk
_________________
*click* Dabuu!?
Twitter: http://twitter.com/Ollie_R
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Christian Rousselle
Site Admin


Alter: 47
Anmeldedatum: 19.07.2002
Beiträge: 1630

Medaillen: Keine

BeitragVerfasst am: 29.08.2003, 13:17    Titel: Antworten mit Zitat

Hallo,

die Kommunikation ist mir klar, ich probiere es gerade per OLE/COM. Das ist nicht das Problem, das Problem ist viel mehr, wie man es elegant macht.

Z.B. gibt es eine Terrain-Klasse. Hier würde ich gerne Eingenschaften wie Texturen, Heightmap usw. außerdem gibt es Statechanges (z.B. für Alpha, Filter usw.). Das alles sollte konfigurierbar sein. Bei dem Fenster/Rendertarget sollte man Dinge wie Größe, Auflösung usw. konfigurieren können.

Christian
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: 29.08.2003, 13:33    Titel: Antworten mit Zitat

Achso.

Ich würde das mit einem Message Daemon als Knotenpunkt lösen. Jedes Objekt, dass an der Kommunikation teilnehmen will implementiert ein Interface und wird somit Client des Daemons. Der Daemon verteilt beim Registrieren IDs und speichert die Clients in einer Liste. Desweiteren muss der Daemon Nachrichten entgegen nehmen und sie an den richten Empfänger weiterleiten, der die Nachricht dann über eine Methode verarbeitet. Als Nachrichten-Struktur würde ich einen Varianttypen nehmen:

Code:

struct SMessage
{
   int type;

   union
   {
        ...
   }
};


[Nachtrag]
Anstelle des Variant bietet sich auch boost::any an. ;)
_________________
*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: 30.08.2003, 12:09    Titel: Antworten mit Zitat

Kein Feedback?
_________________
*click* Dabuu!?
Twitter: http://twitter.com/Ollie_R
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Christian Rousselle
Site Admin


Alter: 47
Anmeldedatum: 19.07.2002
Beiträge: 1630

Medaillen: Keine

BeitragVerfasst am: 31.08.2003, 01:35    Titel: Antworten mit Zitat

doch, ich bastel gerade an einer Lösung.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden
Christian Rousselle
Site Admin


Alter: 47
Anmeldedatum: 19.07.2002
Beiträge: 1630

Medaillen: Keine

BeitragVerfasst am: 05.09.2003, 07:37    Titel: Antworten mit Zitat

Guten Morgen,

hier mal ein Versuch die Windows-Initialisierung zu kapseln. Wer Lust/Zeit hat, bitte mal runterladen und gucken, ob es Sinn macht, schön ist, was man verbessern könnte usw.. Besonders bei der Klasse CWindow und RegisterMessageHandlers() bin ich mir nicht sicher, ob es besser klassisch, mit einer überschriebenen MessageHandler-Methode und switch-Statement, schöner wäre.

SimpleWinApp

Christian


Zuletzt bearbeitet von Christian Rousselle am 05.09.2003, 11:51, insgesamt einmal bearbeitet
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden
X-FILE
Super JLI'ler



Anmeldedatum: 12.07.2003
Beiträge: 349

Medaillen: Keine

BeitragVerfasst am: 05.09.2003, 11:46    Titel: Antworten mit Zitat

Hallo,

nur um dich darauf aufmerksam zu machen - der Link funktioniert nicht. Wink
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Christian Rousselle
Site Admin


Alter: 47
Anmeldedatum: 19.07.2002
Beiträge: 1630

Medaillen: Keine

BeitragVerfasst am: 05.09.2003, 11:52    Titel: Antworten mit Zitat

Mist Rolling Eyes und ich habe mich schon gewundert, warum niemand antwortet. Vielen Dank.
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: 05.09.2003, 12:42    Titel: Antworten mit Zitat

Meiner Meinung nach eine sehr saubere und elegante Lösung. Das Messagehandlersystem gefällt mir... ich werd auf jeden Fall mal mit rumspielen. :)
Nur einen kleinen Kritikpunkt hätte ich da und zwar das "using namespace std;" in den Headern. Dadurch zwingt man Benutzern diesen Namespace auf. Ich würde in den Headern immer std::bla schreiben und "using std::bla" in den CPP Dateien benutzen.
_________________
*click* Dabuu!?
Twitter: http://twitter.com/Ollie_R
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
AFE-GmdG
JLI MVP
JLI MVP


Alter: 44
Anmeldedatum: 19.07.2002
Beiträge: 1374
Wohnort: Irgendwo im Universum...
Medaillen: Keine

BeitragVerfasst am: 05.09.2003, 12:57    Titel: Antworten mit Zitat

Ich hab mir den Quelltext zwar noch nicht angeschaut, aber meines erachtens läßt sich sowas sehr gut über eine definierte Pluginschnittstelle lösen. Das zweite, externe Programm wird als Plugin für das Hauptprogramm programmiert und muß eine (mehrere) Funktion(en) bereitstellen, die vom Hauptprogramm aus aufgerufen werden können.
_________________
CPP:
float o=0.075,h=1.5,T,r,O,l,I;int _,L=80,s=3200;main(){for(;s%L||
(h-=o,T= -2),s;4 -(r=O*O)<(l=I*I)|++ _==L&&write(1,(--s%L?_<(L)?--_
%6:6:7)+\"World! \\n\",1)&&(O=I=l=_=r=0,T+=o /2))O=I*2*O+h,I=l+T-r;}
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen
Christian Rousselle
Site Admin


Alter: 47
Anmeldedatum: 19.07.2002
Beiträge: 1630

Medaillen: Keine

BeitragVerfasst am: 05.09.2003, 13:03    Titel: Antworten mit Zitat

Guter Hinweis, danke. Bitte sag bescheid, wenn dir nochwas auffällt.

Christian
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 -> Projekte Alle Zeiten sind GMT
Seite 1 von 1

 
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