Spēļu veidošana Scratch

Vietne: E-izglītība
Kurss: Jauno datoriķu skola
Grāmata: Spēļu veidošana Scratch
Drukājis: Vieslietotājs
Datums: piektdiena, 2024. gada 29. marts, 08:49

Apraksts

Ievads spēļu veidošanā Scratch, 4 piemēri. Autors Imants Gorbāns

Ievads

Radošās komūnas licenceVisi Latvijas Universitātes Datorikas fakultātes Jauno datoriķu skolas materiāli ir licencēti. Autors Imants Gorbāns šo materiālu ir licencējis ar Creative Commons Attribution-NonCommercial-ShareAlike 3.0 Unported licenci.


Aplūkosim caur piemēriem aizraujošas IT industrijas - datorspēļu veidošanas pamatus. Mūsdienu pasaulē spēles programmē visdažādākajām ierīcēm un visdažādākajās valodās milzīgs daudzums programmētāju (varētu būt simti tūkstoši cilvēku). Problēma ir ne tik ļoti iemācīties tehniski izveidot spēli, kā izdomāt jaunu, aizraujošu, finansiāli ienesīgu spēles ideju.

 

Veidojot spēli, parasti jāizdomā un jārealizē šādas lietas:

1) vissvarīgākais vienmēr is spēles ideja, to vajag izdomāt pirms darba sākuma, izplānot, uzzīmēt blokshēmu (galvā reāli var paturēt tikai nelielas shēmas), izdomāt spēlētājus, to izskatus, skaņas, notikumu loģiku, par ko skaita punktus, varbūt spēlei būs pat līmeņi. To visu ir labi uzlikt uz tādas arhaiskas vielas kā papīrs, kaut arī piezīmes var veidot arī datorā, piemēram, Microsoft One Note. Pat tad, ja ir skaidrs, ka darba gaitā idejas mainīsies, vismaz viens variants ir jāizplāno jau sākumā;

2) animācija, kustības - objekti (Scratch gariņi) spēlē tipiski spēj kustēties, šim nolūkam Scartch jau ir iebūvētas bloku grupas "Kustība", "Novērošana" u.c.;

3) spēles vide, to veido gan fons, gan gariņi, Scratch spēles vide nebūs tik bagātīki noformēta, kā modelēta sarežģītajā 3D Max, bet mūsu akcents taču ir uz pamatu mācīšanos, idejām; un arī Scratch var izveidot nelielas spēlītes, kas dod daudz prieka;

4) lielo spēļu programmētāji ir spiesti izvēlēties spēļu dzini (game engine) atbilstoši datora un īpaši tā videokartes parametriem, mūsu gadījumā Scratch ir gan programmēšanas valoda, gan rīks (pavisam lielie puikas programmē spēles valodās Java, C++, Visual Basic u.c., savukārt Scratch ir labs sākums), bet dzinis savā veidā ir Flash pārlūkprogrammas spraudnis vai Adobe Aero, ja tiek lietota lokāla Scratch instalācija;

5) spēles publicēšana citu lietotāju bezmaksas lietošanai notiek to koplietojot ("šārējot") portālā scratch.mit.edu, vēlākajā dzīvē, ja gribēsi ar spēļu programmēšanu pelnīt, vajadzēs daudz iemācīties, kā arī starta kapitālu, lai nopirktu pārdošanas atlauju no no kompānijas kuras dzini tu izmanto un līdzekļus legālu datorprogrammu iegādei. Darbojoties ar Scratch, šīs rūpes Tev atkrīt (operētājsistēma Windows taču Tev ir legāla, ja nē, vari lietot bezmaksas Linux).


Ja vēlaties attīstīt savu programmēšanas izpratni atbilstoši pasaulē labākajiem apmācošajiem ieteikumiem, iespējams, ka Khan Academy ir priekš jums: https://www.khanacademy.org/computing/cs/programming u.c.


1. Pingpongs

