ponedjeljak, 1. kolovoza 2011.

Zvjezdojedac, planovi za verziju 0.4

Ukratko stavke za slijedeću verziju Zvijezdojeca su slijedeće:
  • 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.

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 :)

nedjelja, 10. srpnja 2011.

Zvjezdojedac v0.3

Konačno, nakon skoro godinu dana, dovrših verziju 0.3 Zvjezdojedaca. Stvari koje su nove u toj verziji su:
  • 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
Od navedenih, najviše sam se namučio s lokalizacijom, mislim da sam tjedana dana radio na tome. Al mislim da je to feature koji trenutno najviše doprinosi pristupačnosti igre široj publici. Naime, do sada je igra bila isključivo na hrvatskom.

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.