CodeGym /Java blog /Tilfældig /I begyndelsen var der...
John Squirrels
Niveau
San Francisco

I begyndelsen var der...

Udgivet i gruppen
I begyndelsen var der ... - 1 Mit første jobs prøvetid sluttede for 3 år siden, men først nu fandt jeg tid til at skrive en artikel. Jeg tilbragte et år i forskellige afdelinger på mit universitet: I mit første semester studerede jeg ledelse, og på mit andet semester skiftede jeg til softwareingeniør. Jeg håbede, at de ville lære mig at programmere, men jeg tog fejl. Så jeg samlede materialer og besluttede at lære alt på egen hånd. Den eneste grund til, at jeg er taknemmelig over for min lærer, er, at han anbefalede, at jeg startede med Stephen Pratts e-bog "The C Programming Language". Det er virkelig en god bog med mange praktiske øvelser. Jeg brugte omkring 2 måneder på bogen, hvorefter jeg stødte på dette online Java-kursus i en vens grupper, og så begyndte det. Først planlagde jeg at blive Android-udvikler, men backend virkede mere interessant for mig, efterhånden som jeg skred frem i min læring. Det tog mig i øvrigt 3 måneders studier at nå Level 20, hvorefter jeg besluttede at prøve at finde et job. Den første opgave var at flytte til en anden byda min ikke havde nogen åbninger til en junior Java-udvikler. Jeg fandt et firma, søgte og fik en testopgave, som jeg fik en uge til at udføre. Jeg var nødt til at skrive en simpel webapplikation ved hjælp af Hibernate, Servlet/JSP og MySQL. Da jeg så alle disse udtryk, vidste jeg kun, at MySQL var en database. Først var jeg meget skuffet. Jeg besluttede mig selv for at lede efter jobåbninger på nogle KFC, men så besluttede jeg mig for at tage et knæk i testopgaven. Jeg kunne jo altid få et job hos KFC. Jeg arbejdede non-stop hele ugen og nåede at afslutte testen. Jeg sendte min løsning, men den "var ikke køn", så jeg reviderede den 4 gange mere. Min sidste løsning viste sig at være korrekt, men stillingerne var allerede blevet besat, og yderligere ansøgninger ville ikke blive accepteret i 3 måneder. Hvad vil du gøre, ikke? I de næste 3 måneder, Jeg lærte HTML, CSS, JS, SQL og PHP. Hvorfor PHP? Jeg havde brug for et serversprog, der ville reagere på anmodninger og sådan. På det tidspunkt virkede servlets og jsp for komplicerede. Til sidst producerede jeg en fuldgyldig webapplikation med en forfærdelig grænseflade. Jeg udgav koden på GitHub til min portefølje. På dette tidspunkt var der gået 3 måneder, og det samme firma kontaktede mig igen og inviterede mig til et interview, hvor de gav endnu en simpel opgave for at teste min viden om SQL, som jeg nåede at gennemføre på få timer. Den person, jeg talte med om beskæftigelse, antydede, at de ville spørge om algoritmer og datastrukturer - emner, som jeg ikke havde haft tid til at mestre endnu. Når det er sagt, gik der 15 dage før interviewet. Jeg har det her! Robert Lafores bog "Data Structures & Algorithms in Java" hjalp mig. Jeg gjorde det ikke' Jeg har ikke tid til at læse og forstå det hele på to uger, men jeg har stadig lært en masse. Og så kom dagen for interviewet. Jeg ankom til det aftalte tidspunkt. To mænd hilste på mig, og interviewet begyndte. At sige, at jeg var bekymret, ville være en vild underdrivelse. Min stemme dirrede. De spurgte om alt undtagen algoritmer og datastrukturer. De spurgte om Spring, DI, IoC, Hibernate, hvordan JVM fungerer, hvordan skraldesamleren fungerer - jeg var ikke i stand til at svare på et eneste af disse spørgsmål. Jeg besvarede kun med succes spørgsmål om Java Core (samlinger, undtagelser, OOP osv.). Mens jeg stadig var til interviewet, vidste jeg, at jeg mislykkedes, men jeg var stadig skuffet over ikke at modtage nogen feedback. I stedet identificerede jeg huller i min viden og begyndte at arbejde ihærdigt på at lukke dem. Og så kom dagen for interviewet. Jeg ankom til det aftalte tidspunkt. To mænd hilste på mig, og interviewet begyndte. At sige, at jeg var bekymret, ville være en vild underdrivelse. Min stemme dirrede. De spurgte om alt undtagen algoritmer og datastrukturer. De spurgte om Spring, DI, IoC, Hibernate, hvordan JVM fungerer, hvordan skraldesamleren fungerer - jeg var ikke i stand til at svare på et eneste af disse spørgsmål. Jeg besvarede kun med succes spørgsmål om Java Core (samlinger, undtagelser, OOP osv.). Mens jeg stadig var til interviewet, vidste jeg, at jeg mislykkedes, men jeg var stadig skuffet over ikke at modtage nogen feedback. I stedet identificerede jeg huller i min viden og begyndte at arbejde ihærdigt på at lukke dem. Og så kom dagen for interviewet. Jeg ankom til det aftalte tidspunkt. To mænd hilste på mig, og interviewet begyndte. At sige, at jeg var bekymret, ville være en vild underdrivelse. Min stemme dirrede. De spurgte om alt undtagen algoritmer og datastrukturer. De spurgte om Spring, DI, IoC, Hibernate, hvordan JVM fungerer, hvordan skraldesamleren fungerer - jeg var ikke i stand til at svare på et eneste af disse spørgsmål. Jeg besvarede kun med succes spørgsmål om Java Core (samlinger, undtagelser, OOP osv.). Mens jeg stadig var til interviewet, vidste jeg, at jeg mislykkedes, men jeg var stadig skuffet over ikke at modtage nogen feedback. I stedet identificerede jeg huller i min viden og begyndte at arbejde ihærdigt på at lukke dem. At sige, at jeg var bekymret, ville være en vild underdrivelse. Min stemme dirrede. De spurgte om alt undtagen algoritmer og datastrukturer. De spurgte om Spring, DI, IoC, Hibernate, hvordan JVM fungerer, hvordan skraldesamleren fungerer - jeg var ikke i stand til at svare på et eneste af disse spørgsmål. Jeg besvarede kun med succes spørgsmål om Java Core (samlinger, undtagelser, OOP osv.). Mens jeg stadig var til interviewet, vidste jeg, at jeg mislykkedes, men jeg var stadig skuffet over ikke at modtage nogen feedback. I stedet identificerede jeg huller i min viden og begyndte at arbejde ihærdigt på at lukke dem. At sige, at jeg var bekymret, ville være en vild underdrivelse. Min stemme dirrede. De spurgte om alt undtagen algoritmer og datastrukturer. De spurgte om Spring, DI, IoC, Hibernate, hvordan JVM fungerer, hvordan skraldesamleren fungerer - jeg var ikke i stand til at svare på et eneste af disse spørgsmål. Jeg besvarede kun med succes spørgsmål om Java Core (samlinger, undtagelser, OOP osv.). Mens jeg stadig var til interviewet, vidste jeg, at jeg mislykkedes, men jeg var stadig skuffet over ikke at modtage nogen feedback. I stedet identificerede jeg huller i min viden og begyndte at arbejde ihærdigt på at lukke dem. Jeg besvarede kun med succes spørgsmål om Java Core (samlinger, undtagelser, OOP osv.). Mens jeg stadig var til interviewet, vidste jeg, at jeg mislykkedes, men jeg var stadig skuffet over ikke at modtage nogen feedback. I stedet identificerede jeg huller i min viden og begyndte at arbejde ihærdigt på at lukke dem. Jeg besvarede kun med succes spørgsmål om Java Core (samlinger, undtagelser, OOP osv.). Mens jeg stadig var til interviewet, vidste jeg, at jeg mislykkedes, men jeg var stadig skuffet over ikke at modtage nogen feedback. I stedet identificerede jeg huller i min viden og begyndte at arbejde ihærdigt på at lukke dem.Jeg fandt et job en måned efter min mislykkede samtale. I øvrigt fandt jeg jobåbningen i diskussioner om CodeGym ( CodeGym er den russisksprogede version af CodeGym — red.note). Først var der et Skype-interview med en rekrutterer (det varede omkring 2 timer). De spurgte om Java Core, affaldsindsamling (nu vidste jeg, hvordan det fungerer), databaser og datastrukturer. Intervieweren bad mig dele min skærm og skrive en lommeregner. Jeg græd næsten af ​​glæde, da jeg havde skrevet en lommeregner bare en uge før. Med tillid til mig selv gik jeg i gang med opgaven. Men uanset om det var på grund af min begejstring eller af en anden grund, glemte jeg en del af algoritmen. Min skærm blev delt. Jeg var bange for at konsultere Google. Heldigvis havde jeg min mobiltelefon, som reddede min røv. Dagen efter indkaldte de til en personlig samtale, og et par dage senere modtog jeg et tilbud. Det var ikke en officiel holdning. Min rolle var lærling hos en enkeltmandsvirksomhed. Vi skrev en service til arrangementsplanlægning, salg af billetter osv. Jeg husker min første arbejdsdag. Min chef brugte 15 minutter på at forklare, hvad der skulle gøres. "Er alt klart?" spurgte han. "Hmm, egentlig ikke. Kan du gå over det en gang til?" spurgte jeg med stor bekymring. Chefen forklarede alt igen. "Er det klart nu?" "Ja, nu er det." Faktisk forstod jeg INTET. Men jeg var bange for at bede om en anden forklaring. Jeg tror, ​​at enhver ansat kan forstå det. Opgaven bundede i portering fra Thymeleaf til AngularJS. Heldigvis fandt jeg en luns færdig kode og brugte den som et eksempel på, hvad jeg skal gøre. Jeg forstod ikke, hvordan det fungerede, men jeg blev færdig med opgaven. Jeg fik efterfølgende tildelt opgaver direkte relateret til backend. Først efter en praktisk oplevelse med Spring begyndte jeg at forstå, hvad jeg læste i "Forår for professionelle". Jeg arbejdede der i 8 måneder og flyttede derefter til en anden by, hvor jeg hurtigt fandt et officielt job, arbejdede i 2 år og ændrede min titel fra "junior" til "mid-level" undervejs. Så stod jeg over for, at mit job var blevet rutine og ikke gav mig en dråbe fornøjelse. Så jeg tog en pause. For at forhindre mine fingre i at atrofiere i min pause besluttede jeg at prøve mig frem på et andet område: spiludvikling. Mere specifikt, udvikling af mobilspil, opsamling af Android, da jeg allerede kendte Java. Og det er det, jeg vil tale i detaljer om nu. Først efter en praktisk oplevelse med Spring begyndte jeg at forstå, hvad jeg læste i "Forår for professionelle". Jeg arbejdede der i 8 måneder og flyttede derefter til en anden by, hvor jeg hurtigt fandt et officielt job, arbejdede i 2 år og ændrede min titel fra "junior" til "mid-level" undervejs. Så stod jeg over for, at mit job var blevet rutine og ikke gav mig en dråbe fornøjelse. Så jeg tog en pause. For at forhindre mine fingre i at atrofiere i min pause besluttede jeg at prøve mig frem på et andet område: spiludvikling. Mere specifikt, udvikling af mobilspil, opsamling af Android, da jeg allerede kendte Java. Og det er det, jeg vil tale i detaljer om nu. Først efter en praktisk oplevelse med Spring begyndte jeg at forstå, hvad jeg læste i "Forår for professionelle". Jeg arbejdede der i 8 måneder og flyttede derefter til en anden by, hvor jeg hurtigt fandt et officielt job, arbejdede i 2 år og ændrede min titel fra "junior" til "mid-level" undervejs. Så stod jeg over for, at mit job var blevet rutine og ikke gav mig en dråbe fornøjelse. Så jeg tog en pause. For at forhindre mine fingre i at atrofiere i min pause besluttede jeg at prøve mig frem på et andet område: spiludvikling. Mere specifikt, udvikling af mobilspil, opsamling af Android, da jeg allerede kendte Java. Og det er det, jeg vil tale i detaljer om nu. hvor jeg hurtigt fandt et officielt job, arbejdede i 2 år og ændrede min titel fra "junior" til "mid-level" undervejs. Så stod jeg over for, at mit job var blevet rutine og ikke gav mig en dråbe fornøjelse. Så jeg tog en pause. For at forhindre mine fingre i at atrofiere i min pause besluttede jeg at prøve mig frem på et andet område: spiludvikling. Mere specifikt, udvikling af mobilspil, opsamling af Android, da jeg allerede kendte Java. Og det er det, jeg vil tale i detaljer om nu. hvor jeg hurtigt fandt et officielt job, arbejdede i 2 år og ændrede min titel fra "junior" til "mid-level" undervejs. Så stod jeg over for, at mit job var blevet rutine og ikke gav mig en dråbe fornøjelse. Så jeg tog en pause. For at forhindre mine fingre i at atrofiere i min pause besluttede jeg at prøve mig frem på et andet område: spiludvikling. Mere specifikt, udvikling af mobilspil, opsamling af Android, da jeg allerede kendte Java. Og det er det, jeg vil tale i detaljer om nu. Jeg besluttede at prøve mig på et andet område: spiludvikling. Mere specifikt, udvikling af mobilspil, opsamling af Android, da jeg allerede kendte Java. Og det er det, jeg vil tale i detaljer om nu. Jeg besluttede at prøve mig på et andet område: spiludvikling. Mere specifikt, udvikling af mobilspil, opsamling af Android, da jeg allerede kendte Java. Og det er det, jeg vil tale i detaljer om nu.Mit hold. På kort tid havde jeg samlet et lille team på 4 personer (inklusive mig): 2 udviklere, 1 spildesigner og 1 lydtekniker. Fordi ingen på holdet havde nogen erfaring med spiludvikling, og fordi min ferietid var begrænset, besluttede vi at implementere et simpelt projekt, som vi helt sikkert ville være i stand til at afslutte. Og det gjorde vi! I første omgang var deadline den 15. november, men det er som bekendt bare forkert at færdiggøre et projekt til tiden. Så vi blev færdige med det to uger for sent. Vores teknologistak bestod af Java 8 og libGDX.

