Tagebuch: Feature Runner


#121

Hau raus :wink: . Entweder ich fix die oder ich pack die in mein Kanban-board. Untergehen wird jetzt nix mehr :slight_smile:.

War auf jeden Fall sehr fleißig und werde jetzt auch fĂŒr heute aufhören. Auch wenn ich noch Bock hĂ€tte - aber so langsam lĂ€sst die KonzentrationsfĂ€higkeit nach. Mein Zwischenstand soweit:

Aus den 6 Tests wurden mittlerweile 21! Und ich werde vermutlich auch sehr gut mit wenigen Managern auskommen (vermutlich nur einen GameManager und einen UiManager). Durch die neu eingefĂŒhrten Services hab ich einen tollen Layer dazwischen mit einigen Vorteilen:

  • Sie können dem SRP folgen
  • Sie sind Testbar
  • Sie können durch den GameManager “gemanagt” werden -> Ich brauche weniger events

Gerade ĂŒber letzteres bin ich sehr froh. Denn beim refaktoren hab ich gemerkt, dass ich so langsam den Überblick ĂŒber Logik verliere. Da manches Event-gesteuert lief und anderes nicht (da nie nachgezogen) ist es doch sehr durcheinander. Dem wirke ich entgegen, indem ich den Unterbau wirklich komplett neu schreibe! Was nicht heißt, dass ich bestehenden Code nicht wieder verwenden wĂŒrde. Nur wird dieser dann auch per Tests abgedeckt und nochmal Zeile fĂŒr Zeile durchgegangen - ob ich das so wirklich haben möchte. Übernommener Code wird also auch durch Tests abgesichert sein!

Also: Da wartet noch wirklich eine GANZE MENGE Arbeit auf mich. Ich bezweifle, dass das nÀchste Update so schnell kommen wird ^^.


#122
  1. Die Kollisionsberechnung geht nicht. Lauf mal einfach durch einen Erdblock durch statt draufzuspringen.
    Also ich meine, als sie ging war es auch nicht viel besser, weil man da stÀndig in Hindernissen hÀngengeblieben ist


  2. Manchmal verschwindet direkt zu Anfang ein Teil des Hintergrundes. (Der Hintergrund scheint verschiedene Startpositionen zu haben?)

  3. Vorschlag fĂŒr den Soundtrack: The Builder - Lizenz CC3.0
    Da gibt es eine Menge passender Soundtracks fĂŒr dein Jump&Run. Die Kategorie “Comedic” passt wohl am besten.
    Von dort hab ich schon öfters Soundtracks genommen. Die mp3 QualitĂ€t lĂ€sst nur manchmal zu wĂŒnschen ĂŒbrig. Muss man sich manchmal ĂŒberlegen ob man die 5$ nicht doch investiert.


#123

Ja, das liegt daran, dass ich den Collider entfernt hab => also ist Absischt von mir ;-). Bin mir noch nicht sicher wie ich das Verhalten der Blöcke handhaben möchte. Wird vielleicht auch nochmal komplett umgestellt, dass man z.B. 3 Leben hat und 1 abgezogen bekommt wenn man gegen einen Block lÀuft (im Gegenzug wird der Block zerstört).

Das hab ich auch schon beobachtet, aber kanns nicht provozieren. Ich hab derzeit keine Ahnung woran das liegt :confused:

Ich werd mir deinen Vorschlag mal anhören - vllt kann ich etwas Ă€hnliches machen. Aber darauf zurĂŒckgreifen werde ich nicht können, da MP3’s in den Spielen wohl Probleme macht brauche ich die Sound-datei im wav-Format.


#124

ACHTUNG!!! Wer noch immer mit einer alten Version spielt, sollte vor dem nÀchsten Release nochmal updaten!

Warum: sonst verliert ihr eure erspielten Features! Ich hab geschaut, manche sind noch auf Release 1.8.1 (laut Google Play Console). Also zumindest die Android-Leute sollten sicher sein, da laut meinen “Recherchen” dort schon etwas lĂ€nger die neuen Features aktiv sind. GefĂ€hrdet sind also u.U. nur Windows-Spieler. Also zur Sicherheit: App einmal herunterladen und starten. Danach mergt das Spiel eure bereits gekauften Features in das neue Format.

Ich bin guter Dinge, dass keiner seine Daten verlieren wird. Dennoch wollte ich zu Sicherheit die Warnung ausgeben.


#125

Nur ein kleiner Bug:

Ich hab mir das 2x Jump power up gekauft und dann gleich wieder verbraucht, danach wollte ich es mir wieder kaufen, aber im Store steht noch immer, dass ich das power up 1 mal habe. Im spiel zÀhlt er richtig und dort hab ich es nicht mehr.

Es wirkt so als wĂŒrde der Store nur nach oben zĂ€hlen


#126

Hab ich mal aufgenommen. Bin guter Dinge, dass es etwas ist, was ich unbewusst mit der neuen Architektur gefixt hĂ€tte. Zur Sicherheit hab ichs aber aufgenommen und den Bug direkt in die “zu testen”-Spalte gepackt.


#127

Über das WE hatte ich nicht all zu viel Zeit, aber ich hab doch (mit heute) einiges geschafft bekommen. So hab ich etliche neue Services + 31 neue Tests :slight_smile::

image

Was mich vor allem freut: Riders hatte am Anfang ne echt beschissene Test-Integration. Ich konnte einen Testlauf zwar “triggern” aber der war praktisch fĂŒr immer im Status “pending”. Dadurch musste ich die Tests immer in Unity3D ausfĂŒhren. Könnt euch vorstellen, wie hĂ€ufig ich die IDE wechseln durfte (zum GlĂŒck hab ich daheim auch 3 Monitore, damit war es noch einigermaßen ertrĂ€glich).

Aber gerade vor ein paar Tagen kam ein Rider-Update das die von Jetbrains gemacht haben um mir mein Leben zu erleichtern. Denn jetzt funktionieren die Tests endlich :slight_smile::

Die letzten zwei Updates von Rider waren echt topp. Haben jedes mal genau die Probleme gelöst, die mir aufgefallen waren. Vor allem weil zwischen “Bekommen des Problems” und dem Fix von Jetbrains nur ein paar Tage lagen :slight_smile:.


#128

Jetzt hat der eigentliche Spaß angefangen 
 die alten Models mĂŒssen raus. Das LegacyModel.GameModel hab ich eben rausgeworfen und hoffe INSTÄNDIG das ich weiß was ich tue!

Ich will die legacy-sourcen nicht weiter im Projekt haben. D.h. was nicht mehr gebraucht wird fliegt raus. NatĂŒrlich hab ich eine Versionierung - aber trotzdem: gefĂŒhlt arbeite ich hier gerade ohne Sicherungsnetz. Deswegen mach ich auch fĂŒr heute abend Schluss. Einmal nicht aufgepasst und ich schick ne Methode ins Nirvana die ich vllt noch nicht 100% ĂŒbertragen hab.


#129

So. Zwischenstandmeldung:

Hab jetzt heute morgen etliches geschafft. Viele ehemaligen Klassen konnte ich schon löschen, da ich deren Logik (hoffentlich) komplett ĂŒbertragen habe. Was ich vergessen hab, sind so manche Werte der Manager zu sichern :frowning_face:. Muss ich halt wieder rausfinden, was es war. Mit ein wenig glĂŒck helfen mir meine Screenshots + Videos die ich hier gepostet hab. Also kein Beinbruch - einfach nur nervig.

Mittlerweile bin ich auch an den UiManagern dran. Ja, hier hatte ich auch mehr als einen und diese schreibe ich jetzt um, dass ich eben nur noch einen habe. Anstelle von Services werde ich mir hier das Leben wohl mit Controllern vereinfachen können.


#130

Ist das wirklich gewollt, dass ich 2* Springen fĂŒr 50 MĂŒnzen kaufe und die dann nur 1 Run benutzen kann?


#131

Ja ist es. War zuvor auch mehr fĂŒr Highscore-Jagd gedacht um SĂ€gen/Wasser besser ausweichen zu können. Letztendlich brauch ich Elemente im Spiel die MĂŒnzen wieder aus dem Spiel nehmen. Ansonsten verlieren MĂŒnzen ja jeglichen Sinn, nachdem alle Features gekauft worden sind.


#132

Hey,
das sorgt bei mir fĂŒr sofortige Demotivation. Gekauft, getestet und verschĂ€tzt, bei der 1. SĂ€ge tot. Dann wieder X DurchlĂ€ufe und das gleiche Spiel


Das Spiel Palo Alto macht es etwas anders. Da kannst du deine gekauften Features durch immer teurere Upgrades verbessern. Aber trotzdem sofort nutzen.


#133

Sowas die Richtung ist auch geplant. Und zwar in Form von Skills. Da möchte ich aber noch etwas mehr drĂŒber nachdenken, welche es geben wird. Bisher hab ich da nur was in Form von Sprung & Lebenspunkte im Sinn.

Generell bin ich mit den PowerUps auch nicht zufrieden. Denn wirklich attraktiv sind die eigentilch nicht (ich selber verwende die eigentlich nur, wenn ich jemand das Spiel zeige und das PowerUp erklÀre).

