Meniul

Cum se fac jocurile pentru telefon. Cel mai bun software pentru crearea de jocuri pentru IOS, Android, PC

Culturi ornamentale pentru grădină

Mulți oameni, atunci când descarcă jocuri pentru platforme mobile, se gândesc: "De ce să nu împlinim un vis? De ce să nu facem produsul dvs. care va fi mai bun și mai interesant decât ceea ce oferă deja industria divertismentului interactiv?" Dacă nu știți cum să creați jocuri pe Android, dar doriți să aflați, acest articol vă va spune despre unele dintre capcanele care așteaptă dezvoltatorii începători.

Idee

Primul lucru de care aveți nevoie pentru a crea un joc este o idee. În prima etapă, poate fi scris sub orice formă. Este de dorit ca acesta să „prindă” și să fie de înțeles. Cel mai probabil, în procesul de întrupare, va fi schimbat. Ceva va trebui adăugat și ceva va trebui eliminat complet sau refăcut. Nu este nimic ciudat în acest sens - odată cu elaborarea ulterioară a detaliilor, funcționalitatea nu va trebui doar să fie descrisă cu atenție, ci și să fie verificată dacă este adecvată.

Nu ar trebui să abandonați complet descrierea inițială a ideii și să începeți să creați jocuri rusești pentru Android, trecând peste această etapă. Colecția de gânduri este principalul punct de plecare de la care este cel mai ușor să începeți să vă mișcați. În plus, ideile expuse pe hârtie vă vor permite să vă priviți planurile mai obiectiv, poate, în avans, pentru a marca și a corecta punctele slabe.

Listă de caracteristici

Deoarece este imposibil să creați jocuri pe „Android” fără studiul lor detaliat, în această etapă va trebui să continuați să lucrați și să descrieți caracteristicile care vor fi în joc. De exemplu, seria God of War este un slasher. Arma personajului principal este un bici. În timpul bătăliei, poți face atacuri combinate lungi și frumoase. Fiecare nivel se termină cu o luptă de șef.

Această listă este destul de zgârcită și reflectă doar principalele caracteristici, adică cele care diferențiază jocul de altele. De fapt, există multe altele, dar alte caracteristici sunt secundare. La descriere, primul ar trebui să meargă pe cei fără de care viitoarea creație nu poate exista, iar ultimele - mai puțin importante, care pot fi sacrificate de dragul vitezei de dezvoltare.

Dizdok

Deci, cum să creați joc nou fără acest document este aproape imposibil, va trebui să lucrați și pe el. Dizdok este o abreviere pentru „document de proiectare”, care include cele mai detaliate descrieri:

  • Modelul obiectului și funcționalitatea entității.
  • Specificații funcționale.
  • Conținutul jocului.
  • Interfață.
  • O bază de cunoștințe poate fi adăugată după cum este necesar.
  • Model de obiect.

Model de obiect

Modelul obiect conține informații despre fiecare entitate de joc: arme, armuri, NPC-uri, vrăji, jucător. Este unic pentru fiecare joc.

Funcționalitatea trebuie înțeleasă ca:

  • Pot pune / decola / cumpăra / vinde / îmbunătăți.
  • Va rămâne în inventar după moarte.
  • Va pierde puterea în timp sau cu un fel de acțiune.
  • Fie că mărește caracteristicile unui personaj sau ale unui grup.
  • Dacă setul are proprietăți speciale.

Punctele descrise mai sus sunt opționale, numărul lor poate fi redus sau mărit pentru fiecare grup individual de entități.

Specificații funcționale

Continuând răspunsul la întrebarea despre cum să creați jocuri pentru Android, ar trebui să vorbiți despre următoarea secțiune a documentului de proiectare. Specificațiile funcționale descriu jocul bucată cu bucată. Aici trebuie să spuneți cât mai exact ce poate face personajul principal și cum este implementat. Același lucru trebuie făcut pentru fiecare NPC separat. În plus față de personajele care pot fi redate, ar trebui atinse truse de prim ajutor, arme, armuri și elemente de mediu.

De fapt, această secțiune este un set de reguli care afectează toate momentele jocului, de la meniu până la modul în care vor fi calculate daunele cauzate de o lovitură. Cu cât lucrați mai mult fiecare punct individual, cu atât va fi mai ușor să vă implementați proiectul.

Conţinut

Înainte de a crea un joc bun, trebuie să vă gândiți la ce anume va fi în el. Când descrieți specificațiile, puteți specifica faptul că personajele vor trage de la arme de foc, care sunt încărcate cu muniție cu o pagubă fixă. La lovirea unui NPC, puterea armurii va fi dedusă din acest parametru. De asemenea, va trebui să indicați numele fiecărui eșantion individual de arme, armuri, NPC-uri. Și, desigur, este necesar să descriem conținutul - acestea sunt cărămizile din care ulterior va fi construit întregul joc.

Interfață

Interfața este un set de funcții și butoane cu care utilizatorul va interacționa cu programul. Principalul lucru de luat în considerare atunci când îl creați este comoditatea. Pentru a înțelege exact cum să organizezi toate elementele, poți rula și analiza cele mai bune exemple ale genului, transferând cele mai potrivite soluții proiectului tău.

Alegerea unui motor sau a unui constructor

Încă un pas care va trebui finalizat înainte de a crea jocuri pe Android este alegerea. De mult au trecut zilele în care totul trebuia făcut de la zero. Astăzi, luând un constructor gata făcut, puteți face toată munca scriind un minim de cod.

Alegerea motorului trebuie făcută pe baza unora dintre caracteristicile sale:

  • Termeni de utilizare.
  • Posibilități.
  • Preț.
  • Suport pentru dezvoltatori.
  • Documentație.
  • Dimensiunea comunității.
  • Simplitate.
  • Extensibilitate.

Termeni de utilizare: este posibil ca după ce ați cumpărat o dată un constructor, să nu deveniți proprietarul său complet. Se întâmplă că odată cu succesul comercial al jocului, trebuie să plătiți un procent din profituri dezvoltatorilor de motoare. Principalul lucru este că, înainte de a crea jocuri pe Android, familiarizați-vă cu produsul ales pentru implementare.

Posibilități: trebuie să acopere complet nevoile dezvoltatorului. Dacă produsul oferă mai mult decât are nevoie, jocul poate fi extins cu ușurință și pot fi utilizate noi caracteristici ale docului de proiectare. Dar gândiți-vă și la echilibru! Folosirea Unreal Engine pentru Tetris este o prostie.

A sustine: În primul rând, este important să aflăm dacă produsul are dezvoltare? Bug-urile sunt remediate de la versiune la versiune? Cumpără noi funcționalități și instrumente? Un motor care evoluează rapid are un avantaj față de un motor care a fost înghețat acum câțiva ani.

Comunitate: câți oameni folosesc constructorul? Dacă utilizatorii un numar mare de, găsirea documentației, lecțiilor, master classes, exemple nu este o problemă. Dacă există relativ puțini utilizatori, este posibil ca aceste informații să nu fie disponibile în măsura în care vă va permite să faceți ceva competitiv.

