Faceți un joc Match-3 în Construct 2 Elementele de bază

Bine ați venit la o nouă serie de tutoriale în care vă voi arăta cum să construiți un joc de puzzle Match-3, de la zero, în Construct 2. În această primă parte vom pune bazele jocului și vom obține grila de puzzle de bază pe ecran.


Introducere

Un joc Match-3 este un puzzle bazat pe blocuri în care vă mutați blocurile în zona de joc pentru a crea grupuri de trei sau mai multe care au un atribut comun (cum ar fi o culoare sau o formă). În cele mai multe jocuri de meci 3 jucătorul primește bonusuri pentru potrivirea a mai mult de trei blocuri simultan.

Majoritatea jocurilor de puzzle match-3 sunt competitive în natură, iar obiectivul jucătorului este, în general, doar obținerea celui mai mare scor posibil înainte de expirarea timpului sau o altă condiție de pierdere. Câteva exemple de jocuri meci-3 includ Pokemon Puzzle League, Bejeweled și recentul hit Candy Crush Saga.


Jocul pe care îl vom face

Am decis sa bazez meciul-3 joc pe care il vom face pe Pokemon Puzzle League:


Faceți clic și trageți blocurile adiacente pentru a le schimba. Încercați să potriviți trei într-un rând sau o coloană. Nu lăsați blocurile să ajungă în partea de sus!

Dacă nu ați mai jucat-o niciodată, PPL este un meci destul de simplu-3 în cazul în care blocurile se ridică din partea de jos a ecranului de joc și jucătorul trebuie să creeze meciuri pentru a împiedica completarea ecranului de joc. Dacă blocurile ajung în partea de sus, jucătorul pierde și este obligat să înceapă din nou.

Aici este un demo al jocului pe care îl vom lucra pe parcursul seriei:



În acest prim articol ne vom concentra pe a pune bazele jocului nostru. Acest articol se va concentra în special pe stabilirea proiectului și pe crearea unei rețele de blocuri aleatoare pentru player.


Înainte de a începe

Înainte de a începe cu acest tutorial trebuie să vă asigurați că ați instalat cea mai nouă versiune a Construct 2 (C2). Când am construit versiunea originală a jocului, foloseam Release 122, atât timp cât ai o versiune mai nouă decât asta, ar trebui să fii bine. Mai intai, daca nu ai folosit niciodata C2 inainte de a arunca o privire la acest ghid, care detaliaza elementele de baza ale utilizarii C2 si cum sa faci cele mai multe tipuri de obiecte.

De asemenea, trebuie să descărcați pachetul grafic pe care l-am creat pentru acest tutorial. Desigur, puteți folosi orice grafică doriți, voi oferi anumite poziții pentru multe elemente din aceste tutoriale și acele poziții se bazează pe imaginile pe care le-am folosit. Dacă utilizați o altă grafică, va trebui să țineți cont de orice diferențe de mărime din acea grafică atunci când urmați aceste tutoriale.

Odată ce ați instalat totul și aveți o bună înțelegere a C2, citiți mai departe!


Configurarea proiectului

Înainte de a construi toate gameplay-ul, trebuie să înființăm proiectul în sine. Încărcați C2 și urmați acești pași:

  1. Începeți un nou proiect.
  2. În Proprietățile proiectului, setați dimensiunea ferestrei la 600x600.
  3. Completați Nume și Autor câmpuri.
  4. Mergeți la straturi și adăugați două straturi noi.
  5. Redenumiți cel mai mic strat la fundal, la mijlocul stratului blocuri, și stratul superior la Câmp de joc.
  6. Intra Aspectul 1 și introduceți a Suprafață de fundal obiect.
    1. Pentru Suprafață de fundal obiect, utilizare BG Imagini / StandardBGTile.bmp din pachetul grafic.
    2. Mergeți la proprietățile obiectului și redenumiți-l GameBG.
    3. Setați obiectul Strat la fundal.
    4. Setați obiectul mărimea a fi 650, 650.
    5. Poziționați obiectul astfel încât acesta să umple întreaga zonă vizibilă a aspectului și arată similar cu acesta:
  7. Acum, creați un altul Suprafață de fundal obiect.
    1. Utilizați imaginea Game Field Images / GameFieldBorder.bmp.
    2. Denumiți obiectul GameFieldBorder.
    3. Seteaza Poziţie la 9, -12.
    4. Seteaza mărimea la 16, 732.
    5. Seteaza Strat la Câmp de joc.
  8. Creați o copie a fișierului  GameFieldBorder obiect.
    1. Seteaza Poziţie din copie la  368, -12 .
  9. Apoi, creați un spiriduș obiect.
    1. Utilizați imaginea Game Field Imagini / GameFieldBottom.png.
    2. Numeste GameFieldBottom.
    3. Seteaza Poziţie la 197, 625.
    4. Seteaza mărimea la 344, 150.
    5. Seteaza Strat la Câmp de joc.
  10. Faceți o copie a textului GameFieldBottom obiect.
    1. Seteaza Poziţie la 196, -30.
    2. Seteaza Unghi la 180.

Ultimul lucru pe care trebuie să-l facem este să facem un fundal pentru zona reală în care vor apărea blocurile.

  1. Creaza un nou spiriduș obiect.
    1. Mergeți la Selector de culoare și setați roșu, Verde, și Albastru la 0, si Alfa la 200.
    2. Folosește Galeata de vopsea pentru a umple întreaga imagine cu această culoare.
    3. Închideți editorul de animație.
    4. Seteaza mărimea la 359, 570.
    5. Seteaza Poziţie la 195294.
    6. Seteaza Strat la fundal

Câmpul de joc este acum complet, dar trebuie să realizăm un Sprite care poate fi folosit pentru Blocuri. 

  1. Faceți un nou spiriduș obiect.
    1. Cu editorul de animație deschis, faceți clic dreapta pe Rame de animație fereastră și alegeți "Importați cadre ... ".
    2. Selectați fiecare imagine din blocuri din pachetul grafic și importați-le pe toate.
    3. Ștergeți cadrul 0, astfel încât imaginea blocului gri să fie Frame 0 și nu există un cadru gol.
    4. Verificați dacă cadrele dvs. sunt în aceeași ordine cu blocurile mele din imaginea de mai jos:

Înainte de a merge mai departe, aș vrea să explic imaginile blocului. Blocul gri este acolo pentru a reprezenta un bloc "inactiv", care va fi implementat într-un tutorial viitoare. Imaginile rămase sunt grupate în seturi de trei pentru fiecare bloc: primul cadru este pentru atunci când blocul nu este utilizat, al doilea este pentru atunci când playerul manipulează blocul, iar al treilea este pentru atunci când blocul este adaptat într-un grup.

În cele din urmă, luați blocul pe care l-am făcut și plasați-l undeva în aspectul care va împiedica jucătorul să îl vadă în timpul unui joc real. De asemenea, setați dimensiunea blocului la 40, 40.

Am adus acum toate imaginile de care avem nevoie pentru acest articol și putem trece la a face munca de joc.


Reproducerea unei rețele cu blocuri aleatorii

În versiunea finală a jocului, blocurile se vor mișca în sus, iar blocurile noi se vor împinge pe ecran din partea de jos. Pentru moment, totuși, trebuie să punem mecanica de bază în practică, așa că vom face o gamă de 8x8 de blocuri și o vom lăsa în acel moment.

Mergi la Fișa evenimentului 1 și adăugați aceste variabile globale pentru a defini poziția inițială de reproducere a blocurilor:

 Variabila globală: valoarea SPAWNX = 49 Constant = Variabila globală reală: valoarea SPAWNY = 526 Constant = True

De asemenea, trebuie să facem un alt lucru înainte de a face primul eveniment: trebuie să creăm o variabilă de instanță pentru Bloc care spune blocului ce culoare este.

Creați o nouă variabilă de instanță pentru obiectul Bloc, denumiți-o Culoare și nu modificați alte setări.

Acum vom face primul nostru eveniment. Scopul acestui eveniment este de a crea o grilă statică de blocuri în scopul testării:

 Eveniment: Stare: Sistem> La inceputul layoutului Stare: Sistem> Pentru nume: "Y" Start index = 0 End index = 7 Sub-Event: Sistemul> Crearea obiectului Obiect: Blocul X = (SPAWNX + (loopIndex ("X")) * (Bloc.Width + 2) )

