In 30 Stunden von der Idee zu Google Play


    Grüße, harazhiteli!

    Heute möchte ich mit Ihnen eine Geschichte darüber teilen, wie ich viele der richtigen Dinge getan habe, um das Projekt zur Schaffung eines kleinen Spielzeugs von Anfang bis Ende zu bringen. Diese Dinge waren: Analyse, Planung, Design, TDD-Entwicklung und Testen. Und das alles ging mit Gedränge. Ja, ja, in dieser Zusammensetzung und Reihenfolge. Im Allgemeinen sollte all dies die Regel sein, der ideale Weg für das Projekt, aber nicht alle und dies nicht immer verstehen. Nun, zumindest werde ich oft faul und schmeiße mich in den Code, wobei ich den Rest vergesse. Es ist nicht schwer zu erraten, was dabei herauskommt. Aber diesmal nicht, sagte ich mir, und als ich die Tastatur ablegte, nahm ich Blatt und Stift.

    Haftungsausschluss : Dieser Artikel ist rein motivierend. Technische Details werden separat zur Verfügung gestellt.

    Motive

    Der Hauptgrund, der mich zu diesem Projekt anspornte, war der Wunsch, Spiele zu entwickeln, selbst im Kontext eines so kleinen Projekts und sogar im luftleeren Raum. Aber am Ende wollte ich immer noch jeden Aspekt des Spielentwicklers durchdringen. Für mich selbst entschied ich, dass ich in der Vergangenheit schon genug Fehler mit Heimprojekten gemacht hatte und diesmal sollte alles so sein wie bei Erwachsenen.

    Idee

    Die Art der kommenden Software war bereits vorbestimmt - das Spiel (es gab irgendwie nichts zu überlegen, unbewusst wurde schon vor langer Zeit alles entschieden). Die Zielplattform der ersten Version ging von Android aus, allerdings nur, weil es näher dran ist und keine zusätzlichen Kenntnisse erfordert. Als nächstes dachte ich über das Genre nach. Trotz der Schützen und Echtzeitstrategien, die in meiner Vorstellungskraft auftauchen, entschloss ich mich, pessimistisch über meine Stärke, dem Quick-Win-Prinzip zu folgen und mein Ziel auf ein einfaches Puzzle zu richten. Unter der Fülle der Rätsel entstand in meinem Gedächtnis der erste Füllstoff, ein Feld mit Rauten verschiedener Farben und das einzige Ziel: Mehr als die Hälfte aller Zellen zu erfassen. Darauf und blieb stehen. Natürlich lieferte die Suche erwartungsgemäß ähnliche Ergebnisse, aber dennoch nicht so viele, und die Wahl wurde genehmigt.

    Aufteilung in Aufgaben und deren Planung

    Vor der Berechnung der Arbeitskosten und der Verteilung der Aufgaben gemäß dem Kalender war es erforderlich, das Endprodukt von allen Seiten zu betrachten, es auf die Ebene der elementaren Aufgaben zu zerlegen, Werkzeuge, Bibliotheken auszuwählen, den Testprozess und die Produktion abzuschätzen.

    Zunächst wurden vorläufige Modelle auf einem Blatt Papier (oder vielmehr ein paar Dutzend A4) erstellt. Dann wurde beschlossen, sie vollständig in Photoshop darzustellen, um visuelle Ungenauigkeiten während des Entwurfs zu vermeiden. Es gibt keinen Künstler von mir, also musste ich im Internet nach Lektionen suchen (wie viel Erfolg Sie verzeichnen konnten). Aber es wurde beschlossen, die Skizzen aus den endgültigen Versionen der Ressourcen zu erstellen, also habe ich versucht, zwei Fliegen mit einer Klappe zu schlagen, und am Ende des Projekts kann ich sagen, dass diese Entscheidung erfolgreich war.

    Als nächstes habe ich die Geschäftslogik von A bis Z durchdacht (es ist wichtig zu verstehen, dass kleine Algorithmen, auch wenn sie in dieser Phase noch nicht durchdacht sind, in der Entwicklungsphase in Eile ausgelöst werden müssen, daher empfehle ich dringend, dies nicht zu vernachlässigen) und die funktionalen Anforderungen erfunden. Aufgrund dieser Informationen habe ich mich für ein Framework entschieden.

    Der Geist des Experimentators schlug vor, etwas Neues auszuprobieren. Also habe ich cocos2d-x getroffen. Ich werde die Vorteile nicht auflisten. Neugierige Nutzer sind bereits zu Google gegangen, und diejenigen, die mit dieser Plattform vertraut sind, werden mich in meiner Wahl verstehen. Ich werde nur von mir selbst bemerken, dass sowohl die Funktionalität als auch die Leistung und die Lizenz genau meinen Anforderungen entsprechen. Nachdem die Rahmenbedingungen bekannt waren, wurde es mit der Bewertung der Arbeitskosten einfacher.

    Und der Code ist noch zu früh zum Schreiben, aber basierend auf den verfügbaren Informationen können Sie UML ausführen. Ich empfehle dringend, dass Sie sich mit allen Materialien, die derzeit gesammelt werden, und Build-Build-Build-Klassendiagrammen abdecken. Ich habe den ganzen Abend mit dieser Aktivität verbracht. Die erste Option war, wie zuvor, Tyap-Blunder und schaffte es. Das Klassendiagramm sollte den Entwickler jedoch davon abhalten, die Architektur von unterwegs zu entwerfen. Daher gingen alle Kisten in den Müll und die zweite Runde begann. Irgendwo dazwischen habe ich wieder den Fehler einer übermäßigen Vereinfachung gemacht, und es ist mir erst zum dritten Mal gelungen, ein sehr anständiges Dokument zu verfassen. Mit Blick auf die Zukunft werde ich sagen, dass es zu mehr als 80% dem realen Code entspricht.

    Um das gesamte Scribble zusammenzufassen und durchzugehen, habe ich 10 Stunden für die Arbeit mit Ressourcen (übrigens habe ich die Musik fertig gemacht, was ich wirklich nicht weiß, wie es geht), 20 Stunden für die reine Programmierung und 10 Stunden für Tests und Fehlerbehebung festgelegt.

    Fangen wir an!

    Nachdem die Liste der Aufgaben erstellt wurde, fahren wir mit der Implementierung fort. Auf dem Kalender stand der Beginn des Urlaubs, und seine Hände, die bei der Arbeit nicht von der Tastatur entwöhnt worden waren, kratzten bereits und eilten in die Schlacht. Aber um weiterhin den Best Practices zu folgen, habe ich mich an Photoshop gesetzt. Und siehe da, ich musste mir keinen Job ausdenken. Alles war für mich klar zerlegt und gemalt:
    - Insgesamt 5 Bildschirme.
    - 1. Tag, Menübildschirm und Auswahl des Spielmodus. Sie zeigen ..., ... Knöpfe, ... Elemente und so weiter.
    - 2. Tag, das Spielfeld, das zeigt ..., ... und so weiter.
    - 3. Tag, Pause und Ende des Spielbildschirms.
    Während ich Gedränge ausübte, legte ich Aufgaben für mich selbst beiseite, priorisierte sie, setzte Grenzen und verwaltete einen Rückstand, kurz, es gab einen König und einen Gott. Alles schmeckte sehr gut systematisiert meine Arbeit. Für mich selbst habe ich eine kleine Regel aufgestellt - nimm nicht mehr als 2 austauschbare Aufgaben in die Entwicklung auf. Auf einem festgefahren, auf den anderen übergehen und später auf den ersten zurückkehren.
    Die Vorbereitung der Ressourcen dauerte drei Abende, insgesamt sieben Stunden. Solche fortschreitenden Grafiken erwärmten die Seele.

    Wir gehen zur Entwicklung über. Wir haben 20 Stunden. Wie kann ich den Fortschritt verfolgen und zumindest indirekt verstehen, ob ich Zeit habe? Und so geht's: 20 Stunden ist eine gerundete Zahl, die aus der Summe der Arbeitskräfte besteht, die zur Implementierung der einzelnen Elemente des Klassendiagramms erforderlich sind. Um zu verstehen, welche Teile des Programms fertig sind und welche allgemeinen Fortschritte erzielt wurden, wurde die folgende Methode erfunden:
    - Wir implementieren alle Klassen / Methoden, aber wir fügen Dummies hinzu, wir brauchen nur eine erfolgreiche Kompilierung.
    - für jede Methode werfen wir Unit-Tests (jeweils 3-5 Stück);
    - Jetzt können Sie während der Montage sehen, wie viele Tests bestanden wurden, und dies ist der Prozentsatz der Fertigstellung des Projekts, und wie viele Tests fielen aus, und dies ist der Teil, der noch nicht implementiert wurde.
    Somit haben wir einen Indikator für den Projektfortschritt.

    Ein separater Absatz verdient Informationen zur Monetarisierung. Natürlich wünsche ich mir für die aufgewendete Zeit und Mühe eine Belohnung. Daher wurde beschlossen, etwas Werbung zu befestigen. Google AdMob bietet verschiedene Arten von Werbebotschaften. Aber ich habe diese Strategie gewählt: Während des Spiels - keine Werbung, sondern nur ein ganzseitiges Banner nach dem Verlassen des Spiels. Hier möchte ich auch über eine kleine architektonische Täuschung sprechen (das sind 20% des Codes, der nicht dem Klassendiagramm entspricht). Cocos2dx beendet am Ende des Spiels die Anwendung nicht wie gewohnt, ruft nicht onDestroy usw. auf und beendet lediglich den aktuellen Thread mit der Anwendung. Gleichzeitig ist es keine leichte Aufgabe, Anzeigen in eine native Bibliothek zu packen.
    Die Lösung lautet wie folgt:
    1) Nachdem der Benutzer das Spiel geschlossen hat (durch Klicken auf Beenden), wird das Hauptfeld des Spiels ausgeblendet und JNI kommt zur Rettung, was die Anzeige einer neuen Aktivität mit Werbung zieht;
    2) Wenn die Werbung entweder vom Benutzer geschlossen oder minimiert wird, oder welche andere Option (Zurück / Home / Menü-Schaltflächen usw.) erneut JNI, aber in der entgegengesetzten Richtung, einen Anruf zum Beenden des Spiels sendet und das wars schließt.

    Testen

    Zum Testen habe ich zwei Strategien angewendet (auch in diesem Stadium hatte ich alles geplant und verlief nach Plan):
    1) Manuelles Testen. Zum Glück ist die Frau QS-Ingenieurin. Besonderer Dank für die Hilfe.
    2) automatisiertes Testen. Jetzt entwickelt das Internet aktiv Dienste, die den Fernzugriff auf echte Telefone / Tablets ermöglichen, um entwickelte Anwendungen zu testen (siehe unten). Ein positives Merkmal solcher Dienste ist die Verfügbarkeit einer Testnutzungsdauer. Für mich habe ich drei solche Dienste identifiziert. Die erste ist, um die endgültige Anwendung auf verschiedenen Geräten ausführen zu können. Die zweite dient zum Messen von Leistung und Last. Und das dritte - zum Testen von Massenoberflächen auf einer großen Anzahl von Geräten.

    Insgesamt ergaben beide Strategien etwa ein Dutzend offensichtlicher Probleme, und die geplante Menge an Arbeit wurde erneut nicht vollständig ausgeschöpft.

    Produktion

    Besser einmal zu sehen als siebenmal zu hören.


    Zusammenfassung

    - Unbezahlbare Erfahrung!
    - 18 Stunden Entwicklungszeit + 7 Stunden Vorbereitung der Ressourcen + 5 Stunden Testzeit = 30 Stunden echte Arbeit, für die es keine Schande ist.
    - Stolz auf das zu Ende gegangene Projekt! Und ein wilder Wunsch, die Errungenschaft zu teilen (weshalb ich diesen Artikel anziehe, weil ich nicht genug Schlaf habe).
    - Die Hoffnung, dass etwas daraus wird (es kann leer sein, da ich noch keine Erfahrung mit dem Mini-kommerziellen Spielentwickler hatte).
    - Motivation / Tipps für Leser.

    Was bleibt zu tun (wenn das Projekt Anzeichen von Beliebtheit zeigt):
    1) Starten Sie das Spiel für iOS und Windows Phone 8 und höchstwahrscheinlich die Desktop-Version für Windows.
    2) Fasten Sie Google Analytics, um das Verhalten der Spieler zu analysieren.
    3) Erweitern Sie das Funktionsspektrum: Schwierigkeitsgrade, Feld- / Zellengrößen, allgemeines Top (irgendwo in der Cloud).

    Wenn ich keine Details von Interesse deckte, schreibe in den Kommentaren, ich werde definitiv antworten.

    Nützliche Links:
    1) play.google.com/store/apps/details?id=com.xlab.ice.HexFiller - eigentlich mein "Meisterstück"
    2) appthwack.com - Massentestservice
    3) cloud.testdroid.com/web / home - Dienst zum Testen der Anwendungsleistung
    4) testobject.com - Die Möglichkeit, die Anwendung auf vielen Geräten mit anschließender Interaktion auszuführen.
    5) developers.google.com/mobile-ads-sdk/docs/admob/advanced - Interstitial-Anzeigen

    Hinter den Kulissen gab es die Feinheiten, Grafiken vorzubereiten, mit verschiedenen Displays zu arbeiten, zusammenzusetzen, auf einem Emulator zu laufen, einen Algorithmus für KI-Spielstrategien und alle möglichen Kleinigkeiten. Dieser Artikel ist jedoch eher motivierend. Und dennoch, wenn jemand daran interessiert sein sollte, die unausgesprochene Abstimmung zu hören, werde ich den zweiten Teil des Artikels schreiben.

    Danke fürs Lesen!
    Wie Sie sehen, zahlt sich eine ernsthafte Herangehensweise auch an kleine Projekte aus. Sowohl die Zeitersparnis als auch das Endergebnis weisen auf die negativen Aspekte der Nichtbeachtung der Vorcodierungs- / Nachcodierungsstufen hin, die überall vorhanden sein müssen. Jetzt habe ich es gelernt.

    PS: Vielen Dank an reenboog für Tipps zu Grafiken und Ressourcen und an coder1cv8 für Tipps zur Monetarisierung.

    Nur registrierte Benutzer können an der Umfrage teilnehmen. Bitte komm rein .

    Benötige ich einen zweiten Artikel über technische Details?

    • 77,2% Ja 51
    • 22,7% Nr. 15

    Jetzt auch beliebt: