Going Public: Zwei Stores, zwei Ablehnungen, null Chill

Das Launch-Tagebuch · 29. September 2026 · 20 Min. Lesezeit

English Español Français Português 中文 Italiano 日本語 한국어 Русский Türkçe Polski Nederlands Bahasa Indonesia

Moneyflow ist jetzt im App Store und bei Google Play. Wir würden gern erzählen, es sei glatt gelaufen. War es nicht. Unterwegs haben wir zwei Ablehnungen von Apple gesammelt, einem Build-Skript beigebracht, Nein zu sagen, herausgefunden, dass ein Lambo die ganze Zeit eine Zielflagge war, und einen Fehler behoben, den Google mit einem Achselzucken abgetan hat und Apple nicht.

Das ist die ganze Geschichte, zusammengesetzt aus unseren Versionshinweisen, unseren Runbooks und den Commit-Nachrichten, die wir in Eile geschrieben haben. Sie ist lang, ein bisschen frech, und wenn du gerade dabei bist, eine eigene App zu starten, steckt echter Rat darin. Hol dir einen Kaffee oder einen kleinen Kredit auf deine Vermögenswerte.

Im App Store laden Bei Google Play laden

Die Kurzfassung in Daten

  1. Version 1.2.8 geht bei Google Play live. Die Ankündigung folgt am selben Abend, in sechs Sprachen.
  2. iOS zieht bei 1.2.8 mit Android gleich, nachdem wir einen Startbildschirm gerettet haben, den niemand lesen konnte.
  3. Einreichung eins geht ohne ihre In-App-Käufe an Apple. Einreichung zwei geht mit allen 39 raus. Apples erste Antwort: Information Needed.
  4. Ein Markenrechts-Frühjahrsputz und Build 31, der einen fehlenden Schlüssel wieder in die App bringt.
  5. Ablehnung zwei, von einem iPad: Beide Anmelde-Buttons zeigen einen Fehler, und der Prüfer findet den Shop nicht.
  6. Der Schuldige ist ein einziger fehlender Parameter. Android hat ihn die ganze Zeit stillschweigend verziehen.
  7. Build 34, richtig signiert. „Mit Apple anmelden“ funktioniert endlich.
  8. Version 1.2.9 wird bei Google Play ausgerollt.
  9. Spieler melden uns, dass ihre Handys heiß laufen. Wir bringen dem Spiel das Heißlaufen ab.
  10. Fünf Versionen an einem Wochenende, von 1.2.10 bis 1.3.1.
  11. Der App-Store-Link kommt auf unsere Startseite. Du bist hier.

Vor dem Börsengang: ein Browserspiel mit Bindungsangst

Moneyflow fing als Browserspiel an. Du wählst einen Charakter mit echtem Job, echten Rechnungen und echtem Gehalt, würfelst und versuchst, genug passives Einkommen aufzubauen, um dem 9-to-5 zu entkommen und zwei Träume zu bezahlen. Beides zu schaffen ist der einzige Weg zum Sieg, im Einzelspieler wie im Multiplayer. Dazu gibt es eine Hochzeit, einen Ehevertrag und eine Scheidung, und die kommen noch.

Dann beschlossen wir, dass es aufs Handy gehört, und fanden heraus, dass ein App-Store ein ganz anderes Spiel ist. Keine Würfel, keine Karten, nur Formulare, Fragebögen und eine Bank, die immer gewinnt. Den Papierkram für Google Play haben wir schon früher aufgeschrieben, in Moneyflow im Google Play Store veröffentlichen. Das hier ist die Fortsetzung: was danach passierte, in beiden Stores, und was wir uns sagen würden, wenn wir zurückreisen könnten.

Runde eins: Google Play sagt Ja (nachdem es nach allem gefragt hat)

Google Play kam zuerst, und es benahm sich wie eine Bank, wenn du eine Hypothek beantragst: freundlich, gründlich und scharf darauf, jedes Dokument zu sehen, das du besitzt. Das Datensicherheitsformular, die Inhaltseinstufung, die Seite zur Kontolöschung, der geschlossene Test. Der frühere Beitrag behandelt das alles, hier steht also, was wir geändert haben, nachdem der erste Eintrag stand.