Aplūkosim vienkāršu Scratch spēli Pong jeb Pingpongs, ar kuru skolotāji bieži vien sāk spēļu veidošanu. Spēlei ir divi gariņi - bumbiņa un rakete. Vajag izveidot tā, lai bumbiņa pati kustas nejauši un ievērojoet atsitienā fizikas likumus, bet raketi pa horizontālu asi spēlētājs pārvieto, kustinot peli pa labi un kresi.
 
Bumbiņas gariņu izvēlamies no piedāvātajiem, tur ir dažas bumbas, vai arī uzzīmējam paši. svarīgi ir pareizi norādīt bumbas centru (tērps1 tablapā augšējā labā poga- kvadrāts ar krustiņu), skat. 1. att.

Bumbiņas iecentrēšana
1. att. Bumbiņas centra norādīšana.

Bumbiņas garam ir 2 koda fragmenti. Kreisais bloks sāk bumbiņas kustību un nodrošina tās atlēkšanu no sienām. Labais kods darbojas ar spēlētāju- ja pieskaras raketei, atskan skaņa un bumbiņa atlec ar nelielu nejaušibas elementu, bet ja bumbiņa pieskaras sarkanai krāsai, kādā ir grīda, tad spēle beidzas. Skat. 2. att.

Bumbiņas kods
2. att. Bumbiņas kods.

Sākuma virziens ir kā mācīja matemātikā - 1. kvadrantā 45 grādi no x ass, jeb no centra skatoties pa labi un uz augšu.  Soļu skaits nosakāms eksperimentāli, solis ir ekrāna punkts, ekrāns ir 480 x 360 punkti. Pateicoties ciklam, var nelikt lielus soļus. Atsitoties no raketes, var uzdot citus nejaušības grādus; vai uzdot citu likumu: izmantojot koda bloku "pagriezt virzienā" ("point in direction"), piemēram, "point in direction (180-"direction")".

Varam mazliet palielināt spēles sarežģītību un pievienot vēl 3. koda fragmentu gadījumam, ja bumbiņa trāpa uz raketes malas, skat. 3. att.

Kods ja uz malas
3. att. Papildus kods, ja trāpa uz raketes malas.

Savukārt raketes vadības kods ir veidojams, kad aktīvs gariņu joslā ir raketes gariņš. Tā kods ir pārsteidzoši vienkāršs tādam uzdevumam, kā daudzas ne tik vienkāršas lietas Scratch ir vienkāršas. Skat. 4. att.

Raketes kods
4. att. Raketes kods.

Lai, bumbiņai atsitoties, skanētu izvēlētā skaņa, nevis "pop", bumbiņas gariņam skaņa jāpievieno un noklusētā jāņoņem. 5. att.

Skaņa
5. att. Bumbiņas gariņa skaņa.

Ir svarīgi spēli daudzkārtēji notestēt, mēģinot radīt visdažādākās iespējamās situācijas. Tas var palīdzēt atklāt kļūdas.
 
Pingponga spēles izskats dots 6. att., URL: http://scratch.mit.edu/projects/26605149/.

Pong
6. att. Spēles izskats.

UZDEVUMI:
a) Modificējiet bumbiņas atsišanās no raketes likumu.

b) Varat noteikt spēles ilgumu, izdomāt, kā skaitīt punktus un izveidot globālo mainīgo rezultātu glabāšanā līdzīgi kā spēlē "Dance your way to stardom - WEBCAM REQUIRED remix4" (http://scratch.mit.edu/projects/24340268/).

c) izveidojiet spēles sākumā ievadāmu mainīgo, kas nosaka spēles ātrumu.

2. Dance your way to stardom - WEBCAM REQUIRED remix4

Aplūkosim sīkāk 2. tēmā doto spēli "Dance your way to stardom - WEBCAM REQUIRED remix4", kurā atraktīvi tiek izmantota Scratch spēja detektēt tīmekļa kamerā redzamo objektu kustības. Spēles URL: http://scratch.mit.edu/projects/24340268/.
 

