Odlučih odvojiti "filozofske" postove od progress reportova Zvjezdojeca. Tako da će ubuduće postovi vezani za taj projekt ići na poseban blog:
http://stareater4x.blogspot.com/
Blog će biti pisan na engleskom jeziku no početnih par postova će biti na hrvatskom jer je riječ o postovima s ovog bloga. I da, verzija 0.4 je gotova.
Showing posts with label Zvjezdojedac. Show all posts
Showing posts with label Zvjezdojedac. Show all posts
Sunday, August 12, 2012
Monday, June 4, 2012
Zvjezdojedac 0.3.3
http://code.google.com/p/zvjezdojedac/downloads/list
Prošli tjedan stavih novu verziju Zvjezdojeca na download. Kao što sam pisao u prošlim postovima, u novoj verziji je implementiran space combat. Uz sam space combat dodah još malo contenta, warp pogon i čestični štit. Doduše te komponente su dodane čisto zbog testa space combata.
Thursday, May 24, 2012
Space combat commitan
Whoohoo! Nakon pet mjeseci source code je konačno stabilan. Doduše ima jedno mjesto gdje se krši, u starom sučelju za dizajniranje brodova. Sredim to, istestiram još malo bitke, malo zglancam sučelje za bitke i ide novi build u download sekciju.
Monday, May 21, 2012
Space comat radi
Space combat u Zvjezdojecu je implementiran. Još ga nisam do kraja testirao ali chance to hit, damage reduction, i uništavanje brodova funkcionira. Čim stavim da se bitke mogu razriješiti, uploadam u repozitorij. Trenutno se combat turnovi odbrojavaju ali se ništa ne dogodi kad se prođe "zadnji" i potpuno uništenje protivničke strane isto trenutno ne dovodi do razrješenja bitke.
Našao sam zašto se događao bug kod učitavanja igre, zbog kojeg si igrači odjednom dobe par tisuća brodova. Stari problem s decimalnom točkom. Količina ostatka gradnje je bila pohranjena s decimalnim zarezom (regionalne postavke na Windowsima) a kod učitavanja se tražila točka (eksplicitno specificiran format). MICROSOFTE, ZAŠTO MJEŠAŠ STROJNI I KULTURNO OVISAN PRIKAZ BROJEVA? Naime, C#-u double tip podatka služi za pohranu realnih brojeva (uz kolku tolku preciznost), na svakoj varijabli i konstanti tipa double se može pozvat metoda za pretvorbu u tekst (tako reći). Moj problem nastaje u tome što se broj pretvara u tekst poštujući regionalne postavke operativnog sustava. Osobno smatram da se to ne bi trebalo tako raditi je vrijednost tipa double sama po sebi ne pripada ni jednoj državi ili kulturi. Kada se double vrijednost pita za tekstualni zapis, trebao bi se koristiti neki univerzalni format. Univerzalan u smislu da ne ovisi o ničem osim o samoj brojčanoj vrijednosti. Turčin, Arap, Kanađanin i Francuz bi za istu double vrijednost trebali dobiti isti tekstualni zapis. Za prikaz broja u kulturno ovisnom zapisu bi se trebala koristiti metoda kojoj se eksplicitno definira način pretvorbe broja u tekst.
Nazad na temu. Zadnjih par dana sam se uhvatio u koštac s balansiranjem igre. Htio sam se koncentrirati na testiranje i dovršavanje space combata ali brojke koje sam još davno postavio za snagu napada i obrane su takve da bitka traje u nedogled. Kako sam bio prije testirao tehnologije i mehanizme automatske nadogradnje tako je ispalo da igrači odmah u startu imaju do kraja nadograđen tier 3 oklop i da obični kolonizator ima 12k hit pointa dok je napadač s kojim sam testirao imao 8 strojnica koje su na taj oklop radile oko 9 damagea. S takvim brojkama bitka je trajala 170 krugova a ciljam na to da je ograničenje broja krugova za bitku negdje oko 20. Problem kod kolonizatora je što moraju s jedne strane biti ogromni a s druge ranjivi. Već prije sam razmišljao o tom da dodam specijalnu opremu za proširenje teretnog prostora i mislim da ću to napraviti u ovoj verziji. Nešto u stilu battle podsa iz Master of Oriona 2 ali da se uz povećanje nosivost se smanje hit pointi. To ja lagan dio posla, ono što je crna rupa koja upija sate mog rada je izbor brojki za damage oružja. Recimo za sam što na empirijski što na egzaktan način došao do načela po kojem određujem brojke za nosivost i izdržljivost vrsta trupova i sve komponente koje utjeću na vjerojatnost pogotka. Ali brojke za damage mi nikako ne idu. Načela kojih bih se držati su da brodovi iste veličine i tehnologije se međusobno unište unutar 5 krugova i da manje više svaki vojni brod može u dogledno vrijeme uništiti kolonizatora.
No već ću nešto smislit, dovršiti testiranje i uploadati u repozitorij. Nakon toga malo dotjerati GUI, spakirati u release i staviti na download.
Našao sam zašto se događao bug kod učitavanja igre, zbog kojeg si igrači odjednom dobe par tisuća brodova. Stari problem s decimalnom točkom. Količina ostatka gradnje je bila pohranjena s decimalnim zarezom (regionalne postavke na Windowsima) a kod učitavanja se tražila točka (eksplicitno specificiran format). MICROSOFTE, ZAŠTO MJEŠAŠ STROJNI I KULTURNO OVISAN PRIKAZ BROJEVA? Naime, C#-u double tip podatka služi za pohranu realnih brojeva (uz kolku tolku preciznost), na svakoj varijabli i konstanti tipa double se može pozvat metoda za pretvorbu u tekst (tako reći). Moj problem nastaje u tome što se broj pretvara u tekst poštujući regionalne postavke operativnog sustava. Osobno smatram da se to ne bi trebalo tako raditi je vrijednost tipa double sama po sebi ne pripada ni jednoj državi ili kulturi. Kada se double vrijednost pita za tekstualni zapis, trebao bi se koristiti neki univerzalni format. Univerzalan u smislu da ne ovisi o ničem osim o samoj brojčanoj vrijednosti. Turčin, Arap, Kanađanin i Francuz bi za istu double vrijednost trebali dobiti isti tekstualni zapis. Za prikaz broja u kulturno ovisnom zapisu bi se trebala koristiti metoda kojoj se eksplicitno definira način pretvorbe broja u tekst.
Nazad na temu. Zadnjih par dana sam se uhvatio u koštac s balansiranjem igre. Htio sam se koncentrirati na testiranje i dovršavanje space combata ali brojke koje sam još davno postavio za snagu napada i obrane su takve da bitka traje u nedogled. Kako sam bio prije testirao tehnologije i mehanizme automatske nadogradnje tako je ispalo da igrači odmah u startu imaju do kraja nadograđen tier 3 oklop i da obični kolonizator ima 12k hit pointa dok je napadač s kojim sam testirao imao 8 strojnica koje su na taj oklop radile oko 9 damagea. S takvim brojkama bitka je trajala 170 krugova a ciljam na to da je ograničenje broja krugova za bitku negdje oko 20. Problem kod kolonizatora je što moraju s jedne strane biti ogromni a s druge ranjivi. Već prije sam razmišljao o tom da dodam specijalnu opremu za proširenje teretnog prostora i mislim da ću to napraviti u ovoj verziji. Nešto u stilu battle podsa iz Master of Oriona 2 ali da se uz povećanje nosivost se smanje hit pointi. To ja lagan dio posla, ono što je crna rupa koja upija sate mog rada je izbor brojki za damage oružja. Recimo za sam što na empirijski što na egzaktan način došao do načela po kojem određujem brojke za nosivost i izdržljivost vrsta trupova i sve komponente koje utjeću na vjerojatnost pogotka. Ali brojke za damage mi nikako ne idu. Načela kojih bih se držati su da brodovi iste veličine i tehnologije se međusobno unište unutar 5 krugova i da manje više svaki vojni brod može u dogledno vrijeme uništiti kolonizatora.
No već ću nešto smislit, dovršiti testiranje i uploadati u repozitorij. Nakon toga malo dotjerati GUI, spakirati u release i staviti na download.
Wednesday, April 4, 2012
Zvjezdojedac, zastavice
Zar je već prošlo mjesec dana od zadnjeg posta? Hmm, dobar ovaj posao koji radim kad mi ne primijetim da vrijeme proletjelo.
GUI za space combat napreduje polako ali sigurno. Konačno sam napravio prikaz pozicija brodova (ona 4 crna kvadratića iznad popisa brodova). Prikazuju se trokutići koji govore na kojoj poziciji ima brodova i kamo se kreću, prikazuju se zastavice za prisutne igrače na pojedinoj poziciji i klik na kvadratić šalje GUI event s potrebnim podacima. Obrada tog događaja baš ne funkcionira najbolje ali to je slijedeće na dnevnom redu. Još mi od vidljivog dijela GUIa nedostaju kontrole za upravljanje brodovima i za upravljanje bitkom (end turn i auto combat gumbi) no to već imam spremno u obliku skice.
Htio sam biti nadobudan prošlu nedjelju i napraviti kompletni space combat u jednom danu. Kako je taj dan bio prvi april, dobro sam se našalio. Dan je završio tako da sam u SPAZu došao s levela 25 na level 48. Realno, mislim da za dovršiti space combat treba više od 12 h. Jučer sam radio na pretvaranju "taktike" i "poželjne pozicije" i potrošio sam oko sat i pol. Po starom modelu brodova za dizajn se trebala definirati taktika, da li će brod funkcionirati kao presretač, da li će se držati po starni ili će biti na nekoj srednjoj udaljenosti. Po novom modelu brodovi se mogu kretati po pravcu i taktike su se pretvorile u pozicije. Najbitnija razlika je da je za svaku taktiku bilo posebno definirano kakvi su joj efekti a za pozicije jedan set formule koje vrijede za sve pozicije. Efekti pozicije računaju se tako da se u formule se uvrsti udaljenost između brodova. Ne izgleda kao velik posao ali eto, ode sat vremena samo tako jer promjene nisu samo u jezgri igre već i na GUIu i u data fajlama (karakteristike, nazivi i prijevodi) i još k tome dosta sam se vrtio koji razred instancira kojeg.
Jedno dana kada ću imati vremena, prerovati ću source code vezan za dizajn brodova. Trenutno za svaki tip komponente broda postoje dva razreda, jedan koji općenito opisuje komponente (tzv. info) i jedan koji opisuje konkretnu instancu. Ono što mi se ne sviđa je da su info razredi ugnježdeni pripadnim razredima za konkretne. Razlog tome je bio funkcionalnost da samo info razredi mogu napraviti instancu konkretne komponente. Ta funkcionalnost je ostvarana tako da razred za komponente imaju privatni konstruktor a info razredi pošto su ugnježdeni jedini imaju pristup tom konstruktoru. Imam ideju kako to smisleno izvesti bez ugnježđivanja razreda ali o tom potom, to je low priority.
Vidjeh da ima već 3 mjeseca od zadnjeg commita koda u repozitorij. U međuvremenu se zbilo dosta promjena ali stvar još uvijek nije stabilna a ne volim objavljivat kod koji ne radi. Trenutno kada se inicira space combat, GUI za bitku se ne da ugasiti i igrač ne može dalje igrati. Naime, kada se ugasi prozor za bitku, program zatraži igru slijedeći nerazriješeni konflikt a pošto se trenutno konflikti ne mogu razriješiti, igra mu vrati isti i tako u beskonačnost. Kad napravim space combat, tako će sjesti jedan fini debeli commit, uff.
GUI za space combat napreduje polako ali sigurno. Konačno sam napravio prikaz pozicija brodova (ona 4 crna kvadratića iznad popisa brodova). Prikazuju se trokutići koji govore na kojoj poziciji ima brodova i kamo se kreću, prikazuju se zastavice za prisutne igrače na pojedinoj poziciji i klik na kvadratić šalje GUI event s potrebnim podacima. Obrada tog događaja baš ne funkcionira najbolje ali to je slijedeće na dnevnom redu. Još mi od vidljivog dijela GUIa nedostaju kontrole za upravljanje brodovima i za upravljanje bitkom (end turn i auto combat gumbi) no to već imam spremno u obliku skice.
Htio sam biti nadobudan prošlu nedjelju i napraviti kompletni space combat u jednom danu. Kako je taj dan bio prvi april, dobro sam se našalio. Dan je završio tako da sam u SPAZu došao s levela 25 na level 48. Realno, mislim da za dovršiti space combat treba više od 12 h. Jučer sam radio na pretvaranju "taktike" i "poželjne pozicije" i potrošio sam oko sat i pol. Po starom modelu brodova za dizajn se trebala definirati taktika, da li će brod funkcionirati kao presretač, da li će se držati po starni ili će biti na nekoj srednjoj udaljenosti. Po novom modelu brodovi se mogu kretati po pravcu i taktike su se pretvorile u pozicije. Najbitnija razlika je da je za svaku taktiku bilo posebno definirano kakvi su joj efekti a za pozicije jedan set formule koje vrijede za sve pozicije. Efekti pozicije računaju se tako da se u formule se uvrsti udaljenost između brodova. Ne izgleda kao velik posao ali eto, ode sat vremena samo tako jer promjene nisu samo u jezgri igre već i na GUIu i u data fajlama (karakteristike, nazivi i prijevodi) i još k tome dosta sam se vrtio koji razred instancira kojeg.
Jedno dana kada ću imati vremena, prerovati ću source code vezan za dizajn brodova. Trenutno za svaki tip komponente broda postoje dva razreda, jedan koji općenito opisuje komponente (tzv. info) i jedan koji opisuje konkretnu instancu. Ono što mi se ne sviđa je da su info razredi ugnježdeni pripadnim razredima za konkretne. Razlog tome je bio funkcionalnost da samo info razredi mogu napraviti instancu konkretne komponente. Ta funkcionalnost je ostvarana tako da razred za komponente imaju privatni konstruktor a info razredi pošto su ugnježdeni jedini imaju pristup tom konstruktoru. Imam ideju kako to smisleno izvesti bez ugnježđivanja razreda ali o tom potom, to je low priority.
Vidjeh da ima već 3 mjeseca od zadnjeg commita koda u repozitorij. U međuvremenu se zbilo dosta promjena ali stvar još uvijek nije stabilna a ne volim objavljivat kod koji ne radi. Trenutno kada se inicira space combat, GUI za bitku se ne da ugasiti i igrač ne može dalje igrati. Naime, kada se ugasi prozor za bitku, program zatraži igru slijedeći nerazriješeni konflikt a pošto se trenutno konflikti ne mogu razriješiti, igra mu vrati isti i tako u beskonačnost. Kad napravim space combat, tako će sjesti jedan fini debeli commit, uff.
Friday, March 9, 2012
Zvjezdojedac, space combat GUI
Polako ali ide. Svako tolko naletim na nešto na grafičkom sučelju što nemrem riješiti s nečim gotovim već moram potrošiti cijelu noć. Source code ću uploadati u repozitorij tek kada bude stabilan a to će biti tek kada će bitke funkcionirati. Naime, trenutno se ne može započeti novi krug ako se se ne razriješe sve bitke a bez funkcionalnog space combata to se ne može. Napravio sam tako sustav kako bi kasnije lakše odvojio "dužnosti" jezgre igre i grafičkog sučelja. No, da ne bi sve ostalo na obećanjima i frazama tipa "radim, radim" i "bit će, bit će", prilažem screenshoot trenutnog stanja sučelja za svemirske bitke:
Crni kvadrati s crvenim linijama su polja s pozicijama boraca. U kvadratima će se nalaziti oznake tipa da li igrač ima brodove na toj poziciji i da li mu dio brodova odlazi ili dolazi na tu poziciju. Klikom na kvadratić će se prikazati koji su sve brodovi na toj poziciji. Za prikaz liste brodova predviđen je prostor ispod. Na screenshootu je prikazana situacija kada svaka strana ima jedan tip brodova pa se ne vidi sva funkcionalnost liste. I da, iz nekog čudnog razloga bot je uspio u jednom krugu napraviti 97 tisuća colony shipova :). Blah, mislim da je bug u pamćenju ostatka gradnje. Uglavnom, ideja je da svaka stavka u listi skup brodova s istim dizajnom i da su prikazani prosječna izdržljivost štitova i oklopa za takve grupe.
Now back to work.
Crni kvadrati s crvenim linijama su polja s pozicijama boraca. U kvadratima će se nalaziti oznake tipa da li igrač ima brodove na toj poziciji i da li mu dio brodova odlazi ili dolazi na tu poziciju. Klikom na kvadratić će se prikazati koji su sve brodovi na toj poziciji. Za prikaz liste brodova predviđen je prostor ispod. Na screenshootu je prikazana situacija kada svaka strana ima jedan tip brodova pa se ne vidi sva funkcionalnost liste. I da, iz nekog čudnog razloga bot je uspio u jednom krugu napraviti 97 tisuća colony shipova :). Blah, mislim da je bug u pamćenju ostatka gradnje. Uglavnom, ideja je da svaka stavka u listi skup brodova s istim dizajnom i da su prikazani prosječna izdržljivost štitova i oklopa za takve grupe.
Now back to work.
Monday, February 27, 2012
Zvjezdojedac i Lovac na demone
Kao i obično, razvoj igre ide jako sporo. Nažalost, čini mi se kako Zvjezdojeca radim isključivo za vlastitu dušu. Eh, da ima više za pokazati, više bi ga reklamirao a time i više radio na njemu.
Anyway. Odlučio sam svaki dan napraviti nešto u Zvjezdojecu, pa makar to bila 1 linija koda. Naime, kako to biva, ono što realno treba isprogramirati je dosta kompleksnije od ono što vidi u fazi razmišljanja. Probao sam pristupiti implementaciji space combata na način da si uzmem jedan dana u tjednu i kodiram. Je l, dizajn dokument sam napisao, samo ga treba pretočiti u kod. Ispalo je da ima još fina količina posla oko arhitekture koda. Pristup da svaki dan napravim nešto je super za razbijanje blokada. Kad zapnem na nečem, ugasim razvojnu okolinu, slijedeći dan razmislim i natipkam rješejne.
Za sada imam napravljeno detektiranje situacija u kojima se događa svemirska bitka, opisnike stanja bitke i pripremljene podatke za prikaz na grafičkom sučelju. Možda se ovo ne čini kao puno ili težak posao ali dosta mi je problema stvarala činjenica da se krug (turn) ne može isprocesirati do kraja dok se ne obrade svemirske bitke. Konkretno, problem je bio kako uskladiti jezgru igre i grafičko sučelje, tko koga pušta dalje i tko kada barata s kojim podacima.
U međuvremenu sam radio malo na prototipu RPGa u koje bi isprobao onu silnu teoriju koju sam pisao u prošlim postovima, vezanim za attack, defense i armor reductition. Zapravo, ne bi nazvao to RPGom, više neki SBG (stats building game). Za sada imam napravljeno kreiranje lika, saveanje, loadanje, jedan probni quest i skoro gotov mehanizam za bitke. Kada bude koliko toliko gotovo, staviti ću link za download. No, ima jedna lijepa stvar a to je da iskustvo izrade mehanizama za bitke iz ove igre mogu iskoristit u Zvijezdojecu.
Anyway. Odlučio sam svaki dan napraviti nešto u Zvjezdojecu, pa makar to bila 1 linija koda. Naime, kako to biva, ono što realno treba isprogramirati je dosta kompleksnije od ono što vidi u fazi razmišljanja. Probao sam pristupiti implementaciji space combata na način da si uzmem jedan dana u tjednu i kodiram. Je l, dizajn dokument sam napisao, samo ga treba pretočiti u kod. Ispalo je da ima još fina količina posla oko arhitekture koda. Pristup da svaki dan napravim nešto je super za razbijanje blokada. Kad zapnem na nečem, ugasim razvojnu okolinu, slijedeći dan razmislim i natipkam rješejne.
Za sada imam napravljeno detektiranje situacija u kojima se događa svemirska bitka, opisnike stanja bitke i pripremljene podatke za prikaz na grafičkom sučelju. Možda se ovo ne čini kao puno ili težak posao ali dosta mi je problema stvarala činjenica da se krug (turn) ne može isprocesirati do kraja dok se ne obrade svemirske bitke. Konkretno, problem je bio kako uskladiti jezgru igre i grafičko sučelje, tko koga pušta dalje i tko kada barata s kojim podacima.
U međuvremenu sam radio malo na prototipu RPGa u koje bi isprobao onu silnu teoriju koju sam pisao u prošlim postovima, vezanim za attack, defense i armor reductition. Zapravo, ne bi nazvao to RPGom, više neki SBG (stats building game). Za sada imam napravljeno kreiranje lika, saveanje, loadanje, jedan probni quest i skoro gotov mehanizam za bitke. Kada bude koliko toliko gotovo, staviti ću link za download. No, ima jedna lijepa stvar a to je da iskustvo izrade mehanizama za bitke iz ove igre mogu iskoristit u Zvijezdojecu.
Monday, December 5, 2011
Zvjezdojedac, space combat
Izgleda da će implementacija space combata ići puno sporije nego što sam mislio. Prvo zato što izrada dokumentcije traje, drugo, mislim napraviti promjene na GUIu za dizajniranje brodova i treće zato što je real life posao uvatio maha.
Dokumentacije sam se uhvatio zato što na mali milijun mjesta imam napisane ideje za space combat koje nisu 100% konzistantne i potpune. Za sada imam 4 strane i materijala za još dvije. Ne zvuči puno ali za svaki odlomak sam morao pet puta razmisliti da li dobro opisuje ono što želim, kako se to slaže s ostalim idejama i da li bi taj odlomak trebalo premjestiti na neko drugo mjesto u dokumentu. Dokumentaciju bih trebao dovršiti ovaj tjedan.
GUI za dizajniranje brodova trebam kompletno pretumbat. Možda čak napraviti ispočetka. Pod broj jedan zato što se bussines logika promjenila. Pod broj dva i tri zato što bih napravio kao odvojen prozor, ne kao tab i zato što promjenio izgled same forme.
Neću ni procjenjivat kad će space combat bit gotov. Bio bi sretan da ove godine :). S druge strane, kad imam viška vremena a nisam pri kompu, pišem si ideje za tehnologije. Za sada imam 30-ak tehnologija i inspiracije za još upola tolko. Poućen iskustvom s Char lovca i Zlih poligona, smišljanje sadržaja igre ne treba čekati kraj programerskog posla jer se jednostavno izgubi zanos. Isto tako, treba razmišljati o brojkama u smislu ako je na početku izdržljivost oklopa x, pred kraj normalne partije na srednje velikoj mapi bi trebala biti 5x. A sad nazad na dokumentaciju...
Dokumentacije sam se uhvatio zato što na mali milijun mjesta imam napisane ideje za space combat koje nisu 100% konzistantne i potpune. Za sada imam 4 strane i materijala za još dvije. Ne zvuči puno ali za svaki odlomak sam morao pet puta razmisliti da li dobro opisuje ono što želim, kako se to slaže s ostalim idejama i da li bi taj odlomak trebalo premjestiti na neko drugo mjesto u dokumentu. Dokumentaciju bih trebao dovršiti ovaj tjedan.
GUI za dizajniranje brodova trebam kompletno pretumbat. Možda čak napraviti ispočetka. Pod broj jedan zato što se bussines logika promjenila. Pod broj dva i tri zato što bih napravio kao odvojen prozor, ne kao tab i zato što promjenio izgled same forme.
Neću ni procjenjivat kad će space combat bit gotov. Bio bi sretan da ove godine :). S druge strane, kad imam viška vremena a nisam pri kompu, pišem si ideje za tehnologije. Za sada imam 30-ak tehnologija i inspiracije za još upola tolko. Poućen iskustvom s Char lovca i Zlih poligona, smišljanje sadržaja igre ne treba čekati kraj programerskog posla jer se jednostavno izgubi zanos. Isto tako, treba razmišljati o brojkama u smislu ako je na početku izdržljivost oklopa x, pred kraj normalne partije na srednje velikoj mapi bi trebala biti 5x. A sad nazad na dokumentaciju...
Friday, November 18, 2011
Zvjezdojedac, progress report
Napravih računalnog igrača koji nasumično gradi brodove i pripremih teren za pravi UI (umjetnu inteligenciju) koju će igra kasnije imati. Uz to dio te podloge bi se mogao iskoristiti i za multiplayer, za remote igrače.
Prošli feature na kraju nisam zapakirao i stavio na download jer nije bilo skoro ništa vidljivih promjena. Uvođenje jednostavne UI isto nije neki vidljivi napredak ali količna popravljenih stvari bi opravdala podizanje verzije za 0.0.1. Tako da ću ovih dana staviti za download novu verziju.
Edit:
Prema indikatoru na Google Codu, projekt je nazad na "high activity". Jupi!
Prošli feature na kraju nisam zapakirao i stavio na download jer nije bilo skoro ništa vidljivih promjena. Uvođenje jednostavne UI isto nije neki vidljivi napredak ali količna popravljenih stvari bi opravdala podizanje verzije za 0.0.1. Tako da ću ovih dana staviti za download novu verziju.
Edit:
Prema indikatoru na Google Codu, projekt je nazad na "high activity". Jupi!
Monday, September 26, 2011
Zvjezdijedac, progress report
Upravljanje na razini zvjezdanog sustava je bilo gotovo u srijedu ali sam još uvijek nezadovoljan prezentacijom. Mogo bih staviti download ovih dana premda kažem, ne izgleda mi kao zaokružena cjelina. Nedostatke GUIa kanim u što većoj mjeri ispraviti u zadatku #38 (Overhaul colony info window) u kojem se ne bih ograničo samo na GUI za kolonije.
Uz to, trebao bih konačno konsolidirati procesiranje turnova. Trebao bih si staviti na papir, odnosno napravit si nekakav dijagram na kojem je opisano što se kada računa. Hmmm, možda bih čak mogao dokument s tim dijagramom staviti u repozitorij. I svakako trebam čim više smanjiti ovisnost o podacima pohranjenim u generičnim <string, double> rječnicima. To bi sve moglo povezati sa zadatakom #33 (Turn processing in background) u kojem planiram među ostalom napraviti procesiranje turnova u pozadini.
I na koncu, opet bih mijenjao utjecaj uvjeta na planeti. Imam problema s konceptom da zračenje, gravitacija i atmosfera utječu na maksimun populacije. Što bi se trebalo dogoditi kada se uvjeti pogoršaju? Da li bi populacija koja prelazi novi maksimum trebala nestati u idućem turnu? Ja bih rađe da se ti uvjeti preslikavaju na teže održavanje i manju produktivnost kolonije. Još nisam otvorio zadatak za to ali bih svakako to riješio prije zaključivanja verzije 0.4.
Uz to, trebao bih konačno konsolidirati procesiranje turnova. Trebao bih si staviti na papir, odnosno napravit si nekakav dijagram na kojem je opisano što se kada računa. Hmmm, možda bih čak mogao dokument s tim dijagramom staviti u repozitorij. I svakako trebam čim više smanjiti ovisnost o podacima pohranjenim u generičnim <string, double> rječnicima. To bi sve moglo povezati sa zadatakom #33 (Turn processing in background) u kojem planiram među ostalom napraviti procesiranje turnova u pozadini.
I na koncu, opet bih mijenjao utjecaj uvjeta na planeti. Imam problema s konceptom da zračenje, gravitacija i atmosfera utječu na maksimun populacije. Što bi se trebalo dogoditi kada se uvjeti pogoršaju? Da li bi populacija koja prelazi novi maksimum trebala nestati u idućem turnu? Ja bih rađe da se ti uvjeti preslikavaju na teže održavanje i manju produktivnost kolonije. Još nisam otvorio zadatak za to ali bih svakako to riješio prije zaključivanja verzije 0.4.
Sunday, September 18, 2011
Zvjezdojedac, progress report
Implementacija upravljanja zvjezdanim sustavom je stvarno naporna stvar. Nakon čišćenja donjeg dijela sučelja na redu je bilo izbacivanje vojne gradnje iz kolonije. To je prošlo manje više bezbolno. Ali dodavanje (više prenamjena stare vojne gradnje) upravljanja sustavom je potrajalo skoro cijeli tjedan. Još nije gotovo, GUI nisam skoro ni taknuo, ostalo je hrpa nekonzistentnih imena, sejvanje trenutno ne radi itd.
Nadam se da ću do srijede bit gotov s time i da će sjest download nove verzije.
Monday, August 1, 2011
Zvjezdojedac, planovi za verziju 0.4
Ukratko stavke za slijedeću verziju Zvijezdojeca su slijedeće:
Upravljanje na razini zvjezdanog sustava
- Upravljanje na razini zvjezdanog sustava
- Umjetna inteligencija za upravljanje kolonijama
- Svemirske bitke
- Preinaka prikaza informacija za kolonije
- Prikaz liste kolonija
- (Možda) Preinaka varijabli za formule da budu strong typed
Upravljanje na razini zvjezdanog sustava
Kao što sam napisao u prošlom postu, maknu bih podjelu gradnje na civilnu i vojnu i napravio bih da se brodovi grade na razini cijelog zvjezdanog sustava. Nešto slično kao u prvom Master of Orionu. Na svakoj koloniji bi se moglo odrediti koliko se sredstava odvaja za projekte na razini sustava a upravljanje redom gradnje bi se vršilo na sučelju koje je trenutno prikazuje informacije o zvijezdi i popis planeta.
Umjetna inteligencija za upravljanje kolonijama
Globalni plan za UI je da se upravljanje razlomi na razine. Prva razina bi bila glavna mapa. Algoritam bi određivao koliko je pojedini sustav u posjedu ugrožen i kolko su ostali sustavi pogodni za istraživanje i naseljavanje. Na temelju tih informacija bi se slali brodovi i određivala tendencija gradnje brodova. Druga razina bi bila pojedinačni zvjezdani sustavi. Algoritam bi za tu razinu na temelju informacija s prve razine određivao što će se graditi na razini sustava (da li ratni brodovi, da li kolonizatori ili poboljšanja za planete). Također, na toj razini bi se određivala tendencija ulaganja u zvijezdani sustav tj. koliko će kolonije odvajati sredstva za sustav a koliko za sebe. Treća i najniža razina bi upravljala samim kolonijama. Znači, što kolonije grade i koliko u što ulažu.
Za početak napravio bih nešto jednostavno, UI koji će razvijati svaku koloniju kao da je sama svemiru. I dodato bih neki jednostavan algoritam za drugu razinu kako bi računalni protivnici gradili brodove za testiranje bitaka.
Svemirske bitke
Najsočniji dio svake igre. Trebam još definirati kako će se koji atribut ponašati. Imam neke ideje ali moram ih još uskladiti. O tome više kada ova stavka dođe na red.
Preinaka prikaza informacija za kolonije
Trenutni prikaz mi se čini kao da prikazuje previše informacija odjedanput. Htio bih napraviti sučelje na kojem se na prvi pogled može vidjeti koliko je koja kolonija razvijena i produktivna a da se do detaljnijih informacija može doći kada se miš pozicionira iznad pojedine stavke (Civilization 4) ili na klik (desni klik u Master of Orionu 2). Time bih dobio više mjesta za prikaz detaljnih informacija i izračuna kako je koja brojka dobivena i na sučelju za kratki pregled, ne bih morao prikazivat puno toga.
Prikaz liste kolonija
Nekoć davno 4X strategije sam igrao na način da bi svaki krug zavirio u svaki grad/koloniju i gledao da li mogu što poboljšati. Takvi turnovi su znali potrajati i po 10 minuta. S vremenom sam se naučio kako se većina micromanagmenta može izvesti preko popisa kolonija (Master of Orion) odnosno gradova (Civilization 3). Kod takvog pristupa, turnovi traju pola minute. Moć popisa kolonija zasniva se na prikazu bitnih informacija i načinu sortiranja stavki. Dobar popis kolonija treba biti u stanju odgovarati na upite dosta visoke razine, kao npr. "koje kolonije su dobre za izgradnju brodova?" ili "koje se kolonije još trebaju razvijati".
Za početak ću napraviti jednostavnu listu s nazivom kolonije, populacijom, procjenom razvijenosti i nazivom zgrade u gradnji i s mogućnošću sortiranja po tim svojstvima.
Nekoć davno 4X strategije sam igrao na način da bi svaki krug zavirio u svaki grad/koloniju i gledao da li mogu što poboljšati. Takvi turnovi su znali potrajati i po 10 minuta. S vremenom sam se naučio kako se većina micromanagmenta može izvesti preko popisa kolonija (Master of Orion) odnosno gradova (Civilization 3). Kod takvog pristupa, turnovi traju pola minute. Moć popisa kolonija zasniva se na prikazu bitnih informacija i načinu sortiranja stavki. Dobar popis kolonija treba biti u stanju odgovarati na upite dosta visoke razine, kao npr. "koje kolonije su dobre za izgradnju brodova?" ili "koje se kolonije još trebaju razvijati".
Za početak ću napraviti jednostavnu listu s nazivom kolonije, populacijom, procjenom razvijenosti i nazivom zgrade u gradnji i s mogućnošću sortiranja po tim svojstvima.
Preinaka varijabli za formule da budu strong typed
Ovo više finesa ispod haube. Ideja je da od <string, double> hash tablica u kojima se može nalaziti sve i svašta, napravim singleton razred u kojem će za svaku varijablu u igri postojati članska varijabla. Prednosti takvog pristupa su da ću imati jedno mjesto na kojem će varijable biti hijerarhiski poslagane, neću morati izvoditi finese s nazivima varijabli (trenutno skoro svaka varijabla ima za svoj naziv const string da ne moram rovat po kodu i prepisivati), možda će biti brže, ne ću morati instancirati toliko dictionary<string, double> objekata i biti će manje parametara u metodama za izračun vrijednosti formula.
Uglavnom, uz par velikih djelova gameplaya ova verzija će biti više fokusirana na fluidnost sučelja. Nadam se da ću je dovršiti do kraja godine a ako Bog da, u roku 2 mjeseca. I da ću po implementiranim featureima prestići FreeOrion :)
Ovo više finesa ispod haube. Ideja je da od <string, double> hash tablica u kojima se može nalaziti sve i svašta, napravim singleton razred u kojem će za svaku varijablu u igri postojati članska varijabla. Prednosti takvog pristupa su da ću imati jedno mjesto na kojem će varijable biti hijerarhiski poslagane, neću morati izvoditi finese s nazivima varijabli (trenutno skoro svaka varijabla ima za svoj naziv const string da ne moram rovat po kodu i prepisivati), možda će biti brže, ne ću morati instancirati toliko dictionary<string, double> objekata i biti će manje parametara u metodama za izračun vrijednosti formula.
Uglavnom, uz par velikih djelova gameplaya ova verzija će biti više fokusirana na fluidnost sučelja. Nadam se da ću je dovršiti do kraja godine a ako Bog da, u roku 2 mjeseca. I da ću po implementiranim featureima prestići FreeOrion :)
Sunday, July 10, 2011
Zvjezdojedac v0.3
Konačno, nakon skoro godinu dana, dovrših verziju 0.3 Zvjezdojedaca. Stvari koje su nove u toj verziji su:
Mogućnost pomicanja brodova je najznačajniji feature što se tiće igrivosti. To sam napravio praktički u 2 dana (po sat - dva svaki dan). I još sam se najviše namučio radeći na GUIu. I naravno da nisam zadovoljan sa sučeljem.
Migracija populacije je malo manje značajan feature ali sa značajnim posljedicama. Naime, za implementaciju migracije, dodao sam efekte na razini zvjezdanog sustava (npr. ukupan broj ljudi koji se može seliti unutar sustava) što će kasnije omogućavati fensi mogućnosti kao npr. sustav za preusmjeravanje zračenja s jednog planeta na drugi kako bi se povećala temperatura na planetima koji su daleko od matične zvijezde. Općenito mislim neke stvari maknuti s planeta i staviti na razinu cijelog sustava. Jedna od većih ideja je maknuti podjelu gradnje na civilnu i vojnu i napraviti svi planeti u sustavu sudjeluju u gradnji brodova. Nešto u stilu posebnog building queuea za sustav i da se na svakoj koloniji može odrediti koliko resursa se izdvaja za taj building queue.
Odabir početne populacije je isto mali feature s velikim posljedicama. Naime, taj feature me natjerao da preinačim kalkulacije vezane za uvjete na planetu. Morat ću si jedonom sve te formule staviti na jedno mjesto i mic po mic ih podešavati. Bit će dosta posla za slijedeću verziju. Budem sutra razmišljao što ću sve raditi u verziji 0.4.
- Lokalizacija
- Pomicanje brodova
- Podešavanje veličine GUIa
- "Knjižnica" (prikaz istraženih tehnologija i dostupnih komponenti za brodove)
- Migracija populacije
- Odabir početne populacije
Mogućnost pomicanja brodova je najznačajniji feature što se tiće igrivosti. To sam napravio praktički u 2 dana (po sat - dva svaki dan). I još sam se najviše namučio radeći na GUIu. I naravno da nisam zadovoljan sa sučeljem.
Migracija populacije je malo manje značajan feature ali sa značajnim posljedicama. Naime, za implementaciju migracije, dodao sam efekte na razini zvjezdanog sustava (npr. ukupan broj ljudi koji se može seliti unutar sustava) što će kasnije omogućavati fensi mogućnosti kao npr. sustav za preusmjeravanje zračenja s jednog planeta na drugi kako bi se povećala temperatura na planetima koji su daleko od matične zvijezde. Općenito mislim neke stvari maknuti s planeta i staviti na razinu cijelog sustava. Jedna od većih ideja je maknuti podjelu gradnje na civilnu i vojnu i napraviti svi planeti u sustavu sudjeluju u gradnji brodova. Nešto u stilu posebnog building queuea za sustav i da se na svakoj koloniji može odrediti koliko resursa se izdvaja za taj building queue.
Odabir početne populacije je isto mali feature s velikim posljedicama. Naime, taj feature me natjerao da preinačim kalkulacije vezane za uvjete na planetu. Morat ću si jedonom sve te formule staviti na jedno mjesto i mic po mic ih podešavati. Bit će dosta posla za slijedeću verziju. Budem sutra razmišljao što ću sve raditi u verziji 0.4.
Subscribe to:
Posts (Atom)