Udvikling

Udviklingen begyndte den 17. oktober. I alt brugte vi 45 dage, hvor:
  1. Vi lærte, hvordan man bruger libGDX.
  2. Vi skrev kode.
  3. Vi lavede grafik.
  4. Vi skabte musik.
Enhver, der har set spillet, vil måske spørge: "Hvorfor tog det så lang tid? Spillet er så enkelt." Ja, det er sandt, og for at være præcis, så tog udviklingsdelen (skrivning af koden) omkring halvanden uge. Resten af ​​tiden var delt mellem:
  1. At lære at bruge spilmotoren.
  2. Tegning og gentegning af kunstværker.
  3. At skrive musik.
  4. Søger efter lyde på https://freesound.org .
  5. Læser masser af artikler om, hvordan man promoverer spil.
Vi havde også øjeblikke med "nedetid" af forskellige årsager: nogen havde en eksamen, en anden havde en make-up test osv. Vi kan bestemt tilskrive nedetiden halvanden uge eller mere. Der blev også brugt lidt tid på "debatter": der dukkede nye ideer om, hvad der skulle tilføjes til spillet næsten dagligt, så vi diskuterede: "det er overflødigt", "det passer ikke" osv. Vi smed en masse ideer ud, for eksempel tilføje løbende kakerlakker, der kunne knuses for at få ekstra point: efter min mening var en af ​​de sværeste ting at beslutte på forhånd, hvad der ville være i spillet og at holde sig til planen uden at forsøge at tilføje "bare en mere " funktion. Sådan akkumulerede disse 45 dage. En prototype af spillet var klar efter halvanden uge. I denne periode havde vi virkelig ingen grafik, I begyndelsen var der ... - 2Spillet er meget simpelt i teknisk forstand. Vi behøvede ikke engang at bruge box2d (en fysikmotor). Vi kan håndtere kollisioner og beregne hypotenusen på egen hånd. De mest interessante punkter, jeg vil fremhæve er:
  1. I starten blev alle spilelementer genereret tilfældigt. Med andre ord satte vi udbydere (af sorte huller, sakse, ninjastjerner, blyantbly, hjerter) i et array, fik en tilfældig udbyder, fik et element med tilfældige koordinater. Det blev ret hurtigt klart, at denne tilgang var "virkelig ikke rigtig god". Venner, der deltog i test, fortalte os det samme, og anbefalede brugen af ​​skabeloner. For dem, der er involveret i spiludvikling, er dette nok en oplagt løsning. Men fordi vi var nye på området, var det et meget praktisk råd for os.

    Så vi lavede flere skabeloner: en dal af saks; blyantledninger — det er ret fedt at samle dem superhurtigt (whoosh, whoosh, whoosh med din finger); og endnu en skabelon, som jeg ikke ved, hvad jeg skal kalde — jeg vil bare fortælle dig, hvad vi kaldte klassen i vores kode: StraightForwardPattern.

    I begyndelsen var der ... - 3

    Disse skabeloner forbedrede det, men det blev for forudsigeligt på en eller anden måde. Derfor har vi tilføjet en mere: en tilfældig skabelon. Med andre ord har vi nu nogle "statiske" skabeloner og en tilfældig (indsæt "perfekt afbalanceret" meme her).

  2. Her er det største problem, vi stødte på. LibGDX kalder render (float delta) metoden i en uendelig løkke. Det er her alle elementer er tegnet. Blyantlinjen tegnes som følger: vi får fingerkoordinater og tegner tekstur der. Så hvis vi flyttede vores finger over skærmen meget hurtigt, ville linjen have "huller" på grund af millisekunderne mellem kald til render(delta)-metoden.

    Løsningen var ret enkel: vi husker de sidste koordinater, hvor teksturen er tegnet, får de næste koordinater, og hvis afstanden mellem dem er mere end X, og fingeren ikke er blevet sluppet, så udfylder vi hullet. Først troede vi, at denne mulighed måske ikke ville fungere - linjerne ville være kantede. Men vores frygt var ubegrundet, alt fungerede som det skulle.