Wir haben aufgehört zu klicken. Alle 39 In-App-Käufe (18 Spielfiguren, 14 Würfel-Skins, 4 Spielfeld-Designs und 3 Bundles, jeder einzelne rein kosmetisch) wurden per Skript statt von Hand angelegt, mit RevenueCat zwischen App und beiden Stores, damit die Kauflogik überall dieselbe ist. Auch Releases laufen über die Android Publisher API. Ein Skript öffnet einen Edit, lädt das Bundle hoch, weist den Track zu und committet, und schlägt ein Schritt fehl, löscht es den Edit, sodass ein fehlgeschlagener Lauf nichts zurücklässt. Es ist das Ordentlichste in dieser ganzen Geschichte.

Play hat seine Macken. Es lehnt jede Build-Nummer ab, die es jemals gesehen hat, auch solche, die du hochgeladen und nie veröffentlicht hast, Build-Nummern verhalten sich also wie Bargeld im Spiel: ausgegeben ist ausgegeben, egal ob du etwas dafür bekommen hast. Außerdem haben wir zwei Service-Konten, und nur eines davon darf veröffentlichen. Das andere kann einen Edit öffnen, ein ganzes Bundle hochladen, es einem Track zuweisen und im allerletzten Schritt ein 403 kassieren. All die Mühe, und ein klares Nein, obwohl der Kuchen schon auf dem Tisch steht.

Am 7. September ging Version 1.2.8 live. Am selben Abend veröffentlichten wir die Ankündigung in sechs Sprachen, denn wenn man sich schon öffentlich freut, kann man es auch gleich auf Deutsch, Spanisch, Französisch, Portugiesisch und Chinesisch tun.

Google Play sagte Ja. Apple hatte andere Pläne.

Runde zwei: Apple macht sich rar

Während Android vorauspreschte, stand iOS in App Store Connect noch bei Version 1.2.1. Am 10. September holte es auf: Version 1.2.8, Build 30, zehn neue Screenshots und Werbetext in acht Sprachen. Davor gab es noch die kleine Sache mit der Paid-Apps-Vereinbarung. Apple lässt dich keinen einzigen In-App-Kauf anlegen, bis du sie akzeptiert und deine Bank- und Steuerdaten hinterlegt hast. Bis dahin liefert jeder Versuch ein 409, was Apples Art ist zu sagen: „Noch nicht, und nicht, bevor ich deine Unterlagen gesehen habe.“

Dann haben wir alle 39 Käufe per Skript über die App Store Connect API angelegt. Beim ersten Lauf scheiterten 24 davon mit UNEXPECTED_ERROR. Wir starteten ihn noch einmal, und er lief sauber durch. Das Runbook enthält jetzt den zenhaftesten Satz im Repository: neu starten statt debuggen.

Der Startbildschirm, der keiner war

Auf einem echten Handy war unser Startbildschirm unlesbar, aus zwei verschiedenen Gründen. Das Storyboard füllte den Bildschirm mit quadratischem Artwork, auf einem hohen Handy wurde es also so lange skaliert, bis die Höhe passte, und schnitt etwa 54 % der Breite ab. Das Wortmarken-Logo und der ganze Zierrahmen fielen über den Rand. Schlimmer noch: Die Dark-Mode-Varianten waren nur die nackte Figur bei etwa 5 % einer cremefarbenen Fläche, also ein unsichtbares Logo auf jedem Handy im Dunkelmodus.

Wir stellten um: Das Artwork wird innerhalb des Bildschirms auf eigenem cremefarbenem Hintergrund eingepasst, die Dark-Varianten fielen weg, und das Logo-Lockup kam mit 88 % der Fläche hinein. Der Bilderordner schrumpfte von 55 MB auf 9,1 MB. Ein erster Eindruck sollte nicht 55 MB wiegen.

Wie man eine App einreicht, deren Shop nichts verkauft

Hier ist eine Falle mit hervorragender Tarnung. In-App-Käufe sind eigene Prüfpunkte, und Apple prüft keinen, der nicht in deiner Einreichung steckt. Beim ersten Einreichen ging die App in die Prüfung, während alle 39 Produkte bei „Ready to Submit“ zurückblieben. Wäre sie freigegeben worden, hätten wir ein Spiel über Kaufen und Verkaufen ausgeliefert, dessen Shop nichts verkaufen konnte. Es zurückzuziehen kostete uns ein „Remove from Review“ und unseren Platz in der Warteschlange.

