Harald Hoppelhase

Die neue Action, jetzt mit 30% mehr Action! Geht vom 14.04.23 bis zum 23.04.23
Benutzeravatar
Jonathan
Establishment
Beiträge: 2234
Registriert: 04.08.2004, 20:06
Kontaktdaten:

Re: Harald Hoppelhase

Beitrag von Jonathan »

Achso, nein. Kurze Erläuterung:
Zum Synchronisieren muss man also einfach nur alle Einträge vom Server runterladen und danach alle Einträge zurück an den Server schicken (oder umgekehrt), beim hochladen muss man nicht zwischen eigenen und fremden Einträgen unterscheiden, weil ja beide "gültig" sind.
Die get-Operation gibt dir den aktuellen Stand auf dem Server. Im einfachsten Fall ist das exakt der Inhalt der JSON-Datei, ggf. will ich aber am Server auch mehr Einträge speicher (d.h. nie etwas löschen) aber beim get nur die Top 10 oder so zurück geben. Der Client nimmt die Einträge und pflegt sie ein, d.h. sie werden an die lokale Highscore-Liste angehängt, die Liste wird sortiert und die Top10 behalten.
Für die Rücksynchronisation wird die ganze Highscoreliste des Clienten an den Server geschickt, aber halt Eintrag für Eintrag als submit-Operation. Bei jeder submit-Operation prüft der Server, ob der Eintrag schon existiert (kann man am Hash, der ja über alles inklusive timestamp geht sehen) und ob der Hash gültig ist (an dieser Stelle nimmt man an, dass der Punktestand gültig und legal erspielt ist). Entsprechend wird der Eintrag dann verworfen oder behalten.

Dadurch kann man offline weiter spielen und beim nächsten mal Internethaben werden die Punkte dann korrekt übertragen. Da ich auf Doppelungen prüfe brauche ich mir nicht merken, was schon hochgeladen und neu ist und auch nicht was von mir ist und was von anderen. 10 Einträge hochladen ist ja insignifikant, ich mache das einfach immer und gut ist. Und solange keine 10 Millionen Spieler gleichzeitig Highscores Eintragen wird das auch dem Server egal sein.
Lieber dumm fragen, als dumm bleiben!
Alexander Kornrumpf
Moderator
Beiträge: 2056
Registriert: 25.02.2009, 13:37

Re: Harald Hoppelhase

Beitrag von Alexander Kornrumpf »

Jonathan hat geschrieben: 20.05.2023, 18:53 Achso, nein. Kurze Erläuterung:
Zum Synchronisieren muss man also einfach nur alle Einträge vom Server runterladen und danach alle Einträge zurück an den Server schicken (oder umgekehrt), beim hochladen muss man nicht zwischen eigenen und fremden Einträgen unterscheiden, weil ja beide "gültig" sind.
Die get-Operation gibt dir den aktuellen Stand auf dem Server. Im einfachsten Fall ist das exakt der Inhalt der JSON-Datei, ggf. will ich aber am Server auch mehr Einträge speicher (d.h. nie etwas löschen) aber beim get nur die Top 10 oder so zurück geben. Der Client nimmt die Einträge und pflegt sie ein, d.h. sie werden an die lokale Highscore-Liste angehängt, die Liste wird sortiert und die Top10 behalten.
Für die Rücksynchronisation wird die ganze Highscoreliste des Clienten an den Server geschickt, aber halt Eintrag für Eintrag als submit-Operation. Bei jeder submit-Operation prüft der Server, ob der Eintrag schon existiert (kann man am Hash, der ja über alles inklusive timestamp geht sehen) und ob der Hash gültig ist (an dieser Stelle nimmt man an, dass der Punktestand gültig und legal erspielt ist). Entsprechend wird der Eintrag dann verworfen oder behalten.

Dadurch kann man offline weiter spielen und beim nächsten mal Internethaben werden die Punkte dann korrekt übertragen. Da ich auf Doppelungen prüfe brauche ich mir nicht merken, was schon hochgeladen und neu ist und auch nicht was von mir ist und was von anderen. 10 Einträge hochladen ist ja insignifikant, ich mache das einfach immer und gut ist. Und solange keine 10 Millionen Spieler gleichzeitig Highscores Eintragen wird das auch dem Server egal sein.
Das nette an "Cloud-Native" ist, dass es den tradeoff für "das mache ich halt eben selbst, muss ich mich nicht mit einer Datenbank rumschlagen" verschiebt, weil du die Datenbank mit einem Klick "as a service" bekommst.

