octombrie_noiembrie_2021

leftclickghinea.ro este site-ul lui Marius Ghinea

Moderator: Marius Ghinea

Post Reply
User avatar
Marius Ghinea
Zergling
Posts: 249
Joined: 26 Mar 2014, 15:33

octombrie_noiembrie_2021

Post by Marius Ghinea »

Am lansat „Sireum” - primul meu joc. În articolul de prezentare puteți să găsiți link-urile către aplicație, dar și să aflați care sînt regulile jocului de Sireum.

Peste cîteva zile voi publica un al doilea articol despre jocul de Sireum, dedicat genezei acestuia și lucrurilor ascunse în acest joc extrem de simplu.

Am fost nevoit să comasez cele două luni - octombrie și noiembrie - deoarece volumul de muncă a fost cu mult mai mare decît cel obișnuit pentru două luni, cu cîteva zeci de pagini scrise în plus față de cele două articole dedicate primului meu joc. Este vorba de cîteva zeci de pagini de cod scrie de un ageamiu, așa că vă rog să înțelegeți întîrzierea în publicare. Nu a fost un hiatus cauzat de nemuncă, ci dimpotrivă. :-)
User avatar
Jaunty
Site Admin
Posts: 1663
Joined: 1 Mar 2014, 17:46
Contact:

Re: octombrie_noiembrie_2021

Post by Jaunty »

The great reveal. :) Felicitări!

Nu mi-a mers executabilul (pe Debian 11, 64 biți, interfață GNOME):

Code: Select all

cannot execute binary file: Exec format error
Dar am intrat la codul sursă, am rulat

Code: Select all

pip install -r requirements.txt
python3 Sireum.py
și a pornit. Încă nu l-am prea jucat, dar arată bine. Numai că nu încape pe un ecran cu rezoluția 1024x768 (nu întreba), iar fereastra nu poate fi redimensionată. Și ar fi bine ca jocul să conțină regulile.

Cred că ar fi mai ușor pentru tine și pentru jucători dacă l-ai face browser game. Ar fi din start compatibil cu toate sistemele de operare (inclusiv Android și iOS), nu ai avea bătăi de cap cu executabilul, actualizările ar fi instantanee și partea de multiplayer online probabil ar fi mai simplă de asemenea. Poate încerc o implementare în JavaScript când prind vreo două zile libere.
Aș vrea să postez aici un link către aplicația mea aflată pe ceva site de jocuri indie, iar distribuția jocului meu să fie frumos acoperită de mai știu eu ce licență open source gnuștiucum. Nu mai am energie să mă ocup de așa ceva, orice chestiune administrativă, ce nu ține strict de funcționalitatea aplicației dezvoltate de mine, mă lasă perfect indiferent în acest moment.
Ok, dar ca să știi, cu licența e simplu. E suficient să o adaugi în folderul programului și eventual să o menționezi undeva în interfață (în zona credits, Help -> About sau ceva de gen). Recomand GNU GPL v3, care permite folosirea codului doar în programe care au aceeași licență (deci orice variantă derivată trebuie să fie, de asemenea, liberă). Dacă îți surâde, poți să o copiezi de aici și să o incluzi în folderul proiectului, sub numele LICENSE.txt.
Tot ce pot să fac este să vă rog să nu modificați codul aplicației Sireum fără a obține în prealabil acordul meu.
Fără supărare, asta e o pretenție absurdă. Ce fac pe calculatorul meu nu privește pe nimeni. Probabil ai în vedere distribuirea programului modificat, dar chiar și o asemenea restricție contrazice etosul și licențele libere/open-source. Ar face imposibilă colaborarea în public. Pe GitHub, de exemplu, contribuțiile încep cu un fork, adică o versiune publică, modificată a codului tău. După ce fork-ul e creat, ești invitat (printr-un pull request) să adaugi modificările în versiunea ta.
User avatar
Marius Ghinea
Zergling
Posts: 249
Joined: 26 Mar 2014, 15:33

Re: octombrie_noiembrie_2021

Post by Marius Ghinea »

Regulile... momentan sînt în articol. Dacă voi avea timp și energie, vom vedea...

Browser game... habar n-am. Nu știu JS, nu știu HTML, nu știu CSS. Posibil să se poată face joc de browser și în Python, cred că cu Django?... Nu știu. Nu am cum să mai învăț nimic altceva, trebuie să devin cît mai repede om al muncii și nu știu care va ma fi viitorul.

Dacă vrei să mă deprimi de moarte, spune-mi că ceea ce m-am chinuit eu să fac în două luni tu faci în două zile.
Dacă faci, te rog frumos, fă să funcționeze EXACT așa cum l-am făcut eu. EXACT!!! Adică să ofere controlul acela care pune la dispoziție numai mutările valide prin regulament, cu respectarea principiului continuității. Dacă nu le faci așa, pînă la urmă, faci cum vrei, dar e păcat să strici.

În rest, dacă am vreo pretenție absurdă, chiar nu mă pricep și nu am timp și energie să învăț ceva ce nu este strict legat de programare. Asta e, am o pretenție absurdă. Cînd o să am timp să mă ocup de propria educație în privința asta, o voi face la modul extensiv. Momentan nu am. Dar am reținut ideea ta, pentru care îți mulțumesc.

Redimensionarea ferestrei este în proiect, oricum totul e gîndit în așa fel încît se autoorganizează în fereastră în funcție de dimensiunile acesteia. Nu a fost o prioritate acum, rămîne pe mai încolo.
User avatar
Marius Ghinea
Zergling
Posts: 249
Joined: 26 Mar 2014, 15:33

Re: octombrie_noiembrie_2021

Post by Marius Ghinea »

Pentru Jaunty sau oricine deține un display de rezoluție mică - cum se pot momentan schimba dimensiunile ferestrei aplicației:

în scriptul Sireum.py, la linia 20, găsiți:

#app window screen width
screen_width = 1200

#app window screen height
screen_height = 720

acolo puteți pune rezoluția dorită, dar ideal este să respectați aspect ratio-ul de acolo, de 1200/720.

cînd am timp și energie, mă ocup și de asta.
User avatar
Marius Ghinea
Zergling
Posts: 249
Joined: 26 Mar 2014, 15:33

Re: octombrie_noiembrie_2021

Post by Marius Ghinea »

Jaunty, pune acolo screen_width = 1024 și screen_height = 614, it should work fine for you.
singura problemă va fi la afișajul turulul, că se va suprapune f puțin afișajul jucătorului curent peste el. asta e din cauză că singura chestie care nu e implementată proporțional, încă, este dimensiunea fontului. trebuie să învăț să o corelez cu dimensiunile în pixeli, mă rog, știu cum, dar implementarea era vag utilă pînă ai venit tu cu ecranul ăla atipic, eu îmi puneam problema de 4K - unde nu sînt probleme - iar tu vii cu 1024, ceea ce mi se pare cute dacă o gîndesc în termenii unui ecran micuț și touch sensitive pentru un Pi Zero 2 WH.
User avatar
Jaunty
Site Admin
Posts: 1663
Joined: 1 Mar 2014, 17:46
Contact:

Re: octombrie_noiembrie_2021

Post by Jaunty »

Marius Ghinea wrote: 1 Dec 2021, 23:01 Dacă vrei să mă deprimi de moarte, spune-mi că ceea ce m-am chinuit eu să fac în două luni tu faci în două zile.
Dacă faci, te rog frumos, fă să funcționeze EXACT așa cum l-am făcut eu. EXACT!!! Adică să ofere controlul acela care pune la dispoziție numai mutările valide prin regulament, cu respectarea principiului continuității. Dacă nu le faci așa, pînă la urmă, faci cum vrei, dar e păcat să strici.
De fapt gândul pe care-l am e să mă limitez la varianta push a jocului - și, da, să pun la dispoziție numai mutările valide, dar să nu dau atenție aspectului grafic dincolo de funcționalitate. Deci nu-mi propun să fac tot ce ai făcut tu, ci să-ți ofer un mic cadou - o implementare simplă, scurtă, clar scrisă, din care să poți învăța și pe care să poți construi. Asta fiindcă ai menționat în articol că ai porta Sireum pe Android - și cred că ți-ar fi mai ușor să înveți un pic de JS și să ai cod cross-platform decât să te afunzi în Android SDK și să-ți bați capul cu fiecare sistem de operare în parte. În fine, oi vedea.
Marius Ghinea wrote: 1 Dec 2021, 23:01 În rest, dacă am vreo pretenție absurdă, chiar nu mă pricep și nu am timp și energie să învăț ceva ce nu este strict legat de programare. Asta e, am o pretenție absurdă. Cînd o să am timp să mă ocup de propria educație în privința asta, o voi face la modul extensiv. Momentan nu am. Dar am reținut ideea ta, pentru care îți mulțumesc.
Îmi cer scuze pentru exprimarea abruptă.
User avatar
Marius Ghinea
Zergling
Posts: 249
Joined: 26 Mar 2014, 15:33

Re: octombrie_noiembrie_2021

Post by Marius Ghinea »

Jaunty, mulțumesc frumos, este mai mult decît util ajutorul tău. Eu mă gîndesc să folosesc tot Python, dar combinat cu Kivi, care este portabil pe Android și Mac. Cu siguranță că JS mi-ar fi de folos, dar nu și fără HTML și CSS, bănuiesc... nu cred că pot învăța atît de multe acum. Python este perfect pentru ce fac. Anyway, este util să iau contact și cu JS, cine știe.

Asta cu exprimarea este boală de mediu - online. O avem cu toții, dar sînt momente în care rezistăm mai puțin la atacurile ei. :-)
User avatar
Marius Ghinea
Zergling
Posts: 249
Joined: 26 Mar 2014, 15:33

Re: octombrie_noiembrie_2021

Post by Marius Ghinea »

Dacă vreți să aflați despre ascunzișurile Sireumului, primul joc făcut de mine, citiți (sau ascultați) cel de-al doilea articol dedicat acestuia.
User avatar
Jaunty
Site Admin
Posts: 1663
Joined: 1 Mar 2014, 17:46
Contact:

Re: octombrie_noiembrie_2021

Post by Jaunty »

Iată: Sireum pe web. Tocmai i-am adăugat și un adversar AI. Enjoy!

Scris în Python curat (fără niciun framework), un pic de HTML și CSS, zero JavaScript. Mi-a luat 2-3 zile, plus încă o zi - două pentru AI. E doar Sireum Push - de stilul Flip nu m-am atins. Și are o mică nepotriveală cu regulile: numărul pieselor roșii nu e neapărat egal cu numărul pieselor albastre - bug sau feature? :)

Fiecare joc - așezarea inițială a pieselor și istoria mutărilor - e conținut în URL. De exemplu, un joc terminat:

sireum.py?opponent=human&style=push&boa ... 5254452565

Pentru remote play va fi nevoie de o mică bază de date (aș folosi SQLite). Multiplayer-ul e doar hotseat deocamdată. Mno, zic „deocamdată”, dar nu știu dacă o să mai lucrez la el. Accept contribuții.

Pe table de la 7x7 în sus, AI-ul vede doar cu 10 mutări în avans și nu e prea grozav. Dar pe o tablă 5x5 își permite să prezică tot jocul - deci, în funcție de pozițiile pieselor, se poate ori să nu ai nicio șansă de a-l bate, ori să ai șanse, de obicei mici (depinde foarte mult de norocul pe care-l ai la așezarea pieselor). Jocul te anunță că „The AI will win” atunci când e sigur de asta. Pe 5x5, de cele mai multe ori se întâmplă după prima mutare; dacă aș fi lăsat AI-ul să mute primul, nu prea ar fi avut rost.

PS: https://www.youtube.com/watch?v=KCpyYmu7VZQ
Post Reply

Return to “left click Ghinea”

Who is online

Users browsing this forum: No registered users and 0 guests