Wie die meisten Webseiten nutzen wir Cookies. Nähere Informationen dazu, wie wir mit diesen Cookies umgehen, können Sie in unseren Datenschutzbestimmungen lesen.   Einverstanden
 
 

3D Forum > BLENDER gameengine - Savedata für *verschiedene* Werte eines Spieles erstellen?!?

BLENDER gameengine - Savedata für *verschiedene* Werte eines Spieles erstellen?!?

06.03.2013 02:06
 
sBLENDERkMi. 06 Mär. 2013, 02:06 Uhr
Hallo, Leute,


wie der Titel dieses Themas schon verrät suche ich eine Möglichkeit des Spielstand-speicherns vieler kompexer Werte eines Spieles, die allesamt benötigt werden um ein Spiel dementsprechend nach Neustart des Spieles wieder in seiner Gesamtheit aller veränderten spezifischen Aspekte jederzeit fortsetzen zu können, am besten in mehreren Speicherständen!

Mein genauer Anspruch wäre das es HALBWEGS unkompliziert gehen sollte ,
da ich nun mal leider so gut wie garkeine Programmier-Kenntnisse besitze u. auch NICHT UNBEDINGT vor hab mir RIESENGROßE anzueignen,
höchstens den Umgang mit vorgefertigten Script-Strukturen, welche aber kommerziell frei verwendbar sein sollten wie hier:



...dort bei diesem TUT macht er es zB. mit dem Spieler-Standpunkt u. Propety, was ich zwar auch nur so halb verstanden hab , aber womit man wohl alles realisieren könnte.
Aber wie mach ich es sinnvoll mit verschiedenen Werten damit diese GLEICHZEITIG wieder abrufbar sind und das am besten noch in möglichst wenigen Auslagerungsdateien-Dateien/SAVEDATA-Files ( wie es halt bei kommerziellen Spielen so üblich ist)?

Meine Fragen an euch:

-ob dies eurer Kenntniss nach überhaupt mit der BLENDER-Gameengine möglich wäre,
-und wen dann wie genau??!!

Ich zähle auf euch!

jegliche Anregungen u. Tipps sind erwünscht!
VIELEN DANK!
 
khaosMi. 06 Mär. 2013, 07:37 Uhr
Auch diesmal gilt: Es gibt ein Blender Forum hier -> dort hin verschoben.
 
khaosMi. 06 Mär. 2013, 08:10 Uhr
Und ich weis nicht so genau, wo jetzt exakt das Problem ist:

und das am besten noch in möglichst wenigen Auslagerungsdateien-Dateien/SAVEDATA-Files ( wie es halt bei kommerziellen Spielen so üblich ist)?

Mit diesem Verfahren kannst du alle Werte in einer Datei speichern. Du brauchst lediglich z.B. einen Serializer für Objekte die aus mehreren Variablen bestehen. Das ganze kann dann auch noch mittels Chunks aufgegliedert werden, etc.

Aber wie mach ich es sinnvoll mit verschiedenen Werten damit diese GLEICHZEITIG wieder abrufbar

Das ist nunmal sehr schwammig formuliert. Ich denke du meinst, dass die Daten wieder abgerufen werden können: Ja das können sie.
Jedoch ist das auch gleichzeitig über mehrere Threads möglich, was an sich gar nicht so schwer ist.
Hier ein Beispiel wie man das unter Windows realisieren kann:
HANDLE h = CreateFile("c:\test.txt", GENERIC_READ, FILE_SHARE_READ, NULL, OPEN_EXISTING, 0, NULL);

Wichtig ist hier das Flag FILE_SHARE_READ. Desweiteren muss das ganze im Context der Threads passieren.



Meiner Meinung nach musst du hier schon etwas programmieren - ein Spiel ohne Programmieren geht nunmal nicht so gut. Selbst beim RPG Maker brauchte man damals loops und switches und das alles,soweit ich das in Erinnerung hatte.
 
TilesMi. 06 Mär. 2013, 09:24 Uhr
Auch die Logic Bricks sind eine Art von programmieren. Nur dass du da deinen Code nicht selberschreibst.

halb verstanden


Bevor du Sonderwünsche einbaust wäre es erst mal nötig die Grundlagen VOLL zu verstehen. Wird ja eigentlich wunderbar erklärt wie es geht.

Hast du denn die Geschichte mal nachgebaut und ausprobiert?
 
sBLENDERkDo. 07 Mär. 2013, 01:28 Uhr
Danke erstmal für eure Antworten.

Auch die Logic Bricks sind eine Art von programmieren. Nur dass du da deinen Code nicht selberschreibst.