Schreibe ich weil ich hoffe dass wir immer noch in einer brainstorming Session für die FAQ "Highscoreliste, wie?" sind, und man den Thread vielleicht irgendwann für dritte verlinken will. Ich bekomme von AWS nichts dafür, der Tradeoff für Produktionssysteme kann woanders liegen und ich kann verstehen, wenn einer zögert AWS die private Kreditkarte zu geben. Kostenkontrolle in der Cloud ist bekanntlich die Hölle, aber der Traffic von dem wir hier reden sollte komfortabel in 10 cent im Monat passen, eher weniger.
Benutzeravatar
Jonathan
Establishment
Beiträge: 2234
Registriert: 04.08.2004, 20:06
Kontaktdaten:

Re: Harald Hoppelhase

Beitrag von Jonathan »

Gameplay Diskussion:

Online Highscore läuft jetzt und ist in ersten Tests "robust" (e.g. gibt es keine Internetverbindung können lokale Highscores auch später eingetragen werden, potentiell langsame Internetverbindung ist kein Problem da asynchron, etc.). Technisch ist jetzt alles "fertig", aber das Gameplay ist langsam und macht keinen Spaß.

Meine Überlegung ist: Das Spiel muss schnell sein. Es muss ein Reaktionsspiel sein um Spaß zu machen. Es muss einen Flow geben, ggf. auch sowas wie Kombos oder so. Man springt ja nur, es gibt keine Story, keine Kämpfe, keine Rätsel und keine Atmosphäre. Mit irgendwas muss das Spiel aber ja leider Spaß machen, sonst ist es einfach ein schlechtes Spiel.

Erstes Problem: Es ist ja irgendwie auf einen knuffigen Look ausgelegt, funktioniert da Action überhaupt? Aber vielleicht muss man es tun, auch wenn es nicht funktioniert...

Ich habe mir 2 Vergleichsspiele angeschaut. Das eine ist Icy Tower, ein echter Klassiker aus meiner Schulzeit, den werden viele von euch bestimmt auch gespielt haben. Icy Tower ist cool, der Protagonist heißt schon "Harold the Homeboy" (was unbeabsichtigt super ähnlich zu meinem Harald Hoppelhase ist :D) und die Menümusik ist ein echter Ohrwurm. Gameplay technisch ist das Spiel extrem simpel, man kann laufen und springen und es gibt nur eine Art von Plattform, das einzige was sich ändert ist, dass die Plattformen kleiner und weniger werden. Aber man kann Geschwindigkeit aufbauen und dadurch höher springen und daraus dann Kombos machen wodurch man schneller ist und mehr Punkte bekommt. Das hat Flow und ist eingängig. Als Anfänger spielt man ganz anders als nach 30 Minuten, und das obwohl es nur 3 Tasten gibt. Elegant und nett.

Das zweite ist tatsächlich Rum Barrel Run von unserem lieben Grinseengel. Ist deutlich weniger ausgefeilt als Icy Tower und noch simpler, aber es funktioniert, weil es schnelle Reaktionen benötigt. Und wenn man in der Ferne eine sehr ungünstige Hindernisskombination sieht bekommt man etwas Nervenkitzel, hat man es dann geschafft ist man für kurze Zeit happy. Und die Highscore hat zumindest mich motiviert es für so 30 Minuten oder so zu spielen.

Bei Harald gibt es aktuell nur Plattformen. Man kann auf denen rumlaufen und sie verschwinden auch nach kurzer Zeit, aber:
so richtig action kommt da nicht auf.png
Es gibt Eier die mit etwas Verzögerung auftauchen. Die Idee ist, dass man schon weiter oben ist, für Extrapunkte aber nochmal runter hüpfen kann und dann einen sehr schweren Weg nach oben hat (weil die Blätter halt nach kurzer Zeit verschwinden). Das ist nett und sorgt für etwas Spannung aber es reicht noch nicht.

Ich könnte viel mehr Blätter einbauen die dann quasi direkt verschwinden, so dass man gezwungen ist ständig zu hüpfen. Dann würde aber die süße Hoppelei quasi ganz wegfallen (hoppeln sah immer besser aus als hüpfen) und eigentlich würde ich dann auch Dinge wie Rückwärtssalti oder andere Supersprünge brauchen, für die Extra-Würze. Das würde den Knuddelfaktor töten. Alternativ könnte man mehr Items haben und dadurch eine Prise Strategie rein bringen (richtige Gegenstände in richtiger Reihenfolge einsammeln? Extras bekommen, die man zur richtigen Zeit einsetzen muss?). Aber das bewegt sich vermutlich ein bisschen mehr in Richtung triviale Puzzelei, und irgendwie denke ich dass Action mit Flow einfach besser für diese Art von Spiel ist.