Die Falle ist: Apple lässt dich auf der Seite „In-App-Käufe“ einen Einreichungsentwurf anlegen, der nie abgeschickt werden kann. Ohne App-Version darin scheitert jedes Produkt beim Hinzufügen mit „Unable to Add for Review“, und das Abschicken des Entwurfs scheitert mit „add an app version for the selected platform“. Keine der beiden Meldungen sagt dir, dass die Version zuerst hineinmuss. Wir haben natürlich versucht, die Lösung zu skripten. Die API kennt überhaupt keine In-App-Kauf-Beziehung an einer Einreichung. Wir probierten drei Schreibweisen, bevor wir akzeptierten, dass diese Tür nur über die Oberfläche geht, und das Runbook sagt es jetzt höflich, damit es niemand mehr versucht.

Die Zahl, die uns am Ende glücklich machte, war vierzig: eine App-Version plus neununddreißig Dinge, die man dafür kaufen kann.

Ablehnung Nummer eins: Apple will dich besser kennenlernen

Am 11. September antwortete Apple. Die Betreffzeile lautete Guideline 2.1, Information Needed. Es war kein Fehler, kein Absturz, kein Verstoß. Apple meldete überhaupt keinen Mangel. Es war der Fragebogen, den Apple an Konten mit kurzer Prüfhistorie schickt, und er kam mit der Forderung nach einer Bildschirmaufnahme. Sieh es weniger als Ablehnung und mehr als Hintergrundcheck.

Die Liste hatte sieben Punkte: eine Bildschirmaufnahme, wofür die App da ist und für wen, wie man hineinkommt und alles ausprobiert, welche externen Dienste sie nutzt, ob sich etwas nach Region ändert, ob sie reguliert ist oder auf fremdem Material aufbaut, und wie die Käufe funktionieren. Das waren vernünftige Fragen, so vernünftig, wie die Fragen bei einem ersten Date vernünftig sind. Das Resolution Center begrenzt eine Antwort auf 4.000 Zeichen, und unsere kam auf 3.917, das Längste, was wir je zu jemandem gesagt haben, den wir gerade erst kennengelernt hatten.

Dann die Aufnahme. Apple wollte den echten Ablauf in echter Geschwindigkeit auf einem echten Handy: ein Kaltstart, ein Einzelspieler-Spiel, der Shop samt Kaufdialog, Registrieren, Anmelden, eine Multiplayer-Lobby und das erneute Löschen des Kontos. Vier Minuten iPhone-Material mit 60 Bildern pro Sekunde wiegen etwa 240 MB, zu groß zum Anhängen, also presste ffmpeg es auf unter 10 MB, bei noch lesbarer Oberfläche. Wir haben die ganze Shot-Liste aufgeschrieben, denn wenn uns dieses Projekt eines gelehrt hat, dann dass wir vergessen werden, wie wir irgendetwas gemacht haben.

Die Antworten gingen an zwei Stellen hin: in die Antwort im Resolution Center und in die Prüfhinweise im Eintrag der App, sodass jede künftige Einreichung mit bereits beantworteten Fragen eintrifft. Prüfer befolgen diese Hinweise wörtlich. Schreib sie für jemanden, der deine App noch nie gesehen hat, vierzig Sekunden Zeit hat und ein iPad in der Hand hält. Alle drei Annahmen werden sich als zutreffend herausstellen.

Beim Proben tauchte noch etwas auf. Das Löschen eines Kontos hing einmal bei „Deleting...“ fest und klappte beim zweiten Versuch. Wir vermuten, der Server war eingedöst, was für einen Prüfer genau wie ein kaputter Button aussieht. Halte deinen Server wach, solange der Prüfer in der Stadt ist.

Der Markenrechts-Frühjahrsputz

Solange wir Apples Aufmerksamkeit hatten, gingen wir das Spiel durch und suchten alles, was nach einer Marke klang. Apples Regeln zu Inhaltsrechten ließen uns hinschauen, und was wir fanden, gefiel uns nicht. Zwei Charaktere besaßen einen „BMW 3 Series (CPO)“ und einen „Honda Civic“. Die Namen brachten dem Spiel nichts und luden jede Menge Ärger ein, deshalb heißen sie jetzt „Sportwagen (CPO)“ und „Basislimousine“. Das Wort „Monopoly“ verschwand aus unseren App-Store-Keywords.

