Files |  Tutorials |  Articles |  Links |  Home |  Team |  Forum |  Wiki |  Impressum

Aktuelle Zeit: Sa Jul 19, 2025 13:17

Foren-Übersicht » Programmierung » Einsteiger-Fragen
Unbeantwortete Themen | Aktive Themen



Ein neues Thema erstellen Auf das Thema antworten  [ 8 Beiträge ] 
Autor Nachricht
 Betreff des Beitrags: Stellt die Game-Engine das Fenster
BeitragVerfasst: Mi Mär 03, 2010 16:24 
Offline
DGL Member
Benutzeravatar

Registriert: Do Okt 16, 2008 13:18
Beiträge: 252
Hi,
ich schreibe an einer Game-Engine (welche ich vielleicht hier veröffentliche), ich bin jetzt an einem Punkt wo es um die Einstellungen geht. Meine Frage ist jetzt, ob die Game-Engine das Fenster erstellt, oder ob das Programm der Engine ein Fensterhandle übergibt.

_________________
You even trying ...

Website: http://rise-of-light.de/


Nach oben
 Profil  
Mit Zitat antworten  
BeitragVerfasst: Mi Mär 03, 2010 18:04 
Offline
Guitar Hero
Benutzeravatar

Registriert: Do Sep 25, 2003 15:56
Beiträge: 7810
Wohnort: Sachsen - ERZ / C
Programmiersprache: Java (, Pascal)
Was soll deine Engine denn können?
Ist sie Plattformunabhängig?

_________________
Blog: kevin-fleischer.de und fbaingermany.com


Nach oben
 Profil  
Mit Zitat antworten  
BeitragVerfasst: Mi Mär 03, 2010 18:20 
Offline
DGL Member
Benutzeravatar

Registriert: Do Okt 16, 2008 13:18
Beiträge: 252
Meine Engine ist soll die Logik (oder wird das von Spiel selbst gemacht und nicht in derEngine eingebunden?) und das Darstellen übernehmen. Bis jetzt denke ich ist sie Plattform unabhängig, ich muss jetzt allerdings eine Möglichkeit finden wie ich Fenster plattformunabhängig mache (oder sind das die Delphi 5 Fenster schon).

Für einen eventuellen Editor sollte sie allerdings auch auf einem Panel etc. darstellbar sein.

_________________
You even trying ...

Website: http://rise-of-light.de/


Nach oben
 Profil  
Mit Zitat antworten  
BeitragVerfasst: Mi Mär 03, 2010 19:07 
Offline
DGL Member
Benutzeravatar

Registriert: Do Dez 29, 2005 12:28
Beiträge: 2249
Wohnort: Düsseldorf
Programmiersprache: C++, C#, Java
Deine Engine sollte nur einige einfache Schnittstellen zur Anwendung haben. Beispielsweise könnte das so aussehen, also deine Engine bietet die folgenden Methoden an: initializeGL(), paintGL(), resizeGL(int width, int height)
Dann brauchst du noch die Möglichkeit irgendwie an Tastatur bzw. Mausevents zu kommen, fertig.

_________________
Yeah! :mrgreen:


Nach oben
 Profil  
Mit Zitat antworten  
BeitragVerfasst: Mi Mär 03, 2010 20:37 
Offline
DGL Member
Benutzeravatar

Registriert: Do Okt 16, 2008 13:18
Beiträge: 252
Ok,
ich hatte mir das so ähnlich gedacht war mir aber nicht sicher. Vorallem wie ich an Tastatur- und Maus-Events kommen soll, ohne das ich sie den onKeyPress etc der Form zuweise ist mir noch nicht ganz klar.

_________________
You even trying ...

Website: http://rise-of-light.de/


Nach oben
 Profil  
Mit Zitat antworten  
BeitragVerfasst: Mi Mär 03, 2010 21:02 
Offline
DGL Member
Benutzeravatar

Registriert: Do Sep 02, 2004 19:42
Beiträge: 4158
Programmiersprache: FreePascal, C++
Ich würde der Engine noch entsprechende Methoden geben, die du dann in den Events der Form aufrufst.

greetings

_________________
If you find any deadlinks, please send me a notification – Wenn du tote Links findest, sende mir eine Benachrichtigung.
current projects: ManiacLab; aioxmpp
zombofant networkmy photostream
„Writing code is like writing poetry“ - source unknown


„Give a man a fish, and you feed him for a day. Teach a man to fish and you feed him for a lifetime. “ ~ A Chinese Proverb


Nach oben
 Profil  
Mit Zitat antworten  
BeitragVerfasst: Mo Mär 08, 2010 17:26 
Offline
DGL Member
Benutzeravatar

Registriert: Di Apr 29, 2008 15:18
Beiträge: 62
mori hat geschrieben:
ich muss jetzt allerdings eine Möglichkeit finden wie ich Fenster plattformunabhängig mache (oder sind das die Delphi 5 Fenster schon).

