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

Chase

Alter Hase

  • »Chase« ist der Autor dieses Themas

Beiträge: 753

Wohnort: Nagaoka / Darmstadt / Düsseldorf

Beruf: fauler Studi

  • Private Nachricht senden

1

27.07.2006, 19:09

Anwendung neu starten

So, ich habe endlich mein Menu fertig (btw der schlechteste Code den ich seit 3 Jahren geschrieben habe :x ..) und habe jetzt einige Grafikoptionen zur Auswahl gestellt. (Bild)
Klickt man jetzt auf 'Save' wird die aktuelle Konfiguration in einer Datei gespeichert, und beim naechsten Spielstart verwendet. "Professionelle" Spiele gehen dann unterschiedlich vor: Entweder es wird eine Nachricht ausgegeben, die darauf hinweist dass Aenderungen erst beim naechsten Start wirksam werden, oder aber die Anwendung startet neu damit zb die Aufloesung sofort geaendert wird.
Genau das will ich machen: Meine Anwendung beenden und sofort neu starten. In der MSDN hab ich zwar Funktionen wie "RegisterApplicationRestart" gefunden, aber die sind wohl bloss Vista vorbehalten. Kennt da jemand was aus der Win-API, oder vielleicht ein CMD ?
"Have you tried turning it off and on again?"

Nox

Supermoderator

Beiträge: 5 272

Beruf: Student

  • Private Nachricht senden

2

27.07.2006, 19:14

Warum gleich alles neustarten? Die professionellen erstellen doch meistens auch nur die Device und alles was dran hängt neu.
PRO Lernkurs "Wie benutze ich eine Doku richtig"!
CONTRA lasst mal die anderen machen!
networklibbenc - Netzwerklibs im Vergleich | syncsys - Netzwerk lib (MMO-ready) | Schleichfahrt Remake | Firegalaxy | Sammelsurium rund um FPGA&Co.

grek40

Alter Hase

Beiträge: 1 491

Wohnort: Dresden

  • Private Nachricht senden

3

27.07.2006, 19:16

Muss es wirklich ein Neustart sein, oder reicht es vielleicht auch, eine do-while Schleife in die Main zu bauen, die prüft, ob das Game von vorn losgehen soll?

koschka

Community-Fossil

Beiträge: 2 862

Wohnort: Dresden

Beruf: Student

  • Private Nachricht senden

4

27.07.2006, 19:22

Zitat von »"Nox"«

...erstellen doch meistens auch nur die Device und alles was dran hängt neu....

Chase

Alter Hase

  • »Chase« ist der Autor dieses Themas

Beiträge: 753

Wohnort: Nagaoka / Darmstadt / Düsseldorf

Beruf: fauler Studi

  • Private Nachricht senden

5

27.07.2006, 19:23

Ja Device neu erstellen ist bei mir so ne Sache..
DirectX wird per Tribase initialisiert, und innerhalb dieser Methode Init() wird beispielsweise auch das Fenster erzeugt. Wenn ich jetzt die Aufloesung aender, komm ich ja garnet mehr an das Fenster dran, bzw ich habe noch nichtmal ein Handle..
Ich dachte immer dass manche professionellen Spiele einen Neustart durchfuehren, da der Desktop kurzzeitig sichtbar wird, etc. aber wahrscheinlich ist das nur das Entfernen des alten und Erstellen des neuen Fensters..
Gibts unter Windows denn keine Moeglichkeit sowas wie einen Neustart durchzufuehren ?
"Have you tried turning it off and on again?"

Nox

Supermoderator

Beiträge: 5 272

Beruf: Student

  • Private Nachricht senden

6

27.07.2006, 19:25

-_- nur dass das Fenster weg ist, bedeutet nicht, dass das Programm auch weg ist. Mach es nicht komplizierter als es ist!

P.S: Ein Fenster ist abhängig von einem Prozess, ein Prozess jedoch nicht von einem Fenster :!:
PRO Lernkurs "Wie benutze ich eine Doku richtig"!
CONTRA lasst mal die anderen machen!
networklibbenc - Netzwerklibs im Vergleich | syncsys - Netzwerk lib (MMO-ready) | Schleichfahrt Remake | Firegalaxy | Sammelsurium rund um FPGA&Co.

koschka

Community-Fossil

Beiträge: 2 862

Wohnort: Dresden

Beruf: Student

  • Private Nachricht senden

7

27.07.2006, 19:28

entweder du kopierst das erstellen des Fensters vor die Init Funktion, was ja wohl ohne weiteres mgl. wäre oder du kodest dir einfach eine funktion Reset.

Aber echt, ich frag miich was das soll. Ist es nicht sinnvoller das Spiel erstmal zu machen, als das Menü? Die Konfiguration kannst du doch in eine INI schreiben, die am Anfang ausgelesen wir, oder in sonstein Format.

Chase

Alter Hase

  • »Chase« ist der Autor dieses Themas

Beiträge: 753

Wohnort: Nagaoka / Darmstadt / Düsseldorf

Beruf: fauler Studi

  • Private Nachricht senden

8

27.07.2006, 19:36

koschka
Das Spiel ist sogut wie fertig und ich lese ja auch aus einer Datei aus :)

Aber per Tribase ein neues Fenster erstellen tu ich mir nicht an. Das hiesse ja ich muss die Engine runterfahren, wobei alle Texturen released werden. Diese les ich aber dummerweise beim ersten Erzeugen eines Objektes ein, und so weiter und sofort.
Ergo, wenn ich gewusst haette das ich die Engine mal waehrend des Programmst komplett neu laden muss haette ich wohl einiges anders geschrieben.
Thx fuer Eure Hilfe, ich bastel dann schon mal die "Changes will take effect after next restart" Meldung :)
"Have you tried turning it off and on again?"

koschka

Community-Fossil

Beiträge: 2 862

Wohnort: Dresden

Beruf: Student

  • Private Nachricht senden

9

27.07.2006, 19:41

Du wirst es wohl nicht vermeiden können tbExit aufzurufen, da du an die Dx Schnittstellen nur dann Freigegeben werden.


Ich würde schnell mir 1h hinsetzen und einen WinAPI Dialog besteln, der die Einstellungen ausliest aus einer Datei beliebigen Formates und das neue Format wieder in diese Datei reinschreibt.

Ausserdem, will die Tribase nicht sowieso bei jedem Neustart ne Konfiguration?

Chase

Alter Hase

  • »Chase« ist der Autor dieses Themas

Beiträge: 753

Wohnort: Nagaoka / Darmstadt / Düsseldorf

Beruf: fauler Studi

  • Private Nachricht senden

10

27.07.2006, 19:51

Jo die TB will jedesmal ne Konfiguration. Aber wo die herkommt ist eigentlich egal. Anstelle des Tribase-Dialoges les ich einfach alles aus einer Datei ein, da is net das prob.
Und warum n WinAPI Dialog? Erstens kannst du die Zeit die ich dafuer als Anfaenger brauche locker mit 10 multiplizieren, und ausserdem kann ich dan ja gleich den Tribase-Dialog nehmen. Ich lass einfach alles so wie es ist: Will jemand die Aufloesung aendern muss er das Spiel halt manuell neu starten.

Nachstes Mal mach ich alles besser ;)
"Have you tried turning it off and on again?"

Werbeanzeige