Ambele formule spun în esență același lucru. Mai întâi, adăugăm 2 la lățimea blocului, astfel încât fiecare bloc are un tampon de 2 pixeli între acesta și vecinii săi pentru a preveni falsurile pozitive atunci când se utilizează detecția coliziunilor. Apoi, înmulțim acest număr cu indicele curent în buclă pentru și adăugăm-l la poziția X sau Y de pornire. De asemenea, scădem din valoarea Y, deoarece în C2 punctul 0 de pe axa Y se află în partea superioară a ecranului de joc, prin scăderea valorii poziției Y punem un obiect mai aproape de partea de sus a ecranului.

Deci, ce realizează acest lucru? Aceasta înseamnă că, pe măsură ce iterațiile X și Y se repetă și valorile X și Y cresc, poziția pe care o plasează fiecare bloc se va schimba, ceea ce va avea drept rezultat o rețea pătrată:

Dacă executați jocul în acest moment, veți avea o rețea de blocuri - dar, în loc să fie diferite culori, toți vor purta doar prin fiecare imagine bloc în succesiune.

Pentru a rezolva acest lucru trebuie să facem două lucruri.

În primul rând, trebuie să atribuim fiecărui bloc o valoare de culoare utilizând variabila de instanță pe care am făcut-o mai devreme. Pentru aceasta, adăugați o altă acțiune:

 Acțiune: Bloc> Valoarea setată Culoare = etaj (Randament (1,7))

Aceasta va atribui blocului o valoare de culoare aleatorie de la 1 la 6. (Motivul pentru care nu este de la 1 la 7 este explicat în explicația Întâmplător funcţie.)

Funcția dvs. ar trebui să arate astfel:

De asemenea, trebuie să adăugăm un sistem care modifică imaginea unui bloc pe baza valorii acestuia. Pentru a face acest lucru, începeți prin adăugarea unei noi variante de instanță la obiectul Block:

 Variabila de instanță pentru numele blocului: "IsMatched" Type: Valoarea inițială booleană = false

Acum, adăugați un nou eveniment:

 Eveniment: System> Every Tick Acțiune: Bloc> Setați valoarea cadrului = (Block.Color-1) * 3 + 1

Această formulă scade mai întâi 1 din valoarea de culoare a blocului pentru a ține seama de faptul că valorile încep la 1 mai degrabă decât la 0. Apoi, se multiplică cu 3, pentru a ține cont de faptul că fiecare bloc are 3 cadre de animație. În cele din urmă, acesta adaugă 1 la acea valoare, deoarece imaginea standard a unui bloc este prima imagine din setul de imagini.

Să ne uităm la un exemplu rapid cu un bloc care are o valoare de culoare de 4, pentru a vedea ce cadru de animație va folosi. Mai intai scade 1 din valoarea de culoare pentru a obtine 3. Apoi inmulteste acel numar cu 3 pentru a face 9. In sfarsit adauga 1 la acea valoare pentru a face 10. Aceasta inseamna ca un bloc cu o valoare de culoare de 4 va folosi frame 10 ca cadrul său implicit de animație și va fi un bloc violet / pătrat.

Dacă rulați jocul dvs. acum, veți vedea că fiecare bloc este o culoare diferită, dar încă nu am implementat animații pentru momentul în care mouse-ul dvs. trece deasupra blocului sau atunci când este potrivită. Acest lucru va fi acoperit în tutorialul următor, împreună cu schimbarea a două Blocuri vecine.

Iată un mic demo despre cum ar trebui să arate jocul în acest moment (apuca sursa de aici):

Faceți clic pentru a încărca demonstrația.

Dacă doriți să continuați să lucrați singuri, începeți să priviți la modificarea cadrului de animație al blocului pe baza unui eveniment "Mouse> Cursor este peste obiect". De asemenea, puteți începe să folosiți comportamentul "Drag & Drop" pentru a manipula blocul și luați în considerare modul în care puteți determina ce încearcă să facă jucătorul cu Blocul când acesta începe să îl tragă sau când îl dă.


Concluzie

Vă mulțumim că ați citit această parte a tutorialului, unde am stabilit baza de bază pentru meciul nostru Match-3. Vino înapoi în curând pentru următoarea parte a seriei! Puteți să țineți la curent prin Facebook, Twitter, Google+, RSS sau prin e-mail.