Kā jau pirmajā konspektā bija teikts, Scratch ir vienkārša programmēšanas valoda un vide, arī multimediju radīšanas rīks, ko var izmantot, lai iepazītos ar programmēšanu. Scratch ir noderīga kā vidusskolēniem, tā pamatskolēniem, to var lietot dažādos sarežģītības līmeņos - no pirmo klašu skolēna līdz pirmā kursa studentiem kā pirmie soļi programmēšanā.
 
Ja vēlaties izmantot atraktīvās mikrofona un tīmekļa kameras programmēšanas iespējas, izmantojiet jaunāko versiju - Scratch 2.0. Ja Scratch 2.0 programmēšanas rīku izmantojat interneta pārlūkprogrammā, tai ir jābūt ne vecākas versijas kā Chrome 7, Firefox 4, Internet Explorer 7 ar Adobe Flash Player 10.2 vai jaunāku. Ja pats Scratch programmēšanas rīks vairumā gadījumu darbosies arī ar dažiem alternatīviem, "vieglākiem” Flash pārlūkprogrammas spraudņiem, tad darbam ar mikrofonu un tīmekļa kameru gan ir nepieciešams pats Adobe Flash Player tā jaunākajā versijā (vismaz 10.2). Pirms sāciet šajā konspekta sadaļā aprakstītos darbus, pārliecinieties, ka datora mikrofons un tīmekļa kamera ir darboties spējīgi, ieslēdzami; to darbību var pārbaudīt, piemēram, ar populāro programmu Skype (ieteikums vairākās programmās vienlaicīgi mikrofonu un kameru neizmantot). Ja uz Windows 7/8/8.1 ir problēmas ar šīm multimediju ierīcēm, risinājums meklējams Control Panel tādās sadaļās kā Sound, Device Manager (Sound, video and game controllers, Imaging devices) vai Devices and Printers; kā arī dažos gadījumos antivīrusa vai ugunsmūra programmatūra var neļaut pārlūkprogrammai un tās Flash spraudnim strādāt ar mikrofonu un kameru, tad šīs atļaujas ir jādod (Allow). Scratch 2.0 ir veidots ekrāna izšķirtspējai vismaz 1024 x 768, bet šis pēdējais ir tikai ieteicamais noteikums.

 

Šai spēlei ir 3 gariņi un kā 4. ir skatuves fons, skat. 7. att.

 

Gariņi

7. att. Dejošanas spēles gariņi.