Om spillet

Gameplayet hævder ikke at være unikt, men det er ganske godt og kan trække brugere ind. Du styrer en blyant, tegner bogstaveligt talt på papir og undviger forhindringer - sakse, ninjastjerner og sorte huller. I mellemtiden er din blyantledning ved at løbe tør, og du skal samle små blyanter op. Hvis din blyant er ved at være slut, før du samler en lille blyant, kan du tage et stykke af et spejl op. I et par sekunder, i stedet for at forbruge blyantledningen, vil den blive gendannet, men samtidig spejles kontrollerne - hvis din finger bevæger sig til venstre, så trækker blyanten til højre. Du kan også samle et hjerte op, som vil lade dig ramme en forhindring én gang og holde dig i live. Jo længere du bevæger blyanten uden at løfte fingeren, jo højere er din kombination, hvilket betyder, at du hurtigere samler point. I begyndelsen var der ... - 4Spillets hastighed øges også gradvist. Det eneste der mangler er vrede fugle. I første omgang planlagde vi at navngive spillet Karan Dash (translitterationen af ​​det russiske ord for blyant er karandash — ha! forstå det?), men senere ombestemte vi os og besluttede os for Pencil Dash. Vi gjorde dette, fordi dette yndefulde ordspil kun ville blive forstået af et russisktalende publikum. Vi udgav spillet for et par dage siden og promoverer det nu. Heller ikke her er der nogen på holdet, der har nogen erfaring. Vi har fået al vores viden om spilpromovering fra forskellige artikler. Vi offentliggjorde gratis information om spillet på forskellige websteder/fora. Vores betalingskanaler inkluderede annoncering på 4pd, annoncering med én blogger, flere indlæg i offentlige grupper på VKontakte og AdMob-annoncering. Dette indlæg er i øvrigt også en del af vores promovering, så med tilladelse fra hjemmesidens administration tilføjer jeg et link til spillet her. Du kan finde spillet på Google Play her . Jeg ville være taknemmelig, hvis du ville installere det (måske vil du kunne lide det!), og hvis du vil efterlade en vurdering, lover jeg at opkalde et barn efter dig! :) I begyndelsen var der ... - 6
Kommentarer
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION