JavaRush /Java-Blog /Random-DE /Am Anfang war JavaRush
Марат Каджаев
Level 20
Санкт-Петербург

Am Anfang war JavaRush

Veröffentlicht in der Gruppe Random-DE
Meine erste Probezeit ist vor 3 Jahren zu Ende gegangen, aber erst jetzt habe ich Zeit, einen Artikel zu schreiben. An der Universität verbrachte ich ein Jahr in verschiedenen Fakultäten: Im ersten Semester studierte ich Managerin, im zweiten Semester wechselte ich in die Softwaretechnik. Ich hatte gehofft, dass sie mir das Programmieren beibringen würden, aber ich täuschte mich, also nahm ich die Dokumente und beschloss, alles selbst zu lernen. Das Einzige, wofür ich dem Lehrer dankbar bin, ist, dass er mir geraten hat, mit Stephen Prats Buch „The C Programming Language“ zu beginnen. Wirklich gutes Buch mit vielen praktischen Problemen. Es dauerte ungefähr zwei Monate, bis ich das Buch gelesen hatte. Danach stieß ich in den Gruppen eines Freundes auf JR, und schon ging es los. Ursprünglich hatte ich vor, Android-Entwickler zu werden, aber während des Lernprozesses schien mir das Backend interessanter zu sein. Die Ausbildung dauerte übrigens 3 Monate, in denen ich Level 20 erreichte, woraufhin ich beschloss, mich auf die Suche nach einem Job zu machen. Zunächst einmal bin ich in eine andere Stadt gezogen, weil... Bei mir gab es keine offenen Stellen für einen Junior-Java-Entwickler. Ich habe ein Unternehmen gefunden, geantwortet und eine Testaufgabe erhalten, für deren Bearbeitung ich eine Woche Zeit hatte. Es war notwendig, eine einfache Webanwendung mit Hibernate, Servlet\JSP und MySQL zu schreiben. Von all diesen Worten wusste ich nur, dass MySQL eine Datenbank ist. Zuerst war ich sehr verärgert, ich habe sogar beschlossen, vorerst bei irgendeinem KFC nach Stellenangeboten zu suchen, aber dann habe ich mich schließlich entschieden, zu versuchen, die technischen Spezifikationen zu erfüllen – ich werde immer Zeit haben, einen Job bei KFC zu bekommen. Ich habe den Test die ganze Woche ununterbrochen gemacht und hatte Erfolg. Ich habe die Lösung gesendet, aber sie war „hässlich“, also habe ich sie noch viermal neu erstellt. Die letzte Entscheidung erwies sich als richtig, es stellte sich jedoch heraus, dass bereits Entwickler eingestellt worden waren und die nächste Einstellung in 3 Monaten erfolgen würde. Shtosh, okay. In den nächsten 3 Monaten lernte ich HTML, CSS, JS, SQL und PHP. Was macht PHP hier? Ich brauchte eine serverseitige Sprache, die auf Anfragen und all das reagierte – Servlets und JSP schienen mir damals zu kompliziert. Das Ergebnis war eine vollwertige Webanwendung mit einer schrecklichen Schnittstelle, deren Code ich für mein Portfolio auf Github gepostet habe. Zu diesem Zeitpunkt waren gerade drei Monate vergangen, und sie schrieben mir von derselben Firma und riefen mich zu einem Vorstellungsgespräch an und gaben mir eine weitere einfache Testaufgabe für SQL-Kenntnisse, die ich in wenigen Stunden erledigte. Die Person, mit der ich über den Job gesprochen habe, deutete an, dass sie nach Algorithmen und Datenstrukturen fragen würde – ich hatte dieses Thema noch nicht gemeistert, aber bis zum Vorstellungsgespräch waren es noch 15 Tage, verdammt noch mal, wir Rennfahrer. Mir hat Robert Laforets Buch „Data Structures and Algorithms in Java“ geholfen. Ich hatte in zwei Wochen keine Zeit, alles zu lesen und zu verstehen, aber ich habe trotzdem viel Neues gelernt. Und dann kam der Tag des Vorstellungsgesprächs, ich kam zur verabredeten Zeit an, 2 Männer trafen mich und das Vorstellungsgespräch begann. Zu sagen, dass ich mir Sorgen machte, ist eine Untertreibung; meine Stimme zitterte sogar. Sie fragten nach allem außer Algorithmen und Datenstrukturen. Sie fragten nach Spring, DI, IoC, Hibernate, wie die JVM funktioniert, wie der GC funktioniert – ich habe keine dieser Fragen beantwortet. Ich habe nur Fragen zu Java Core (Sammlungen, Ausnahmen, OOP usw.). Schon beim Vorstellungsgespräch wurde mir klar, dass ich durchgefallen war, dennoch war es enttäuschend, keine Rückmeldung zu erhalten. Aber ich erkannte Wissenslücken und begann, diese fleißig zu schließen. Einen Monat nach dem gescheiterten Vorstellungsgespräch habe ich einen Job gefunden. Ich bin übrigens in den JavaRush-Diskussionen auf die Stelle gestoßen. Zuerst gab es ein Skype-Interview mit einem Personalvermittler (Dauer ca. 2 Stunden). Sie fragten nach Java Core, GC (jetzt wusste ich, wie es funktioniert), Datenbanken und Datenstrukturen. Dann bat mich der Interviewer, den Bildschirm freizugeben und einen Taschenrechner zu schreiben. Ich hätte fast vor Glück geschrien, weil ich den Taschenrechner buchstäblich eine Woche zuvor geschrieben hatte. Selbstbewusst begann ich mit der Aufgabe, aber entweder aus Aufregung oder aus einem anderen Grund vergaß ich einen Teil des Algorithmus. Der Bildschirm wird geteilt – es ist beängstigend, zu Google zu gehen. Zum Glück hatte ich ein Handy, das mir den Arsch gerettet hat. Am nächsten Tag riefen sie mich zu einem persönlichen Vorstellungsgespräch an und ein paar Tage später erhielt ich ein Angebot.
Am Anfang war JavaRush - 1
Die Arbeit war nicht offiziell, ich war in der Rolle eines Lehrlings für einen Einzelunternehmer. Wir haben einen Service zum Erstellen von Veranstaltungen, zum Verkauf von Tickets und all dem geschrieben. Ich erinnere mich an meinen ersten Arbeitstag – der Einzelunternehmer verbrachte 15 Minuten damit, zu erklären, was zu tun war. - Na, ist alles klar? - fragte die IP - Mmm, nicht wirklich, können wir es noch einmal machen? – fragte ich völlig besorgt. Die IP hat alles nochmal erklärt. - Es ist jetzt klar? - Jetzt ja. Tatsächlich habe ich NICHTS verstanden. Aber ich hatte Angst, noch einmal um eine Erklärung zu bitten – ich denke, jeder, der einen Job bekommen hat, wird mich verstehen. Der Kern der Aufgabe bestand darin, von Thymeleaf auf AngularJS umzuschreiben. Glücklicherweise habe ich einen Teil des vorgefertigten Codes gefunden, bin dem Beispiel gefolgt und habe das Gleiche getan. Ich verstand damals nicht, wie es funktionierte, aber ich schaffte es, die Aufgabe zu bewältigen. Dann kamen die Aufgaben, die direkt mit dem Backend-Teil zu tun hatten. Erst nach der praktischen Erfahrung mit Spring begann ich zu verstehen, was im Buch „Spring for Professionals“ geschrieben steht. Ich habe dort 8 Monate lang gearbeitet und bin dann in eine andere Stadt gezogen, wo ich schnell einen offiziellen Job gefunden, 2 Jahre lang gearbeitet und gleichzeitig meine Berufsbezeichnung von „Junior“ in „Middle“ geändert habe. Jetzt stehe ich vor der Tatsache, dass die Arbeit zur Routine geworden ist und kein bisschen Freude bereitet. Deshalb machte ich gerade eine Pause und um zu verhindern, dass meine Finger während der Pause verkümmern, beschloss ich, einen anderen Bereich auszuprobieren – die Spieleentwicklung. Nämlich die Entwicklung mobiler Spiele, zunächst einmal Android, weil... Ich kenne Java. Darüber erzähle ich euch jetzt im Detail. Über uns In kurzer Zeit kam ein kleines Team von 4 Leuten (einschließlich mir) zusammen: 2 Entwickler, 1 Spieledesigner, 1 Toningenieur. Weil Niemand im Team hatte Erfahrung im Bereich Spieleentwicklung und meine freie Zeit war begrenzt, wir beschlossen, ein einfaches Projekt umzusetzen, das wir auf jeden Fall bis zum Ende durchziehen würden. Sie haben es geschafft! Ursprünglich war die Frist der 15. November, aber wie Sie wissen, ist es eine Sünde, ein Projekt innerhalb der ursprünglichen Frist abzuschließen. Also haben wir es zwei Wochen später fertiggestellt. Demnach Der Stack ist: Java 8 und libGDX.