Was also tun?
Lieber dumm fragen, als dumm bleiben!
Benutzeravatar
grinseengel
Establishment
Beiträge: 718
Registriert: 29.03.2011, 13:47
Echter Name: Andreas

Re: Harald Hoppelhase

Beitrag von grinseengel »

Naja, ich denke das dies sehr individuell wahrgenommen wird. Du bist ja diesbezüglich immer sehr kritisch. Evtl. Taucht ja am Rand mal ein Jäger auf und möchte Harald in den Kochtopf befördern. Oder es taucht ein Extraleben auf einem Blatt auf was Harald schnell einsammeln soll. Du kannst ja auch einen Doppelsprung einbauen. Dann gibt es z. B. giftige Blätter auf die Harald nicht springen darf.
mtorc1
Beiträge: 75
Registriert: 20.02.2021, 16:24

Re: Harald Hoppelhase

Beitrag von mtorc1 »

Ich habe den Eindruck, solche Arcade-Spiele leben von diesem Gefühl, dass etwas einfach ausschaut, es aber in Wirklichkeit gar nicht ist. Zumindest ist das bei mir so. Natürlich gibt es da ganz verschiedene Spielertypen. Aber ich habe immer diesen Gedanken: "Warum bin ich hier gerade eigentlich gestorben? So ein Mist, das ist doch easy, ich kann das besser". Und das ist unheimlich motivierend, weil man es sich selber beweisen möchte. Dadurch werden auch Singleplayer-Spiele kompetitiv (eben mit sich selbst und dem eigenen Ego).

In diesem Sinne finde ich deinen "Action mit Flow" Ansatz sehr gut und auch besser als den "Puzzler"-Ansatz. Arcade ist etwas, was mich persönlich durchaus triggern würde. Die Gretchenfrage ist natürlich, wie man die Balance zwischen Frust und Erfolgserlebnis findet. Icy Tower konnte unheimlich frustrierend sein, wenn man einen "Dreiplattformsprung" ganz knapp verfehlt hat nach. Dann aber zu sehen, dass man einen nach dem anderen hinlegt und die Combo-Anzeige voll ist, bunt blinkt, Partikel verströmt, etc. war dann wieder der Ausgleich.
Wie grinseengel das schreibt, könnte man das mit Gegnern machen, denen man ausweicht/die man beseitigt; mit den Eiern; vielleicht auch in Kombination.
Letztes Projekt: Grave of the Pumpkin (ZFX Halloween Action 2021)
Benutzeravatar
grinseengel
Establishment
Beiträge: 718
Registriert: 29.03.2011, 13:47
Echter Name: Andreas

Re: Harald Hoppelhase

Beitrag von grinseengel »

Mit ist da noch was eingefallen:

- evtl. gibt es auf "schwer" erreichbaren Blättern so etwas wie eine Unsterblichkeit gegenüber dem Jäger oder den giftigen Blättern.
- zusätzliche Punkteboni die man mit einem geschickten Sprung einsammeln kann
- Knuddelfaktor adieu, es geht nur eins
Benutzeravatar
Jonathan
Establishment
Beiträge: 2234
Registriert: 04.08.2004, 20:06
Kontaktdaten:

Re: Harald Hoppelhase

Beitrag von Jonathan »

grinseengel hat geschrieben: 14.06.2023, 13:56 Knuddelfaktor adieu, es geht nur eins
Ja, ich fürchte, das muss es sein.

Ich hab ein bisschen herumexperimentiert: Ein Supersprung, den man auch in der Luft ausführen kann (d.h. Doppelsprung mäßig) und dich weitaus höher springen lässt. Die Idee ist, dass man den durch eingesammelte Möhren aufladen muss. Einerseits kommt man damit schneller weiter nach oben, andererseits ist der aber auch sehr nützlich, um sich aus brenzligen Situationen zu retten.
Je höher man kommt, desto weiter sind die Blätter entfernt, zusätzlich überlege ich jetzt auch Blätter mit Dornen zu haben. Dank Doppelsprung kann man auch um diese herumspringen. Außerdem würden dann noch Eier (für Bonuspunkte) tendenziell an sehr weit außen liegenden Blättern platziert damit man überlegen muss, ob es einem das Risiko wert ist.

