Jeste li za malo takmičenje?

22

Jeste li za malo takmičenje?

offline
  • Pridružio: 14 Feb 2008
  • Poruke: 12389

Polako se završava prvi nivo, evo male demonstracije gejmpleja :



Mislim da je kul snimanje tih klipova, posle može da se uporedi izgled početka i gotovog projekta.

Dakle ovaj prvi nivo je jedan žanr iz gejming sveta, drugi nivo potpuno drugi, treći treći ...

Nadam se da ću imati vremena bar tri da uradim a da liče na nešto.



Registruj se da bi učestvovao u diskusiji. Registrovanim korisnicima se NE prikazuju reklame unutar poruka.
offline
  • Srđan Tot
  • Am I evil? I am man, yes I am.
  • Pridružio: 12 Jul 2005
  • Poruke: 2483
  • Gde živiš: Ljubljana

Hej, hej Smile Kako napreduju projekti? Smile

Ja ću danas, ako Bog da, opet moći malo da radim na projektu, pa ću pripremiti objekte za osnovna stanja igre i možda još nešto malo Razz



offline
  • Programer
  • Pridružio: 23 Maj 2012
  • Poruke: 4575

Trenutno radim na projektu za jednog klijenta koji sam započeo pre oko dva meseca, ali dodajem povremeno nove definicije u ovom. Za sad proučavam dostupne NLP i ML biblioteke za Python pa ću pokušati da ostvarim ono što sam zamislio.

offline
  • Srđan Tot
  • Am I evil? I am man, yes I am.
  • Pridružio: 12 Jul 2005
  • Poruke: 2483
  • Gde živiš: Ljubljana

Napisano: 21 Jul 2016 18:43

Woho, evo nove verzije Smile Promenio sam url projekta, jer sam nešto žestoko zeznuo pa mi je ovako bilo lakše Very Happy

Great Escape: https://gitlab.com/srdjantot/great_escape

Dopuna: 21 Jul 2016 19:39

Da ukratko objasnim šta sam zamislio. U src direktorijumu se nalazi kod igre, dok se u test direktorijumu nalaze testovi. Kod same igre je podeljen na 2 dela. Jedan deo je kod koji sadrži main funkciju i implementaciju interfejsa za čitanje i pisanje teksta i taj deo se kompajlira kao programska datoteka, dok sve ostalo ide u drugi deo koji se kompajlira kao biblioteka.

Na ovaj način mogu biblioteku da iskoristim i prilikom pisanja testova.

Trenutno stanje igre se nalazi u klasi GameState. Trenutno, ova klasa sadrži samo pozdravnu poruku koja će se pokazati na početku igre, listu svih soba (klasa Stage) i sobu u kojoj se igrač trenutno nalazi.
Osim ove dve klase, postoji još i GameSerializer klasa koja zna da zapiše ili pročita ceo GameState objekat iz bilokog stream-a.

Logika igre se nalazi u klasi Game, koja trenutno ne radi mnogo. U njoj se koristi i IoService interfejs koji definiše kako se tekst čita i piše. Implementacija ovog interfejsa se nalazi u klasi StdIoService koja čita sa tastature i ispisuje na ekran.

Testovi su vrlo jednostavni jer igra trenutno ne radi ništa posebno. Jedina razlika u odnosu na samu igru je da testovi koriste lažnu klasu za implementaciju IoService interfejsa i preko nje mogu da prate da li se igra dobro ponaša u kontrolisanim uslovima.

To je to. Sledeće što imam u planu je obrada komandi i mogućnost kretanja kroz sobe. Videćemo kako će to sve zajedno da se uklopi Smile

Dopuna: 22 Jul 2016 17:19

Woho, evo me opet Smile Na brzaka sam sklepao sistem za obradu i izvršavanje komandi. Sada je moguće kretati se kroz igru i gledati šta se oko igrača nalazi. Sledeće na redu su inventar i stvari koje će igrač moći da koristi.

Dopuna: 22 Jul 2016 17:30

I opet sam zaboravio da malo opišem šta sam uradio. Komande koje korisnik kuca se obrađuju u dva koraka. Prvi korak je da igra pronađe da li se uneti tekst slaže sa nekom od registrovanih komandi. Provera se vrši preko regex-a. Ako igra ne nađe komandu, ispisuje se poruka o grešci.

U slučaju da komanda bude pronađena, igra pripremi listu internih komandi koje je potrebno izvršiti. Na taj način mogu u igri da imam komandu "pijuči" i da igra ispiše tekst "piju, piju" bez menjanja koda. Igra protrči kroz sve regex grupe u upisanoj komandi i zatim odradi regex replace nad svim internim komandama tako da parametri koje je korisnik ukucao pređu i na interne komande. Npr. ako igrač ukuca "idi na sever", i komanda je definisana kao ^idi na (.*)$, a interna komanda kao go $1, igra će tekst sever (prva regex grupa) prebaciti u internu komandu i ono što će igra dobiti da izvrši je go sever.

