Izvor
Vođa projekta:
Dimitrije Radojević - templaryum@gmail.com
Status projekta:
U izradi, pre-alpha faza:
Šta je odrađeno:
postavljene osnove osnova :D misli se na OS-nezavisnu implementaciju niti, mutex-a, socket-a, implementaciju log sistema, veze ka bazi podataka (SQLite3 bindings), neke convenience klase za obradu nad blokom podataka itd.
postavljene osnove servera: trenutno je moguće povezati se na njega i slati i primati (opciono) kompresovane pakete. Treba poboljšati sistem za dinamičko kreiranje paketa i njihovu serijalizaciju (marshalling), i implementirati servise za razne aspekte igre kojima će biti prosleđivani odgovarajući paketi (GameMaster servis, chat servis, matchmaker servis itd.). U dalekoj budućnosti, implementirati enkripciju toka podataka preko mreže.
postavljene osnove igre: napisane su osnovne klase za karte, igrače, špilove, boju, manu itd. Za sada je moguće dovući sve informacije o karti iz baze na osnovu njenog identifikacionog broja ili imena. Ovde ima najviše prostora za poboljšanja, jer ove klase predstavljaju osnovu igre, tj. klase izvedene iz njih će se koristiti u svim delovima projekta: za 3d prikaz, transfer preko mreže, prebacivanje između špilova itd.
postavljene osnove klijentskog GUI-ja: uspešno je realizovana implementacija Ogre3D grafičkog engine-a vezanog sa GUI frameworkom koji Izvor koristi (Qt), tj. napravljen je Ogre widget u kome se vidi 3D pregled prostora za igru. Takođe je moguće raspoređivati karte po stolu i između špilova, rotirati, zumirati i pomerati kameru, dobiti informacije o karti prelaskom miša preko nje itd. Videti screenshot-ove u prilogu.
napravljena stand-alone aplikacija za sastavljanje špilova: zove se Neimar Špilova. Omogućava pretragu baze karti po svim mogućim i nemogućim kriterijumima, njihovo ubacivanje/izbacivanje iz špila, odnosno sporednog špila, otvaranje, izmenu i čuvanje špilova u XML formatu. Nedorađena je u smislu da neki dugmići ne rade i ostale slične stvari (zaboravio sam, davno sam je napisao :D). Špilove koje napravite Neimarom možete uvesti u klijentsku ili serversku aplikaciju.
Linkovi:
Gitorious.org repozitorijum: http://gitorious.org/izvor
Google grupa: http://groups.google.com/group/egdc-izvor (welcome message je outdated)
Wiki: http://gitorious.org/izvor/pages/Home (uputstva za skidanje izvornog koda i prevođenje na Windowsu/Linuxu, pomalo outdated)
NAPOMENA: trenutno stanje master grane je takvo da ne može da se prevede bez nekih intervencija. To je moja greška, jer sam i pored postojanja experimental grane koja služi za testiranje, u glavnu granu gurao nesređene commit-ove. Sledećih dana ću se truditi da dovedem master granu u stanje prevodljivosti :D, kako bi bila moguća kakva-takva demonstracija postignutog.
Opis projekta:
Izvor je simulator domaće TCG igre Izvori Magije. Radi se o klonu MtG-a, igre sa posebnim kartama, u kojoj igrači igraju ulogu moćnih čarobnjaka, a cilj je pobediti protivnika korišćenjem karti iz svog špila, koje predstavljaju magije. Mehanika igre se donekle može povezati sa YuGiOh-om, i ovo poređenje stoji samo zbog toga što ste možda nekada gledali istoimenu animiranu seriju na televiziji. Izvori Magije su neuporedivo kompleksnija igra, sa jako opširnim pravilima.
Projekat obuhvata razvoj dve aplikacije: klijenta i servera.
Server predstavlja mozak igre. To je program čija je primarna uloga da od klijenata koji se povezuju na njega pravi parove koji igraju partiju igre (nešto kao 1 na 1 chat sobe), i koji sve vreme komunicira sa klijentima. On od klijenata prima naredbe koje se tiču trenutne partije, proverava da li su validne, izvršava ih, i šalje trenutno stanje igre natrag klijentu. Ovakva arhitektura sistema onemogućava bilo kakav vid "varanja", jer će sav razgovor između klijenta i servera biti šifrovan. Takođe se omogućava praćenje statistike za svakog igrača, pravljenje rang-lista, i bolji matchmaking sistem. Igrači koji žele da igraju će morati biti registrovani na serveru, što će se verovatno realizovati nekim web interfejsom. Tako se entitet igrača odvaja od pojedinačnog klijenta. Server će, osim ovih funkcija, verovatno u sebi imati implementiran chat server kako bi igrači međusobno mogli da komuniciraju unutar samog klijenta. Za razliku od klijenta, server ne zahteva neku posebnu ljudsku interakciju, pa će verovatno posedovati samo CLI, i biće projektovan tako da što duže vreme radi samostalno.
Klijent, sa druge strane, predstavlja vizuelni identitet igre. Preko njega se igrači povezuju na server, i preko njega vrše interakciju sa tekućom igrom. Klijent će imati GUI, čiji će najveći deo ispunjavati 3d widget (powered by OGRE, najverovatnije) u kom će se videti tabletop prikaz igre. Kako je čest slučaj da se tokom partije Izvora u igri nađe veliki broj karata u isto vreme, igrač mora u svakom trenutku imati potpuni pregled talona (reallife sto za igranje). Zbog ovoga se cilja na 3d prikaz partije, gde će igrač moči da zumira i rotira prikaz, da dobije relevantne detalje o karti prelaskom miša preko nje i tako dalje. Ostatak GUI-ja klijenta će ispunjavati informacije o trenutnoj partiji, i ostali elementi za interakciju sa igrom (završetak reda, sledeća faza, predaja itd.) kao i deo za chat sa drugim igračem. Prema trenutnom planu, klijent neće biti u stanju da radi bez servera.
Najveći izazovi u realizaciji ovog projekta su:
• implementacije izuzetno obimnih, i često kompleksnih pravila igre (gotovo svaka karta ima neki efekat na neki deo igre),
• realizacija client/server arhitekture sistema, u kompletu sa enkripcijom podataka, korišćenjem nekog mrežnog protokola
• izrada atraktivnog i potpuno funkcionalnog korisničkog interfejsa (igrač u nekom trenutnku ima veliki izbor mogućih akcija, a protivnik može nešto da radi i tokom igranja drugog igrača)