Programmēšanas skaistums ir arī tajā, ka vienu un to pašu uzdevumu var realizēt dažādi. Sākotnējā spēles versijā no autora CrazyNimbus (http://scratch.mit.edu/projects/10742434/) 1. gariņa "Sprite1" kods bija kā dots 8. att. Bet ar laiku, pēc Flash atjauninājumiem šis kods ar dažām tīmekļa kamerām sāka nestrādāt pareizi- kustību detektēšanas skaitliskais rezultāts netika nodots programmai, līdz ar to nācās meklēt citus risinājumus, šobrīd labi strādājošais "Sprite1" kods dots 9. att. Jaunajā variantā nav 5 atsevišķas kustību detektora signāla gaidīšanas līnijas, bet tas realizēts ar secīgu pārbaudi, kas ievietote if-else tipa zarošanās operatoros un viss kopā- ciklā.


Vecais kods

8. att. Spēles 1. gariņa viens no koda variantiem.

 

Jaunais kods

9.a att. 1. gariņa koda modificēts variants.


Scratch nav zarošanās operatora if-elseif-elseif-elseif-else, bet ir jāiztiek tikai ar if-else, līdz ar ko 9.a un 9.b attēlos dotās konstrukcijas ir viens no funkcionējošiem risinājumiem.


jaunas kods tuvāk

9.b att. 1. gariņa modificētā koda sākuma daļa tuvplānā.


Gariņi savā starpā apmainās ar ziņām (message), tā varam veidot, ka parādās paziņojumi par dejotāja ieguldīto enerģiju savas tīmekļa kameras priekšā (10. att.), un pie pietiekami liela iegūto punktu skaita publika pielec kājās - 3. gariņš (11. att.).


2. gariņa kods

10. att. 2. gariņa kods.


3. gariņa kods

11. att. 3. gariņa kods.


2. gariņš "Sprite2" ir ar vairākiem kostīmiem, viena gariņa kostīmu maiņa, visticamāk, mazāk slogo datoru kā dažādu gariņu parādīšanās un pazušana, skat. 12. att. Tāpat vairāki kostīmi ir 3. gariņam "Sprite3", skat. 13. att.


2. gariņa kostīmi

12. att. 2. gariņa kostīmu zīmēšana.


3. gariņa kostīmi

13. att. 3. gariņa kostīmi.


Video palaišanu un ieņemšanu, kā arī mūzikas atskaņošanu ir labi organizēt fonā, sazinoties 1. gariņa kodu ar ziņojumiem (message), 14. att.


Skatuves kods

14. att. Skatuves kods.


Būtiska ir programmas skaitliskā daļa, šim nolūkam ir izveidots mainīgais "My Poin.ts", tajā visu laiku tiek saglabāts tekošais tīmekļa kameras kustību novērtējums. Savukārt tika izveidots globālais saraksts (list) "The Best", tajā saglabājas labākie rezultāti. Globālie mainīgie glabājas uz servera (šķiet, rezultāts uz serveri sūtas vienu reizi un var pazust, ja noraustās interneta savienojums tajā brīdī). Datu kodu bliku grupu ar izveidoto mainīgo un sarakstu skat. 15. att.


Dati

15. att. Datu bloku grupa ar izveidoto mainīgo un izveidoto sarakstu


Spēles izskats darbībā (video signāls projicējas fonā) dots 16. att.  Jāpiezīmē, ka tagad Scratch 2 microfona un video iespējas darbojas ne tikai uz Windows un Mac, bet arī uz jaunajām Linux versijām, piemēram, Xubuntu 14.04 LTS, ja ir Flash versija vismaz 10.2.

Spēles URL: http://scratch.mit.edu/projects/24340268/.


Spēle darbībā

16. att. spēle darbībā.


UZDEVUMI:

a) rūpīgi izpētiet spēles kodu,

b) izveidojiet spēli datorspeciālistu atpūtas brīža vingrošanai- aerobikai, kurā uz ekrāna tiek rādīts priekšā vingrinājums, kas jāpilda un vērtēta izpildes intensitāte.


3. Spēles "Angry Crab" apskats

Spēles oriģināla autors ir NickSmith, oriģināla adrese: http://scratch.mit.edu/projects/3269427/. Lai spēle nepazustu vai tajā neparādītos neparedzētas izmaiņas, kā arī lai to ar laiku latviskotu un kodā sarakstītu komentārus latviešu valodā, spēle ir remiksēta uz JDS studiju: http://scratch.mit.edu/projects/26697189/, šo versiju arī izmantosim. Ja spēle patīk, varat tās oriģināla autoram spēles komentāros ierakstīt savas atsauksmes. "Angry Crab" spēlīte ir izmantota kāda brīnišķīga programmēšanas pulciņa nodarbībās, kuru materiālus vēlāk, neobligāti varat papētīt (angļu val.): http://labs.greenbush.us/moodle/course/view.php?id=15.


Šādu spēli veidojot, droši vien lietderīgi sākt ar fona uzzīmēšanu, skat. 17. att. Šīs spēles fons ir vienkāršs- tam ir tikai 1 kostīms.


Crab skatuve

17. att. Spēles "Angry Crab" skatuves izveide.


Spēlē darbojas 7 gariņi, no tiem 5 ir ar 2 kostīmiem, tātad, var mainīt savu izskatu, 18. att.


Crab gariņi

18. att. Spēles gariņu komplekts.


Veidojot šādu spēli, pēc skatuves un gariņu izvēles vai uzzīmēšanas, nākamais darba posms ir koda veidošana un skaņu pievienošana. "Angry Crab" spēlīte zināmā mērā atgādina seno laiku mazās spēlītes, kurās ar tanku šāva pa lidmašīnām, tikai šeit vide ir simpātiskāka - dusmīgajam krabim droši vien gribas nomedīt astoņkāji, bet viņviņam š tikai cenšas tam trāpīt ar burbuļiem, un vēl tam maisās pa kājām jūras zvaigsnes un zivs.