Extensibilitate: înainte de a vă crea propriul joc, luați-vă probleme pentru a afla dacă este posibil să conectați module externe la motorul selectat. Acestea sunt de obicei utilizate pentru a exporta sau importa modele 3D, sunete, scripturi, sprite. Dacă există suport pentru astfel de instrumente, constructorul nu se limitează doar la utilități interne pentru crearea de conținut.

UDK

Unreal Development Kit nu este cel mai ușor de învățat motor de joc, dar una dintre cele mai puternice. Este folosit nu numai de dezvoltatorii începători, ci și de marile corporații. Dacă sunteți în căutarea unui răspuns la întrebarea: „Cum să creați un joc 3D și ce motor să alegeți pentru asta?” - ar trebui să explorați posibilitățile UDK.

Limbajul de script intern, UnrealScript, este folosit pentru a descrie logica programului. Site-ul dezvoltatorului oferă multe lecții, atât filmate pe videoclip, cât și descrise în text. În același timp, acestea acoperă funcționalitatea maximă - de la editor la scrierea propriilor scripturi.

Cuplu 2D / 3D

Torque este unul dintre cei mai populari constructori de jocuri pentru platformele mobile. Are tot setul necesar de editori și instrumente de depanare. În timpul dezvoltării, programatorii au acordat o mare atenție comodității și au încercat să facă toate utilitățile cât mai simple și accesibile posibil.

Constructorul vine cu documentație care descrie majoritatea caracteristicilor. Pe site-ul oficial puteți găsi tutoriale și coduri sursă pentru mai multe jocuri gata făcute.

Pentru scrierea de scripturi, Torque are un limbaj Torque Script încorporat. Proprietățile fiecărui obiect pot fi predefinite. De asemenea, constructorul are un set Box2D încorporat, care se ocupă de calcule fizice.

Dacă încercați să găsiți un răspuns la întrebarea: „Cum să creați și ce motor să alegeți pentru aceasta?” - poți spune în siguranță că Torque îți va permite să faci un proiect multiplayer într-un timp scurt. Toate funcționalitățile necesare sunt încorporate în avans, iar exemplele de pe site-ul oficial vă vor arăta cum să o utilizați cel mai eficient.

Studiul

După alegerea unui motor de joc, nu este încă clar cum puteți crea un joc. Va trebui să petreceți mult timp la antrenament. Deoarece nu există încă o echipă, va trebui să faceți totul singur: scrieți scripturi, creați texturi, sprite, modele (dacă jocul este tridimensional), scrieți un script, testați. Este ușor de ghicit că un dezvoltator începător va trebui să înțeleagă noțiunile de bază ale multor scriitori, testeri, artiști și designeri simultan.

Cel mai bine este să înveți făcând, adică în timp ce lucrezi la proiectul tău. O altă modalitate de a învăța tot ce trebuie să faceți este să lucrați pentru o companie de dezvoltare de jocuri. În același timp, nu trebuie să vizați imediat poziția programatorului șef: chiar dacă vi se cere să faceți lucruri de rutină, nu refuzați ocazia de a privi gamedev din interior.

Munca în orice companie începe de jos, este în regulă. Și abilitățile unui scenarist, proiectant de nivel, echilibrat, tester vor fi foarte utile, iar acestea sunt exact industriile în care lucrează majoritatea juniorilor. După câțiva ani de astfel de cursuri, va fi posibil să învățați cum să creați documente de proiectare și sarcini tehnice, să aflați despre urmăritorii de erori și să formați o bază de contact. După munca depusă, pentru a crea jocuri rusești pentru Android, va trebui să cheltuiți mult mai puțin efort, deoarece vă veți aproviziona cu toate abilitățile și abilitățile necesare.

Este foarte posibil ca, după ce ați dovedit competența dvs. în problemele de dezvoltare, să nu fiți nevoit să părăsiți vechea echipă, în plus, în ea veți lua o poziție de lider în proiectul dvs.

Nu există cu greu o persoană care să nu fi jucat niciodată măcar o dată pe viață cel puțin un joc pe computer, indiferent de un laptop sau de un dispozitiv mobil. Ei bine, cine dintre voi, drag cititor al blogului nostru, nu a visat să vă creeze propriul joc și, dacă nu deveniți milionar grație proiectului dvs., atunci deveniți celebru cel puțin printre prietenii dvs.?

Dar cum să creezi un joc pe Android de la zero fără să ai cunoștințe speciale și nici măcar să nu știi elementele de bază ale programării? Se pare că încercarea ca dezvoltator de jocuri nu este o sarcină atât de dificilă. Acesta va fi subiectul materialului nostru de astăzi.

  1. Ideea sau scenariul.
  2. Dorința și răbdarea.
  3. Constructor de jocuri.

Și dacă totul este mai mult sau mai puțin clar cu primele două componente ale succesului, atunci trebuie să ne oprim asupra celei de-a treia componente mai detaliată.

Ce este Game Constructor

Vorbim despre un program care simplifică foarte mult dezvoltarea jocurilor, făcându-l accesibil persoanelor care nu au abilități de programare. Designerul de jocuri combină un mediu de dezvoltare integrat, un motor de joc și un editor de nivel care funcționează ca un editor vizual ( WYSIWYG- Engleză. abrevierea „ceea ce vezi este ceea ce primești”).

Unii constructori pot fi limitați la gen (de exemplu, RPG, arcade, misiuni). Alții, oferind în același timp capacitatea de a proiecta jocuri de diferite genuri, limitează în același timp imaginația unui dezvoltator începător la jocuri 2D.

Chiar și după ce a citit doar ceea ce a fost deja scris, devine clar că pentru un dezvoltator începător care a decis să scrie un joc pentru orice sistem de operare, inclusiv pentru sistemul de operare Android, alegerea unui constructor adecvat este sarcina principală, deoarece soarta viitorul proiect depinde de funcționalitatea și capacitățile acestui instrument.

Cum să alegeți constructorul potrivit

Trebuie să începeți prin a vă evalua propriul nivel de cunoștințe în domeniul programării. Dacă tinde la zero sau lipsește deloc, atunci este mai bine să încercați cele mai simple opțiuni. Și chiar dacă nu aveți cunoștințele necesare în limba engleză, atunci în acest caz puteți găsi un program care vi se potrivește.

Iar al doilea punct important atunci când alegeți un constructor este funcționalitatea. Aici trebuie să analizați cu precizie scenariul proiectului dvs., deoarece cu cât jocul va fi mai complex, cu atât vor fi necesare mai multe instrumente variate pentru a-l crea, iar constructorul va avea nevoie de unul mai puternic.

Pentru a vă ajuta cu alegerea, mai jos vă vom prezenta cele mai bune programe de proiectare, care, în general, nu exclude faptul că dvs., după ce ați scotocit bine prin forumuri sau site-uri specializate, veți alege altceva pentru dvs., din gama din această gamă de programe destul de largă.

Top 5 cei mai buni constructori de jocuri

Construiți 2

Această aplicație se clasează în mod constant în partea de sus a clasamentului constructorilor de jocuri. Cu Construct 2, puteți crea jocuri 2D de aproape orice gen pentru diverse platforme, inclusiv Android, precum și jocuri de animație destinate browserelor care acceptă HTML5.