Wird aber etwas dauern, bis ich daran etwas Ă€ndern kann. Hatte ehrlich gesagt gedacht, dass ich mittlerweile schon lĂ€ngst bei meinem zweiten Spiel bin. Aber in Feature Runner werde ich noch einiges an Zeit reinstecken dĂŒrfen (im Backlog alleine sind derzeit noch 30 Tasks - und auf meinem Notizblock stehen auch noch welche, die ich nicht darin erfasst habe).


#134

So langsam wirds!

Das Spiel könnte man schon wieder spielen. Das ist gut - aber verschleiert etwas den noch anstehenden Aufwand. So bin ich seit ein paar Tagen ja schon am UiManager dran - diesen neu zu schreiben. Das macht auch echt gute Fortschritte! Nur geht halt noch recht vieles im HauptmenĂŒ noch nicht oder noch nicht richtig.

Mittlerweile fĂŒhle ich mich auch viel wohler und sicherer mit dem Code, der Sprache und dem Framework. Das merke ich immer dann, wenn ich anfange bewehrte Konzepte zu ĂŒbernehmen. So z.B. Aufgaben auf mehrere Klassen aufzuteilen. Der (NEUE!!!) UiManager sah anfangs aus wie ein Monster. Was mir aufgefallen ist: es gab sehr viel private Methoden. Daraufhin hab ich angefangen neue Klassen zu erstellen, die etwas spezialisierter sind und vom UiManager verwendet werden. So hab ich jetzt 3 Klassen die 2-3 der privaten Methoden ĂŒbernommen haben. Also muss mein UiManager nur noch delegieren (was die Sache seeeehr viel aufgerĂ€umter gestaltet).

Ich dachte mir: ja geil - und damit mach ich gleich beim GameManager weiter. Und der GameManager hat mit “Am Arsch, ich hab fast nur öffentliche Methoden!” geantwortet. Da muss ich mir mal ĂŒberlegen - ob es Sinn macht da doch wieder etwas aufzubröseln. Aber da ich den GameManager eigentilch als “fertig” ansehe möchte ich da bis zum release nur noch korrekturen vornehmen und kein wirkliches refactoring machen.


#135

Ich ĂŒberlege jetzt doch den GameManager aufzusplitten. Will aber aufpassen, dass es nicht so wird wie frĂŒher. Dabei möchte ich eine AccountManager raus zu extrahieren. Ich hoffe nur, dass mein Grund ein berechtigter ist.

Der AccountManager wĂŒrde dann mind. folgende Informationen enhalten:

  • Anzahl an MĂŒnzen die der Spieler besitzt
  • PowerUps die der Spieler besitzt
  • Features die der Spieler gekauft hat.
  • (Einstellungen fĂŒr das Spiel???)

Denn im wesentilchen wĂ€ren das die Daten die einem Account (oder Profil) zuzuordnen sind. Das wĂŒrde auch die Aufgaben klarer definieren

GameManager
Seine Aufgabe ist es das laufende Spiel zu managen. Er kĂŒmmert sich um die einzelnen ZustĂ€nde und kĂŒmmert sich darum, dass die Spawner Ihre Aufgabe starten/beenden.

UiManager
KĂŒmmert sich um alle UI-Elemente. Dazu gehören das MenĂŒ und so Sachen Labels die MĂŒnzen, Distanz & Punkte anzeigen. Auch Dialoge usw. wĂŒrden darĂŒber gemanagt werden.

AccountManager (neu)
KĂŒmmert sich um das Spielerprofil. Was auch immer der Spieler sammelt oder kauft landet letztendlich hier.


Ich denke, dass macht durchaus Sinn. Darf halt nur nicht mehr so Enden wie bei der Architektur davor.


#136

Ok - das mit dem AccountManager hat gut funktioniert (hatte damit schon vor dem letzten Post angefangen gehabt). Ich bin ein Freund von kleinen Methoden / Klassen und da hilft das enorm. Nun wollte ich die Einstellungen nachziehen und hadere dabei aber. Gehören die wirklich in den Account? Wenn ich alles durchgehe, wĂŒrde ich mich am liebsten auch wieder fĂŒr einen neuen Manager entscheiden:

GameManager: Passt nicht, da die SoundEinstellungen nicht nur den Spielsound regeln sondern auch was im HauptmenĂŒ gespielt wird. Einstellungen wirken sich also Global aus. Es wĂŒrde demnach die Domain des GameManagers ĂŒbersteigen.

UiManager: Passt nicht. Sagt eigentlich auch schon irgendwie der Name. Aber letztendlich hat man hier auch das gleiche Problem wie beim GameManager.

AccountManager Der AccountManager steht ĂŒber GameManager und UiManager. Er wird von beiden konsumiert aber der AccountManager kennt die anderen zwei nicht einmal. Er wĂ€re global (was gut ist) - aber fĂŒr mich gehören die Einstellungen nicht wirklich zu den Account-Daten.

Letztendlich wĂŒrde ich mir das ganze in etwa so vorstellen:

Der Sound behĂ€lt seinen eigenen Manager (finde das macht absolut Sinn). Dieser hat dann eine Event-Basierte Verbindung zum GameManager (er muss ja wissen - ob er gerade Musik fĂŒr das HauptmenĂŒ oder das Spiel abspielen soll).

Soweit mal meine Gedanken zu dem ganzen. Nachdem ich meine Gedanken hier mal dokumentiert hab und ich es noch immer möchte, werde ichs wohl einfach tun :slight_smile:.


#137

Und gerade eben hab ich meinen letzten LegacyManager und mein letztes LegacyModel aus dem Code geworfen. Im Editor ist mein Spiel auch lauffĂ€hig. Alle bisherigen 55 Tests sind GrĂŒn! Meine sonstigen “smoke tests” die ich wĂ€hrend der Entwicklung gemacht hab waren auch alle erfolgreich. Also kurz gesagt: Mein Refactoring ist im wesentlichen durch!

Ich möchte aber nicht vorschnell das release bauen. Vorher stehen noch mindestens 2 Dinge an:

  • Testen auf meinem Smartphone.
  • Code noch ein letztes mal durchgehen (da noch 2 Todos drin sind)

Ansonsten schaut mein Sprint aktuell so aus:

Hoffentlich passt alles, denn ich wĂŒrde schon gerne mal wieder ein Update raushauen :slight_smile:


#138

So langsam reizt es in den Fingern auch mal wieder ein neues Spiel zu starten. Ich hĂ€tte nicht erwartet, soviel Zeit mit Feature Runner zu verbringen. Deswegen hab ich mal eben mein Backlog durchgeschaut und alles was ich als nice-2-have ansehe auf niedrige Prio gesetzt. Was bedeutet, dass Tasks mit Prio “Niedrig” es vermutlich nicht ins fertige Spiel packen werden. Konzentrieren werde ich mich jetzt auf jeden Fall erstmal auf diese hier:

Wenn Ihr drĂŒber schaut, dann seht ihr: auch diese bereits gefilterten Tasks werden mich vermutlich noch eine ganze Weile beschĂ€ftigen. Aber ich glaube damit das Spiel dann soweit Rund gemacht zu haben, dass man damit ein paar Stunden verbringen kann bis man alles freigeschaltet hat.

UrsprĂŒnglich hatte ich ja auch die Idee gehabt Werbung einzubauen (vom Benutzer selbst getriggert fĂŒr eine Belohnung). Aber davon wird es auch keinen Task geben. Da ich wirklich gerne irgendwann mal ein neues Spiel starten möchte wird dieses (nach meinem aktuellen Plan) kostenlos und frei von Werbung bleiben.


#139

So. Ich hab das neue Update im Play-store eingereicht und die win-version steht wie immer hier zum Download bereit:

https://1drv.ms/u/s!Av4-trM0Vnk9tybTQfqeveVSdVrr

Das nÀchste Update sollte dann hoffentlich nicht mehr so lange dauern ^^.


#140

Schon lange hier nix mehr geschrieben. Also - es geht weiter wie vorher. Nur das jetzt das UI dran ist. War nicht geplant, aber auf meinem Honor 10 passt das Spiel nicht wirklich. Da ich dafĂŒr viele Anpassen mĂŒsste dachte ich mir, ziehe ich das UI-Update vor. Ich habe auch schon ein bisschen was erreicht - nĂ€mlich die Neugestaltung vom UI wĂ€hrend des Spiels:

Ich habe mir viele Gedanken dazu gemacht und ich glaube, dass ich damit schon eine echte Verbesserung erreicht habe.

  • Der Platz wird besser genutzt
  • Das Pause-menĂŒ ist nun auch gut erreichbar bei Smartphones die keine Hardware-Keys besitzen!
  • Power-Up-Buttons sind einfacher zu erreichen
  • Möglichst freie Sicht auf das Spielgeschehen.

Noch ist diese View nicht fertig. So fehlt z.B. noch die Feature-Mechanik. Aber ich denke das ich schon sehr bald zum HauptmenĂŒ kommen könnte :slight_smile:.