Dann war da noch der Lambo. Es stellte sich heraus, dass die Lambo-Figur nie ein Auto war. Es war die ganze Zeit ein Emoji mit Zielflagge, der alte Name versprach also einen Supersportwagen und lieferte eine Rennflagge. Finanziell gesprochen ist das einfach Marketing. Jetzt heißt sie „Chequered Flag“. Das Spielfeld-Design „The Tank“ wurde zu „Shark Pool“.

Die eine Regel, die wir nicht gebrochen haben.

Wir haben die Anzeigenamen geändert und jede Produkt-ID genau dort gelassen, wo sie war. Die Zielflaggen-Figur ist unter der Motorhaube immer noch pawn.lambo und wird es immer sein. Diese IDs sind in beiden Stores live, an Preise gebunden und in den Bundle-Zuweisungen benannt, und eine Umbenennung hätte den Artikel jedem entzogen, dem er schon gehört. Namen sind Text. IDs sind Verträge.

Ablehnung Nummer zwei: der iPad-Zwischenfall

Am 17. September meldete sich Apple wieder, und diesmal hatte es echte Probleme gefunden. Der Prüfer nutzte ein iPad Air (11 Zoll, M3) mit iPadOS 27, weil reine iPhone-Apps auf dem iPad im Kompatibilitätsmodus laufen und dort geprüft werden. Es gab zwei Beanstandungen. Guideline 2.1(a): Ein Tipp auf „Weiter mit Apple“ oder „Weiter mit Google“ zeigte einen Fehler. Guideline 2.1(b): Der Prüfer fand unsere 39 In-App-Käufe nicht.

Beides war unsere Schuld, und in gewissem Sinn war es dieselbe Schuld.

Der Fehler

Das Anmelde-Plugin will bei jedem Aufruf ein options-Objekt. Fehlt es, lehnt das Plugin auf iOS mit „Missing provider or options“ ab, noch bevor ein Anmeldefenster eine Chance hat zu erscheinen. Auf Android nimmt dasselbe Plugin stillschweigend ein leeres an und macht weiter. So segelte dieselbe Codezeile durch die Prüfung bei Google Play und fiel bei Apple beim ersten Tipp um, auf jedem iPhone und auf jedem iPad.

Ein fehlender Parameter. Android verzieh ihn. iOS nicht.

Der Shop, den keiner fand

Die Käufe waren ein eigenes Missverständnis, das zufällig perfekt zum ersten passte. Unsere alten Prüfhinweise sagten dem Prüfer, dass man sich zum Kaufen anmelden müsse. Die Anmeldung war kaputt. Der Prüfer erreichte den Shop also nie, in einem Teufelskreis aus eigener Herstellung.

Es wurde schlimmer, als wir genauer hinsahen, denn der Shop hatte noch drei weitere Arten zu enttäuschen. Kam die Produktliste ohne Pakete zurück, behandelte der Shop das als „nichts im Angebot“ und blendete jeden Artikel aus, der dir noch nicht gehörte. Die drei Bundles (5-Pawn, Themes und Starter Persona) waren seit Juni versteckt. Und ein Gast, der das 5-Pawn Bundle kaufte, hätte bezahlt und nichts freigeschaltet bekommen, weil unser Server Bundles nur für angemeldete Spieler in ihre Artikel auflöste. Ein Gast ist natürlich genau das, was ein Prüfer ist. Jemandem das Geld abzunehmen und eine leere Kiste zu übergeben, ist eine feine Finanzlektion. Nur keine, die wir erteilen wollten.

Die Fix-Liste, fürs Protokoll. Den Parameter übergeben. Beide Anmeldefenster am aktiven Fenster der App andocken lassen, auf dem iPad, weil das Plugin am ersten Fenster verankerte und das unter iPadOS nicht immer das sichtbare ist. Dem Shop beibringen, dass null geladene Produkte „noch nicht geladen“ bedeutet und nicht „leer“. Die Bundles zurückholen. Der App beibringen, Bundles auch für Gäste aufzulösen. Und die Prüfhinweise so umschreiben, dass in klaren Worten steht, dass zum Kaufen keine Anmeldung nötig ist, samt dem genauen Weg zum Shop.