Mal schauen. So super lang wollte ich daran echt nicht mehr rummachen, aber ein wenig besser soll es schon noch werden.
Lieber dumm fragen, als dumm bleiben!
Benutzeravatar
grinseengel
Establishment
Beiträge: 718
Registriert: 29.03.2011, 13:47
Echter Name: Andreas

Re: Harald Hoppelhase

Beitrag von grinseengel »

Mal schauen. So super lang wollte ich daran echt nicht mehr rummachen, aber ein wenig besser soll es schon noch werden.
Ja das kenne ich. Ich habe mehrere Projekte noch angefangen auf der Platte. Sind alle zu schade zum Löschen, aber auch irgendwie nicht so richtig reizvoll daran weiter zu machen. Schade immer nur, weil ja auch dort eine Menge Zeit, Ideen und Arbeit eingeflossen sind.

Einfach anfangen, sage ich mir immer. Dann läuft das auf einmal.
Benutzeravatar
Jonathan
Establishment
Beiträge: 2234
Registriert: 04.08.2004, 20:06
Kontaktdaten:

Re: Harald Hoppelhase

Beitrag von Jonathan »

Und mal wieder alles umbauen.

Aktuell habe ich einen Satz an Parametern der die Erstellung von Ästen und Blättern steuert. Wie groß die Blätter sind, wie weit sie voneinander entfernt sind, wie wahrscheinlich es ist, dass Eier oder Karotten erscheinen, etc.. Die Parameter kann ich nett an die aktuelle Höhe anpassen, sie sogar linear interpolieren, so dass das Spiel graduell schwieriger wird (größere Abstände, kleinere Plattformen, etc.).

Was damit nicht geht: Unterschiedliche Typen an Plattformen. Ich kann also keine Äste generieren, die etwas weiter außerhalb liegen, aber attraktiv sind, weil auf ihnen Eier sind - denn beide Eigenschaften werden unabhängig voneinander ausgewürfelt. Man könnte das jetzt irgendwie naiv lösen (diese zwei Parameter sind immer aneinander gekoppelt), oder es gleich richtig machen. Was in meinem Fall wohl auf ein L-System ähnliches Framework hinausläuft: Es gibt verschiedene Typen an Ästen die an verschiedenen Punkten wachsen können und jeweils hierarchisch andere Äste wachsen lassen können. Die genauen Regeln die es geben wird sind mir selber noch überhaupt nicht klar, aber aktuell ist die Hoffnung recht hoch, dass man damit viele interessante Dinge elegant umsetzen kann.

Generell ist das Problem halt: Ich möchte etwas haben, dass mehr oder weniger wie eine plausible Pflanze aussieht, aber auf der anderen Seite auch Plattformen (d.h. Blätter) bietet, die spieltechnisch sinnvoll sind (das richtige Maß an Anspruch und Vielfalt). Und das ganze muss sich im Spielverlauf kontinuierlich verändern um den Schwierigkeitsgrad langsam zu erhöhen. Hmmmm.
Lieber dumm fragen, als dumm bleiben!
Benutzeravatar
Jonathan
Establishment
Beiträge: 2234
Registriert: 04.08.2004, 20:06
Kontaktdaten:

Re: Harald Hoppelhase

Beitrag von Jonathan »

Aktueller Stand: Ich habe die Pflanzengenerierung komplett umgeschrieben, jetzt kann man den Prozess deutlich besser steuern:
2023-07-06_Hase.mp4
(11.48 MiB) 26-mal heruntergeladen
Beispielsweise wachsen jetzt Blätter meist links-rechts abwechselnd, aber manchmal wird zufällig davon abgewichen, für etwas Chaos. Außerdem gibt es jetzt ab einer gewissen Höhe Äste, die weit nach außen wachsen und dann nützliche Items enthalten. Eier geben Punkte, Karotten laden den Super-Sprung auf der sehr nützlich ist um aus brenzligen Situationen zu kommen. Je höher man kommt, desto kleiner werden die Blätter, ab einer gewissen Höhe verschwinden Blätter auch kurz nachdem man sie das erste mal berührt hat.

