Sećam se da sam pre nekih 5 godina poslao e-mail profesorki
sa MIT-a nakon što je na PBS Special-u govorila o veštačkoj
inteligenciji. U e-mail-u sam detaljno naveo svoje teorije o razvoju
VI, kako se mašine mogu isprogramirati da prepoznaju okruženja,
kako se emocije mogu naučiti iskustvom, itd. Na pisanje e-mail-a sam
potrošio dobra 4 sata jer sam osetio povezanost sa radom profesorke.
Pisanje e-mail-a je bilo uzbudljivo jer me je tema veoma interesovala
i želeo sam da se obratim nekome. Dok sam ga pisao, gajio sam veliku
nadu da ću dobiti odgovor i sagovornika u toj oblasti, koji bi mi
pomogao da krenem sa izradom napredne mašinske VI. Na žalost,
odgovor je izostao... Ne znam ni da li je pročitala e-mail
U poslednje vreme, zahvaljujući „Indie“ igri The Movie and
Super Meat Boy, dobio sam po nekoliko e-mail-ova, pominjanja na
Twitter-u i pitanja Formspring-u dnevno od ljudi koji su tražili
savete. Većinu e-mail-ova su slali mlađi fanovi, u potrazi za
savetima – od „Koji jezik da koristim“ do „Kako da moja igra
dospe na Xbox“. Čitam sve e-mail-ove, ali ne odgovaram baš uvek
jer bi mi to oduzelo dosta vremena, a da ne pričam o tome da su
međusobno veoma slični.
S pravom se osećam loše kada ne
odgovorim jer su to ljudi koji tek kreću i traže nekoga ko će im
rasvetliti razvoj igara. Oni rade isto što sam i ja učinio pre
mnogo godina, kada sam se obratio profesorki sa MIT-a. Zanima ih šta
radim i žele da nauče kako se to radi; žele da se na neki način
uključe u razvoj igara. E pa, želim da pomognem, ali nemam vremena,
znanja niti nameru da budem predavač... i eto nas. Ova često
postavljana pitanja su namenjena svima koji žele bilo kakav savet od
mene u vezi sa izradom igara.
Odakle da krenem sa svojom
idejom igre iz snova?
Najčešće mi stižu pitanja: „Odakle
da krenem“. Čini mi se da je početak najveća prepreka za mnoge,
jer ne shvataju da su sve, pa čak i vrhunske igre na tržištu
krenule od nule i razvijale se dok nisu postale ono što im je
suđeno. Kada vam igra iz snova sedi u glavi i kada načinite prvi
korak ka njenom kreiranju, može biti veoma zastrašujuće preći iz
mašte u primenu. Za nekoga ko nikada nije pravio igre, nešto
jednostavno kao što je kretanje karaktera može biti nešto što
deluje kao ogromna, nemoguća prepreka i ubrzo može postati
obeshrabrujući poraz. Međutim, ne mora biti tako – ključ je
krenuti malim koracima.
Super Meat Boy je počeo kao kvad sa slikom Meat Boy-a na sebi.
Mew-Genics je u startu bio crni kvadrat koji se šetao po ekranu.
Goo! je u startu izgledao kao krugovi sa smajlijima. Prvi „Game 2“
je bio vektorizovana slika karaktera iz „Game 2“. Sve kreće sa
veoma bazičnog nivoa i dalje se razvija.
Veoma je bitno ići korak po korak. Ako se bacite na čitavu igru
iz snova odjednom, velika je verovatnoća da ćete postati
frustrirani i preopterećeni. Ako toj istoj igri iz snova pristupite
sitnim koracima, šanse za ostvarenje vaše vizije eksponencijalno
rastu.
Kada igru podelite na male delove, to će vas naterati da
analizirate i ocenjujete sopstvene ideje na dubljem nivou. Ovo je
ključno jer želite da ostanete otvoreni ka promenama, ne želite da
se zaglavite na koloseku sa koga ne smete da skrenete. Odstupanje od
plana može stvoriti najzanimljivije delove igre. Ovakav način
razvoja je prirodniji jer vas tera da razmišljate u sistemu igre i
da primenjujete nove ideje na ideje koje su već formirane.
Dakle, dajte sve od sebe da razradite svoje ideje u malim
segmentima koji se mogu lako ostvariti sa veštinama koje trenutno
posedujete. Tako je lakše videti napredak, nećete doživeti
frustracije tek tako, a kasnije se možete vratiti i nastaviti gde
ste stali. Ne zaboravite da ne postoji vremensko ograničenje za
lansiranje vaše igre (ako tako krenete, čekaju vas teška vremena).
Učite svojim tempom i razvijajte svoje projekte kao što gradite
Lego kockama – kockicu po kockicu.
Daću vam detaljniji primer – nastanak igre Super Meat Boy. Kada
sam napravio kvad sa slikom Meat Boy-a, povezao sam input da bih
mogao da ga pomeram. Kada sam se malo pozabavio time, napravio sam
tako da kad pritisnem dugme moj Meat Boy kvad skače, pa sam zatim
poradio na tome da se zaustavi kada sleti na platformu, pa da stane
kada naiđe na zid, pa da se zalepi za zid, a onda kada se zalepi za
zid, da ga na pritisak dugmeta preskoči, a ako naiđe na zeleni
kvadrat, gubi život, i tako dalje, dok nisam napisao i poslednju
liniju koda igre čime je Super Meat Boy bio završen.
Ni jedan posao nije premali, ni jedan napredak beznačajan. Bitno
je da ne upadnete u frustraciju i da nastavite sa radom na svojoj
igri.
Koji programski jezik preporučujete?
Ovo je drugo
pitanje po učestalosti koje mi stiže i, istini za volju, ne sviđa
mi se jer na takvo pitanje ne mogu dati odgovor. Uvek pokušavam da
na ovo pitanje odgovorim na sledeći način: „koji god jezik vam
najviše odgovara“. Mislim da ovo nije pravi odgovor na pitanja jer
imam utisak da ljudi traže konačan odgovor ili da tek počinju i da
im ni jedan jezik ne odgovara. Pokušaću da detaljnije odgovorim,
kako bih eventualno pomogao ljudima da razumeju način izbora jezika
koji je za njih najbolji ili da im pomognem da razumeju da korišćenje
onoga što im odgovara predstavlja najbolji početak.
Ako tražite savet u vezi sa programskim jezikom za početak, ne
treba da se zamarate pitanjima kao što su „Da li će Flash raditi
na iOS-u“, „Da li Xbox podržava Java-u“, ili „Da li XNA radi
na Mac-u“. Vaš predvidljiv cilj u startu jeste da igru
realizujete, a ne da je objavite ili prodate. Ova pitanja su značajna
kada razmišljate o vremenu isporuke, ali isporuka igre je mnogo
jednostavnija od njene realizacije. O isporuci igre možete brinuti
kasnije.
Pronađite jezik koji vama lično odgovara i počnite da kodirate.
U početku je bitno da imate što veće zadovoljstvo. Trebalo bi da
što pre dobijete nešto na ekranu, a zatim da nad time radite
nadogradnju. Trebalo bi da imate mogućnost da menjate svoje kreacije
i da ih lako proširujete. Instant zadovoljstvo predstavlja ključ za
motivaciju u početku, ali verovatno nećete želeti da u ovom koraku
učite novi programski jezik. Ako pokušate da učite novi jezik dok
kreirate igru, velika je verovatnoća da ćete potrošiti dosta
vremena čitajući, a kao rezultat ćete imati znanje koje još uvek
ne možete primeniti u svojoj igri. Ovo može da bude prilično
obeshrabrujuće.
Držite se onoga što znate ili najlakšeg mogućeg puta za
sticanje veština da biste započeli rad na svojoj igri. Dakle, ako
znate malo Flash-a, koristite Flash; ako inače koristite C++,
koristite ga i za razvoj igre, ako znate samo Java-u, koristite je.
„Zvanični jezik za razvoj igara“ ne postoji. Ne zaboravite to.
Minecraft je pisan u Java-i, Super Meat Boy je pisan u C++, Farmville
u Flash-u, neka druga igra koju ljudi igraju u HTML 5, neka opet
treća igra koju ljudi igraju je rađena na bušenim karticama.
Poenta je u sledećem: jezik nije bitan. Pronađite ugodan način za
izradu svoje igre i bacite se na posao.
Nemojte misliti da vam preporučujem da ne učite nove jezike i da
ne radite izvan svoje zone udobnosti. Kada se točkovi zakotrljaju,
poželećete da napustite udobnost poznatog i da naučite nove stvari
ako želite da se razvijate u ovom smeru. O ličnom razvoju brinite
kasnije, a u međuvremenu uspostavite svoju bazu i počnite da
kodirate.
Ako ne znate ni jedan jezik i tražite odakle da počnete,
preporučio bih vam Flash, Game Maker, Unity ili nešto slično. Svi
navedeni programi izuzetno olakšavaju da se nešto brzinski nađe na
ekranu, sa veoma kratkom krivom učenja. Svakako ne želite da
krenete od nečega kao što je C++ ako nemate iskustva sa bilo kojim
drugim programskim jezikom i ako jedva čekate da započnete
kreiranje svoje igre.
Koje knjige ili tutorijale preporučujete?
Preporučujem
dve knjige, koje su namenjene isključivo za razvoj u C++ i uopšte
nisu početničke knjige. U pitanju su „Effective C++“ i „More
Effective C++“. Ovo su napredne knjige o C++, tako da ako ne znate
C++, nemojte misliti „Aha, to mi treba da bih pravio igre“. Ne
treba vam.
Osim navedenih, nisam čitao druge knjige. Način na koji ja učim
je da iščitavam SDK dokumentaciju. Ovo nije tipičan način učenja,
ali ja tako učim.
Preporučio bih vam da odete na internet i potražite odgovarajuće
tutorijale. Internet je pun primera programa, tutorijala kao što je
NeHe, itd. Ne bih preporučio neki konkretan tutorijal, iz prostog
razloga što ih nisam lično prošao, ali znam da postoji obilje
raznih online resursa. Siguran sam da ćete uz malu pomoć Gugla
uspeti da nađete upravo ono što vam treba.
NE preporučujem vam da kopirate delove tutorijala da biste
napravili sopstvenu igru. Tako ništa ne učite, već samo kopirate.
Isto važi i za open source programe. Dobri su za razmatranje,
proučavanje i kao referenca, ali nisu materijal od koga bi trebalo
da pravite svoju igru. Nećete postati dobar i efektivan programer
ako kopirate izvorni kod u sopstvenu igru, a pri tom ga ne razumete u
potpunosti. Nemojte se zavaravati na ovaj način, uložite malo
vremena da razumete nešto pre nego što ga iskoristite.
Koji ste softver koristili za kreiranje igre?
Imam
utisak da ovo pitanje postavljaju ljudi koji pretpostavljaju da
postoji neki magični alat koji pravi igre umesto vas. Stanje stvari
je takvo da postoje alati koji za vas mogu odraditi dosta toga što
se tiče endžina. Ako vas ne zanima da učite programski jezik da
biste izradili endžin igre, potražite nešto kao što je Unity ili
UDK. Oni će vas osloboditi napornog rada i ostaviti vam prostora da
jednostavno kreirate igru. Međutim, ovo ima svoju cenu. Sistem koji
vam je na raspolaganju kroz ove alate vas ograničava. Ovi alati su
puni opcija koje su dobro razvijene, stabilne i fenomenalne, ali
ponekad ne rade ono što vi želite.
Lično ne volim ograničenja i zaista uživam da se ozbiljno
udubim u razvoj, tako da izbegavam takve alate i igre razvijam na
osnovu koda koji sam pisao godinama. To ne znači da Super Meat Boy
nije mogao da postoji na nečemu kao što je Unity. Mogao je – do
određenog nivoa. Doduše, usled ograničenja, to ne bi bila ista
igra, kontrole ne bi bile iste i ne bi izgledala isto. Suština bi
bila tu, ali igra kakvu znamo ne. Međutim, sve je do vas. Ponavljam,
pitanje je šta vama odgovara. UDK, Unity i slični alati su osnova
za neke od sjajnih igara. A ima i igara koje funkcionišu bez njih.
Za razvoj koristim Visual Studio, ali bih isto tako mogao da
koristim i Eclipse, Code Warrior, XCode, ili Notepad i kompajler. Kao
i kod izbora programskog jezika, nije bitno šta koristite. Ja sam
navikao da koristim Visual Studio. Ne koristim neke lude funkcije
koje on nudi, već ga koristim kao način da organizujem fajlove
izvornog koda, kompajliram i debagujem. Ovo omogućava brdo editora.
Za vizuelni deo i animaciju, Ed koristi Flash. Ja sam napisao
rutinu za eksportovanje animacija iz Flash-a jer mi je to bilo lakše
nego da pišem alate za Edmund, pa opet, Edmund je najlagodniji za
rad sa Flash-om – pa zašto se protiviti! Pisanje alata je
zahtevalo da naučim JSFL i rad u Flash-u, ali je to Edu i meni
najviše odgovaralo za rad na Super Meat Boy. Za izradu igre vam ne
treba moj alat za eksportovanje animacije. Jednog dana ću ponuditi
ove alate developerima, ali ne uskoro tako da ih nemojte čekati.
Kako ostajete motivisani da završite šta ste započeli?
Ne
postoji tajna održavanja motivacije, pa vam ne mogu dati savet kako
da tokom svog projekta ostanete motivisani. Nemam neki specijalan
trik niti način razmišljanja koji koristim, kao ni organizacionu
radnu listu ili nešto slično. Da bih ja lično ostao motivisan,
potrebno mi je da verujem u projekat na kome radim i da uživam u
tome. Ako ne volim ono na čemu radim, velika je verovatnoća da to
neću završiti.
Poodavno sam počeo da radim na igri pod nazivom Goo! Radio sam na
njoj 2 godine, a rezultata niotkuda. Ideja nije bila moja, lično ne
bih želeo da pravim takvu igru, pa zbog toga nikada nisam uspeo da
je napravim onako kako sam želeo. Prestao sam da radim na toj igri i
prešao na Super Meat Boy.
Vreme koje sam utrošio radeći na igri Goo! nisam protraćio jer
sam naučio dosta o razvoju, ali igri nije bilo suđeno jer za mene
nije predstavljala užitak. Jedini aspekt igre u kome sam uživao je
bio višesmerni fizički endžin, na koji sam utrošio najviše
vremena. Meni je bilo bitno da radim na toj igri jer sam zahvaljujući
tome shvatio da uživanje u igri na kojoj radim značajno olakšava
rad. To je vrhunska motivacija.
Kada volite svoj rad i verujete u njega, teško je ostaviti posao
nedovršen. Opsednuti ste, želite nešto novo da dodate, da
unapredite, i zaista želite da sve dovedete do kraja. Ako verujete u
ono na čemu radite, ta vera zablista u gotovoj igri. Veća je
verovatnoća da ćete uložiti dodatno vreme da sve sredite i
ispolirate, da dodate opcije za koje smatrate da će dodatno
unaprediti igru – generalno, da krenete korak dalje i da učinite
igru baš svojom.
Ovo pitanje ne bi trebalo da postavlja neko ko tek
počinje, pa čak ni neko ko već radi na svojoj igri. Vaš cilj bi
trebalo da glasi „Napraviću dobru igru“, a ne „Moram da ovo
objavim na XBLA“. Opšte je poznato kako svoju igru možete
postaviti na neku od ovih platformi. Ne postoji tajni e-mail, magični
obrazac koji treba popuniti, ne morate poznavati nekoga iz branše,
ničiji sestrić ne radi u nekoj od tih firmi da vam ugovori tajni
sastanak – ništa slično.
Veoma je jednostavno dospeti na bilo koju platformu – sve što
vam treba je dobra igra. I to je to. Stvarnost je surova, a neki
odbijaju da poveruju. Viđao sam ljude koji krive sve osim svoje igre
kada je u pitanju dolazak na Steam/XBLA/šta-god. Dobra igra će
privući pažnju i ozbiljno razmatranje vlasnika platforme sopstvenim
kvalitetom uz malo vaše pomoći. Pričajte o igri, pokažite
uzbuđenje i ako je igra dobra i svidi se drugim ljudima, vaš
entuzijazam će se proširiti na ostale.
Ako igra nije dobra, male su šanse da će završiti na
distributivnim platformama. Fokusirajte se na to da igra bude
najbolja, ne fokusirajte se na platforme na kojima je možete
lansirati. Dobra igra se sama prodaje mnogo bolje nego što je može
prodati bilo koja platforma.
Šta ako završim igru i niko je ne želi?
Ako se
ozbiljno potrudite i mislite da je vaša igra najbolja stvar ikad
stvorena, ali ipak ne možete da obezbedite platformu za
distribuciju, nemojte to smatrati neuspehom i znakom da vam nije
mesto u ovoj industriji. Retki su oni koji postignu uspeh sa prvom
igrom. SMB je bila prva igra koju sam završio, ali pre nje je bilo
nekoliko njih koje su završile u ćorsokaku.
U jednom trenutku sam bio na nekoliko koraka od toga da za Sony
dobijem ugovor identičan onim za fl0w i Everyday Shooter za igru
koju sam prethodno pominjao – Goo! Promena menadžmenta u
poslednjem trenutku (bukvalno dva dana pre potpisivanja konačne
dokumentacije) je dovela do otkazivanja igre i do toga da mi se Sony
više nikada nije javio. Igra nije bila dobra, pa čak i uz ugovor sa
Sony-jem je imala šansu da bude završena i da doživi ozbiljan
neuspeh. Bolelo je i peklo, ali me nije zaustavilo.
Nemojte dopustiti da vas takav neuspeh liši snova. Ljudi mogu da
misle da vam je čedo ružno – nema problema. Nastavite da pravite
igre. Neka vas neuspesi motivišu, a jednog dana, uz dovoljno snage i
upornosti, ima šanse da ostvarite svoj san.
Zaključak
Napišite svoju igru čime god znate,
krenite malim koracima, a o drugim stvarima mislite kasnije.
Programski jezici i softver nisu bitni za kreiranje igre, tako da
odaberite ono što vam je prihvatljivo ili ono što želite da učite,
ali što vam neće oduzeti previše energije u startu. Postarajte se
da ostvarite dovoljan napredak koji će vam održati motivaciju i
eliminisati frustraciju. Volite svoju igru, pričajte o njoj, radujte
joj se i biće teško da na njoj ne radite.
Autor: Tommy Refenes
Izvor: How do I get started programming games???