Das Ergebnis war 1.2.9. Ihre Versionsnotiz beginnt mit den zwei Sätzen, die uns am meisten gekostet haben: „Anmelde-Fixes: ‚Weiter mit Google‘ zeigt bei einem bewussten Tipp die Kontoauswahl, und die native Anmeldung bricht nicht mehr mit einem Fehler ab. Der Shop listet immer seine Artikel, auch bevor die Preise geladen sind.“ Zwei Sätze, zehn Tage unseres Lebens.

Builds 32 und 33: die, über die wir nicht reden

Man würde meinen, wir könnten den Fix einfach ausliefern. Haben wir, zweimal, und beide Male war es falsch. In den TestFlight-Builds 32 und 33 funktionierte die Google-Anmeldung, aber „Mit Apple anmelden“, Apples eigener Button in Apples eigenem Testprogramm, scheiterte mit AuthorizationError 1000.

Die Ursache ist hinterher offensichtlich und vorher unsichtbar. Entitlements reisen in der Code-Signatur. Unser Upload-Skript archivierte die App mit ausgeschaltetem Signieren und überließ das Signieren dem Export-Schritt, der eine App signieren, ihr aber keine Entitlements geben kann, die sie nie hatte. Das Entitlement für „Mit Apple anmelden“ kam nie in den Build. In Entwicklersprache: Die App hatte das Haus ohne Hose verlassen.

Das Upload-Skript signiert jetzt beim Archivieren und weigert sich, ein Archiv hochzuladen, dessen Signatur das Entitlement nicht enthält. Wir haben einen Türsteher gebaut. Er kontrolliert Ausweise. Die Builds 32 und 33 sind tot, und Build 34, der ordentlich angezogene, ist der Build, den wir an Apple zurückgeschickt haben.

Dann sagte Apple Ja.

Heißes Zeug

Am 24. September hatten uns Spieler gesagt, dass ihre Handys heiß würden. iPhone 15, iPhone 16 Pro Max, und auch die Web-Version etwas warm. Wir würden gern sagen, das lag am rohen Sexappeal des Zinseszinses. Es war ein Timer.

Das Spiel zählte einmal pro Sekunde einen Zähler hoch, in jedem Modus, und jeder Tick rendete das ganze Spiel neu: das Brett, jede Zelle, jedes Panel. Ununterbrochen. Gleichzeitig malten sich die animierten Spielfiguren auf Handys mit schnellen Displays bis zu 120-mal pro Sekunde neu, um eine Animation mit 30 Bildern pro Sekunde zu zeichnen. Die Vollbild-Unschärfe hinter jeder Karte wurde in jedem Frame neu berechnet, weil sich die Figur darunter weiterbewegte. Und die Leuchteffekte, die das Brett lebendig wirken ließen, animierten Box-Schatten, was in jedem Frame ein Neuzeichnen erzwingt.

Wir haben alle vier behoben. Der Zähler wurde ein einziger Timeout. Die Figuren zeichnen nur ganze Frames und pausieren, wenn sie außerhalb des Bildes sind, bei reduzierter Bewegung oder wenn eine Karte sie verdeckt. Die Leuchteffekte und Ringe animieren Deckkraft und Position statt Schatten und pulsieren dreimal, dann ruhen sie. Die Leerlaufarbeit auf dem Brett fiel bei zehn Sekunden Headless-Test von 624 ms auf 15 ms. Mit geöffneter Karte und der Drachen-Figur auf dem Brett fiel sie von 1.188 ms auf 11 ms. Unsere Animationen zeigen jetzt mehr Selbstbeherrschung als wir irgendwo sonst in diesem Projekt.

Ausgeliefert wurde es als 1.2.10, Schlagzeile „Kühlere Handys“, zusammen mit einer fairen Entlassungsregel. Nur dein Gehalt fällt aus, wenn du gehen musst. Dein Nebenverdienst zahlt weiter, und die Rechnungen sind trotzdem fällig. Gefeuert zu werden soll wehtun. Es soll nicht deinen Nebenverdienst löschen.

Das Hauptbuch: jede Versionsnotiz, hintereinander gelesen

