2013 m. balandžio 29 d.

PyCon-LT 2013: PyWeek

Mano prezentacija pristatyta PyCon-LT 2013 konferencijoje (http://pycon.akl.lt/), kuri vyko 2013-04-27. Pastaba tiems, kurie tikisi nesąmonių. Šitame įraše jų nebus – čia daugiau techninis įrašas.


http://petraszd.com/pycon2013/

1

[Pasisveikink ir prisistatyk]

Šiandieną jums pristatysiu prezentaciją, pavadinimu "PyWeek". Pradinis prezentacijos pavadinimas buvo sukurtas toks pagal standartinį kurpalį „Kodėl tu turėtum dalyvauti PyWeek“. Bet kažkaip toks pavadinimas paliko man prėską skonį burnoj. Nu žinote, kai būna tie ketvirtarūšiai straipsniai „10 dalykų kuriuos reikia padaryti per gyvenimą“. Ir visuose būna kokia nors kvailystė, kaip: atsistoti Paryžiuje, Eliziejaus laukuose, įsikišti pirštą į ausį ir apsisukti du kartus. Ir tarsi skaitytojas turi jaustis kvailai, kad to nepadarė kai buvo Paryžiuje. Taigi, pavadinimas bus paprastutis – PyWeek. Ir aš papasakosiu apie PyWeek.

2

Taigi, prezentacija susidės iš trijų dalių. Pirma, papasakosiu, kas tas PyWeek. Tada papasakosiu apie savo patirtį PyWeek. Bus šiokia tokia pusiau motyvacinė kalba apie dalyvavimo vertę. Galiausiai šiek tiek aptarsiu Python įrankius, su kuriai galima kurti žaidimus ir tuo pačiu dalyvauti PyWeek'e

3

Kas aš? Aš esu programuotojas. Python programuotojas. Aš nesu žaidimų programuotojas. T.y. aš neuždirbu ant duonos programuodamas žaidimų. Nors teisingumo vardan, reiktų pasakyti, kad vis dėl to esu uždirbęs šiek tiek pinigų darydamas žaidimus. Nu ant kokių kelių tūkstančių Alytaus "Dainavos" puskepalių.

4

PyWeek yra žaidimų kūrimo renginys ir varžybos. Tas varžybinis elementas yra mažiau svarbi dalis. Svarbiausia yra kūrimas. Tai yra game jam'as. Panašiai kaip Global Game Jam'as. Kuris šiemet, beje, irgi vyko Hub'e. Panašiai kaip Ludum Dare. Beje, Ludum Dare vyksta būtent dabar. Būtent šį savaitgalį. Aš jame nedalyvauju, nes šis Pycon'as.

Visa game jam'ų idėja kiek primena sprint'us. Tiesiog susirenka žmonės ir kuria žaidimus. Būna kažkokios taisyklės, bet jos nesvarbios. Svarbiausia kurti žaidimus.

5

PyWeek turi savo taisykles. Būna tema. Pavyzdžiui dabartinio PyWeek tema yra „Nemesis“. Žaidimas turi būti sukurtas per savaitę. PyWeek įkvėpėjas yra mano minėtas Ludum Dare. Ludum Dare bėda ta, kad jis vyksta savaitgalį. Ir būna labai lengva nieko nepadaryti, nes tiesiog, kas nors įvyksta savaitgalį, koks nors renginys, ir šlabūnkšt – pusė game jam'o nebėra. Tuo tarpu kai viskas ištęsta per savaitė, daug mažiau skauda jeigu prarandi dieną kitą. Tarsi game jam'as žmonėms su turintiems gyvenimą. Bent jau šiokį tokį.

Yra dvi kategorijos. Pavieniai ir komandos.

6

Toliau. Išeities kodas privalo būti atviro kodo. Ir žinoma – privaloma rašyti su Python programavimo kalba. Visą kodo reikia parašyti varžybų metu. Galima naudoti trečių šalių bibliotekas. Bet jos turi būti nemokamos. Taip pat turi būti išleistos ne anksčiau kaip mėnesis prieš varžybas. Kad visi dalyviai turėtų lygias galimybes naudoti tas bibliotekas. Taip skatinamas Python žaidimų bibliotekų atsiradimas ir tobulinimas.

Kadangi programuotojų menas nėra labai jau menas. Tai leidžiama naudoti taip pat tik nemokamus paveikslėlius, muziką ir garsus. Aš paprastai pats piešiu, bet muziką ir garsus perpanaudoju.

7

Renginys vyksta du kart per metus. Susideda iš trijų dalių. Savaitę vyksta temos rinkimas. Tada savaitę vyksta svarbiausioji dalis – kūrimas. Po kūrimo seka dvi savaitės žaidimų išbandymo ir žaidimo.

Kiekvienas kūrėjas pristatęs savo žaidimą, gali/turi žaisti kitų žaidimus. Tada juos įvertinti. Ir taip po dviejų savaičių išrenkamas nugalėtojas. Tiksliau du nugalėtojai: komanda ir individas.

8

Laimėtojai nieko nelaimi. Nėra jokių prizų. Čia ir yra visas grožis. Kadangi realiai nėra dėl ko varžytis, tai nėra jokių pykčių. Nėra realiai jokios konkurencijos. Visi draugiški. Visi geranoriški. Tiesiog kuri žaidimą dėl pačio kūrimo. Ne dėl to, kad ten laimėtum kokį. Ką žinau? Motorolerį...

9

Šiek tiek apie pačius žaidimus. Čia va vienas platformeris. Labai gražiai nupieštas.

10

Aišku, tower defense.

11

Čia vienas iš turbūt labiausiai išbaigtų žaidimų, kokius man teko matyti PyWeek. Tiek lygių išbaigtumu ir gausa. Tiek visa mechanika.

12

Čia vienas iš individualios rungties nugalėtojų. Buvo labai kieta vienaračio dviračio mechanika ir kontrolė.

Kaip matote visi žaidimukai yra paprastučiai. Per savaitę stebuklų nesukursi. Daugiausia dominuoja 2d. Ir viskas padaroma.

13

Antra dalis.

14

Mano žaidimai.

„Squares Are Better“. Čia vienas iš labiau nusisekusių mano žaidimukų. Galiausiai jį perkėliau į Android'ą ir jis be jokios reklamos ir įdirbio jis turi apie keliolika tūkstančių parsisiuntimų.

http://www.youtube.com/watch?v=1zguHRPLaEo

O čia dabartinio šiuo metu vykstančio PyWeek mano žaidimas. „Balancer Of Circles“. Nes Nemesis – konkurso tema – graikų mitologijoje yra deivė. Gyvenimo balanso deivė. Angliškai Balancer of Life.

Kaip matote pas mane pattern'as yra gana aiškus. Paprastos geometrinės figūros. Tai kai pradžioje sakiau, kad piešiu pats, tai nepaminėjau, kad tas mano piešimas nekaži koks komplikuotas.

http://www.youtube.com/watch?v=GK_tNQYRUFI

15

Kokia iš to nauda? Smagu. Tai viena iš svarbiausių dalykų. Jeigu tai tavo hobis ir tau nesmagu, tai gal tau reikia kito hobio.

Nors... Nors smagu tai savotiškai. Nes būtent tuo metu kai sėdi per naktis ir visas kodini, tai gal ir nelabai smagu. Bet smagu po to, kai pabaigi ir dar po to kai prisimini kaip kodinai ir melagingai įsivaizduoji, kad tau buvo smagu tuo metu, kai tau realiai nebuvo smagu.

Nežinau. Čia turbūt galima palyginti su sportu. Sportuoti yra smagu. Bet būtent tuo momentu, kai skausmo perkreiptu veidu pumpuoji paskutinius atsilenkimas. Būtent tuo momentu?.. Gal ir nelabai smagu.

Ir jo – čia geras palyginimas. Game Jam'ai ir tuo pačiu PyWeek'as man yra kaip treniruotė. Kaip protinė treniruotė. Po kurios būni nusikalęs ir pavargęs. Bet užtai jauti, kad iš visa to išlindai truputį geresnis, negu buvai anksčiau.

Ir sau pačiam įrodai, kad sugebi per savaitę sukurti žaidimą. Šiokį tokį. Tarsi kokia savęs įvertimo testas. Va – savaitė. Va – ką aš sugebu išspausti per savaitę. Čia, aišku, jeigu dalyvauji individualioje rungtyje.

Nepavyko? Aš, beje, esu ir susimovęs. Nepavyko? Pats kaltas. Ir tą žinai. Ir žinai kokios tavo savybės sutrukdė pasiekti tikslą. Ar tai valios stoka. Ar tai supratimas, kad esi vis dėl to nevykęs ir kieto žaidimuko nesukursi. Kitaip nei įsivaizdavai. Ir dėl to tau tavo ego sutrukdo pabaigti, kad nebūtų įrodymų, koks tu nevykęs, prieš save patį.

Ir čia nėra nieko kito, ką gali apkaltinti. Nėra jokio projektų vadovo, kuris atseit ne taip parašė specifikaciją. Nėra klientų kuris atseit nepateikė laiku informacijos. Nėra ką apkaltinti – kaltas tik tu pats. Nu šiuo atveju aš pats. Ir tas truputį skaudu būna.

Bet jeigu sugebi sukurti. Galiausiai turi sukurtą žaidimuką. Ir gali jį įsidėti į savo portfolio. Tu galiausiai turi kažką, ką pats sukūrei ir ko didžioji dauguma programuotojų neturi. Savo asmeninį portfolio.

16

Paskutinė dalis. Su kuo kurti žaidimus PyWeek. Yra iš esmės du~trys pagrindiniai pasirinkimai. Ir tada daug, daug kitų.

17

PyGame. Seniausia ir populiariausia biblioteka. Nieko mandro – tiesiog vos ne tiesioginis bind'ingas SDL. Čia tokia žymi C grafikos, langų, įvesties įrenginių biblioteka. Labai stabili.

Jau ganėtinai seniai vyksta naujos, labiau pitoniškos antros versijos kūrimas. Yra alpha versija. Ji jau palaiko Python 3.

18

Ir. Ir čia prieiname vieną įdomią vietą. Yra toks mitas, kad python'u nelabai žaidimams kurti. Aš pats kaltas dėl šio mito eskalavimo. Aš pats teigdavau, kad Python galima kurti žaidimus tik kaip hobiui ar greitam prototipų generavimui.

Bet pasirodo yra žaidimų, kurie naudoja Python kaip vienintelę programavimo kalbą visam žaidimui. T.y. kitaip nei žymus Civilization 4, kuris šiek tiek naudojo Python kaip skriptų kalbą. T.y. tik kažkokią menką žaidimo dalį sudarė Python. Pagrindas buvo C++.

Ne, ne – aš kalbu apie pilnai Python'inius žaidimus. Ir čia vienas iš jų.

19

„Unity Of Command“. Strateginis žaidimas, kurį galima nusipirkti Steam'e. Už 19 eurų. Tokia kaina pastato šį žaidimą į gana rimtą kategoriją. Ne AAA multimilijoninių biudžetų žaidimai, bet vis tiek ir ne paprasti žaidimukai už 5 eurus.

20

Patys kūrėjai teigia, kad žaidimas sukurtas su Python, naudojant Pygame ir Pycairo bibliotekas. Veikia ir po Linux. Taigi, jeigu Python plius Linux. Jeigu užeis noras balsuoti pinigine, tai galite nupirkti šitą žaidimą vien dėl to, kad kaip ir minėjau, Python ir Linux.

21

Dar vienas Pygame komercinis žaidimas. „7 Grand Steps“. Čia toks keistas strateginis šeimos kartų žaidimas. Pradedi turėdamas kažkokį veikėją. Susirandi vyrą ar žmoną. Tada atsiranda vaikai. Dėl drakoniškų cenzūros nuostatų daugiau pasakoti negaliu.

Ne, ne – juokauju. Tie ratai sukasi ir jeigu pagal vienokias ir kitokias taisykles nepaeini į priekį, tai nukrenti pas krokodilus. Taigi, tėvukus suvalgo krokodilai. Tada valdai vaikučius. Taip karta iš kartos ir žaidi.

22

Taigi. Šitas žaidimas kurtas su Python ir PyGame. Dar neišleistas. Bet yra demo versija ir galima nusipirkti beta versiją. Yra šių metų nepriklausomų žaidimų festivalio nominantas.

Žaidimas bus Steam'e. Kas reiškia, kad kaip nepriklausomų kūrėjų žaidimas, šis žaidimas yra – jau galima sakyti – sėkmingas.

Šiaip labai kieta užeiti į support'o skiltį ir žiūrėti kaip beta testuotojai pastin'a Python klaidų paklodes.

23

Tada antras didis galimas pasirinkimas yra PyGlet. Čia tokia pitoniška biblioteka. Kitaip nei PyGame, naudoja OpenGL. Dėl to yra žymiai galingesnė ir lankstesnė. Iš esmės gali su ja nukeliauti iki to pačio OpenGL lygmens ir tarkim, pasirašyti savo šeiderį ar dar ką nors.

Labai gerai išdirbtas darbas su paveiksliukas. Su taip vadinamais sprite'ais. Kadrinė animacija ir visas kitas gėris.

Dabar yra 1.1.4 versija. Yra kuriama 1.2 versija, kurioje jau yra Python 3 palaikymas.

24

Cocos 2d. Toks pusiau antras pusiau trečias pasirinkimas. Ji parašyta ant Pyglet. Tai yra, aukštesnis lygmuo virš Pyglet. Ir jau čia labai stipriai padeda rašyti pačia žaidimo mechaniką. Nes tiek Pygame, tiek Pyglet tau padeda generuoti vaizdą ir priimti įvesties informacija.

Cocos2d tuo tarpu, orientuojasi į mechaniką. Dėl to yra tokie gėriai kaip scenos medžio grafas. Animacija. Čia jau gali liepti. Pasuk šitą objektą X laipsnių per Y s.

Dar kas įdomu apie cocos-2d. Pirma buvo Python'as. Tai buvo ant tiek kieta architektūra, kad atsirado gausybė port'ų. Tiek C#, tiek C++, tiek JavaScript. O pats populiariausias yra Objektive-C skirtas iOS įrenginiams.

Ir šiuo metu, jeigu nori sukurti 2d žaidimą iphone'ui, tai vienas iš pagrindinių ir geriausių pasirinkimų yra cocos2d biblioteka.

Kuri užgimė kaip Python'e biblioteka ir dėl PyWeek egzistavimo, nes buvo įkvėpta PyWeek renginio.

25

Tai čia būtų pagrindinės bibliotekos. Kiti paminėtini yra šie.

Aišku, OpenGL Python bindingai. Tada yra Disney kompanijos monstras Panda3d. Yra Kivy. Jeigu įdomu kažkur internete mėtosi Zogg'o praeitų metų Lietuvos PyCon'o prezentacija. Tada yra Blender. Ir Blender žaidimų variklis. Nerekomenduoju.

Žinoma yra PyQt, PyGTK. Bet panašu, kad tiek Qt, tiek GTK suka ties į JavaScript. Nežinau kaip kaip GTK, bet Qt tai tikrai.

26

Pabaiga.

Taigi, dalyvaukite PyWeek. Į dabartinį nespėjote. Kitas vyks kažkada rudenį.

Panašu, kad dar liko laiko – reiškias galima dar pašnekėti nesąmonių.

Tai va, žaidimų kūrimas yra beveik kiečiausias dalykas pasaulyje.

Netikite? Įrodysiu.

Galbūt kas nors žinote tokią kompaniją kaip POV (http://pov.lt/)? Turbūt sutiksite, kad POV yra ant tiek kieta kompanija, kad jie vienaip ar kitaip prisidėjo prie kiekvieno Lietuvos Python programuotojo tapimo Python programuotoju. Aš žinau, kad jie prisidėjo prie mano tapimo Python programuotoju tuo, kad buvo į Lietuvą atvežę Europython konferenciją.

Tai va. PyCon LT 2013 proga galvojau apie Lietuvos Python įmones ir tuo pačiu pagalvojau apie POV. Ir supratau, kad aš nė velnio nežinau, ką jie veikia. Nors toje kompanijoje dirba ir mano draugai ir pažįstami, bet aš nežinau nei vieno jų projekto.

Tai, aišku, atsidarau pov el tė. Einu projektai. Skrolinu, skrolinu žemyn ir šlabūnkšt. POV'as pas save yra įsidėję žaidimuką. POV'as. Savo. Portfolio. Turi. Žaidimuką. Ant tiek žaidimai yra kietas dalykas, kad net POV'as ne gėda į savo portfolio įsidėti žaidimą.

[Padėkok ir pareikalauk klausimų]

3 komentarai:

  1. Kažkodėl pasirinkau paskaityti tatai. Gal todėl, kad žaidžiau čia pastaruoju metu su Sozi. Ten python'u parašytas gėris kažkoks, katras moka SVG iškakoti, katrą supranta browseriai ir galima labai gražių prezentacijų padaryti.

    Mano paskutinėje penktadienio schemoje viena tokia - išbandžiau viską ką sugebėjau.

    AtsakytiPanaikinti
  2. Man tie visi prezi, sozi ir panašiai kažkaip ne prie širdies. Tas skraidymas tarsi numuša žiūrovus tiek nuo turinio, tiek nuo kalbančio (t.y. tuo atveju manęs).

    Šita prezentacija buvo daryta su reveal.js (https://github.com/hakimel/reveal.js). Aš kadangi suprantu, tai redagavau tiesiogiai HTML, bet yra ir vartotojui suprantamas UI (http://www.rvl.io/).

    AtsakytiPanaikinti
    Atsakymai
    1. Tai aš toje schemoje nelabai prezentaciją dariau, o daugiau interaktyvų tokį beleką :)

      Čia va direct linkai:

      Belekokiam browseriui:
      https://dl.dropboxusercontent.com/u/110707047/Siurpe_allBrowsers.svg

      Firefox'ui:
      https://dl.dropboxusercontent.com/u/110707047/Siurpe_firefox.svg

      Panaikinti