The God Game Update

1 view
Skip to first unread message

Tomislav Rakic

unread,
Jan 13, 2011, 7:39:20 AM1/13/11
to egdc...@googlegroups.com
Pozdrav svima došao je red na prvi update vesti o The God Game-u.
(prvi deo teksta možete videti i na https://bitbucket.org/Thunderzone/the-god-game/wiki/done.wiki)
(drugi deo teksta možete videti i na https://bitbucket.org/Thunderzone/the-god-game/wiki/tobedone.wiki)

Ovako je izgledao jedan od najranijih buildova igre. Šestougaoni tileovi se generišu proceduralno, mada taj algoritam nije neki high-end fraktalni, obavlja posao u ranoj fazi i pomaže pri debugovanju. Logika igre bi trebalo da se u potpunosti zaniva na ovim tileovima: Jedan od prvih screenshotova Jedan od prvih screenshotova

Teren se generiše na osnovu tileova koji ga sačinjavaju. Problem je naći tačnu visinu terena u određenoj tački na osnovu tileova koji ga okružuju (ili čak dalje). Naivnim algoritmom sam dobio sledeći izgled terena. Njegove prednosti su brzina i to što visina terena garantovano dostiže visinu svog tilea. To tek treba videti dal je relevantno za gameplay. Levo je debug reprezentacija, desno je teren. Custom interpolacija

Nov metod interpolacije terena je Šepardova metoda. Ona ne garantuje da će teren dostići tačnu visinu i sporija je, ali teren izgleda mnogo finije. Interpolacija Šepardovom metodom

Na kraju evo vrhunca trenutne verzije, potpun generisan teren (pomoću obe vrste interpolacije). Tileova na površini terena na ovim slikama ima 150k, a biće ih i još više.

Teren sa custom interpolacijom

Teren sa šepardovom interpolacijom

Pošto su brda jako strma za sada (strmina je eksponencijalna funkcija), dosta se primećuje da je teren izdeljen na tileove. Želim da smanjim osećaj ove izdeljenosti maksimalno. Prosto proširenje tilova bi pomoglo ali unaprediću algoritme još više. Takođe proširenjem tilea dobili bismo mnogo prostraniji teren.


Šta bi trebalo uraditi i gde bi valjala pomoć?

#2 Trebalo bi odraditi kameru koja podseća na onu iz Black&Whitea. Znači da korisnik levim klikom "vuče" mapu, desnim (valjda) rotira kameru, skrolom menja visinu kamere. Naravno kamera mora reagovati i na sudaranje sa terenom. Ovo je lak zadatak pošto postoji dosta informacija o ovome u Ogre-u.

#3 Kada korisnik klikne na teren, da se pojavi "oreol" koji pokazuje koja kockica je kliknuta. Veoma je povezano sa kamerom jer se isto koristi raycasting. Trebalo bi razmisliti i na koji klik bi ovo reagovalo a na koje bi kamera reagovala, mada to nije toliko bitno, treba nam ova mogućnost zbog lakšeg debugovanja. I ovo je relativno lak zadatak, ali možda se pojavi neka caka.

#4 Poboljšati GameStateManager. To je klasa koju sam davno napisao drevnim metodama, koja i dalje šljaka za naše potrebe, ali ne bi bilo loše unaprediti je ako neko ima želju ili je radio nešto ovako ranije. Ovo se svodi na sam menadžment stanja i nije potrebno znanje o ostatku programa.

#5 Neko ko želi da radi sa GUIjem mogao bi da odradi Main Menu i propratne podmenije. Prvi zadatak je poterati neku GUI biblioteku (CEGUI koji dolazi uz ogre je sranje, ja bih rekao da je Mygui ok, treba se i tu raspitati). Drugi zadatak je uklanjanje onog dialog boxa na početku i pomeriti sve opcije u neki podmeni. To malo zahteva baratanje sa ogreom ali sve je već urađeno i stoji na ogre wikiju.

#6 Ekran pri učitavanju. Neko ko se relativno razume u threading, mogao bi da napravi nešto sa loading screenovima. Takođe bi podrška nekog ko ima iskustva sa threadovima valjala, jer želim da se teren asinhrono generiše.

#7 Ne bi bila loša ni neka ikonica 32x32 za sam projekat. Ni teksture neke ne bi bile loše pošto su teksture malo usrale ove slike gore.

#8 Neko bi mogao da odradi nebo. Postoji sjajan plugin SkyX za ovakve stvari. Postoji i sličan njemu HydraX za baratanje vodenim površinama. Tako da bi neko mogao da se usko specijalizuje za "enviromentalne" efekte. I ovako rano nebo bi dalo šmek svemu.

#9 #10 #11 Linux. Tek sam danas bio u mogućnosti da testiram kod pod linuksom i ima nekih grešaka. Već sam se bacio na sređivanje toga, ali pomoć je dobrodošla.

Trebalo bi odraditi i neku bolju interpolacionu tehniku ili šta god, da bi teren izgledao glatkije. Mislio sam da implementiram Bezier patch ili NURBS, a da mi centri tileova budu kontrolne tačke. Trebalo bi pogledati nešto o multi-metodama, odnosno double dispatch mehanizmu. Pitanje je da li bi to bilo dovoljno brzo, za polimorfičnu interakciju susednih tileova, kombinovanje tileova i polimorfno određivanje interpolacionog algoritma za dati tip datog tilea. Trebalo bi srediti kontejner tileova, da bi mogao brzo da opsluži mnogo instanci. Neko ko ima iskustva sa heksagonalnim tileovima bi mogao da mi pomogne ako zna neke relevante algoritme ili metode. Mogli bismo početi sa implementacijom nekih grafovskih algoritama za pathfinding.

To bi sve trebalo srediti za neku alfa verziju i naravno pored svega toga treba optimizovati koda i donositi odluka o gameplayu.

Prilično sam umoran sada pa se odjavljujem. Sledeći update će biti mnogo uzbuljiviji :). Pogledajte glavnu stranu wikija, bar da vidite genijalni logo što je nacrtao naš kolega Bane Marton.



Reply all
Reply to author
Forward
0 new messages