Ich erstelle ein Spiel. Dabei gibt es viele Hürden zu überwinden. Vor allem wenn man mit einer Umgebung arbeitet die einem neu ist. Was kann die Engine und vor allem wie setzte ich meine Ideen um...nach Monaten harter Denkarbeit + Kreativität, nach dem man das Spiel schon zu 80% fertig hat, erinnert man sich...da fehlt doch noch was...
Die Highscoreeingabe
Am Anfang ist das keine Herausforderung...wie schwer kann das denn schon sein...ein paar Werte rauf und runter zählen...den Cursor anhand dieser Werte an die richtige Position bringen und schon hat man seine Highscoreeingabe fertig.
Leider ist die Welt nicht so einfach gemacht :)
Aber fangen wir von Anfang an. Das erste was ich gemacht habe war es die auswählbaren Buchstaben auf den Monitor zu zaubern. Huiii ging das schnell...einfach mal schnell -> ABCDEFGHIJKLMNOPQRSTUVWXYZ...dann noch ein paar Zahlen 1234567890 und schon war das erledigt.
Das nächste...ich musste durch diese Buchstaben. Sollte doch nicht so schwer sein. Schell mal die Anzahl der Buchstaben zählen...dann eine Variable die bei 1 startet und bis zum Ende zählt, dann noch schnell die Variable über die Pfeiltasten hochzählen oder runter und jede Zahl steht für einen Buchstaben in der List. Das war doch gar nicht schwer (bin ich gut)
Ok...aber ich kann nicht sehen welchen Buchstaben ich gerade ausgewählt habe. Hmmm...ein wenig blöd wenn man nicht weiß auf welchen Buchstaben man steht.
Würde sicher gut sein wenn man den Buchstaben, auf dem man steht farblich erkenntlich macht, aber wie? Jeder Buchstabe besteht aus zwei Dreiecken (ja ist in 3D) 38 Buchstaben + Zahlen....hmmm ich müsste die Vertices einfärben, aber die richtigen. Also rann an den Mesh...schnell mal herausfinden welcher Index zu dem ausgewählten Buchstaben passt. Den Index hochzählen (sind ja vier Vertices) und einfärben. Nach paar Versuchen funktioniert es...puh, das war jetzt nicht so leicht.
Jetzt muss der ausgewählte Buchstabe irgendwo gespeichert werden. Kein Problem...schnell einen string erstellt...wenn der Spieler auf Enter drückt den aktuellen Buchstaben einfach da reinkopieren, aber was ist wenn der Spieler eine falsche Eingabe tätigt. Er sollte doch in der Lage sein mit [Entf] den letzten Buchstaben zu löschen. Ahhhhhhhhhhhhhhh das ist blöd....also ran an die Arbeit.
Wenn der Spieler auf Backspace oder Entf drückt, dann holte man sich den String und entfernt den letzten Eintrag. Das ging doch schneller als ich dachte. Zum Glück muss ich das nicht von Hand machen :) gibt ja Methoden dafür. Glück gehabt, aber trotzdem muss noch hier und da am Code was angepasst werden.
Das funktioniert jetzt ganz gut, aber der Spieler kann ja hunderte Zeichen eingeben. Das soll er natürlich nicht machen. Das Begrenzen geht schnell. Ja es geht schnell, aber am Ende hängt noch der Buchstabe von der Auswahliste....hmmm sieht blöd aus. Also wieder hier und da Variable rumbiegen damit auch wirklich nur max. 12 Zeichen dargestellt werden und hinten nichts drüber hängt.
Alles schön und gut, aber das Navigieren ist nicht flüssig. Ich muss immer eine Pfeiltaste drücken und wieder loslassen, aber währe doch besser, das wenn ich eine Taste gedrückt halte sich der Cursor bewegt. Also noch mal an den Code noch mehr Variablen....
Es geht, aber ist nicht das was ich wollte. Also noch einen Timer einbauen....jetzt drücke ich und erst nach einer Sekunde bewegt sich der Cursor weiter. Das fühlt sich besser an...ABER....ok....noch einen Timer...Der Cursor wird schneller je länger ich auf der Taste bleibe.
ENDLICH....ja das fühlt sich gut an. Man merkt die Geschwindigkeitszunahme nicht, aber es ist ein guten Gefühl beim Navigieren durch die Buchstabenlist.
Da fehlt noch was...Der aktuelle Buchstabe in der List. Man sollte schon erkennen, das es der Cursor ist. Als noch ein Blinken programmiert.
Endlich fertig....
Nein noch nicht....Wenn man Enter/Return drückt wird der ausgewählte Buchstabe in die Highscoreliste übernommen, aber wann ist die Eingabe fertig? Ab wann will der Spieler seien Eingabe beende?
Meine Lösung war es einen zusätzlichen Buchstaben einzubauen [ED] für Edit oder Ende...aber das Font hat so was nicht....
Also Software runterladen um Fonts zu bearbeiten. Das aktuelle Font nehmen und das Sonderzeichen reinmachen....wieder abspeichern und in die Engine laden...jetzt ist es aber fertig :) Wenn der Spieler auf dem Zeichen [ED] steht und über die Tastatur bestätigt, dann wird die Eingabe abgeschlossen.
So umfangreich kann es sein eine Eingabe in einer Highscoreliste zu erstellen :) wollte das nur mal so teilen....
Highscore Eingabe...schwerer als man denkt
Highscore Eingabe...schwerer als man denkt
- MEIN AKTELLES PROJEKT -> FirstStrike (PLAY THE DEMO) -> NEUER ENDBOSS -> schau dir das Video an
- WAS ICH SONST SO MACHEN -> Grafik und Design
- KUGELN FÜR ALLE -> BulletEmitter für Unity
- ICH MACH MAL SCHNELL EINE 3D ENGINE -> oyname 3DEngine
Re: Highscore Eingabe...schwerer als man denkt
Haha, relatable :D
GUIs basteln ist echt mords undankbar. Das sieht immer nach so wenig aus, aber eine wirklich gute GUI hat halt einfach mehr Logik als die meisten Arcade-Spiele - bloß nimmt man das als Nutzer überhaupt nicht so wahr.
Aber schön, dass du alle Probleme lösen konntest. Um was für ein Spiel geht es denn?
GUIs basteln ist echt mords undankbar. Das sieht immer nach so wenig aus, aber eine wirklich gute GUI hat halt einfach mehr Logik als die meisten Arcade-Spiele - bloß nimmt man das als Nutzer überhaupt nicht so wahr.
Aber schön, dass du alle Probleme lösen konntest. Um was für ein Spiel geht es denn?
Lieber dumm fragen, als dumm bleiben!
https://jonathank.de/games/
https://jonathank.de/games/
Re: Highscore Eingabe...schwerer als man denkt
Ja es ist wirklich viel Arbeit...hat mich zwei Tage gekostet :D
Es ist ein Shoot'Em up. Hier gibt es mehr zum Spiel -> viewtopic.php?f=10&t=5129
EDIT: Wollte noch was hinzufügen....habe gerade festgestellt...das Blinken vom Cursor...das ist zu geleichmäßig. Es sollte länger sichtbar sein als nicht sichtbar :) also schnell mal korrigieren :D
Es ist ein Shoot'Em up. Hier gibt es mehr zum Spiel -> viewtopic.php?f=10&t=5129
EDIT: Wollte noch was hinzufügen....habe gerade festgestellt...das Blinken vom Cursor...das ist zu geleichmäßig. Es sollte länger sichtbar sein als nicht sichtbar :) also schnell mal korrigieren :D
- MEIN AKTELLES PROJEKT -> FirstStrike (PLAY THE DEMO) -> NEUER ENDBOSS -> schau dir das Video an
- WAS ICH SONST SO MACHEN -> Grafik und Design
- KUGELN FÜR ALLE -> BulletEmitter für Unity
- ICH MACH MAL SCHNELL EINE 3D ENGINE -> oyname 3DEngine