Ținând cont de numărul mare de instrumente auxiliare, chiar și utilizatorii începători vor putea stăpâni programul.

Pentru a stăpâni lucrul cu Construct 2, nu este nevoie să cumpărați o licență, versiunea gratuită gratuită oferă instrumente ample și posibilitatea de a exporta proiectul terminat la unele platforme. Cu toate acestea, codificarea produsului finit pentru platformele mobile și accesul la întreaga gamă de funcționalități vă vor oferi o licență personală de 129 USD. Dacă abilitatea ta în crearea de jocuri a atins punctul culminant și ai început deja să primești venituri de peste 5.000 USD din proiectul tău, va trebui să te ocupi de opțiunea Business, care va costa 429 USD.

Acum, consultați câteva tutoriale video practice despre construirea aplicațiilor de jocuri cu Construct 2:

Fuziune Clickteam

Clickteam Fusion este un alt exemplu de constructor excelent de jocuri complete, care ajută chiar și un începător să creeze un joc complet. Programul oferă posibilitatea de a exporta aplicațiile create complet gratuit în format HTML5, ceea ce înseamnă că va fi posibil să publicați jocuri de browser și, în plus, să le convertiți pentru publicare pe diferite piețe de telefonie mobilă, de exemplu, Google Play.

Principalele caracteristici includ simplitatea interfeței, suport pentru efecte shader și accelerare hardware, prezența unui editor de evenimente complet, salvarea proiectelor în formate compatibile cu diverse platforme, inclusiv Android.

Versiunea plătită pentru dezvoltatori a programului nu este disponibilă pentru rezidenții Federației Ruse, dar discul licențiat poate fi comandat de la același Amazon, ușurând bugetul personal cu o medie de 100 USD. Este posibil să rusificați meniul printr-un crack al unei terțe părți.

Cum să lucrați cu aplicația, urmăriți un curs video special:

Stencyl

Stencyl este un alt instrument excelent care vă permite să dezvoltați jocuri simple pe computer 2D fără cunoștințe speciale de coduri, precum și limbaje de programare pentru toate platformele populare. Aici trebuie să lucrați cu scenarii și diagrame, care sunt prezentate sub formă de blocuri, și puteți trage obiecte sau caracteristici cu mouse-ul, ceea ce este foarte convenabil.

Dezvoltatorul programului oferă, de asemenea, posibilitatea de a scrie propriul cod în blocuri, dar acest lucru, desigur, va necesita cunoștințe în domeniul programării.

Prezența unui excelent editor grafic Scene Designer permite utilizatorului să-și aplice imaginația desenând lumi de jocuri.

Setul optim de funcții vă va ajuta să creați jocuri de înaltă calitate din diferite genuri, dar cele mai faimoase (cu faianță) grafice Stencyl vor fi relevante pentru „shootere” sau „jocuri de aventură”.

Programul este distribuit gratuit, dar exportul în formatele desktop necesită un abonament, care va costa 99 USD pentru un an și o licență pentru jocuri mobile- 199 USD pe an.

Urmăriți un curs accidentat despre lucrul cu Stencyl:

Creator de jocuri

Programul există în plată și versiune gratuită. O opțiune bugetară vă permite să creați jocuri bidimensionale solide pentru desktop. În timp ce versiunea plătită face posibilă scrierea unor jucării 3D destul de „fanteziste” pentru Windows, iOS și Android. Deocamdată, suntem interesați de o oportunitate gratuită de a învăța cum să ne realizăm în industria jocurilor, iar Game Maker este chiar opțiunea care vă va permite să creați jocuri cu propriul script, fără restricții privind alegerea genului.

Programul oferă o selecție de șabloane gata făcute pentru locații, obiecte, precum și personaje, sunete și fundaluri. Deci, toată munca creativă se reduce la glisarea și plasarea elementelor selectate în zona de lucru și alegerea condițiilor - locația și interacțiunea cu alte obiecte. Deși nu este necesară cunoașterea limbajului de programare, dar utilizatorii care sunt „în subiect” vor putea folosi GML, ceva similar cu JS și C ++.

Game Maker este distribuit în limba engleză, astfel încât cei care nu îl cunosc suficient vor trebui să descarce fișierul de localizare.

Cine este interesat de acest program, vă sugerăm să vizionați videoclipul de antrenament:

Unity 3D

Unity 3D este probabil cel mai bun lucru de oferit pentru crearea unui proiect 3D de calitate. Modelele gata făcute complet, precum și texturile și scripturile sunt integrate în program. În plus, este posibil să adăugați propriul conținut - sunet, imagini și videoclipuri.

Jocurile create cu Unity sunt compatibile cu toate platformele populare de la dispozitive mobile iOS sau Android la televizoare SMART.

Programul dispune de viteză mare de compilare, interfață ușor de utilizat, editor flexibil și multifuncțional.

Toate acțiunile jocului și comportamentul personajelor se bazează pe un nucleu fizic solid PhysX. Fiecare obiect creat în acest constructor de joc este o anumită combinație de evenimente și scripturi, controlate chiar de dezvoltator.

Este important să înțelegem că, deși programul este poziționat ca un constructor de joc conceput pentru începători, un anumit nivel de cunoștințe este încă necesar pentru a lucra cu această aplicație. Ei bine, lucrul cu grafică 3D necesită un computer destul de modern echipat cu o placă video hardware.

O serie de lecții despre crearea de jocuri cu Unity 3D:

Deci, ați decis să vă realizați visul de a vă crea propriul joc unic. Am încercat să oferim informații care vă pot ajuta. Vă rugăm să rețineți că, dacă citiți cu atenție materialul prezentat și cel puțin parcurgeți tutorialele video pentru fiecare program, probabil ați observat că lucrul cu fiecare constructor de jocuri se bazează pe același principiu. Prin urmare, este foarte posibil să puteți alege ceva mai potrivit pentru nevoile dumneavoastră. Sperăm cel puțin că, în această etapă, întrebarea cum să creați un joc pe Android însuși este închisă. Noroc!

Acest tutorial este destinat în primul rând începătorilor în dezvoltarea Android, dar poate fi util și pentru dezvoltatorii mai experimentați. Iată cum să creați un joc Android 2D simplu, fără a utiliza motoare de joc. Am folosit Android Studio pentru aceasta, dar poate fi utilizat orice alt mediu de dezvoltare adecvat.

Pasul 1. Venind cu ideea jocului
Să luăm ca idee o idee destul de simplă:

În partea de jos a ecranului este o navă spațială. Se poate deplasa la stânga și la dreapta apăsând butoanele corespunzătoare. Asteroizii se deplasează vertical în jos de sus. Acestea apar pe toată lățimea ecranului și se deplasează la viteze diferite. Nava ar trebui să evite meteoritii cât mai mult timp posibil. Dacă un meteorit îl lovește, jocul s-a terminat.


Pasul 2. Creați un proiect
În Android Studio, în meniul de sus, selectați Fișier → Nou → Proiect nou.

Aici introducem numele aplicației, domeniului și calea. Faceți clic pe Următorul.

Aici puteți introduce versiunea Android. De asemenea, puteți alege un ceas și un televizor Android. Dar nu sunt sigur că aplicația noastră va funcționa la toate acestea. Deci, este mai bine să introduceți totul ca în captura de ecran. Faceți clic pe Următorul.