Wir führen unsere Versionshinweise in einer einzigen Datei, derselben Datei, die beide Stores speist. In der Reihenfolge gelesen, ergeben sie eine merkwürdige Art Tagebuch, hier ist es also, mit dem Subtext dazu. Die Daten sind Commit-Daten. Die Datei springt von 1.0.1 direkt zu 1.2.6, was dazwischen passiert ist, ist also ohne Tagebuch passiert. Jede Versionsnummer unten verlinkt auf ihren eigenen Beitrag.

1.0.0

Erste Version von Moneyflow. Baue dein Finanzimperium und entkomme dem Hamsterrad.

Ernsthaft, kurz und ein bisschen verängstigt. Schau, wie klein es war.

1.0.1

Google Play Web-Käufe sind ab sofort auf playmoneyflow.com verfügbar. Stabilitäts- und UX-Verbesserungen.

App Store Stabilitäts- und Performance-Verbesserungen. Verschiedene Fehlerbehebungen im Finanzbericht und bei den Würfelanimationen.

Dieselbe Version, zwei Sätze Hinweise. Die Stores haben unterschiedliche Vorstellungen davon, was man den Leuten sagen darf, also führen wir für jeden einen eigenen Satz und versuchen, sie nicht zu verwechseln.

1.2.6

Steuern sind da: Einkommensteuer auf dein Gehalt, 15 % auf Nebenverdienst, 15 % Kapitalertragsteuer auf Verkäufe mit Gewinn. Charaktere verdienen jetzt echte US-Gehälter von 2025. Mieten und Unternehmensrenditen folgen der Wirtschaft — mager in der Krise, üppig im Boom.

Der Fiskus kommt. Niemand hat darum gebeten, und alle haben es gebraucht. Jede Rendite im Spiel wird jetzt nach Steuern beurteilt, denn nur die zählt.

1.2.7

Verhandle bei Deals, Angeboten und Kreditkonditionen: ein Münzwurf 50/50, 20 % besser oder 20 % schlechter. Wähle, welche Immobilie du im Bieterkrieg verkaufst und welche Vermögenswerte in der Scheidung gehen — oder unterschreibe einen Ehevertrag.

Feilschen in seiner unschuldigen ersten Form. Auch der erste Auftritt des Ehevertrags, was verrät, was uns damals beschäftigte.

1.2.8 7. Sep.

Zweimal feilschen: verhandeln, dann nachverhandeln – die Gegenseite kann aber abspringen (10 %, dann 15 %). Keine Scheidung ohne Hochzeit, kein Aktienverkauf ohne Aktien. Die Scheidung teilt dein Nettovermögen, dein Ex kann Kredite übernehmen.

Die Romantische. Wer zweimal fragt, wird zickig. Bis zu dieser Version konnte das Deck dir eine Scheidung austeilen, bevor du verheiratet warst, was chaotischer ist als eine Hochzeitskapelle in Las Vegas. Es ist auch die Version, die uns vor Apples Haustür gebracht hat.

1.2.9 22. Sep.

Anmelde-Fixes: „Weiter mit Google“ zeigt bei einem bewussten Tipp die Kontoauswahl, und die native Anmeldung bricht nicht mehr mit einem Fehler ab. Der Shop listet immer seine Artikel, auch bevor die Preise geladen sind.

Geschrieben unter Zwang, von zwei Ablehnungen und einem fehlenden Parameter.

1.2.10 26. Sep.

Kühlere Handys: Das Spiel lässt dein Gerät beim Spielen nicht mehr ständig arbeiten. Animationen pulsieren ein paar Mal und kommen dann zur Ruhe, und das Brett wird nicht mehr jede Sekunde neu gezeichnet. Fairere Entlassungen: Nur dein Gehalt fällt weg, Nebeneinkünfte laufen weiter, und an ausgelassenen Zahltagen sind die Ausgaben trotzdem fällig.

Die, in der wir aufgehört haben, deinem Handy Fieber zu machen.

1.2.11 26. Sep.

Neu im Kaufmenü: eine Stadtwohnung, eine Reinigung und ein Motel an der Landstraße. … Jede Karte hat ihr eigenes Bild, und deine Entscheidungen stehen direkt darunter. Lade Freunde in einen privaten Multiplayer-Raum ein.

Das vollste Release und eines der kurzlebigsten, denn 1.2.12 kam noch am selben Abend. Private Räume sind die Schlagzeile für alle, die Freunde haben: ein Gastgeber, zwei bis vier Plätze und ein Code mit sechs Zeichen.

1.2.12 26. Sep.

Knapp bei Kasse? Du wählst jetzt, wie du die Lücke deckst, und siehst, wie nah du der Pleite bist: Notkredite in Folge, verbleibender Kreditrahmen und Zahltage bis dahin. Notkredite sind jetzt günstiger als die Kreditkarte.

Der Bankrott kommt jetzt mit Countdown, der freundlichsten Art, die wir kennen, Angst beizubringen. Notkredite kosten jetzt weniger als die Kreditkarte, was mehr ist, als das echte Leben für dich tun wird. Ebenfalls behoben: Die Würfel rollten früher von selbst, nachdem du eine Karte geschlossen hattest, was entweder ein Fehler war oder unser passiv-aggressivstes Feature.

1.3.0 27. Sep.

24 neue Karten, vom Motel an der Landstraße über eine SaaS-Firma bis zu The Big Short, dazu Seltenheitsstufen: Jetzt tauchen ungewöhnliche und seltene Karten auf. Blende eine Karte aus, um aufs Spielbrett zu schauen, und tippe dann auf „Zurück zur Karte“. Entlassungen und Notfälle lassen sich nicht mehr wegklicken.

Vierundzwanzig neue Karten, ein Seltenheitssystem und, ganz leise, die wichtigste Änderung des Monats: Karten kommen jetzt vom Server. Dazu unten mehr.

1.3.1 27. Sep.

Leihe gegen deine Vermögenswerte: Jede Immobilie, Firma oder Aktie ohne Kredit kann jetzt einen günstigeren Kredit absichern, nur Zinsen, zum Marktzins plus 0,5 %.

Wieder Hebel. Es ist ein Finanzspiel, und wir können nicht anders. Es folgte 1.3.0 später am selben Tag.

1.4.0 1. Okt.

Neue Profi-Bots planen jeden Zug und lesen die Wirtschaft, und jeder Bot kann jetzt Träume kaufen, gewinnen und gegen seine Werte leihen. Die Wirtschaft zählt mehr: Zinsen folgen dem Konjunkturzyklus, in der Rezession sinken deine Steuern, und Mieten auf deinen Besitz steigen im Boom und sinken in der Rezession.

Die, in der die Bots das Gewinnen gelernt haben. Bisher konnte es keiner von ihnen, denn keiner kaufte je einen Traum. Profi-Bots sind da, die Wirtschaft begann, Zinsen, Steuern und Mieten mit ihrer Laune zu bewegen, und die App lernte acht weitere Sprachen.

1.4.1 1. Okt.

… Hypotheken werden jetzt über 25 Jahre getilgt, Geschäftskredite über 15, Autokredite über 6; Bankkredite kosten nur Zinsen, und deine Kreditraten dürfen bis zu 67 % deines Einkommens erreichen. …

Hypotheken haben endlich ein Enddatum. Die Kreditarbeit kam, nachdem 1.4.0 schon geschnürt war, und wurde deshalb noch am selben Abend als 1.4.1 ausgeliefert, zusammen mit einer News-Karte auf dem Startbildschirm.

1.4.2 1. Okt.

Ein Fehler, behoben weniger als zwanzig Minuten nach 1.4.1: Der Button für das Überbrückungsdarlehen bietet jetzt den Betrag an, den die Bank wirklich bewilligt. Es hat keine eigenen Store-Hinweise.

Das Wochenende der fünf Versionen.

Samstag, 26. September

Sonntag, 27. September

Commit-Zeiten, Ortszeit Sofia. Nicht jede Version erreichte jeden Store als sie selbst: Bei Google Play ging 1.2.12 anstelle von 1.2.11 in die Produktion, und auf iOS wurde sie an ihrer Stelle eingereicht. Am selben Wochenende bekam das Deck 130 Illustrationen, im Code gezeichnet.

Das beste Update ist das, das niemand freigeben muss

Am Ende dieses Wochenendes hatten wir etwas Nützliches gelernt. Der langsamste Teil beim Ausliefern eines Updates ist nicht das Bauen. Es ist das Warten darauf, dass ein Store es sich ansieht. Also tat 1.3.0 etwas Anderes: Es brachte der App bei, Lieferungen anzunehmen.