Toliko za sada.

offline
  • Pridružio: 14 Feb 2008
  • Poruke: 12389

+ Moja struktura je ovakva



Što se projekta tiče, ja sam se već smorio malo. Embarassed

Od poslednje objave sam napisao :
- Safe zone - put koji nema vozila :

Eventualno će biti zamenjeni nekom livadom

- Sezone - zima, leto, jesen; na putevima : sneg -> ništa -> kiša

Trenutno postoji samo vizuelna promena, sezone će uticati na gejmplej na neki način sigurno.

- nešto bolji kod za pozicioniranje pačića :
-- Sve postojeće zone se pomere ka novim izračunatim koordinatama
-- Svim patkama se dodele nove zone
-- Patkice dobiju mini bust i nakon .xf se vrate na poziciju

- difficulty modifier -> što duže preživite to je više vozila na putu sa većom brzinom
- Spawn queue na putevima -> umesto odmah, automobili se stvaraju nakon određenog intervala uz prethodnu proveru dostupnosti na lokaciji stvaranja

i svašta nešto.

Trenutno tražim rešenja za stapanje materijala, jer se trenutno pozove sezona i prema njoj stvaraju novi putevi. Međutim ja bih hteo da postepeno svaki put postane leden ili da kiša postepeno počne da pada ...

Takođe tražim rešenja za fullscreen animaciju tekstura jer bih da propratim nekim efektima promenu sezona.

offline
  • Srđan Tot
  • Am I evil? I am man, yes I am.
  • Pridružio: 12 Jul 2005
  • Poruke: 2483
  • Gde živiš: Ljubljana

Nemoj da nam se smoriš Smile Čini mi se da ti usput tražiš rešenja za probleme koji su se pojavili, a možda i za one za koje misliš da će se možda pojaviti, pa te to malo demotiviše.

Jedna od tehnika za izbegavanje stanja u kojem si se našao je da napraviš detaljan plan onoga što treba da uradiš pre nego što počneš da programiraš. Odlučiš se za biblioteke koje ćeš koristiti, algoritme kojima ćeš obrađivati podatke, izdefinišeš sve u sitna crevca i onda kad počneš da programiraš nemaš više o čemu da misliš, samo uživaš u programiranju i gledaš kako se sve razvija pred tvojim očima Smile

offline
  • Programer
  • Pridružio: 23 Maj 2012
  • Poruke: 4575

Red bi bilo i da ja objasnim na koji način radi Q7:

Pri započinjanju bot "uči" sve definicije iz /definitions (definicije su razdvojene po temama pa tako mogu da postoje definicije vezane za život, nauku, sport, muziku itd). Definicije su pisane u XML sintaksi i to izgleda ovako:

<category>     <pattern>KAKO SI *</pattern>     <template>         Dobro, hvala na pitanju!     </template> </category>

Što pokriva sve slučajeve kod kojih rečenica na početku sadrži reči Kako si.

Kako si danas? => Dobro, hvala na pitanju! Kako si Q7? => Dobro, hvala na pitanju!

Moguće je odraditi nešto slično ako se reči nalaze unutar rečenice menjanjem šablona:

<pattern>_ KAKO SI *</pattern>

Q7, kako si danas? => Dobro, hvala na pitanju!

I naravno ako reči trebaju da budu na kraju samo se ukloni asteriks s kraja. Naravno, obzirom da se na razne načine može pitati ista stvar, pri postavljanju nekog pitanja moguće je prebaciti bota na već postojeću definiciju i izbeći time pisanje istog koda više puta (ispoštovan DRY princip):

<category>      <pattern>JA SAM *</pattern>      <template>          Drago mi je, <star/>!      </template> </category> <category>      <pattern>ZOVEM SE *</pattern>      <template>          <srai>JA SAM <star/></srai>      </template> </category>

Pored toga moguće je i započinjati određenu temu preko <topic> taga gde se preko atributa name definiše ime teme o kojoj se raspravlja tako da tu mogu da budu definisane posebne definicije vezane za tu temu (više tok nego klasa), a iz tema se može i izlaziti postavljanjem šablona na * i nastaviti opšti tok razgovora. Ima tu još stvarčica poput definisanja promenljivih, uslova, sakrivanje procesuiranja od korisnika preko taga <think>, ali ne bih da vas zamaram time Smile

E sad, da je samo to bilo bi lagano, nego treba sad to prebaciti na web i odraditi front-end + back-end koji treba i da procesuira te podatke. Najverovatnije ću to da odradim preko Rails-a jer je Node kilav za bilo kakve zahtevnije stvari Razz