Nein, die Delphi-Fenster funktionieren nur unter Windows. Aber es gibt eine recht einfache Möglichkeit, simple plattformunabhängige Fenster zu erstellen: SDL. Im Wiki gibt es ein gutes Tutorial dazu: Tutorial_SDL_Einstieg.

mori hat geschrieben:
Für einen eventuellen Editor sollte sie allerdings auch auf einem Panel etc. darstellbar sein.

Das ist schon schwieriger plattformunabhängig umzusetzen. Entweder zeichnest du die Fensterinhalte mit OpenGL, googel dafür mal nach OpenGL GUI.

Oder du erlaubst es dem Benutzer der Engine einfach zusätzlich, auch auf einem beliebigen Fenster zu zeichnen, das über das Handle definiert ist. Du kannst ja beide Möglichkeiten parallel als Alternative anbieten.

Grüße,
Yogu


Nach oben
 Profil  
Mit Zitat antworten  
BeitragVerfasst: Mo Mär 08, 2010 21:53 
Offline
DGL Member
Benutzeravatar

Registriert: Di Mai 18, 2004 16:45
Beiträge: 2623
Wohnort: Berlin
Programmiersprache: Go, C/C++
Die Frage wird die verschiedensten Antworten zu tage fördern, da es schon an der Interpretation von Engine unterschiedliche Definitionen gibt und in der Regel sind auch die meisten richtig.
Also gucke wir mal in existierende Software.
Graphic Engine:
Ogre3D hat ein Fenster-Interface welches auf verschiedene Bibliotheken wrappt und je nach compilersettings eines verwendet(erzeugt selber).
Irrlicht macht das gleiche(erzeugt selber).
Game Engine:
Unreal Engine 3 nutzt wxWidget und auf consolen die entsprechende api(erzeugt selber).
jMonkey(wenn ich das richtig nachgeschlagen habe nutzt es swing,awt und swt welches vom user programm fest glegt wird)
Unity3D nutzt die jeweilige FensterAPI des OS bzw. Browser Framebuffer(erzeugt selber)

Also die meisten Framework/Engines erstellen das Fenster selber, da man so mehr gewalt und weniger Fehlerquellen hat.
Man müsste ja sonnst dem Entwickler das umwandeln von Fensterevents, Tastaturcodes, Mauscodes und anderen Devices und Typen überlassen und das ist wirklich nicht einfach.
Ich bevorzuge die Auswahl zwischen den einzelnen Möglichkeiten aber überlasse dem Framework die Implementierung und pflege.
Dies realisiere ich durch ServiceProvider oder ServiceLocator aus der Java Welt bekannt.
Ein ServiceLocator wäre in dem Fall WindowServiceLocator und dann kann man von WindowService abgeleitete Klassen schreiben und im ServiceLocator registrieren.
Vor dem start der Application(Window/Gameloop) wähle ich also den gewünschten Service aus und setze ihn als Default.
Sollte wer nicht mit einer Implementierung zufrieden sein kann er sich ein klon machen und änderungen dran vornehmen und diesen noch zu den WindowServices hinzupacken ohne die anderen zu unterdrücken bzw. zu stören. Fenster im Spielebereich, auf PC, kann man eigentlich total simpel halten, indem man 3 Funktionen einbaut, Resize, StayOnTop und SetPosition.
Man vergrößert das GameFenster auf die Größe der Auflösung+Fensterrahmen und positioniert dann das Fenster so, das der rahmen ausserhalb des bildes liegt und setzt den fenstertyp auf dialog(stayontop). Das sind 3 Befehle und dann noch die Windowloop, leichter gehts nicht.
Ich bastel allerdings Frameworks und hab entsprechend wesentlich mehr in meinen Interface und das hat seinen Preis(kostet viel zeit zum portieren auf eine weitere Platform).

_________________
"Wer die Freiheit aufgibt um Sicherheit zu gewinnen, der wird am Ende beides verlieren"
Benjamin Franklin

Projekte: https://github.com/tak2004


Nach oben
 Profil  
Mit Zitat antworten  
Beiträge der letzten Zeit anzeigen:  Sortiere nach  
Ein neues Thema erstellen Auf das Thema antworten  [ 8 Beiträge ] 
Foren-Übersicht » Programmierung » Einsteiger-Fragen


Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 4 Gäste


Du darfst keine neuen Themen in diesem Forum erstellen.
Du darfst keine Antworten zu Themen in diesem Forum erstellen.
Du darfst deine Beiträge in diesem Forum nicht ändern.
Du darfst deine Beiträge in diesem Forum nicht löschen.
Du darfst keine Dateianhänge in diesem Forum erstellen.

Suche nach:
Gehe zu:  
  Powered by phpBB® Forum Software © phpBB Group
Deutsche Übersetzung durch phpBB.de
[ Time : 0.020s | 17 Queries | GZIP : On ]