Haupt-ToDos sind: Alles etwas netter machen (Game-Over Bildschirm sieht doof aus, Ingame werden Punktzahl, Höhe und Superstprünge einfach in irgendwelchen Ecken angezeigt, das geht auch besser) sowie Pflanzenwachstum finalisieren. Das Problem ist: Die Pflanze beeinflusst maßgeblich den Schwierigkeitsgrad, wenn es um eine Highscore-Jagt geht, kann man das Wachstum also später nicht mehr anpassen ohne die Online-Highscore (die jetzt schon ganz gut funktioniert :) ) zu resetten.

Realistisch gesehen präsentiere ich das Spiel auf meiner Webseite, im Zfx und schicke es an ein paar Freunde. Vermutlich will niemand davon 15 verschiedene Versionen austesten, im Wesentlichen läuft es also auf einen einzigen "großen" Release hinaus, entweder gehen Leute dann auf Highscore-Jagt, oder eben nicht (schade). Das ist auch ein bisschen der Grund, weshalb ich hier noch keine Demo hochgeladen habe, da ich ein bisschen Angst habe, dass die meisten nur eine einzige Version antesten werden - und dann macht es Sinn auf die "finale" zu warten.

Aber vielleicht mag ja jemand kommentieren, wie die aktuelle Version wirkt :)
Lieber dumm fragen, als dumm bleiben!
Benutzeravatar
grinseengel
Establishment
Beiträge: 718
Registriert: 29.03.2011, 13:47
Echter Name: Andreas

Re: Harald Hoppelhase

Beitrag von grinseengel »

Aber vielleicht mag ja jemand kommentieren, wie die aktuelle Version wirkt :)
Sehr gerne.

Erstmal scheint das ja alles gut zu funktionieren mit der Kollisionserkennung. Harald sieht auch recht putzig aus. Du hast geschrieben das die Blätter immer kleiner werden und dann teilweise kurz verschwinden. In dem Video habe ich davon noch nichts bemerkt. Kommt das noch oder ist der Videoausschnitt dafür zu kurz und deshalb konnte ich das noch nicht sehen.

Die Vergabe der Punkte verstehe ich noch nicht. Einmal wird die Anzahl der erreichten Blätter gezählt? oder Sprünge? Die andere Zahl gibt die Höhe an die Harald bereits erreicht hat?

Was eine Vorabversion angeht, da gebe ich dir absolut Recht. Ich kann es bei meinen Projekten immer nicht erwarten schon mal einen aktuellen Stand zum testen anzubieten. Das macht aber nur Sinn wenn es ein recht umfangreiches Projekt ist für das man dann schon mal ein erstes Feedback einholen möchte. Bei meinen kleinen Endlosspielen mache ich das auch erst wenn es so gut wie fertig ist. Dann ist in der Regel auch eine Änderung oder Ergänzung nicht so umfangreich.

Ich freue mich schon auf den fertigen Harald.
scheichs
Establishment
Beiträge: 821
Registriert: 28.07.2010, 20:18

Re: Harald Hoppelhase

Beitrag von scheichs »

Ich finde das vom Stil richtig schön und fluffig umgesetzt. Top Arbeit!
Benutzeravatar
Jonathan
Establishment
Beiträge: 2234
Registriert: 04.08.2004, 20:06
Kontaktdaten:

Re: Harald Hoppelhase

Beitrag von Jonathan »

Kurzer Zwischenstand:

Die Pflanze wird jetzt nach oben hin deutlich komplexer. Am Anfang sieht sie in der Regel so aus:
Hase_2023-07-15_01-48-01.png

später dann jedoch eher so:
Hase_2023-07-15_01-47-36.png
Was man hier auch sieht: Neu sind die längeren Seitenzweige. Es gibt die kurzen, die eher waagerecht wachsen und die langen, die parallel zur Pflanze wachsen (rechts oben im Bild). Zweige sind interessant weil ihre Blätter immer kurz nach dem draufspringen verschwinden, dafür liegt auf dem letzten Blatt immer ein extra (entweder ein Ei das Punkte gibt, oder eine Möhre die den Supersprung auflädt).

Es ist ziemlich fummelig die Blätter so zu setzen, dass die Sprünge anspruchsvoll aber möglich sind (und nach oben hin schwieriger werden) und die Pflanze natürlich und sinnvoll aussieht. Im Wesentlichen setze ich aktuell die Intervalle für die Zufallszahlen "gut", so dass man fast immer alles erreichen kann. Manche Extras werden aber nicht zu schaffen sein, aber das ist ok, da man mit etwas Erfahrung das Risiko abschätzen kann. Außerdem helfen die Supersprünge die gelegentlich auftretenden unmöglichen Situationen zu überwinden.