Ja, ich weiß, dass es im Prinzip nur Baukasten-Programierung ist,
aber ich dachte halt dass es noch andere bessere oder unkompliziertere Methoden (als er beschreibt) u. Tipps geben könnte,
oder ganz bestimmte Angelegenheiten, die ZUSÄTZLICH zu beachten sind, die er nicht erwähnt hat o. so
und mir das ganze eingehender auf unkompliziertere Art u. Weise klarmachen könnte.

PS: KHAOS, darum vergiss bitte nicht NICHT zuviele Fachausdrücke UND SO zu verwenden.


HALB VERSTANDEN?

Bevor du Sonderwünsche einbaust wäre es erst mal nötig die Grundlagen VOLL zu verstehen. Wird ja eigentlich wunderbar erklärt wie es geht.

Hast du denn die Geschichte mal nachgebaut und ausprobiert?


*...so halb verstanden...*
in meiner Fragestellung bedeutet diese Anspielung halt schon, dass ich es zu einem wesentlichen Maße verstanden hab,
aber ist halt Neuland für mich, weshalb ich halt nicht einschätzen kann, ob die ganze Sache doch noch hier u. da ein bisschen haariger werden könnte als VERMUTET, warum ich als Anfänger halt sicherheitshalber noch mal etwas genauer nachfrage, da es bei 'ner breiten Angelegenheit wie nem Spiel ja bestimmt VIEL zu beachten gibt.

Und nein, kam leider noch nicht dazu es in der Praxis zu probieren, aber hab's SOWEIT gecheckt.

am besten noch in möglichst wenigen Auslagerungsdateien-Dateien/SAVEDATA-Files ( wie es halt bei kommerziellen Spielen so üblich ist)?

Sorry, die Frage erscheint mir jetzt selber auch blöd

Sorry, ich weiß ja, ich hab mich ein bisschen ungenau o. vielleicht auch ZU genau ausgedrückt,
aber will mich ja jetzt nicht nur rechtfertigen müssen






MEINE speziellen FRAGEN :

Mir stellen sich z.B noch explizite Fragen wie z.B:
"
1.
Wird im LAUFENDEN Spiel bei einem Scene-Wechsel UNTER ALLEN UMSTÄNDEN der
Propety-Wert eines Objektes in
der WEGgeswitchen Scene noch so beibehalten/weitergezählt
(um es nach SCENE-WECHSEL noch ins Save-Skript eintragen lassen zu können)
, obwohl die Scene scheinbar ja nicht mehr aktiv ist und das Script meinetwegen z.B auf einer ganz anderen Scene ist (?)oder ist es halt nur Scene-intern(?), so dass man für jede Scene ein neues Save-Script bräuchte????
Und WENN wie synchronisiere ich dies dann genau?
2.

Hier ein Beispiel wie man das unter Windows realisieren kann:
HANDLE h = CreateFile("c:\test.txt", GENERIC_READ, FILE_SHARE_READ, NULL, OPEN_EXISTING, 0, NULL);



Wichtig ist hier das Flag FILE_SHARE_READ. Desweiteren muss das ganze im Context der Threads passieren.