Aici, asigurați-vă că selectați Activitate goală. Și faceți clic pe Următorul.

Aici lăsăm totul așa cum este și facem clic pe Finalizare. Deci proiectul a fost creat. Să trecem la al treilea pas.

Pasul 3. Adăugați imagini

Pasul 5. Editarea clasei MainActivity

În primul rând, adăugați instrumentele View.OnTouchListener la definiția clasei. Definiția clasei va fi acum așa:

Clasa publică MainActivity extinde AppCompatActivity implementează View.OnTouchListener (
Adăugați variabilele statice necesare (variabile de clasă) la clasă:

Public boolean static isLeftPressed = false; // butonul stânga apăsat public static boolean isRightPressed = false; // butonul din dreapta apăsat
Pentru a proceda la nulitatea protejată onCreate (Bundle savedInstanceState) (
adăugați liniile:

GameView gameView = GameView nou (acesta); // create gameView LinearLayout gameLayout = (LinearLayout) findViewById (R.id.gameLayout); // găsi gameLayout gameLayout.addView (gameView); // și adaugă gameView Button leftButton = (Button) findViewById (R.id.leftButton); // butoane find Buton RightButton = (Button) findViewById (R.id.rightButton); leftButton.setOnTouchListener (aceasta); // și adăugați această clasă ca ascultător (onTouch va fi declanșat când faceți clic) rightButton.setOnTouchListener (aceasta);
Cursuri LinearLayout, Button etc. evidențiate cu roșu, deoarece nu au fost adăugate încă la Import.
Pentru a adăuga la Import și a elimina evidențierea roșie, trebuie să apăsați Alt + Enter pentru fiecare.
GameView va fi evidențiat cu roșu, deoarece această clasă nu există încă. Îl vom crea mai târziu.

Acum adăugăm procedura:

Public boolean onTouch (Buton vizualizare, mișcare MotionEvent) (switch (button.getId ()) (// definește care este cazul butonului R.id.leftButton: switch (motion.getAction ()) (// definește caseta apăsată sau eliberată MotionEvent. ACTION_DOWN: isLeftPressed = true; break; case MotionEvent.ACTION_UP: isLeftPressed = false; break;) break; case R.id.rightButton: switch (motion.getAction ()) (// definește caseta apăsată sau eliberată MotionEvent.ACTION_DOWN: isRightPressed = true; break; case MotionEvent.ACTION_UP: isRightPressed = false; break;) break;) return true;)
Dacă cineva este confuz, așa ar trebui să arate clasa MainActivity:

Pachet com.spaceavoider.spaceavoider; import android.support.v7.app.AppCompatActivity; import android.os.Bundle; import android.view.MotionEvent; import android.view.View; import android.widget.Button; import android.widget.LinearLayout; public class MainActivity extinde AppCompatActivity implementează View.OnTouchListener (public static boolean isLeftPressed = false; // buton stânga apăsat public static boolean isRightPressed = false; // buton dreapta apăsat @Oride protejat void onCreate (Bundle savedInstanceState) (super.onCreate) (savedInstance ); setContentView (R.layout.activity_main); GameView gameView = new GameView (this); // create gameView LinearLayout gameLayout = (LinearLayout) findViewById (R.id.gameLayout); // find gameLayout gameLayout.addView (gameView); / / și adăugați butonul gameView leftButton = (Buton) findViewById (R.id.leftButton); // butoane buton find rightButton = (Buton) findViewById (R.id.rightButton); leftButton.setOnTouchListener (this); // și adăugați această clasă ca ascultător (atunci când faceți clic, se va declanșa onTouch) rightButton.setOnTouchListener (this);) public boolean onTouch (butonul Vizualizare, mișcare MotionEvent) (switch (button.getId ()) (// definește care este cazul butonului R .id.leftButton: switch (motion.getAction ()) (// definește caseta apăsată sau eliberată MotionEvent.ACTION_DOWN: isLeftPressed = true; pauză; case MotionEvent.ACTION_UP: isLeftPressed = false; pauză; ) pauză; case R.id.rightButton: switch (motion.getAction ()) (// definește apăsat sau lansat case MotionEvent.ACTION_DOWN: isRightPressed = true; break; case MotionEvent.ACTION_UP: isRightPressed = false; break;) break; ) returnează adevărat; )))
Deci, clasa MainActivity este gata! Clasa GameView, care nu a fost încă creată, este inițiată în ea. Și când butonul stânga este apăsat, variabila statică esteLeftPressed = true, iar când butonul drept este apăsat, isRightPressed = adevărat. În general, acesta este tot ceea ce face.

Pentru început, vom face nava spațială afișată pe ecran și astfel încât să se miște prin apăsarea butoanelor de control. Să păstrăm asteroizii pentru mai târziu.

Pasul 6. Creați clasa GameView

Acum să creăm în sfârșit clasa GameView care lipsește. Deci sa începem. Add extends SurfaceView implementează Runnable la definiția clasei. Dispozitivele mobile au rezoluții diferite de ecran. Poate fi un telefon mic vechi cu o rezoluție de 480x800 sau o tabletă mare de 1800x2560. Pentru ca jocul să arate la fel pe toate dispozitivele, am împărțit ecranul în 20 pe orizontală și 28 pe verticală. Am numit unitatea de măsură rezultată. Alte numere pot fi selectate. Principalul lucru este că relația dintre ele este aproximativ păstrată, altfel imaginea va fi alungită sau comprimată.

Public static int maxX = 20; // dimensiune orizontală public static int maxY = 28; // unitate float statică publică de dimensiune verticală W = 0; // pixeli pe unitate orizontală publică statică float unitate H = 0; // pixeli pe unitate pe verticală
unitW și unitW vor fi calculate ulterior. Avem nevoie și de alte variabile:

Private boolean firstTime = adevărat; private boolean gameRunning = true; navă privată; private Thread gameThread = nul; vopsea privată de vopsea; pânză privată de pânză; private SurfaceHolder surfaceHolder;
Constructorul va fi astfel:

Public GameView (Context context) (super (context); // inițializează obiecte pentru desenarea surfaceHolder = getHolder (); paint = new Paint (); // inițializează thread gameThread = thread nou (this); gameThread.start ();)
Metoda run () va conține o buclă infinită. La începutul buclei, se execută metoda update ()
care va calcula noile coordonate ale navei. Apoi metoda draw () atrage nava pe ecran. Și la final, metoda control () se va întrerupe timp de 17 milisecunde. După 17 milisecunde, run () va porni din nou. Și așa mai departe până când variabila gameRunning == este adevărată. Aceste metode sunt:

@Override public void run () (while (gameRunning) (update (); draw (); control ();)) private void update () (if (! FirstTime) (ship.update ();)) private void draw () (if (surfaceHolder.getSurface (). isValid ()) (// verificați dacă suprafața este validă dacă (firstTime) (// inițializarea la primul start firstTime = false; unitW = surfaceHolder.getSurfaceFrame (). width () / maxX; // calculați numărul de pixeli din unitatea de unitate H = surfaceHolder.getSurfaceFrame (). înălțime () / maxY; navă = new Navă (getContext ()); // adăugați nava) canvas = surfaceHolder.lockCanvas (); // închideți pânza de pânză .drawColor (Color.BLACK); // umpleți fundalul cu ship.drow negru (vopsea, pânză); // desenați suprafața naveiHolder.unlockCanvasAndPost (canvas); // deschideți pânza)) privat void control () (// pauză timp de 17 milisecunde try (gameThread.sleep (17);) catch (InterruptedException e) (e.printStackTrace ();))
Acordați atenție inițializării la prima pornire. Acolo calculăm numărul de pixeli din unitate și adăugăm nava. Nu am creat nava încă. Dar mai întâi, îi vom crea clasa părinte.

Pasul 7. Creați clasa SpaceBody

Va fi părintele clasei Nave și Asteroizi. Acesta va conține toate variabilele și metodele comune acestor două clase. Adăugați variabile:

Flotant protejat x; // coordonează plutitorul protejat y; dimensiunea flotantului protejat; // mărimea vitezei de plutire protejate; // viteză protejată int bitmapId; // ID imagine protejat Bitmap bitmap; // poza
și metode

Void init (Context context) (// comprimați imaginea la dimensiunea dorită Bitmap cBitmap = BitmapFactory.decodeResource (context.getResources (), bitmapId); bitmap = Bitmap.createScaledBitmap (cBitmap, (int) (dimensiune * GameView.unitW) , (int) (mărime * GameView.unitH), false); cBitmap.recycle ();) void update () (// noi coordonate vor fi calculate aici) void drow (Paint paint, Canvas canvas) (// desenează o imagine canvas.drawBitmap (bitmap, x * GameView.unitW, y * GameView.unitH, paint);)
Pasul 8. Creați clasa Ship

Acum să creăm o clasă Ship. Moștenește clasa SpaceBody, așa că adăugăm extinde SpaceBody la definiția clasei.

Să scriem un constructor:

Navă publică (context context) (bitmapId = R.drawable.ship; // define parametri inițiali dimensiune = 5; x = 7; y = GameView.maxY - dimensiune - 1; viteză = (float) 0,2; init (context); // initializa nava)
și suprascrieți metoda update ()

@Override public void update () (// mutați nava în funcție de butonul apăsat dacă (MainActivity.isLeftPressed && x> = 0) (x - = speed;) if (MainActivity.isRightPressed && x<= GameView.maxX - 5){ x += speed; } }
Pe aceasta, nava spațială este gata! Compilăm și rulăm totul. O navă spațială ar trebui să apară pe ecran. Când apăsați butoanele, acesta ar trebui să se deplaseze la dreapta și la stânga. Acum adăugați asteroizii care cad de sus. La coliziunea cu o navă, jocul se termină.

Pasul 9. Creați clasa Asteroid

Să adăugăm o clasă de asteroizi. De asemenea, moștenește clasa SpaceBody, așa că adăugăm extinde SpaceBody la definiția clasei.

Să adăugăm variabilele de care avem nevoie:

Raza int privată = 2; // radius private float minSpeed ​​= (float) 0,1; // viteză minimă float privat maxSpeed ​​= (float) 0,5; // viteza maxima
Asteroidul ar trebui să apară într-un punct aleatoriu în partea de sus a ecranului și să zboare în jos cu o viteză aleatorie. Pentru a face acest lucru, x și viteza sunt setate folosind un generator de numere aleatorii în constructorul său.

Public Asteroid (Context context) (Random random = new Random (); bitmapId = R.drawable.asteroid; y = 0; x = random.nextInt (GameView.maxX) - radius; size = radius * 2; speed = minSpeed + (MaxSpeed ​​- minSpeed) * random.nextFloat (); init (context);)
Asteroidul trebuie să se deplaseze vertical în jos cu o anumită viteză. Prin urmare, în metoda update (), adăugăm viteză la coordonata x.

@Override public void update () (y + = viteză;)
De asemenea, vom avea nevoie de o metodă pentru a determina dacă asteroidul s-a ciocnit cu nava.

Public boolean isCollision (float shipX, float shipY, float shipSize) (return! (((Dimensiunea X +)< shipX)||(x >(shipX + shipSize)) || ((y + dimensiune)< shipY)||(y >(shipY + shipSize))); )
Să o luăm în considerare mai detaliat. Pentru simplitate, presupunem că nava și asteroidul sunt pătrate. Aici am plecat din contră. Adică stabilesc când pătratele NU se intersectează.

((x + dimensiune)< shipX) - корабль слева от астероида.
(x> (shipX + shipSize)) - expediere în dreapta asteroidului.
((y + dimensiune)< shipY) - корабль сверху астероида.
(y> (shipY + shipSize)) - navă sub asteroid.

Între aceste patru expresii se află || (sau). Adică, dacă cel puțin o expresie este adevărată (ceea ce înseamnă că pătratele NU se intersectează) - și cele rezultate sunt adevărate.

Inversez toată această expresie cu un semn! Ca rezultat, metoda returnează adevărat atunci când pătratele se intersectează. Ce ne trebuie.

Puteți citi despre definiția intersecției formelor mai complexe.

Pasul 10. Adăugați asteroizi la GameView

Adăugați variabile la GameView:

Private ArrayList asteroizi = ArrayList nou<>(); // asteroizii vor fi hărțuiți aici private final int ASTEROID_INTERVAL = 50; // timpul după care apar asteroizii (în iterații) private int currentTime = 0;
adăugați și 2 metode:

Private nul checkCollision () (// iterați peste toți asteroizii și verificați dacă unul dintre ei atinge nava pentru (Asteroid asteroid: asteroizi) (dacă (asteroid.isCollision (ship.x, ship.y, ship.size)) (/ / jucătorul a pierdut gameRunning = false; // oprește jocul // TODO adaugă o animație de explozie))) private void checkIfNewAsteroid () (// adaugă un asteroid nou la fiecare 50 de iterații dacă (currentTime> = ASTEROID_INTERVAL) (Asteroid asteroid = Asteroid nou (getContext ()); asteroids.add (asteroid); currentTime = 0;) else (currentTime ++;))
Și în metoda run (), adăugați apeluri la aceste metode înainte de a apela control ().

@Override public void run () (while (gameRunning) (update (); draw (); checkCollision (); checkIfNewAsteroid (); control ();))
Apoi, în metoda update (), adăugați o buclă care repetă toate asteroizii și apelează metoda update () pe ele.

Actualizare nulă privată () (if (! FirstTime) (ship.update (); for (Asteroid asteroid: asteroids) (asteroid.update ();)))
Adăugați aceeași buclă la metoda draw ().

Private void draw () (if (surfaceHolder.getSurface (). IsValid ()) (// verificați dacă suprafața este validă dacă (firstTime) (// inițializarea la prima rulare firstTime = false; unitW = surfaceHolder.getSurfaceFrame (). () / maxX; // calculați numărul de pixeli din unitatea de unitate H = surfaceHolder.getSurfaceFrame (). height () / maxY; ship = new Ship (getContext ()); // add the ship) canvas = surfaceHolder.lockCanvas (); // închide pânza canvas.drawColor (Color.BLACK); // umple fundalul cu ship.drow negru (vopsea, pânză); // desenează nava pentru (Asteroid asteroid: asteroizi) (// desenează asteroizi asteroid.drow (vopsea, pânză);) surfaceHolder.unlockCanvasAndPost (canvas); // deschide pânza))
Asta e tot! Cel mai simplu joc 2D este gata. Compilăm, alergăm și vedem ce s-a întâmplat!
Dacă cineva este confuz sau ceva nu funcționează, puteți descărca sursa.

Jocul este, desigur, primitiv. Dar poate fi îmbunătățit prin adăugarea de noi funcții. În primul rând, este necesar să se implementeze eliminarea asteroizilor care au zburat de pe ecran. Puteți face ca nava să tragă pe asteroizi, astfel încât jocul să se grăbească treptat, să adauge un cronometru, un tabel de înregistrări și multe altele. Dacă sunteți interesat, voi scrie o continuare, unde voi descrie toate acestea.

Asta e tot. Scrieți recenzii, întrebări, subiecte care vă interesează pentru a continua.

Cum se scrie rapid un joc Android în Unity

În zilele noastre, oricine poate deveni un dezvoltator de jocuri sau aplicații de succes fără eforturile titanice. Un exemplu de astfel de caz este Dong Nguyen, care a dezvoltat Flappy Bird. Jocul nu avea nicio mecanică sau grafică complexă, dar asta nu l-a împiedicat să devină popular și să aducă creatorului său cincizeci de mii de dolari pe zi. Cu toate acestea, nu a existat nimic remarcabil în joc. Tot ce trebuia pentru a avea succes era să fii în locul potrivit la momentul potrivit și puțin noroc. Asta se poate întâmpla astăzi, ai nevoie doar de ideea potrivită.

Pentru a demonstra cât de ușor este să scrii așa ceva, astăzi vom scrie Flappy Bird with Unity în doar 10 minute.

Personaj redabil

Mai întâi creați un proiect nou și asigurați-vă că este selectat 2D.

Încarcă-ți sprita de pasăre în scenă. Nu uitați să vă activați fantezia!

Apoi reglați dimensiunea spritei după cum doriți, trăgându-l după colț în direcția dorită. Sprite-ul ar trebui să fie vizibil în fereastra ierarhiei din stânga. Toate obiectele din scenă sunt vizibile în ea și în acest moment ar trebui să existe doar două dintre ele: o cameră și o pasăre.

Trageți camera pe pasăre și eliberați-o. Camera ar trebui să fie sub pasăre, ceea ce înseamnă că camera este acum „copilul” păsării. Acum poziția camerei va fi fixată față de pasăre. Dacă pasărea se mișcă înainte, camera face același lucru.

Selectați din nou pasărea în scenă sau în fereastra ierarhiei. Veți vedea o listă de opțiuni și atribute în partea dreaptă într-o fereastră numită Inspector. Aici puteți gestiona diferite variabile asociate unui anumit obiect.

Acum faceți clic pe Adăugare componentă. Alegeți Physics2D> Rigidbody2D - acesta este un set gata de instrucțiuni pentru aplicarea gravitației asupra personajului nostru. Faceți clic pe Constrângeri în acest panou și apoi selectați înghețarea rotației Z. Acest lucru va împiedica păsările să se rotească cu camera în cerc.

În același mod, adăugați un colizor de poligon care îi spune Unity unde se află limitele personajului. Apăsați Redare și vedeți cum sprite-ul, împreună cu camera, cade infinit.

Până acum, bine!

Acum este timpul să începeți să zburați personajul, deoarece nu va fi dificil.

Mai întâi trebuie să creați un script C #. Creați un folder pentru acesta (faceți clic dreapta undeva în active și creați un folder „Scripturi”), faceți clic dreapta și alegeți Creare> Script C #.

Să-i spunem „Personaj”. Faceți dublu clic pe el pentru a-l deschide în IDE, fie că este MonoDevelop sau Visual Studio. Apoi adăugați următorul cod:

Clasa publică Caracter: MonoBehaviour (public Rigidbody2D rb; public float moveSpeed; public float flapHeight; // Acest lucru este necesar pentru inițializarea void Start () (rb = GetComponent ();) // Actualizarea se numește o dată pe cadru void Actualizare () ( rb .velocity = new Vector2 (moveSpeed, rb.velocity.y); if (Input.GetMouseButtonDown (0)) (rb.velocity = new Vector2 (rb.velocity.x, flapHeight);) if (transform.position.y > 18 || transform.position.y< -19) { Death(); } } public void Death() { rb.velocity = Vector3.zero; transform.position = new Vector2(0, 0); } }

Acest cod face două lucruri. Face personajul să avanseze cu o viteză pe care o definim în inspector și creează senzația unei păsări care zboară. Metoda Update () este apelată în mod repetat pe tot parcursul jocului, deci orice ai pune aici va rula continuu. În acest caz, adăugăm o anumită viteză obiectului nostru. Variabila rb este scriptul RigidBody2D pe care l-am aplicat obiectului nostru mai devreme, așa că atunci când scriem rb.velocity ne referim la viteza obiectului.

O atingere pe ecran este interpretată de Unity ca un clic al mouse-ului dacă utilizați un dispozitiv mobil. După ce facem clic, facem ca personajul să se miște puțin în sus.

Variabila moveSpeed ​​va fi responsabilă pentru viteza de mișcare și variabila flapHeight - pentru creșterea înălțimii zborului păsării după fiecare clic. Deoarece aceste variabile sunt declarate publice, le putem schimba în afara scriptului.

Metoda Death () este, de asemenea, declarată publică, ceea ce înseamnă că alte obiecte și scripturi o pot numi. Această metodă readuce pur și simplu poziția personajului la început. De asemenea, va fi folosit de fiecare dată când personajul zboară prea sus sau jos. În curând veți înțelege de ce este declarat public. Linia rb.velocity = Vector3.zero; este necesar pentru a elimina impulsul - nu vrem ca personajul să cadă din ce în ce mai repede după fiecare moarte, nu-i așa?

Acum puteți ieși din IDE și puteți adăuga scriptul ca o componentă a personajului dvs. Pentru a face acest lucru, selectați pasărea noastră și faceți clic pe Adăugare componentă> Scripturi> Caracter. Acum putem defini moveSpeed ​​și flapHeight în inspector (pentru asta sunt variabile publice). Să atribuim variabilelor valorile 3 și respectiv 5.

Și încă ceva: în inspector, trebuie să adăugați o etichetă personajului. Pentru a face acest lucru, faceți clic pe unde scrie Tag: Untagged și apoi selectați Player din lista derulantă.

Obstacole

Acum să adăugăm obstacole: țevi. Cineva din țevi găsește ciuperci și cineva - moartea lor.

Trageți sprite-ul țevii în scena în care ar trebui să fie primul obstacol și denumiți-l pipe_up.
Acum să creăm un nou script numit Pipe:

Clasa publică Pipe: MonoBehaviour (caracter de caracter privat; // Acest lucru este necesar pentru inițializarea void Start () (caracter = FindObjectOfType ();) // Actualizarea se numește o dată pe cadru void Actualizare () (if (character.transform.position. x - transform.position.x>

Adăugați acest script la sprite de pipă în același mod ca înainte. Astfel, conducta va reveni la ecran după ce a trecut dincolo de marginea sa stângă. Nu am făcut încă nimic aici, dar vom reveni la acest lucru.

Metoda OnCollisionEnter2D () este apelată de fiecare dată când conducta interacționează cu caracterul. După aceea, se apelează metoda Death () creată anterior, readucând jucătorul la punctul de plecare.

Deci, avem o conductă care se va estompa din când în când la celălalt capăt al ecranului. Dacă îl lovești, vei muri.

Țevi inversate

În acest moment avem doar un sprite de țeavă. Să adăugăm încă unul. Pentru a face acest lucru, faceți clic dreapta în fereastra ierarhiei, faceți clic pe Obiect 2D nou> Sprite și apoi selectați spriteul pe care doriți să îl utilizați. Este și mai ușor să glisați și să fixați din nou fișierul în scenă.

Denumiți acest sprite pipe_down. În inspectorul de sub Sprite Renderer, selectați opțiunea Flip Y pentru a răsturna țeava cu capul în jos. Adăugați același RigidBody2D.

Acum să scriem un nou script C # numit PipeD. Acesta va conține cod similar:

Clasa publică PipeD: MonoBehaviour (caracter de caracter privat; // Acest lucru este necesar pentru inițializarea void Start () (caracter = FindObjectOfType ();) // Actualizarea se numește o dată pe cadru gol Actualizare () (if (character.transform.position. x - transform.position.x> 30) ()) void OnCollisionEnter2D (Collision2D other) (if (other.gameObject.tag == "Player") (character.Death ();)))

Prefabricate

Deci, acest cod ne este suficient pentru a face tot jocul. Am putea muta țevile în partea dreaptă a ecranului de fiecare dată când dispar sau să copiem și să lipim cât de multe țevi am dori să vedem pe tot parcursul jocului.

Dacă mergeți pe primul drum, atunci va fi dificil să vă asigurați că țevile sunt așa cum ar trebui după generarea aleatorie și să mențineți un curs sincer al lucrurilor. După moartea personajului, aceștia ar putea apărea la kilometri de prima țeavă!

Dacă mergeți pe a doua cale, atunci totul va sfârși cu consumul de memorie inutil, cu încetinirea rezultată a jocului și redarea redusă, deoarece totul este în același loc de fiecare dată.

Să folosim prefabricatele în loc. Mai simplu spus, ne vom transforma conductele în șabloane pe care le putem folosi apoi pentru a crea în mod eficient mai multe conducte după cum doriți. Dacă există programatori aici, atunci tratați scriptul Pipe ca o clasă și conductele ca instanțe ale acestui obiect.

Pentru a face acest lucru, creați un nou folder „Prefabricări”. Apoi trageți pipe_up și pipe_down din fereastra ierarhiei în folder.

De fiecare dată când trageți un obiect din acest folder în scenă, acesta va avea aceleași proprietăți, deci nu trebuie să adăugați în mod constant componente. Mai mult, dacă redimensionați o componentă dintr-un folder, aceasta va afecta toate conductele din joc și nu trebuie să le schimbați separat.

După cum vă puteți imagina, acest lucru ne va economisi resursele. De asemenea, înseamnă că putem interacționa cu obiecte din cod. Putem crea instanțe ale conductelor noastre.

Mai întâi, adăugați acest cod la declarația condițională din metoda Update () a scriptului Pipe, pe care l-am lăsat necompletat:

Void Update () (if (character.transform.position.x - transform.position.x> 30) (float xRan = Random.Range (0, 10); float yRan = Random.Range (-5, 5); Instantiate (gameObject, nou Vector2 (character.transform.position.x + 15 + xRan, -10 + yRan), transform.rotation); Destroy (gameObject);))

Acest lucru este necesar pentru a crea o instanță a gameObject-ului nostru. Rezultatul este o nouă copie identică. În Unity, ori de câte ori folosiți cuvântul gameObject, se referă la obiectul de care este atașat în prezent scriptul - în cazul nostru, țeava.

Ne re-generăm conductele în variații aleatorii pentru a face mai distractiv.

Dar, în loc să facem același lucru în scriptul PipeD, generăm ambele obiecte în același loc. Astfel, putem seta cu ușurință poziția celei de-a doua țevi în raport cu prima. De asemenea, înseamnă că avem nevoie de mai puțin cod pentru PipeD.

Creați un joc public Obiect numit pipeDown. Apoi actualizați codul astfel:

If (character.transform.position.x - transform.position.x> 30) (float xRan = Random.Range (0, 10); float yRan = Random.Range (-5, 5); float gapRan = Random.Range (0, 3); Instantiate (gameObject, nou Vector2 (character.transform.position.x + 15 + xRan, -11 + yRan), transform.rotation); Instantiate (pipeDown, nou Vector2 (character.transform.position.x + 15 + xRan, 12 + gapRan + yRan), transform.rotation); Distruge (gameObject);)

Întoarceți-vă la Unity și trageți prefabricatul pipe_down din folderul prefabricat (acest lucru este important!) În locul unde scrie „Pipe Down” (observați modul în care carcasa noastră de cămilă este înlocuită de un spațiu) pe sprite-ul pipe up. Dacă vă amintiți, am definit Pipe Down ca un joc public Obiect, care ne oferă posibilitatea de a determina ce este acest obiect de oriunde - în acest caz, prin intermediul inspectorului. Alegând un prefabricat pentru acest obiect, ne asigurăm că, atunci când conducta este instanțiată, va include toate atributele și scriptul pe care le-am adăugat mai devreme. Nu creăm doar un sprite, ci recreăm un obiect cu un colizor care poate ucide personajul.

Tot ceea ce adăugăm în același loc în scriptul PipeD este pur și simplu Destroy (gameObject), astfel încât conducta se va autodistruge atunci când va ieși de pe marginea stângă a ecranului.

Dacă începeți jocul acum, ecranul va avansa automat și veți muri dacă vă veți lovi de oricare dintre conducte. Zburați suficient de departe și aceste țevi vor dispărea și vor reapărea înainte.

Din păcate, există o distanță mare între țevi și ecranul pare gol. Am putea remedia acest lucru adăugând câteva prefabricate în scena noastră pentru a crea o conductă de țevi care apar în mod constant. Cu toate acestea, ar fi mai bine să generați țevi într-un script. Acest lucru este important, pentru că altfel, după moartea personajului, conductele de la începutul cărării vor fi distruse, iar spațiul gol se va forma din nou.

Astfel, putem crea primele țevi în timpul fiecărei încărcări a jocului și să readucem totul la locul său după moartea personajului.

Zbor fără sfârșit

Acum să creăm variabile publice pipe_up și pipe_down în scriptul Character. Acest lucru vă va oferi posibilitatea de a face referire la obiectele generate glisând și plasând prefabricate pe obiectul caracter, la fel ca atunci când am adăugat pipe_down la scriptul Pipe.

Trebuie să adăugăm următoarele variabile:

Public GameObject pipe_up; public GameObject pipe_down;

Apoi vom scrie o metodă ca aceasta:

Public void BuildLevel () (Instantiate (pipe_down, new Vector3 (14, 12), transform.rotation); Instantiate (pipe_up, new Vector3 (14, -11), transform.rotation); Instantiate (pipe_down, new Vector3 (26, 14), transform.rotation); Instantiate (pipe_up, new Vector3 (26, -10), transform.rotation); Instantiate (pipe_down, new Vector3 (38, 10), transform.rotation); Instantiate (pipe_up, new Vector3 ( 38, -14), transform.rotation); Instantiate (pipe_down, new Vector3 (50, 16), transform.rotation); Instantiate (pipe_up, new Vector3 (50, -8), transform.rotation); Instantiate (pipe_down, nou Vector3 (61, 11), transform.rotation); Instantiate (pipe_up, new Vector3 (61, -13), transform.rotation);)

O vom numi o dată în metoda Update () și o dată în metoda Death ().

După începerea jocului, se apelează Update (), iar conductele noastre sunt instalate conform configurației date. Datorită acestui fapt, primele obstacole vor fi întotdeauna în același loc. După moartea jucătorului, conductele vor merge în aceleași locuri.

Reveniți la scena din Unity și ștergeți cele două țevi care sunt în prezent acolo. „Jocul” dvs. va arăta doar ca un ecran gol cu ​​o pasăre. Apăsați Redare și țevile vor apărea, după primele câteva, poziția lor va fi determinată aleatoriu.

In cele din urma

Așa că am făcut tot jocul! Adăugați un contor de scoruri, încercați să îl faceți mai original și creșteți dificultatea jocului pe măsură ce progresați. De asemenea, nu va fi de prisos să creați un meniu. De asemenea, este o idee bună să distrugeți conductele de pe ecran după moartea personajului. După ce ați terminat cu asta, vă recomandăm să aveți un joc pregătit pentru Play Store în buzunar! Un joc similar odată a făcut ca un alt dezvoltator să fie foarte bogat, ceea ce dovedește că nu trebuie să fii un geniu al programării sau să ai un editor bogat în spate pentru a avea succes. Ai nevoie doar bună ideeși zece minute!

Doriți să scrieți aplicații Android, dar nu știți de unde să începeți? Apoi, verificați minunatele noastre aplicații pentru dezvoltarea Android.

Salutări tuturor cititorilor blogului meu! Astăzi vreau să vorbesc despre o afacere atât de interesantă precum crearea de jocuri pentru sistemul de operare Android. Anterior, crearea de jocuri era o sarcină destul de minuțioasă care necesita anumite cunoștințe și abilități de la programatori, artiști și designeri. Pentru a scrie un joc mai mult sau mai puțin serios, a fost necesar să adunăm o echipă, să găsim finanțare, să creăm un motor pe care să funcționeze, să scriem mii de linii de cod, să verificăm de două ori performanța jocului și să prindem erori de zeci de ori.

Astăzi, crearea de jocuri atât pentru computere, cât și pentru platforme mobile a devenit mult mai ușoară, deoarece au apărut motoare universale și medii de dezvoltare sau vorbind limbaj simpluprograme pentru crearea de jocuri pentru Androidși calculatoare personale. Acum vreo șase luni m-am gândit și astăzi vom vorbi despre instrumentele pentru crearea de jocuri cu drepturi depline.

Acum fiecare își poate dezvolta propriul joc și îl poate prezenta publicului. Tot ce este necesar pentru acest lucru este un program pentru crearea de jocuri pentru Android, puțină răbdare, timp liber și talent. Cu ajutorul instrumentelor speciale, dezvoltarea este foarte ușoară și simplă: vă puteți crea propriile niveluri, comploturi, eroi și monștri, puteți seta modele de comportament al personajelor, puteți folosi fizica; puteți utiliza obiecte, texturi, modele și seturi de animație deja pregătite. Practic, programele pentru crearea de jocuri pentru Android fac posibilă încercarea imediată a acestora în modul de simulare pe un computer pentru a afla cum vor funcționa aceste jocuri pe diferite configurații de smartphone-uri și tablete. Acum vom analiza 2 dintre cele mai renumite și mai funcționale medii pentru crearea de jocuri pentru Android.

Unity 3d

Cel mai funcțional instrument pentru dezvoltarea jocurilor mobile este motorul Unity 3d. A fost folosit pentru astfel de jocuri android celebre precum: Dead Trigger, The Silent Age, Shattered Planet. Acest program de creare a jocurilor pentru Android vă permite să creați cu ușurință jocuri de orice gen: shootere și jocuri de acțiune de la prima și a treia persoană, curse, RPG-uri, strategii, platforme, puzzle-uri - orice. Mulți dezvoltatori creează biblioteci și seturi de instrumente separate pentru Unity, punându-le în acces gratuit, astfel încât un utilizator care decide să descarce acest program pentru crearea de jocuri pentru Android va avea acces la diverse conținuturi (modele de caractere, niveluri, texturi, sunete etc.) ), pe care îl poate adăuga la jocurile sale.

Exemplu folosind Unity 3d:



Pentru utilizatorii fără experiență, dezvoltatorii programului pentru crearea Android Jocuri de unitate 3D au pregătit un număr mare de tutoriale video, astfel încât toată lumea să poată stăpâni acest motor cu răbdare adecvată. Jocurile dezvoltate cu acest utilitar pot fi redistribuite în magazinul Google Play, dar sub rezerva anumitor termeni și condiții - le puteți afla citind acordul de licență Unity și Google Play. Astfel, creatorul de jocuri nu numai că poate dobândi abilități utile pentru dezvoltatori, ci și poate obține profit dacă proiectele dezvoltate de acesta vor avea succes. Mai jos vă voi oferi o recenzie video care vă va ajuta să cunoașteți mai bine acest motor.

Studio DX

Următorul program popular pentru crearea de jocuri pentru Android, pe care îl puteți descărca gratuit, se numește DX Studio. Acest motor vă permite să dezvoltați jocuri pentru platformele Android și Windows: primul folosește API-ul grafic OpenGL ES, iar al doilea folosește DirectX.

Cu ajutorul acestui program pentru crearea de jocuri 3D pentru Android, utilizatorul poate dezvolta proiecte suficient de calitative, care să conțină shadere moderne, un sistem de particule, diverse efecte, un model fizic de încredere, mape de lumină și umbre dinamice și sunet surround. Lucrând în acest program, puteți utiliza biblioteci terțe (inclusiv cele de la AutoCAD, 3Ds MAX) și puteți crea propriile obiecte - posibilitățile pentru utilizator sunt extinse.
Motorul DX Studio este complet gratuit pentru utilizatori - cu condiția ca jocurile dezvoltate cu acesta să fie distribuite gratuit. De asemenea, atașez o recenzie video la acest motor, care va arăta exact cum puteți crea jocuri:

Modern programe pentru crearea de jocuri pentru Android permite chiar și utilizatorilor fără experiență să își dezvolte propriile proiecte de joc. Crearea de jocuri se transformă dintr-o activitate dureroasă și consumatoare de timp în divertisment, ceea ce înseamnă că toată lumea se poate încerca singură în industria jocurilor.

Știi care sunt cele mai bune?