Über die Entwicklung

Als Entwicklungsbeginn kann der 17. Oktober gelten. Insgesamt verbrachten wir 45 Tage, in denen:
  1. gelernt, mit libGDX zu arbeiten;
  2. habe den Code geschrieben;
  3. zeichnete Grafiken;
  4. Musik gemacht;
Diejenigen, die das Spiel bereits gesehen haben, haben vielleicht eine Frage: Warum dauert es so lange, obwohl das Spiel einfach ist? Ja, das stimmt, und um ganz genau zu sein, hat die Entwicklung selbst (das Schreiben des Codes) etwa anderthalb Wochen gedauert. Die restliche Zeit lässt sich aufteilen zwischen:
  1. Beherrschung des Motors;
  2. Bilder zeichnen und sie dann neu zeichnen;
  3. Musik komponieren;
  4. Suche nach Sounds auf https://freesound.org ;
  5. Ich lese eine Reihe von Artikeln darüber, wie man Spiele bewirbt
Außerdem gab es aus verschiedenen Gründen Momente der „Ausfallzeit“ – jemand hatte eine Prüfung, jemand hatte eine Wiederholung usw. Sie können getrost eineinhalb Wochen oder sogar mehr mit „Ausfallzeiten“ verbringen. Ein weiterer Teil der Zeit wurde für „Debatten“ aufgewendet: Fast täglich kamen Ideen, was man dem Spiel hinzufügen könnte, so dass es Streitigkeiten gab über „das wäre überflüssig“, „das würde nicht reinpassen“ usw. Deshalb haben wir viele Ideen verworfen, zum Beispiel das Hinzufügen laufender Kakerlaken, die man zerquetschen kann und dafür extra bekommt. Punkte: Am Anfang war JavaRush - 2Im Allgemeinen ist es meiner Meinung nach eines der schwierigsten Dinge, im Voraus zu entscheiden, was im Spiel sein wird, und an diesem Plan festzuhalten, ohne zu versuchen, „ein weiteres“ Feature hinzuzufügen. So haben wir diese 45 Tage gesammelt. Der Spielprototyp war nach anderthalb Wochen fertig. In dieser Zeit verfügten wir noch nicht wirklich über Grafiken, also haben wir einige Dinge aus dem öffentlichen Bereich übernommen (zum Beispiel haben wir uns ein Hintergrundblatt von Doodle Jump ausgeliehen) und einige haben wir selbst in Farbe erstellt. Am Anfang war JavaRush - 3Das Spiel ist technisch sehr einfach – wir mussten nicht einmal box2d (Physik-Engine) verwenden, wir konnten Kollisionen bewältigen und die Hypotenuse selbst berechnen. Von den interessantesten Punkten möchte ich die folgenden hervorheben.
  1. Zunächst wurden alle Elemente im Spiel zufällig generiert. Diese. Wir haben Anbieter für Schwarze Löcher, Scheren, Shuriken, Stäbe, Herzen – wir fügen sie in ein Array ein, und dann nehmen wir einen zufälligen Anbieter und erhalten ein Element mit zufälligen Koordinaten. Ziemlich schnell wurde klar, dass dieser Ansatz „nicht sehr gut“ war; unsere Freunde, die am Test teilgenommen hatten, sagten uns dasselbe und rieten uns, Vorlagen zu verwenden. Für diejenigen, die an der Spieleentwicklung beteiligt sind, ist dies sicherlich eine offensichtliche Lösung, aber ... Wir sind neu in dieser Gegend und das war ein sehr guter Rat für uns.

    So entstanden mehrere Muster: Tal der Scheren; diagonale Stangen – es macht ziemlich viel Spaß, sie mit hoher Geschwindigkeit zusammenzubauen (Swish-Swish-Swish mit dem Finger); und noch eine Vorlage, ich weiß nicht, wie ich sie nennen soll – ich nenne sie so, wie die Klasse im Code heißt: StraightForwardPattern.

    Am Anfang war JavaRush - 4

    Mit Vorlagen wurde es zwar angenehmer, aber es war zu vorhersehbar oder so. Daher wurde derselbe Zufall zu einer anderen Vorlage. Diese. Jetzt haben wir „statische“ Vorlagen und eine zufällige. (Hier ist ein Meme über perfekte Balance).

  2. Das Hauptproblem, auf das wir gestoßen sind, war dieses. LibGDX ruft die render(float delta)-Methode in einer Endlosschleife auf, in der das gesamte Rendern von Elementen tatsächlich stattfindet. Wir zeichnen eine Bleistiftlinie auf folgende Weise: Wir nehmen die Koordinaten des Fingers und platzieren dort die Textur. Wenn wir also unseren Finger sehr schnell über den Bildschirm bewegten, entstanden „Löcher“, weil wir in jenen Millisekunden landeten, in denen die render(delta)-Methode bereits funktioniert hatte und noch nicht erneut aufgerufen wurde. Das Problem wurde ganz einfach gelöst: Wir merken uns die letzte Koordinate, in der die Textur gezeichnet wurde, wir erhalten die nächste, und wenn der Abstand zwischen ihnen größer als X ist und der Finger nicht losgelassen wurde, füllen wir diese Lücke. Zuerst dachten wir, dass diese Option möglicherweise nicht funktioniert – die Linien würden eckig sein, aber unsere Befürchtungen waren vergebens – alles funktioniert wie es sollte.

    Eigentlich geht es um das Spiel

    Das Gameplay gibt nicht vor, einzigartig zu sein, aber es ist ziemlich gut und kann süchtig machen. Sie steuern einen Bleistift, zeichnen buchstäblich auf Papier und weichen dabei Hindernissen aus – Scheren, Shuriken, schwarzen Löchern. In diesem Fall endet die Stifthülse und Sie müssen kleine Stifte aufnehmen. Falls die Stange zu Ende geht und noch keine Stifte da sind, können Sie ein Spiegelfragment aufheben. Die Wirkung wird einige Sekunden lang wirken – anstatt den Stab zu verschwenden, wird er wiederhergestellt, aber gleichzeitig wird die Steuerung gespiegelt – Sie bewegen sich nach links und der Stift zeichnet nach rechts. Sie können auch ein Herz aufheben, das es Ihnen ermöglicht, einmal auf ein Hindernis zu stoßen und am Leben zu bleiben. Je länger Sie gedrückt halten, ohne den Finger vom Bildschirm zu nehmen, desto höher ist die Kombination, wodurch sich die Geschwindigkeit des Punktegewinns erhöht. Außerdem nimmt die Geschwindigkeit des Spiels allmählich zu. Es sei denn, Sie können die Korovaner nicht ausrauben. Am Anfang war JavaRush - 5Ursprünglich hatten wir geplant, das Spiel Karan Dash zu nennen (ein Bleistift, ahaha, verstanden, oder?), aber später haben wir unsere Meinung geändert und uns für Pencil Dash entschieden. Die Motivation war, dass dieses elegante (ich sage) Wortspiel nur für ein russischsprachiges Publikum verständlich wäre. Wir haben das Spiel vor ein paar Tagen veröffentlicht und bewerben es jetzt. Auch hier hat niemand im Team Erfahrung, wir haben das ganze Wissen über Werbung aus verschiedenen Artikeln zusammengetragen. Wir haben Informationen zum Spiel kostenlos auf verschiedenen Websites/Foren veröffentlicht. Was die kostenpflichtigen Kanäle betrifft, haben wir Werbung auf 4PD, bei einem Blogger, mehreren Beiträgen auf öffentlichen VK- und AdMob-Seiten bestellt. Dieser Beitrag ist übrigens auch Teil der Aktion, daher hinterlasse ich mit Genehmigung der Administration hier einen Link zum Spiel. Spieleseite bei Google Play: Klicken Sie auf „Ich hinterlasse auch einen Link zu unserer VK-Gruppe, wo Sie Bewertungen/Vorschläge hinterlassen können und kein Update verpassen“. Klicken Sie auf „Ich wäre Ihnen dankbar, wenn Sie es installieren (was, wenn es Ihnen gefällt?“). Und für eine Rezension mit Bewertung verspreche ich, eine Kerze für Ihre Gesundheit anzuzünden! Stellen Sie Fragen, wenn Sie welche haben, werde ich antworten.Am Anfang war JavaRush - 6

Kommentare
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION