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ų]

2013 m. balandžio 1 d.

Ar čia cenzūra, ar tik procedūra (atsiprašau už tokį lėkštą pavadinimą)

Tęsiant apie žodžio laisvę. Nežinau ant kiek tai daug nuskambėjo visur kitur, bet čia kada buvo suimtas vienas blogų rašinėtojas [1]. Pasirodo jis buvo ne tik kad žinomas, bet ir labai senas blogeris. Bėda ta, kad aš apie tą blogą nieko nežinojau. Bėda todėl, kad paieškojęs web archyvuose (patį tinklaraštį jau uždarė), kažkiek biški radau tų jo kliedesių. Ir vaje, vaje – labai juokingas ir smagus tatai tinklaraštis. Jeigu norite sužinoti, kokio tai lygio kliedesiai, pažiūrėkite kitus to autoriaus šedevrus:

http://ateiviai.wordpress.com/

Žinoma, besijuokiant kartas nuo karto sąžinė biški pakužda, kad nelabai gražu juoktis iš turbūt nelabai su savo galva susitariančio žmogaus. Bet vis tiek juokinga...

Bet čia kalba ne apie moralę. Kalba turėtų eiti apie faktus. O iki šiol man žinoma tik tai, kad lunatikuojantis blogo rašytojas buvo suimtas už tai, kad rašė. Daugiau jokios kitos informacijos nepateikta. Iš to, ką teigia žiniasklaida [1], tegalima susidaryti tik tokį vaizdą. Nuo to aš ir atsispirsiu. Aišku, visą laiką gali paaiškėti, kad buvo realūs nusikaltimai. T.y. ne tik paprasto durno tinklaraščio durnų straipsnių rašymas. Tada būtų kita kalba. Dabar aš tokios informacijos nežinau. Taigi, telieka daryti išvadą, kad suėmė už rašymą.

Ir man šiek tiek baisu. Nes čia kvepia totalitarizmu [2]. Kažkas gali uždaryti žmogų, kuris rašo blogą. Aš pats rašau blogą. Ar mane irgi gali uždaryti? Gerai. Imkim sakinį „jie uždarė kantą“ (Tas „jie“ skamba, kaip sąmokslo teorijų kliedesiai – bet čia aš jį naudoju ne tuo kontekstu). Jeigu akcentą padėsi ties „uždarė kantą“, viskas bus gerai. Bet jeigu padėsi akcentą ties „jie uždarė“ – tada man tampa baisu. Nes kažkas turi teisę ir galią nuspręsti, kad kažkieno viešas parašinėjimas yra vertas belangės.

Tas faktas, kad uždarė negerą ir nemėgstamą žmogų, automatiškai nesuteikia legitumo priežastims dėl kurių uždarė tą žmogų. O priežastys, vėlgi, yra nesąmonių rašymas internetinėje erdvėje. Tokios galios egzistavimas yra šiek tiek baisus. Kodėl? Todėl, kad mūsų valstybėje institucijų galia egzistuoja pati savaime. Vienu ar kitu momentu (keičiantis kadrams) prie tos galios prisiliečia tai vieni tai kiti žmonės. Dėl to tos galios (ypač laisvės apribojimo galios) turi būti kiek galima mažesnės. Nes visada reikia daryti prielaidą, kad anksčiau ar vėliau prie tų galių prieis arba niekšas-despotas, arba visiškai nekompetetingas durnius.

Pavyzdys. Tarkim, paimkime praeitos vyriausybės ūkio ministro galias. Kai ministras buvo Žylius, tai tarsi ir norėtųsi, kad jis turėtų daugiau galių ir daugiau veiksmų laisvės keisti situaciją. Ir tarsi norisi tas galias jam suteikti. Esminis dalykas, kad galias suteiki ne Žyliui, o ūkio ministrui. Ir tada į areną įžengia Vėsaitė...

Arba. Darom prielaidą, kad kai Tomaševskis siūlė prievarta mokyti mokykloje biblijos, tai jis tą darė ne reklaminiais sumetimais, o iš tikro manydamas, kad biblijos mokslo svarba prilygsta matematikai. Dabar įsivaizduokite, kad toks personažas įgautų tą galią nusprendinėti, ką suimti už „...įžeidimo, kurstymo prieš bet kokios tautos, rasės, etninę, religinę ar kitokią žmonių grupę...“ (Citata iš delfi straipsnio apie kanto suėmimo priežastis). Tada jeigu facebook'e parašėte, koks geras filmas yra „Life Of Brain“ [3] – jums gresia laisvės suvaržymas.

Totalitarizmas neateina taip, kad antradienį būna pilna žodžio laisvė, o jau trečiadienį jėgos struktūros iš visų kampų ištraukinėja visokius valdžios ir negerovių kritikus ir uždarinėja juos kalėjimą. Ne. Pirma derva yra paruošiama lyg ir pusiau teisingai uždarinėjant visokius lunatikus. Taip sukuriami precendentai ir procedūros. Bei užliūliuojamas visuomenės budrumas. Tada žingsnis po žingsnio prieinama prie situacijų, kai yra užtildomas koks nors negerovių kritikas, nes jis pavyzdžiui kaip nors stipriai įžeidė kokios nors grupės jausmus, kritikuodamas kokio nors mero (kurio pavardė tariamai rimuojasi su žodžiu „apuokas“) tariamai bloginamą visuomeninio transporto sistemą kokiam nors tariamame mieste.

Cenzūra yra pavojinga skrynia. Iš jos paleistos galios yra labai pavojingos ir sunkiai kontroliuojamos. Jeigu jau pradedi eiti tildymo keliu, tai tik laiko klausimas, kol kas nors užtildys tave. Ypač dabartiniame vakarų pasaulyje, kur įsižeisti tapo labai madinga [4]. Ir taip – mes esame vakarų pasaulio dalis ir šitas perdėto jautrumo mintims virusas pasiekė ir mus. To pasiekimo įrodymą aš laikau tą įvykį, kai ŽLEK (Žurnalistų ir leidėjų etikos komisija) nusprendė, kad vienas Lietuvos juodojo humoro humoristas pažeidė kažkokias taisykles, savo facebook anketoje vartodamas šūdus ir žinomų asmenų asmenvardžius viename sakinyje [5]. Gerai, kad šitie ŽLEK realiai beveik neturi jokių galių realiai bausti. Bet epidemija jau parėjus ir pas mus. Todėl kuo toliau tuo daugiau išgirsime šito marmalo, kad reikia išjungti, uždaryti, izoliuoti. Nes kenkia, įžeidžia, nesuderinama su etika.

Pabaigai. Pabaigai požiūris kitu kampu. Visą laiką rašant man kirba mintis, kad galbūt aš klystu. Galbūt aš per gerai gyvenu. Galbūt dėl to aš išlepęs. Galbūt aš pernelyg atitrūkęs nuo realybės. Galbūt dėl to mane apsėdo šitos hipių mintys. Galbūt dėl to aš nesuprantu, kad mūsų teisėsaugos darbas ir tokių lunatikų (kantas) uždarinėjimas yra vienintelis dalykas, skiriantis dabartinį mane nuo manęs su ritualiniu peiliu tarp šonkaulių, siaubo ir baimės išpūstomis akimis žiūrinčio į kokį nevisprotį, kuris rėkia man į veidą, kad aš ateivis ir kad išduočiau, kur mūsų bazė.

[1] http://www.delfi.lt/news/daily/crime/internetinio-puslapio-administratoriui-kaltinimai-neapykantos-kurstymu.d?id=61010967
[2] http://puslapiai.popo.lt/2013/03/uz-ka-suimtas-kantas/
[3] http://www.imdb.com/title/tt0079470/
[4] http://www.youtube.com/watch?v=gciegyiLYtY
[5] http://verslas.delfi.lt/media/komisija-aramanauskas-etikos-kodeksa-pazeide-triskart-aracas-ir-auzkalnis-po-karta.d?id=60703011