Neuausrichtung

Das in letzter Zeit einige Rückschläge habe hinnehmen müssen bzw. das einiges nicht so Funktioniert hat wie ich wollte hatte man ja lesen können. Ebenso das sich bei mir einiges an Frustration über mein nicht-können angestaut hat. Das Gipfelte dann vor kurzen darin das mein Komplettes Wochenende im Eimer war.

So konnte und durfte das nicht weitergehen. Offensichtlich muss ich einen so jämmerlichen Eindruck gemacht haben das sich ein guter Freund genötigt sah mir den Kompass neu einzustellen.

Nunja … es gewirkt. Space Opera wird vorerst auf Eis gelegt.
Dafür wird ein altes Spiel was ich gaaaanz zu beginn Programmiert habe wiederbelebt und weiter ausgebaut.

Hier der Downloadlink zu ursprünglichen Version von „Klickspiel

Das Spielprinzip ist ziemlich simpel.
Man muss auf den sich bewegenden Punkt klicken. Schaft man das, bekommt man Punkte gut geschrieben. Schaft man das nicht, werden Punkte abgezogen. Bei 0 Punkten beendet das Spiel.

Ich möchte das Simple weiter ausbauen. Zuerst soll mal ein anständiges Hauptmenü erstellt werden. Dann drei Schwierigkeitsgrade, und was mir sonst noch so einfällt.

Viel Spaß bei Spielen 🙂

GameStateManager, Content Unload und Frustration

Durch Zufall habe ich ein ziemlich großes Problem in meinem aktuellen GamestateManager gefunden.

Vereinfacht gesagt ist ein GamestateManager ein Code der die verschiedenen Screens verwaltet. Wenn ich das Spiel starte, soll zuerst ein Screen kommen mit dem Titel des Spiels, dann einer für das Hauptmenu, im anschluß daran der für das Spiel, Laden, Speicher etc.

Jeder dieser Screens hat seinen eigenen Inahlt. Im Titelscreen ist das nur ein Hintergrund und ein kleiner Text für die Versionsummer.
Im Hauptmenu wird das dann schon komplexer, Bilder für Buttons und Rectangels um diese zu bedienen, dazu noch funktionen für das einfärben bzw. austauschen von Buttons. Nicht zu vergessen das daß anklicken eines Buttons wiederum einen neuen Screen auslöst.

All diese Bilder, Funktionen etc. benötigen Speicher. Nachdem man das Spiel gestartet hat, braucht man aber weder den Titelscreen, noch den Hauptmenuscreen. Diese sollten aus dem speicher entfernt werden. Dafür ist dann wieder der sogenannte Garbage Collector in C# zuständig.

Mein Problem ist jetzt allerdings: Klicke ich im GameScreen auf eine bestimmte freie Stelle, löse ich eine aktion aus die im HauptmenuScreen verbaut ist. Da GameScreen und HauptmenuScreen von ein andere getrennt sind, sollte eine solche reaktion unmöglich sein.

Die einzige Erklährung die ich dafür habe ist die, das daß Hauptmenu nicht aus dem Speicher entfernt wird.

Mitlweile habe ich mich damit abgefunden das ich wohl meinen gesamten Code zum dritten mal schreiben muss. Diesesmal aber erst, nachdem ich mir ein neues Sample zum GameStateManager angesehen habe.

Space Opera Concept Grafic

Da es nicht gut ist wenn ich mir den Kopf mit Laden & Speichern zermartere, hab ich mal mein altes Grafiktablett herausgekramt und mich mal an einer Concept Grafic für Space Opera versucht.

Immerhin ne nette Sache wenn man keine Lust hat direkt zu modellieren und das Programmieren einen ebenfalls gerade frustet.

Laden und Speichern die Xte …

Ich weiß wirklich nicht warum ich mich mit manchen Sachen so dermaßen schwer tue. Ich war am Anfang doch ziemlich Happy als es mir mit Hilfe eines Tutorials gelang eine einfache Binär Speicherung nachzubauen. Binär deshalb, weil ich mich mit den anderen Tutorials schwer getan habe. Mein Gedanke war dann, kannst du erst Binär Speichern sollte der weg zu XML nicht mehr schwer sein. Nach etwas herum experimentieren war ich dann so sicher darin das ich diese Funktion endlich in SO einbauen wollte.

Aus irgend einem Grunde hat der Compiler das dann verweigert. Immerhin hat er mir mitgeteilt das ich das ganze von Binär auf XML ändern soll. Das war auch soweit kein Problem. Nur poppten dann eine ganze Reihe an anderen Fehlermeldungen auf. So etwas ist einfach frustrierend.
Ich werde dann wohl weiter lernen müssen, irgendwann komme ich noch dahinter 😉