Zwischen verschiedenen BMX wechseln

Übersicht BlitzMax, BlitzMax NG Allgemein

Neue Antwort erstellen

 

Xar

Betreff: Zwischen verschiedenen BMX wechseln

BeitragFr, Okt 16, 2009 10:10
Antworten mit Zitat
Benutzer-Profile anzeigen
Verschiedene BMX zu verknüpfen usw. ist eine Sache. Aber was, wenn ich jetzt beispielweise 3 völlig eigene, unabhängige Spiele habe mit eigenen Modulen die ins sich eigenständig und prima funktionieren.

Nun möchte ich eine Spielesammlung programmieren, also eine Art Menu, in dem man ein Spiel anwählen kann, welches dann gestartet wird. Nach Beendigung rufe ich dann wieder das Menu BMX auf und man kann ein anderes Spiel starten. Da die Spiele völlig getrennt programmiert wurden, gibt es natürlich schnell mal Variabel-Überschneidungen.

Ich möchte also aus einem Programm ein anderes BMX aufrufen und ausführen (am besten ohne dass der Vollbildmodus zwischenzeitlich verschwindet), wobei jedoch beim Aufrufen des neuen Programms sämtliche Speicher freigegeben werden, alle Variabeln, Grafikspeicher, alles was das alte Programm an RAM belegt hat, tutti! Oder bzw. wenigstens so iel wie möglich. So also würde ich da Programm beenden und das andere manuell starten.

hat da jemand einen Hinweis? habe lange gesucht im Forum und Google, aber hierzu finde ich nichts (was in der Regel ja darauf hinweist, dass das Bedürfnis an sich schon ungewöhnlich und entsprechend vlt nicht sinnvoll ist, aber ich kenne die Alternative nicht)

DAK

BeitragFr, Okt 16, 2009 10:57
Antworten mit Zitat
Benutzer-Profile anzeigen
funktionen.


jedes game wird als ganzes in eine funktion gepackt und dann von dem menüteil aufgerufen.


oder, wenn du globale variablen nur für dieses eine game brauchst, dann mit types und methoden.
Gewinner der 6. und der 68. BlitzCodeCompo

DaysShadow

BeitragFr, Okt 16, 2009 12:19
Antworten mit Zitat
Benutzer-Profile anzeigen
Ja willst du jetzt drei Spiele einzeln erstellen sodass du dann drei .Exe hast oder die drei Spiele so verpacken dass du nur eine Exe hast?

Für das erste bräuchtest du nur system_(path) oder OpenURL(path) zu benutzen um dann eines der Spiele aufzurufen, beendest du das Spiel hast du immer das Menü am laufen.

Und das zweite könntest du eventuell mit Types lösen, dann gibt es auch keine Variablenüberschneidungen, jedes Spiel in einem Type organisiert halt.

MfG DaysShadow
Blessed is the mind too small for doubt

Der Eisvogel

BeitragFr, Okt 16, 2009 16:26
Antworten mit Zitat
Benutzer-Profile anzeigen
DAK hat Folgendes geschrieben:
funktionen.
jedes game wird als ganzes in eine funktion gepackt und dann von dem menüteil aufgerufen.
oder, wenn du globale variablen nur für dieses eine game brauchst, dann mit types und methoden.


Wozu Types und Methoden, er kann einfach Globale Variablen in der Funktion selbst machen. Das funktioniert.

MfG
Der Eisvogel
Ungarische Notation kann nützlich sein.
BlitzMax ; Blitz3D
Win 7 Pro 64 Bit ; Intel Core i7-860 ; 8 GB Ram ; ATI HD 5750 1 GB
Projekte: Window-Crasher
Ich liebe es mit der WinAPI zu spielen.
 

Xar

BeitragFr, Okt 16, 2009 16:39
Antworten mit Zitat
Benutzer-Profile anzeigen
Das ist mir soweit klar. Ich arbeite sehr oft mit GLOBAL, einfach weil ich für viele Dinge Funktionen schreibe (komme ATM noch besser klar damit als mit TYPE/METHOD) und ich innerhalb der Funktionen auf viele Variabeln und Bilder zugreifen muss, die ich nicht alle einzeln der Funktion übergeben kann (sind teilweise Hunderte).

Mein Gedanke war halt einfach der, pro Spiel lade ich sehr viel Bilmaterial und Variabeln in den Speicher. Und alles mit GLOBAL zu deklarieren pumpt mir den Speicher mit den Bildern von allen Spielen voll. Zudem möchte ich Überschneidungen vermeiden, kann ja sein dass ich in zwei unterschiedlichen Spielen ein Image namens "Spieler" oder so habe, das aber unterschiedlich ist, da ich zu dem Zeitpunkt nicht daran gedacht habe, das mal zu kombinieren.

Ich habe einfach Bedenken, den Speicher bis zum Bertsen vollzupumpen und möchte dort gelegentlich wieder freigeben was ich nicht benötige.


Den GRAPHICS Befehl neu aufzurufen würde mir glaub ich wenigstens die Bilder resetten, habe ich in einem Thread mal gelesen...hoffentlich reicht das, damitich keinen Memory Überlauf produziere...

Kann ich irgendwie checken, wie voll mein Arbeitsspeicher ist?

BtbN

BeitragFr, Okt 16, 2009 17:27
Antworten mit Zitat
Benutzer-Profile anzeigen
Die sauberste und mit BMax zu empfehlende Variante ist, dass jedes Spiel in einen eigenen Type gesteckt wird. Dort hat es einen eigenen Variablen-Raum zur verfügung, und kann Problemlos gelöscht und geladen werden.
 

klepto2

BeitragFr, Okt 16, 2009 19:33
Antworten mit Zitat
Benutzer-Profile anzeigen
Eine ganz andere Alternative könntest du es auch so machen:

baue deine slebstständigen Spiele per incbin in deine Menü Apllikation ein. Während der laufzeit erstellst du eine temporäre exe und startes dieser mit der TProcess Klasse. Nach beendigung löscht du die temp datei einfach wieder.
Matrix Screensaver
Console Modul für BlitzMax
KLPacker Modul für BlitzMax

HomePage : http://www.brsoftware.de.vu

DAK

BeitragSa, Okt 17, 2009 2:39
Antworten mit Zitat
Benutzer-Profile anzeigen
@eisvogel: btbn nimmt mir die worte aus dem mund...

reine globale variablen können unbeabsichtigt (2x den gleichen namen verwendet) von anderen programmteilen mitverwendet werden. diese sind darum soweit möglich zu vermeiden.
Gewinner der 6. und der 68. BlitzCodeCompo
 

Xar

BeitragSa, Okt 17, 2009 12:58
Antworten mit Zitat
Benutzer-Profile anzeigen
Ok, dann werde ich das so machen. Danke euch für die Hilfe!

Neue Antwort erstellen


Übersicht BlitzMax, BlitzMax NG Allgemein

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group