Mit den zusätzlichen Zweigen gibt es jetzt auch eine Prise Strategie, weil es mehrere Pfade gibt. Und dadurch, das weiter oben viele Blätter verschwinden, muss man eine Route planen auf der der Hinweg andere Blätter benutzt als der Rückweg. Gibt es keinen solchen Pfad sollte man das Extra links liegen lassen oder an passender Stelle einen hoffentlich übriggebliebenen Supersprung einsetzen.

Ich spiele ja zwischendurch immer Probe und kenne daher die Steuerung jetzt ziemlich gut, obwohl sich die Levels natürlich immer ändern. Es wird definitiv nach oben hin kniffeliger aber die meisten Situationen fühlen sich für mich so an, als hätte ich selber einen Fehler gemacht, weil ich dann doch wieder zu viel riskiert habe. Und der Schwierigkeitsgrad steigt halt graduell, bzw. ist von Run zu Run etwas unterschiedlich, weil halt die Äste und Extras anders kommen. Das ist damit jetzt also eigentlich alles schon recht nah an dem wie es sich anfühlen sollte.

Letztendlich ist es doch irgendwie noch Plattformgehopse und so ein richtig guter Flow kommt nicht auf, aber naja, das ist ok. Es sollte ja auch gar kein so großes Projekt sein :D

Jetzt fehlt noch ein Anleitungsbildschirm, ein paar UI Aufhübschungen und ein bisschen mehr Balancing, dann sollte ich die erste Version veröffentlichen können :)


Oh, übrigens: Blätter werden weiter oben schräger und wenn man ein Blatt "hochrennt" bevor man springt, springt man höher. Für bestmögliche Sprünge ist also die Laufrichtung vor dem Sprung entscheidend. Das ist erst ein bisschen weird, letztendlich mag ich das Feature aber sehr, da es die Spieltiefe erhöht ohne die Steuerung komplexer zu machen oder wirklich neue Levelelemente einzuführen. Schräge Blätter sehen auch einfach natürlicher aus als gerade. Entstanden ist das ganze eher durch Zufall, da die Laufrichtung eine Y-Komponente beinhaltet (je nach Schräge auf der man sich befindet) und die Sprungstärke auf die Y-Geschwindigkeit addiert wird. Und so kriegt man ein neues Spielfeature, indem man statt einem = ein += schreibt :D
Lieber dumm fragen, als dumm bleiben!
Benutzeravatar
Jonathan
Establishment
Beiträge: 2234
Registriert: 04.08.2004, 20:06
Kontaktdaten:

Re: Harald Hoppelhase

Beitrag von Jonathan »

Ich habe mich mal wieder verzettelt.

Ein Testspieler(TM) hat sich beklagt, dass manchmal manche Blätter unerreichbar sind. Ich verstehe das, auch wenn ein bisschen Glück (in Form von gnädiger Zufallsgenerator) immer dazu gehört ist es blöde wenn man das Gefühl hat, bei einem schweren Sprung nie eine Chance gehabt zu haben. "Oh, du bist gerade 100 m die Pflanze hoch geklettert ohne zu wissen dass es da oben einen unmöglichen Sprung gibt und du niemals eine Chance hattest den Rekord zu knacken? Tja, schade". Meh. Das ist genau die Art von Predeterminismus die ich eigentlich nicht haben will.

Also bisschen Mathe gemacht, Spielphysik angeschaut und analytische Lösung gesucht die den erreichbaren Raum für jedes Blatt beschreibt (simpel, aber fummelig wenn mans länger nicht gemacht hat). Ich würfel einen zufälligen Punkt innerhalb dieses Raums, setze dort ein Blatt hin und alles funktioniert garantiert. (Ha, man muss ein klein wenig aufpassen, weil die Spielphysik numerische Integration macht und die Sprungparabel nicht exakt mit der analytischen Lösung übereinstimmt. Aber egal).