offline
  • Srđan Tot
  • Am I evil? I am man, yes I am.
  • Pridružio: 12 Jul 2005
  • Poruke: 2483
  • Gde živiš: Ljubljana

Napisano: 25 Jul 2016 17:42

Osnovna podrška za inventar i stvari je gotova. Trenutno je moguće pogledati stvari koje se nalaze oko igrača ili u inventaru, uzeti neku stvar, što može prouzrokovati neke posledice (uzimanje može pokrenuti bilo koju komandu, npr. ispis teksta, promenu opisa nivoa, pomeranje na drugi nivo, itd...).

Sledeće na redu je korišćenje stvari. To bi trebalo da bude prilično jednostavno. nakon toga dolazi na red dodavanje novih komandi koje će mi biti potrebne za sam scenario igre... npr. dodavanje/brisanje stvari s nivoa, dodavanje/brisanje prolaza do drugih nivoa, možda kombinovanje 2 stvari u jednu... videćemo Smile

Na kraju će mi ostati da smislim neki scenario... to će biti najteže Very Happy

Dopuna: 28 Jul 2016 13:47

Previše optimistički sam se bacio na ovaj projekat Smile Hteo sam da kod aplikacije bude relativno jednostavan i da se većina logike nalazi u podacima koji opisuju igru (koje sobe postoje, koje stvari, šta je sa čim povezano i slično). Elem, optimistično je bilo to što sam hteo sve to da odradim bez nekog type sistema za objekte i nekog malo ozbiljnijeg skript jezika.
Još jedna stvar koju sam svesno izbegao je dodeljivanje komandi objektima. Zato sada u igri neće biti moguće ukucati recimo "otključaj vrata", nego će igrač morati da ukuca "upotrebi ključ". Sve u svemu, sad je već malo kasno da sve ovo reorganizujem, ali kada se završi takmičenje, možda odradim neki normalan endžin za pravljenje tekstualnih avantura Smile

Sve u svemu, korišćenje objekata je napravljeno. Objekti koji ne mogu da se uzmu ili da se koriste se označavaju tako što je prvi znak njihovog Id donja crta. To so stvari koje samo stoje u sobi i moguće ih je pogledati.
Ostale stvari mogu da se uzmu i koriste. Svako uzimanje ili korišćenje aktiviraju komande koje su povezane za tu akciju. Uz to, svaka svtav može da ima i listu stvari koje moraju biti u sobi ili inventaru da bi mogla da se iskoristi. Na taj način mogu da imam stvar ključ1, koja zahteva da u sobi budu vrata1 da bi mogao da se iskoristi.

Endžin je manje-više gotov. Možda ću morati da dodam još po neku komandu u zavisnosti od toga šta ću smisliti u priči igre, ali se sada polako bacam na pisanje pričice. Ne očekujte neko veliko remek delo. Biće kratka igrica koja će moći da se završi za par minuta Very Happy

Dopuna: 28 Jul 2016 15:32

Evo i male probe za Windows Razz

https://www.mycity.rs/must-login.png

offline
  • Pridružio: 14 Feb 2008
  • Poruke: 12389

Super je to, sviđa mi se baš Very Happy

Btw. sa gejmplej strane bi mnogo bolje bilo da igrač može da napiše bilo šta pre reči "wall", na primer "look at bad wall", a igra da shvati to kao "look at wall"; ili "take big hammer" -> "take hammer"

Ovako moram da grešim dok ne pogodim pravu reč na koju si mislio.

U svakom slučaju je super utisak, strašno volim te tekstualne avanturice.

Nemoj da zaboraviš da dodaš komandu za izlistavanje svega iz inventara Very Happy

offline
  • Programer
  • Pridružio: 23 Maj 2012
  • Poruke: 4575

Srki_82 ::Evo i male probe za Windows Razz

https://www.mycity.rs/must-login.png


Da nemaš možda i za Linux nešto? Smile

Edit: Radi preko Wine-a, super je Smile

Ko je trenutno na forumu
 

Ukupno su 850 korisnika na forumu :: 25 registrovanih, 6 sakrivenih i 819 gosta   ::   [ Administrator ] [ Supermoderator ] [ Moderator ] :: Detaljnije

Najviše korisnika na forumu ikad bilo je 3466 - dana 01 Jun 2021 17:07

Korisnici koji su trenutno na forumu:
Korisnici trenutno na forumu: babaroga, BORUTUS, Dimitrije Paunovic, Fog of War, Kibice, maiden6657, mercedesamg, moldway, mrvica78, nemkea71, nenooo, nikoli_ca, Petarvu, Romibrat, royst33, stegonosa, Stoilkovic, Trpe Grozni, tubular, Tvrtko I, vasa.93, vathra, x9, yufighter, ZetaMan