...bitte noch mal etwas KOPFGERECHTER für Anfänger!
3.
Wie GENAU bau ich mit dem von ihm vorgegeben Script (wenn' s damit geht?) die Möglichkeit mehrerer Spielstände UND die Möglichkeit diese dann im LAUFENDEN Spiel abrufbar zu machen!
HINWEIS: vorgefertigte Scripts wo man selbst entsprechend nur bisschen dran ändern muss sind erwünscht! smile
"

Freu mich auf Antworten
 
TilesDo. 07 Mär. 2013, 08:56 Uhr
HINWEIS: vorgefertigte Scripts wo man selbst entsprechend nur bisschen dran ändern muss sind erwünscht! smile


Das ist No Go. Niemand wird dir dein Spiel entwickeln. Das ist dein Job. Ausser du zahlst gut dafür.

Und nein, kam leider noch nicht dazu es in der Praxis zu probieren, aber hab's SOWEIT gecheckt.


Na wenn du es gecheckt hast, wieso frägst du dann noch? smile

Grau ist alle Theorie. Ohne Praxis geht mal gar nichts. Denn nur mit einem praktischen Beispiel kannst du zum Beispiel hergehen und einfach mal ausprobieren wie das was du da machen willst denn gehen könnte. Und wenn du nicht so ne faule Socke wärst dann hättest du schon lang dein "vorgefertigtes Script wo man selbst entsprechend nur bisschen dran ändern muss". Im Video wird beschrieben wie es geht.

Dieses einfach mal ein praktisches Beispiel basteln und damit rumspielen ist einer der wichtigsten Entwicklungsschritte und nennt sich Prototyping. Und wenn du dich hartnäckig weigerst das selber zu machen kann ich dir leider auch nicht mehr weiterhelfen.

Konkret wäre ich sowieso keine grosse Hilfe. Ich verwende die BGE nicht.
 
khaosDo. 07 Mär. 2013, 10:14 Uhr
1.
Wird im LAUFENDEN Spiel bei einem Scene-Wechsel UNTER ALLEN UMSTÄNDEN der
Propety-Wert eines Objektes in
der WEGgeswitchen Scene noch so beibehalten/weitergezählt
(um es nach SCENE-WECHSEL noch ins Save-Skript eintragen lassen zu können)
, obwohl die Scene scheinbar ja nicht mehr aktiv ist und das Script meinetwegen z.B auf einer ganz anderen Scene ist (?)oder ist es halt nur Scene-intern(?), so dass man für jede Scene ein neues Save-Script bräuchte????
Und WENN wie synchronisiere ich dies dann genau?


Es gäbe hierzu mehrere Möglichkeiten - wobei ich auch lediglich aus dem programmiertechnischen Aspekt argumentiere.
  • Du kannst die alte Scene im Speicher behalten, um sie dann später zu serialisieren.
  • Während die Scene gewechselt wird kann sie in die entsprechende Datei gespeichert werden, alle weiteren Daten aus späteren Scenen können natürlich, falls ein öffnen der Datei ohne Löschung der Inhalte möglich ist, persistent hineingeschrieben werden.

Es ist und bleib dann lediglich wichtig das jedes nicht atomare Objekt weis wie es serialisiert wird, und auch wieder gelesen werden kann. Dann kannst du einfach über alle Element in deiner Scene traversieren, etc.


3.
Wie GENAU bau ich mit dem von ihm vorgegeben Script (wenn' s damit geht?) die Möglichkeit mehrerer Spielstände UND die Möglichkeit diese dann im LAUFENDEN Spiel abrufbar zu machen!
HINWEIS: vorgefertigte Scripts wo man selbst entsprechend nur bisschen dran ändern muss sind erwünscht!


Mehrere Spielstände: Gebe ihnen eine uniquen Namen, z.B. das Datum, die Uhrzeit, eine Zahl zwischen 1 und +infinity

Im laufenden Spiel abrufbar: Du weist ja wo deine Spielstände hingeschrieben wurden, also kannst du auch das Verzeichnis auslesen - mit all seinen Dateien.
 
sBLENDERkFr. 08 Mär. 2013, 06:28 Uhr
Danke für die Antwort(en )

Grau ist alle Theorie. Ohne Praxis geht mal gar nichts.

Stimm ich dir nicht zwangsläufig zu
Und wenn du nicht so ne faule Socke wärst dann hättest du schon lang dein "vorgefertigtes Script wo man selbst entsprechend nur bisschen dran ändern muss". Im Video wird beschrieben wie es geht.

wie schon erwähnt hab ich am erbsenzählenden scripten kein Interesse umsonst würd' ich ja nicht die Blender Logig-bricks verwenden oder?
außerdem sind Foren im weitesten Sinne da um den Aufwand möglichst zu verringern.
Nun, natürlich kann ich auch 3Jahre an eim Problem knobbeln, es dann lösen u. Stolz drauf sein,
dass ich es allein lösen konnte
o. ich mach' mir da einfach nichts vor u. frag' nach bevor ich Zeit verschwende u. mich dran kaputt mache
Das ist No Go. Niemand wird dir dein Spiel entwickeln. Das ist dein Job. Ausser du zahlst gut dafür.

Nun, ich erwarte dementsprechend mal davon abgesehen ja nicht gleich, dass man mir ein ganzes Spiel,sondern lediglich vielleicht nur ein kurzes kleines Script daraus nahelegt.
Da scheiden sich ja in der Tugend bekanntlich die Geister, nicht wahr!
Konkret wäre ich sowieso keine grosse Hilfe. Ich verwende die BGE nicht.

....mmh, fraglich, wieso gibst du denn dann überhaupt einen Kommentar ab?
willst du mir also helfen o. nur eine moralpredigt halten?

Also wirklich, Tiles, ich sag das ungern, aber (ohne es wirklich bösen zu meinen) wenn du eh nicht produktiv bist, doch eher provokativ dann verschwende doch bitte erst garnicht meine Zeit, ja!






GUT, NUN ZUM WESENTLICHEN:

Ich glaub' ich weiß worauf du hinaus willst, khaos,
Vielen Dank, hat mich in Bezug auf Speicherstände
u. Scenes auf paar gute Ideen gebracht ,
ob die sich in der Praxis auch bewerkstelligen lassen, wird sich denk ich noch herausstellen müssen.

Im laufenden Spiel abrufbar: Du weist ja wo deine Spielstände hingeschrieben wurden, also kannst du auch das Verzeichnis auslesen - mit all seinen Dateien.


Verstehe, darauf hinaus hat sich mir noch eine wichtige Frage gestellt,
unzwar kann (u. wenn wie) ich in Python o. in den Gamebricks vom (also auch "mit dem") laufenden Blender-Game Snapshots (mit exakter Skalierung) machen u. dauerhaft im gleichen Blender-Game-Verzeichnis speichern???

 
TilesFr. 08 Mär. 2013, 09:40 Uhr
Grau ist alle Theorie. Ohne Praxis geht mal gar nichts.
Stimm ich dir nicht zwangsläufig zu


Nun. Das sind Erfahrungswerte die ich über die Jahre angesammelt habe. Aber wie du meinst. Vielleicht lernst du es noch. Man soll die Hoffnung ja nie aufgeben.

....mmh, fraglich, wieso gibst du denn dann überhaupt einen Kommentar ab?
willst du mir also helfen o. nur eine moralpredigt halten?


Wenn ich dir eine Moralpredigt hätte halten wollen hätte ich das auch getan.

Ich sage was dazu weil ich Ahnung davon habe. Und weil ich mein Wissen gerne weitergebe. Ich entwickle seit dem letzten Jahrtausend Games mit den unterschiedlichsten Tools und Scriptsprachen. Und da lernt man im Lauf der Jahre eben ein paar GRUNDSÄTZLICHE ARBEITS- UND HERANGEHENSWEISEN, die FÜR ALLE SYSTEME gelten.

Wenn ich dir dein Script schreibe habe ich dir kurzfristig geholfen. Wenn ich dir eine brauchbare Herangehensweise zeige die dich überall zum Ziel führt habe ich dir langfristig geholfen. Und genau das habe ich getan.

Was du aus dieser angebotenen Hilfe machst ist natürlich deine Angelegenheit. Ich kann mein Wissen und meine Erfahrung nur zur Verfügung stellen.

wie schon erwähnt hab ich am erbsenzählenden scripten kein Interesse umsonst würd' ich ja nicht die Blender Logig-bricks verwenden oder?
außerdem sind Foren im weitesten Sinne da um den Aufwand möglichst zu verringern.
Nun, natürlich kann ich auch 3Jahre an eim Problem knobbeln, es dann lösen u. Stolz drauf sein,
dass ich es allein lösen konnte
o. ich mach' mir da einfach nichts vor u. frag' nach bevor ich Zeit verschwende u. mich dran kaputt mache


Du sollst das gar nicht allein lösen. Du sollst aber auch nicht einfach die Arbeit von anderen erledigen lassen. Wenn du noch nicht mal bereit bist die WESENTLICHEN Grundlagen zu lernen, noch nicht mal bereit bist zu zeigen wo du grade stehst und ein Beispiel zu liefern an dem man rumknobeln kann, sondern einfach ein "MACHT MAL FÜR MICH" in den Raum knallst, wieso sollte ich dann bereit sein dir in irgendeiner Form auch noch deine Faulheit zu unterstützen und dir den Arsch hinterherzutragen? Dafür sind Foren eben NICHT da.

Diese "erbsenzählenden Scripte" sind die Grundlage für das was du tun willst. Und das gilt auch für die Bricks. Das auszulassen ist wie lesen lernen wollen und dabei die Buchstaben ignorieren.

Also wirklich, Tiles, ich sag das ungern, aber (ohne es wirklich bösen zu meinen) wenn du eh nicht produktiv bist, doch eher provokativ dann verschwende doch bitte erst garnicht meine Zeit, ja!


Wenn hier überhaupt jemand provokativ und unproduktiv bist dann bist das du mein Freund. Du verschwendest meine Zeit, nicht umgedreht. Ich brauche nicht mehr lernen wie man ein Spiel entwickelt. Ich bin auch in keinster Weise dazu verpflichtet dir zu helfen. Ein Forum ist kein Wunschbrunnen. Und Unfreundlichkeit ist da ganz bestimmt nicht förderlich. Von mir wirst du jedenfalls keine Hilfe mehr bekommen.


Ein Wort noch als Mod: Schraub mal bitte dein Aggrolevel runter. Sonst mache ich hier zu.
 
khaosFr. 08 Mär. 2013, 12:03 Uhr
Falls ich deine Frage richtig verstanden haben sollte, willst du einen Screenshot vom Spiel erstellen?

Ich kann mir durchaus vorstellen das es in Python möglich ist. Naheres dazu findet man bestimmt auch in der Doc.

Aber ich kann Tiles nur zustimmen: Wenn man ein Spiel programmieren will kommt man zwangsläufig nicht drum rum programmieren zu lernen da man an einem Punkt ankommt an dem es mit simplen zusammenwürfeln von Scripten nicht getan ist. Das Denken kann einem auch niemand abnehmen.
 
 

 


 
 
© 3D-Ring - deutsche 3D Software Community, Archiv 2001 - 2006