Es stellt sich heraus, dass ich damit sehr langweilige Level erzeugen kann. Zum Beispiel sowas hier:
2023-08-25_16-16-04_Hase.mp4
(2.08 MiB) 14-mal heruntergeladen
Das ist eine triviale Aneinanderreihung an garantiert schaffbaren Sprüngen. Was ich will, ist eher sowas:
2023-08-25_01-50-32_Hase.jpg
Es gibt nicht nur einen Weg nach oben, man muss oder kann auch schonmal zwischen den Ästen hin und her springen. Die Levelgenerierung ist also nicht mehr lokal, wie der eine Ast aussieht, hängt von seinem Nachbar ab, wenn es links keinen Weg gibt muss es rechts einen geben. Es sollte manchmal, aber bestimmt nicht immer links und rechts einen Weg geben, weil das langweilig ist. Es darf niemals weder links noch rechts einen Weg geben. Gleichzeitig ist das platzieren der Blätter natürlich trotzdem noch ein lokales Problem, man muss ja immer vom vorherigen zum nächsten kommen können.

Außerdem hab ich jetzt 2 Graphen. Einen für die Pflanze (wie die Äste wachsen) und einen für mögliche Sprünge (Blätter sind die Knoten, mögliche Sprünge die Kanten). Wie gesagt müssen beide Graphen unterschiedlich sein, ansonsten ist das Level langweilig weil man einfach immer entlang eines Astes weiter nach oben hüpfen kann.

Dazu kommt noch, dass die Pflanze unendlich weiter wächst, man kann sie also nicht generieren und dann das Level spielen, das muss inkrementell geschehen. Oh und dann will man ja eigentlich auch manchmal sehr hohe Sprünge einbauen, für die man vorher eine Supersprungkarotte sammeln muss - wieder eine Nicht-Lokalität die man irgendwie mitschleifen muss.

Insgesamt kann ich den Generator also schon wieder komplett umschreiben. Wie gesagt, kleine Änderung aber dann doch voll verzettelt...
Lieber dumm fragen, als dumm bleiben!
Benutzeravatar
woodsmoke
Beiträge: 26
Registriert: 30.06.2023, 14:05
Wohnort: Ludwigshafen
Kontaktdaten:

Re: Harald Hoppelhase

Beitrag von woodsmoke »

Immer positiv sehen: Du lernst dazu!

Beim schnellen nacheinander Springen ist die Lande-Animation nicht fertig und es sieht etwas komisch aus wenn der Hase mit Ausgestreckten Gliedern wieder losspringt. Man könnte die Animation zurückspringen lassen, aber das würde "unsanft" aussehen und es würde sich dann nicht mehr so schön weich anfühlen. Vielleicht stattdessen die Animation beschleunigen? Oder einfach lassen wie es ist, ist nicht so schlimm.

Die Grafik ist wirklich schnuckelig.
mtorc1
Beiträge: 75
Registriert: 20.02.2021, 16:24

Re: Harald Hoppelhase

Beitrag von mtorc1 »

Hm schwer zu beurteilen ohne es angespielt zu haben. Oder ich will es anders formulieren: wann bekommen wir denn eine Demo präsentiert? :)
Letztes Projekt: Grave of the Pumpkin (ZFX Halloween Action 2021)
Benutzeravatar
Jonathan
Establishment
Beiträge: 2234
Registriert: 04.08.2004, 20:06
Kontaktdaten:

Re: Harald Hoppelhase

Beitrag von Jonathan »