Visvienkāršākais skripts ir skatuvei - tas rūpējas tikai par burbuļu skaņas skanēšanu fonā, skat. 19. att.


fons

19. att. Skatuves fona skripts nodrošina fona skaņu.


Sarkano krabi vada spēlētājs ar klaviatūras 3 bultām, kā arī to ietekmē 1 saņemta ziņa, skat. 20. att. Ar horizintālajām bultām krabi var pārvietot pa kreisi vai labi, 10 pumkti ir parasta izvēle šādiem soļiem. Kad nospiež bultu uz augšu, kabis maina tērpu, bet burbuļa palaišana notiek ar burbuļa kodu.


krabis

20. att. Krabja skripts.


Otrs svarīgākais spēles dalībnieks ir zilais astoņkājis, kas samērā haotiski kustas, peldēšanu attēlojot ar savu 2 kostīmu maiņu, kā arī tas maina krāsu, ja pa to trāpa sarkanā krabja izlaistie burbuļi, 21. att. Labāka attēla kvalitāte sanāk, ja zīmē gariņu tērpus lielākā izmērā un tad samazina tos ar koda bloku "iestatīt izmēru uz 45%". Astoņkāka horizintālās pārvietošanas "pārvietot ... soļus" kodā ie ielikta nejaušība, lai spēle monotoni neatkārtojas. Cikls "nepārtraukti" liek tam visu laiku kustēties. Pirmais "if" ("ja") stāsta, ka, pēc aizpeldēšanas līdz ekrāna labajai malai, jāparādās atkal pie kreisās. Otrais "if" apraksta sadursmi ar otru gariņu "Bubbles", te būtiski, ka mainīgais "Hit?" tad tiek iestatīts uz "Yes".


astoņkājis

21. att. Astoņkāja kods.


Pa spēles darbību laukumu visai haotiski peld 2 jūraszvaigznes un zivs, to kodi ir līdzīgi, bet vaidoti tā, lai tās nekustētos pilnīgi vienādi (22., 23., 24. att.). Šo trīs objektu kodi ir veidoti līdzīgi kā astoņkāja kods, tikai 1. jūraszvaigzne kustas pa kreisi.


1. jūraszvaigzne

22. att. 1. jūraszvaigznes kods.


2. jūraszvaigzne

23. att. 2. jūraszvaigznes kods.


zivs

24. att. Zivs kods.


Vēl spēlē piedalās lielie sarkanā krabja izlaistie burbuļi, ar kuriem tas cenšas trāpīt pa zilo astoņkāji, bet netrāpīt pa pārējām peldošajām radībām (skat. 25., 26. att.). Burbuļu gariņš paša gariņa īpašībās ir iestatīts uz neredzamu, tāpēc tā koda sākuma daļā to savieto ar krabi un padara redzamu,


burbuļi

25. att. Burbuļa kods.


Spēls sākumā, kad nospiests zaļais karodziņš, uz īsu brīdi parādās uzraksts "Hit the octopus!" (Noķer astoņkāji!), kas jaunam spēlētājam īsi paskaidro, kas jādara, tālāk jau spēlētājs pats saprot, ka parasti šādās spēlēs darbojas ar bultu taustiņiem, retāk- ar peli. Skatiet 26. att.


uzraksta kods

26. att. Uzraksta gariņa kods.


Spēlē ir izveidots viens mainīgais "Hit?", kas ir ieķeksēts - parāda uz ekrāna ar "Yes" vai "No" ir vai nav burbuļi trāpījuši pa astoņkāji.


mainīgais

27. Spēles mainīgais "Hit?".


Spēles URL: http://scratch.mit.edu/projects/26697189/.


Spēles izskats

28. att. Spēles "Angru Crab" izskats.


UZDEVUMI:

a) izpētiet spēles kodu;