Neue Karten kommen jetzt von unseren Servern, die meisten neuen Inhalte brauchen also kein App-Update mehr. Es brauchte ein App-Release, um die Maschinerie zu installieren. Danach sind neue Karten nur einen Deploy entfernt, Übersetzungen und Illustrationen inklusive.

Der Shop funktioniert genauso. Apple prüft einen neuen In-App-Kauf einzeln, ohne neuen Build, eine neue Spielfigur braucht also auch keine neue Version mehr.

Der clevere Teil ist das Sicherheitsnetz. Niemand bekommt je eine Karte, die seine App nicht spielen kann, alte und neue Versionen können also ohne Probleme an einem Tisch sitzen. Erfinden wir eine wirklich neue Mechanik, stellen wir uns weiterhin in die Warteschlange wie alle anderen.

Dasselbe Release brachte Seltenheit, das heißt, manche Karten tauchen viel seltener auf als andere. Wie viel seltener, bleibt unser Geheimnis, aber die seltensten erscheinen etwa so oft, wie ein App Review beim ersten Mal durchgeht. Wir haben eine Gewöhnliche gezogen.

Die Anzeigetafel

Für die Tabellenfreunde.

Was wir uns am Anfang sagen würden

Was früher ein Abend voller Klicks war, ist jetzt pro Store ein Hochzählen, eine Notiz und eine Handvoll Befehle. Das Warten ist der einzige Teil, den wir nicht automatisieren können. Alles andere steht in dieser Liste.

  1. Setz die Version auf die Einreichung, bevor du die In-App-Käufe hinzufügst. Apple lässt dich es auch andersherum machen und sagt dir dann nicht, warum es nicht geht.
  2. Schreib deine Prüfhinweise für einen Prüfer, der die App noch nie gesehen hat. Er hat vierzig Sekunden und ein iPad und befolgt die Hinweise wörtlich. Gib ihm den genauen Weg zu allem.
  3. Stell nie eine Anmeldung vor deinen Shop. Auch Gäste haben Geldbeutel, und Prüfer sind Gäste.
  4. Signiere dein Archiv, und lass das Skript den Upload eines Archivs verweigern, das seine Entitlements nicht trägt. Bau dir einen Türsteher.
  5. Lass fehlende Schlüssel schreien. Build 30 ging ohne seinen Zahlungsschlüssel raus, und nichts beschwerte sich laut, der Shop war einfach leer. Ein stiller Fehler ist eine Ablehnung mit Verspätung.
  6. Teste auf beiden Plattformen, auch wenn der Code geteilt ist. Android verzieh, was iOS verweigerte, und eine Codezeile hatte zwei verschiedene Persönlichkeiten.
  7. Benenne Produkte um, nie ihre IDs. Namen sind Text. IDs sind Verträge.
  8. Skripte es, mach es wiederholbar, schreib es auf. Apples API hat manchmal einfach einen Moment, also starte neu, bevor du debuggst. Unsere Runbooks gibt es, weil wir alles zweimal vergessen haben.
  9. Führe getrennte Versionshinweise, wenn die Stores getrennte Regeln haben. Dieselbe Version, andere Sätze.
  10. Liefere Inhalte vom Server und spar dir die Store-Warteschlange für neue Mechaniken. Das beste Update ist das, das niemand freigeben muss.
  11. Teste auf der heißen Hardware, die deine Spieler wirklich besitzen. Der Simulator wurde nie rot. Ein iPhone 16 Pro Max schon.
  12. Halte den Server wach, solange der Prüfer in der Stadt ist. Ein schlafender Server sieht genau aus wie ein kaputter Button.

Probier uns einfach aus

Moneyflow ist kostenlos im App Store, kostenlos bei Google Play und kostenlos in jedem Browser. Es gibt keine Werbung, und zum Loslegen brauchst du kein Konto. Alles im Shop ist kosmetisch. Nichts darin hilft dir beim Gewinnen, was in einem Spiel über Geld entweder sehr prinzipientreu oder sehr schlechtes Geschäft ist.

Wie geht es weiter? Mit mehr Karten, die jetzt vom Server kommen, mehr Möglichkeiten, mit Freunden zu spielen, und, wenn das Universum gnädig ist, einer ganzen Woche ohne neue Versionsnummer.

Im App Store laden Bei Google Play laden Im Browser spielen

Wir sehen uns auf dem Spielfeld.