woodsmoke hat geschrieben: 28.08.2023, 11:38 Beim schnellen nacheinander Springen ist die Lande-Animation nicht fertig und es sieht etwas komisch aus wenn der Hase mit Ausgestreckten Gliedern wieder losspringt. Man könnte die Animation zurückspringen lassen, aber das würde "unsanft" aussehen und es würde sich dann nicht mehr so schön weich anfühlen. Vielleicht stattdessen die Animation beschleunigen? Oder einfach lassen wie es ist, ist nicht so schlimm.
Interessant, das war mir noch nicht aufgefallen. Was intern passiert: Harald ist per Bones animiert und im wesentlichen gibt es 2 Posen (sitzen und "fliegen" in denen jeweils Körperteile ein wenig wackelt, ansonsten sind sie aber recht statisch. Beim State-Change wird zwischen den Animationen mit einem kleinen Interpolationsfenster gewechselt. Das sorgt für einen halbwegs natürlich aussehenden Übergang der mir eigentlich sehr gefällt, insbesondere ist alles immer weich, weil Glieder nicht einfach von einer Pose in eine andere Springen können.
Wenn man jetzt sofort nach der Landung wieder springt, fängt er an Richtung Sitzpose zu interpolieren, dreht aber nach meinetwegen 5% direkt die Richtung wieder um so dass man effektiv vom Sitzen nichts sieht. Es gibt verschiedene Lösungen, die coolste wäre aber, wenn man nicht erst nach der Landung anfangen würde, die Beine wieder unter den Hasen zu bewegen sondern schon kurz davor. Aber dafür müsste man detektieren ob man vermutlich innerhalb der nächsten 0.2 Sekunden landet oder nicht, dafür müsste ich die Kollision umschreiben. Mal sehen ob ich dazu Lust habe. (aber glaub ich ehrlich gesagt nicht :D)

woodsmoke hat geschrieben: 28.08.2023, 11:38 Die Grafik ist wirklich schnuckelig.
Awwww <3
Lieber dumm fragen, als dumm bleiben!
Benutzeravatar
Jonathan
Establishment
Beiträge: 2234
Registriert: 04.08.2004, 20:06
Kontaktdaten:

Re: Harald Hoppelhase

Beitrag von Jonathan »

mtorc1 hat geschrieben: 28.08.2023, 22:29 Hm schwer zu beurteilen ohne es angespielt zu haben. Oder ich will es anders formulieren: wann bekommen wir denn eine Demo präsentiert? :)
Jaaaa. Meine Angst diesbezüglich ist ehrlich gesagt: Das Spiel ist relativ simpel. Klar motiviert die Highscorejagt im Idealfall, aber die meisten werden es sich vermutlich nur runterladen, weil sie es einfach mal ausprobieren wollen und dann vielleicht 10 Minuten spielen und danach nie wieder (man hat ja schließlich auch noch 120 Spiele auf Steam die man gekauft aber noch nie runtergeladen hat). Aber wenn jemand nach 10 Minuten ein bisschen Feedback schreibt ist das ja schon ok für mich. (Ich denke mir dann immer, es ist ähnlich wie in Forenbeiträgen. Vermutlich werden die von 3 mal mehr Menschen gelesen als geantwortet und die denken auch darüber nach, was ich hier so schreibe man wird also auch bei wenig Antworten ein Stück weit gehört).
Aber wie viele Menschen spielen bis sie keine Lust mehr haben und laden sich dann am nächsten Tag die neue Version runter in der eine Kleinigkeit verändert wurde und spielen dann nochmal so lange? Genau. Deswegen wollte ich für das erste Feedback eine quasi vollständige Version veröffentlichen um da von möglichst vielen Leuten möglichst gutes Feedback zu bekommen.

Aber die vorherige Version lief eigentlich schon ganz ok, wenn ich bei der Levelerstellung nicht sehr bald gute Fortschritte mache lade ich vielleicht doch erstmal die Version ohne starke Schaffbarkeitsgarantien hier hoch.
Lieber dumm fragen, als dumm bleiben!
Benutzeravatar
Jonathan
Establishment
Beiträge: 2234
Registriert: 04.08.2004, 20:06
Kontaktdaten:

Re: Harald Hoppelhase

Beitrag von Jonathan »

Jonathan hat geschrieben: 26.08.2023, 12:50 Außerdem hab ich jetzt 2 Graphen. Einen für die Pflanze (wie die Äste wachsen) und einen für mögliche Sprünge (Blätter sind die Knoten, mögliche Sprünge die Kanten). Wie gesagt müssen beide Graphen unterschiedlich sein, ansonsten ist das Level langweilig weil man einfach immer entlang eines Astes weiter nach oben hüpfen kann.
Bug gefunden: Es gibt auch 2 Versionen der Pflanzengeometrie, einmal den aktuellen Wachstumszustand und einmal die Endposition (vollständig gewachsen). Die Levelgenerierung soll die Endposition verwenden, der Wachstumsprozess ist derzeit eigentlich hauptsächlich optisches Gimmick. Später baue ich ggf. noch "Fahrstühle" ein, bei denen man auf einem Blatt stehen muss während dieses nach oben wächst und dich mitnimmt, aber das ist erstmal Zukunft. Jedenfalls hatte ich das bisher nicht sauber genug getrennt und der Levelgenerator hat quasi eine Vorschau-Version der Endposition verwendet, die aber leicht anders berechnet wurde als der tatsächlich Wachstumsprozess. Jetzt muss ich alles umschreiben damit es eine klare und robuste Trennung zwischen beiden Versionen gibt damit so Fehler in Zukunft nicht mehr passieren. Argh.
Lieber dumm fragen, als dumm bleiben!
Antworten