b) papildiniet spēli tā, lai uz ekrāna rādītos punktu skaitīšana, saglabājot labākos datus globāli- uz Scratch servera: plusi par trāpīšanu pa astoņkāji un mīnusi - par trāpīšanu pa jūraszvaigznēm vai zivi.

c) lai lietotāji varētu sacensties, uzdodiet spēlei noteiktu izlgumu vai piedāvājiet to izvēlēties.


4. Spēles "Angry Birds" īss apskats

Aplūkosim vienu no dažādās mobilajās ierīcēs populārās spēles Angry Birds versijām. Spēle ir 9. reizi remiksēta, šoreiz priekš JDS Scratch studijas: http://scratch.mit.edu/projects/26695761/. Remikss ir dažreiz labi, jo tad var programmu papildināt, kā arī var izvairīties no problēmām, ja autors to izmaina vai izdzēš, šīs brīnišķās spēles autora niks ir PeterShaw, oriģināla adrese: http://scratch.mit.edu/projects/2984860/.

Vislabākais ir spēles kodu izpētiet pašiem, jo tur visa ir tik daudz, ka šeit sīki aprakstīt nav jēgas. Spēles veidošanu sāk ar fona un gariņu uzzīmēšanu, daļu var izvēlēties no sagatavēm (29., 30. att.), protams, drīkst sākumā uzzīmēt tikai tos gariņus, kuriem uzreiz izveidosim kodu tiktāl, lai var mazliet pamēģināt.

skatuve
29. att. Spēles skatuve ar 4 kostīmiem.

Gariņi
30. att. spēles gariņu komplekts.

Katram spēles gariņam skatuvei ir savs kods, kopumā visai daudz bloku un to kombināciju. Angry Birds spēlai ir daudzas dažādas versijas, lai spēli saprastu, var noderēt pamācības: http://www.digitalmomblog.com/angry-birds-walkthrough-cheats/ un http://www.wikihow.com/Play-Angry-Birds.
 
Ja jūs esat šo spēli jau spēlējuši mobilajā telefonā (Android u.c. ir tās bezmaksas versija), tad būs kodu saprast vieglāk. Katrā līmenī spēlētāja mērķis ir atbrīvoties no cūkām. Cūkas parasti ir aizsargāats koka, stikla, akmens vai cita materiāla dažādās struktūrās- būros utml. Spēlē ir jāatbrīvojas gan no šiem šķēršļiem, gan cūkām. Sāciet ar "kaķenes" jeb katapultas atvilkšanu atpakaļ (pa kreisi un uz augšu) ar pirkstu, uz skārienjutīga ekrāna ar pirkstu, bet datorā - ar peli. Pārvietojot to uz augšu vai uz leju, tiks noteikts, cik liels vai mazs putns vai muša tiks izmantota. Ir jāpatrenējas, lai iemācītos trāpīt. Atlaidiet pirkstu, kad esat gatavs šaut, un tā, kamēr visas cūkas ir prom, vai beigušies putni. Dažādiem putniem ir dažāda iedarbība, to var atklāt eksperimentāli.


Šī spēle ir guvusi milzīgu popularitāti, kaut tā ir absurda un šķietami bezjēdzīga un ar mazu pedagoģiski audzinošu motīvu. Ja man piedāvātu šo spēli, kad tās nebija zināma, es ļoti šaubītos, vai tajā ir vērts ieguldīt, bet cilvēku prāti ir pārsteidzoši. Spēle ievelk, to spēlējot, var izstrādāt stratēģiju, spēlē ir iespējami sarežģījumi, neparedzētas priekšmetu īpašības, kas laikam ir interesanti. Spēle ļauj mācīties no savām kļūdām, atkārtot līdz līmenis iziets. Pārāk tajā iegrimt tomēr nevajag, jo tā var būt bezgalīga. Spēles sākuma izskats dots 31. att.

Sākums
31. att. Angry Birds spēles Scratch viena no versijām.

URL: http://scratch.mit.edu/projects/26695761/.

UZDEVUMI:
a) vispirms iemācieties spēli spēlēt,
b) tad izpētiet kodu un mēģiniet to modificēt,
c) varbūt Tev ir ideja jaunai spēlei?