|
Pravljenje igara Programski jezici, tehnike, alatke u službi pravljenja igara... |
|
Alatke vezane za temu | Vrste prikaza |
|
27.7.2007, 23:02 | #1 |
Deo inventara foruma
|
3d Engine - ali za mobilne uređaje!
UVOD U CELU PRICU
Pa ovako. U poslednje vreme imam nesto vise slobodnog vremena, a i javila se neka potreba za ispoljavanje kreativnosti kod mene; stoga sam resio da zapocnem jedan programerski projekat, onako za sebe posle duzeg vremena. Nisam razradio sve detalje, nisam trosio vreme na organizaciju, a i ne gledam daleko u buducnost projekta, niti znam kuda ce me sve ovo odvesti. Resio sam onako da ga zapocnem, pa da vidimo kako ce se razvijati i da li ce imati neki potencijal. Mozda napravim nesto pametno, mozda se smorim posle mesec dana, videcemo, sve je moguce. Uostalom, ovim projektom ne bezim daleko od svog pravog posla, tako da ako nista drugo, usavrsavam se i skupljam nova iskustva. Dakle, kao sto se iz naslova moze videti, zapoceo sam rad na 3D engine-u. Iskustva iz te oblasti imam, jer sam nesto slicno radio pre 8 godina u asembleru za DOS i malo posle toga u C++ koristeci OpenGL. Ovo sto sad planiram se ipak malo razlikuje od toga. To je 3D engine za "pametne" mobilne telefone. Krajnji cilj mi je naravno, da ga napravim tako da moze lako da se portuje na bilo koju mobilnu platformu; ali otom potom. Po cemu se mobilni uredjaji razlikuju od desktop masina? Pre svega imaju mnogo slabije procesore i mnogo manje memorije, tako da kod mora biti jako optimizovan. Imaju ekrane mnogo manje rezolucije i ta rezolucija varira od 176x208 (stariji Symbian telefoni) do 320x320 (noviji Palm uredjaji), tako da grafika mora biti optimizovana za sve rezolucije. Nemaju nikakve 3D akceleratore i rad sa bilo kakvim realnim (float) brojevima je jako sporo, tako da sve sto se pise mora se pisati "rucno". Sta znati to rucno? To znaci da koristeci OpenGL, treba vam tacno 13 naredbi da biste dobili 4-ugaoni texturirani poligon u kojem svaki vertex ima svoju boju, pa se na osnovu tih boja i textura drugacije farba. Ako hocete to isto da uradite softverski, pored solidnog znanja matematike, trebace vam i jedno 300 linija koda (po mogucstvu bez bagova). Cemu ovakav mazohizam? Kazem vam, imam viska slobodnog vremena + jedino ako rucno pisete neke stvari, shvaticete kako te stvari zaista rade i gde se primenjuje ta silna matematika koju svi ucimo u skolama i na fakultetima. Odlucio sam takodje da „dnevnik“ tog projekta vodim na ovom forumu. Mozda se nekom svidi, mozda neko ima neki predlog, sugestiju, mozda ce neko nesto da nauci od mene, mozda cu ja nauciti nesto od nekoga; ako sve propadne i odustanem od svega, imacu barem materijala za knjigu, da je objavim i zaradim koji filer. Vasi komentari su dobrodosli, isto tako i pitanja; sa druge strane, svaki offtopic ce se momentalno brisati. |
27.7.2007, 23:02 | #2 |
Deo inventara foruma
|
Re: 3d Engine - Ali za mobilne uredjaje!
Posto svako ko se pojavi na ovom forumu sa ovako lepom uvodnom recju, a da pritom, nista nije uradio, biva momentalno proteran i ismejavan naredne dve stranice, ja sam odlucio da odmah i postujem neke stvarcice koje sam radio protekla tri dana
Na vasu veliku zalost, (za sada) postovacu samo screenshotove, jer se radi o programu za mobilne uredjaje, tako da cete morati da mi verujete da ove slike nisam radio u Mayi i posle obradjivao u Photoshopu. Test platforma je Treo u PalmOS verziji. Ekran je rezolucije 320x320 sa 16bit paletom boja (5:6:5). Kolicina memorije je oko 20mb, ali to i nije toliko bitno. |
27.7.2007, 23:06 | #3 |
Deo inventara foruma
|
Re: 3d Engine - Ali za mobilne uredjaje!
PRVI KORAK – CRTANJE POLIGONA
Dakle pocinjemo… moj prvi korak u ovom projektu... sta je ono sto cini jednu 3d scenu, sta je ono sto mi zapravo vidimo na ekranu? To su poligoni. Svaka scena se sastoji iz objekata, svaki objekat se sastoji iz poligona. Za pocetak, ne interesuje me kako cu organizovati scenu, ne interesuje me kako cu organizovati objekte, ne interesuje me (a i tek treba da naucim) kako cu pomerati kameru kroz scenu; interesuje me samo kako cu nacrtati proizvoljno definisan poligon. Na brzaka sam sklepao par stvari, cisto da bih imao sa cime da radim: - da mogu da definisem koordinate vertexa nekog 3d objekta - da mogu da definisem stranice tog objekta (koji vertexi cine koju stranicu) - da mogu te vertexe da rotiram u prostoru oko sve tri ose - da mogu te izrotirane vertexe da transformisem u 2d tacke koje cu prikazivati na ekran Trenutno nije bitno kako ove stvari koje sam do sad uradio rade, a verujem da mogu jos dosta i da se optimizuju; objasnicu ih kada bude bilo vreme za to. Bitno je: da sam dobio te transformisane 2d tacke pomocu kojih cu crtati poligone. Svaki takav poligon se sastoji iz cetiri tacke, a svaka tacka za sada ima: - X koordinatu na 2d ekranu - Y koordinatu na 2d ekranu - BOJA koja se sastoji iz R, G, B komponente i Alfa kanala Bitna stavka o kojoj treba razmisljati. Na koje sve nacine planiramo da crtamo poligone? Na raspolaganju nemamo azdaju od masine, tako da moramo paziti na performanse. Kakve 3d igre postoje sada za telefone? Maximum koji sam ja video jeste texturirani poligon bez osvetljenja ili eventualno sa nekim laznim osvetljenjem (kao npr. Doom II). Tako da sam (opet) za pocetak odlucio da napravim funkcije za crtanje: - tackastih poligona svaka tacka poligona predstavljena je... hmm... tackom (ovo ce se koristiti samo za neka testiranja i debagovanje) - wireframe poligona gde su tacke poligona spojene obicnim linijama http://en.wikipedia.org/wiki/Wire_frame_model - flatshade poligona gde je ceo poligon obojen jednom bojom http://en.wikipedia.org/wiki/Shading (slika pri dnu stranice) - gouraud shade poligona gde svaka tacka ima odredjenu boju i interpoliranjem i mesanjem tih boja dobija se poligon koji nije obojen konstantnom bojom http://en.wikipedia.org/wiki/Gouraud_shading - texture mapped poligona kod kojih se slika lepi na stanicu http://en.wikipedia.org/wiki/Texture_mapping Uradio sam prva cetiri nacina, pre nego sto se bacim na ovaj poslednji (najtezi), hajde prvo da vidimo kakvi su rezultati. Kao primer koristim najprostiji moguci objekat – kocku. Kako vam se cini |
27.7.2007, 23:45 | #4 |
Kekule Mekule
|
Re: 3d Engine - Ali za mobilne uredjaje!
Pa... Kockasto
Ne znam koliko je tesko uraditi kocku na mobile uredjaju, ali verovatno je to dobro sto si do sada postigao. Samo tako nastavi!!! |
28.7.2007, 0:45 | #5 |
Veteran
|
Re: 3d Engine - Ali za mobilne uredjaje!
Ako se ta kocka rotira/pomera da li bi mogao da kazes koliki je fps. Mislim da bi to dalo najbolju sliku koliko je engine trenutno napredovao.
|
28.7.2007, 6:19 | #6 |
Starosedelac
|
Re: 3d Engine - Ali za mobilne uredjaje!
kad zavrsish dajesh source? |
Bookmarks sajtovi |
|
|
Slične teme | ||||
tema | temu započeo | forum | Odgovora | Poslednja poruka |
Direct3D 9 Engine | Geomaster | Programiranje | 21 | 24.10.2008 17:00 |
Koji mi engine preporucujete??? | PeTkO | Pravljenje igara | 8 | 26.7.2007 13:45 |
2d game engine | Damjan | Pravljenje igara | 48 | 22.6.2007 11:35 |
N2D Engine | EclipsE | Pravljenje igara | 4 | 22.8.2006 23:34 |