[ARHIIV] mängumeistrid
Pole sisse logitud. [Logi sisse ]
Mine lehekülje algusesse
Prinditav versioon | Telli teema e-mailile | Lisa lemmikutesse  
Lihtne 2D valgustus süsteem
normann
Level 15
Avatar

Liitunud: 28.4.2006
Postitusi: 1528
[EEMAL]




postitati 19.6.2009 20:39 Tsiteeri
Lihtne 2D valgustus süsteem



Kuidas teha lihtsat valgustuse süsteemi(surface põhist soovitavalt) mis ei võtaks fps-i(tuntavalt) alla?
Topdown vaade.
Ei soovi varje, lihtsalt valgustust nt:Tegelase taskulamp,mingi lamp nurgas.
Põhiline et kõik mis ei ole valgustatud alas oleks väga tume(või täiesti must) ja valgus ei läheks läbi seina.

Keegi võiks seletada/teha näite kuidas seda teostada.

-Normann

http://media.kickstatic.com/kickapps/images/40602/photos/PHOTO_7961920_40602_4826691_ap.jpg

Vaata kasutaja profiili Saada kasutajale e-mail Otsi kasutaja postitusi Saada privaatsõnum
icedude
Mr. tl;dr
Avatar

Liitunud: 15.12.2008
Postitusi: 456
[EEMAL]




postitati 19.6.2009 21:00 Tsiteeri


Eh see huvitaks mind ka. Ma kasutaks sellist võtet nagu masking. Midagi annaks välja võibolla mõelda sellega. Olen näinud kuidas enemy sight süsteemid töötavad ja isegi koodi nägin kuskil selle kohta...aga see tundus mõnus math cracking. Kui ise seda välja ei mõtle siis pole koodiga ka midagi suuremat peale hakata. Äkki on mingi lihtsam viis kui matemaatiliselt sellele läheneda?
Emo1: icedude, valter8bit III: võistlus kestab<br>
Vaata kasutaja profiili Saada kasutajale e-mail Otsi kasutaja postitusi Saada privaatsõnum
Crypton

Avatar

Liitunud: 18.12.2005
Postitusi: 1604
[EEMAL]




postitati 19.6.2009 21:04 Tsiteeri


http://crypton.sponest.com/

Blending.gm6
valgus.gm6

Seal peaks midagi olema.

Maze I: CryptonRalli III: Crypton<br>
Vaata kasutaja profiili Külasta kasutaja kodulehte Otsi kasutaja postitusi Saada privaatsõnum
normann
Level 15
Avatar

Liitunud: 28.4.2006
Postitusi: 1528
[EEMAL]




postitati 19.6.2009 21:28 Tsiteeri


Lähen uurin.

EDIT:
Näitest valgus.gm6 oli veidi abi, kuid sellega ei saa olla üle ühe lightsource.
Kas oleks mingi võimalus selle näite järgi teha 2 valgusallikat ja siis nende surfacede valged kohad üheks surfaceks kokku sulatada(valgusallikad ei pea üksteist puutuma ,nii et selle peale ei ole vaja mõelda et koledad ääred jääksid kui 2 valgusallikat üksteise kõrval kohe.)?
Muidu oleks see valgustussüteem minu jaoks ideaalne, ja ka näeb hea välja.

http://media.kickstatic.com/kickapps/images/40602/photos/PHOTO_7961920_40602_4826691_ap.jpg

Vaata kasutaja profiili Saada kasutajale e-mail Otsi kasutaja postitusi Saada privaatsõnum
normann
Level 15
Avatar

Liitunud: 28.4.2006
Postitusi: 1528
[EEMAL]




postitati 20.6.2009 15:02 Tsiteeri


Kellegil ideid kuidas asja lahendada?
http://media.kickstatic.com/kickapps/images/40602/photos/PHOTO_7961920_40602_4826691_ap.jpg

Vaata kasutaja profiili Saada kasutajale e-mail Otsi kasutaja postitusi Saada privaatsõnum
Crypton

Avatar

Liitunud: 18.12.2005
Postitusi: 1604
[EEMAL]




postitati 21.6.2009 09:08 Tsiteeri


Kokku sulatada...
see tähendab et toimuks nö eelrenderdamine, et kõik valgusallikad üheks spriteks põhimõtteliselt?
Eraldi valgusallikaid ei mõtle manipuleerida?

Maze I: CryptonRalli III: Crypton<br>
Vaata kasutaja profiili Külasta kasutaja kodulehte Otsi kasutaja postitusi Saada privaatsõnum
icedude
Mr. tl;dr
Avatar

Liitunud: 15.12.2008
Postitusi: 456
[EEMAL]




postitati 21.6.2009 09:28 Tsiteeri


Minumeelest kõige keerulisem jama selle asjaga on just maailma objektid ja seinad millest valgus läbi ei tohi paista. See valguse asi on kökimöki, isegi üheks spriteks kökimöki. Aga, et asi näeks välja nagu 3d aga tegelt on topview 2d. Ma mõtlesin normann midagi säärast silmas peab. Ja ma isegi mõtlesin vist välja kuidas sellist effekti saab ilma suurema matemaatikata ja valguse tugevuse real time muutmisega. Nagu ma juba ütlesin...masking on lahendus. Kui tööle saan siis annan teada...aga põhimõtteliselt ma pole kindel, kas FPS kadu õigustab ennast ära.
Emo1: icedude, valter8bit III: võistlus kestab<br>
Vaata kasutaja profiili Saada kasutajale e-mail Otsi kasutaja postitusi Saada privaatsõnum
normann
Level 15
Avatar

Liitunud: 28.4.2006
Postitusi: 1528
[EEMAL]




postitati 21.6.2009 11:32 Tsiteeri


Tsitaat:
Tsitaat: Crypton
Kokku sulatada...
see tähendab et toimuks nö eelrenderdamine, et kõik valgusallikad üheks spriteks põhimõtteliselt?
Eraldi valgusallikaid ei mõtle manipuleerida?


Valgustite surfaced kokku sulatada jah.

http://media.kickstatic.com/kickapps/images/40602/photos/PHOTO_7961920_40602_4826691_ap.jpg

Vaata kasutaja profiili Saada kasutajale e-mail Otsi kasutaja postitusi Saada privaatsõnum
mängur
Level 2


Liitunud: 21.10.2007
Postitusi: 25
[EEMAL]




postitati 24.6.2009 01:05 Tsiteeri


tere gmid

Et siis sissejuhatuseks niipalju et ma pole gm iga kaua aega tegelend ega tea gm uuemast versioonist midagi. hetkel tegelen flash mängude aretamisega.
aga väike küss
1) kas gmis saab joonistada polygoni põhiseid vector sprite?
2) kas gmis on gradient draw võimalus.

kui need kaks asja olemas ei tohiks midagi väga rasket olla

Fame Maker

Vaata kasutaja profiili Külasta kasutaja kodulehte Otsi kasutaja postitusi Saada privaatsõnum Vaata kasutaja MSN-i
icedude
Mr. tl;dr
Avatar

Liitunud: 15.12.2008
Postitusi: 456
[EEMAL]




postitati 24.6.2009 10:46 Tsiteeri


Oletame, et need 2 asja ongi võimalikud, siis kuidas sa seda teeks. Ise jagan flashi ja actionscripti piisavalt hästi, et probleeme nagu pole küll, ette sattunud. Nagu tavaline java umbes. Aga see selleks. Siis kuidas sa lahendaks selle probleemi ilma matemaatikata. Ma teen sellele asjale demo ja pragu on mul puht matemaatilisi funktioone, kus sin ja cos commandid söövad mõnuslt prose.(...tegemist on siis ka väga ultimate asjaga) Ja light collision algoritmidest ma ei hakkagi rääkima.

http://www.dmgamez.pri.ee/foorum/upload/light.png
Need kollased täpid on siis soft shadow. Saab kasutada hand drawn objecte, valguse tugevus reguleeritav ja raadius. Saab kasutada mis iganes sectorit. Ja anda Eri valgustus näitajad sektorile. Et seljataha näitab nõrgemalt näiteks. Ja valgus on siis custom reguleeritava gradiendiga. Sellist asja sa elusees flashis teha ei saa nii et asi oleks 800x600 ja jookseks 30 raami sekundis ja võimaldaks audio ja muu graafika joonistamist.

Aniway, ikkagi kui sul väga häid mate teadmisi pole siis sa ka polygoni põhiseid vector sprite-ega jääd jänni. Üldiselt kui sul vastavad teadmised olemas siis üldiselt ei küsita sellist küsimust.

Aga see eelnev kõik kehtib realtime liikuva valgus allika kohta.(taskulamp)

Nt kõige lihtsam võimalus on kasutada ennem valmis tehtud mappe. Mille peale sa joonistad musta pildi ja jätad augud ainult sinna kus tahad et läbi paistaks. Kus sul siis lambi valgus on png formaadis pilt millel on alpha kanal. siis mängus joonistad selle lambi kohal koguaeg ja siis paistab nagu päris ja saad valguse panna paistma nii nagu ise tahad. Aga mehe ümber sa nii lihtsalt seintest mitte läbi paistvat valgust ei joonista. Ja kui sul on ruumis mitu erinevat valgusttit siis pead juba matemaatiliselt hakkama mustade ruutudega maailma lappima, et ikka ruum tume paistaks ja siis saad ka reguleerida seda kui tumedat maailma sa tahad. Jne. Ma loodan , et said ikka aru mida ma silmas pidasin.
Emo1: icedude, valter8bit III: võistlus kestab<br>
Vaata kasutaja profiili Saada kasutajale e-mail Otsi kasutaja postitusi Saada privaatsõnum
mängur
Level 2


Liitunud: 21.10.2007
Postitusi: 25
[EEMAL]




postitati 24.6.2009 17:42 Tsiteeri


polygon sprited pole iseenesest väga keerulised

anyway
tegin ühe näite mida ma polyspritede all mõtlesin
seda polysprite mis genereeritakse saaks siis kuidagi blendida jms, aga seda ma pole teind, ei oska ega viitsigi :D

kuidas asja hajutada.....ei tea....küllap jääks see ka gradientide teha
näites pole ühtegi siinust kasutatud.
taimer mis valgust uuendab on 50 ms delay.

suurem punane täpp on valguse allikas, väiksem on sihtmärk.
tegemis on siis spot light tüüpi valgusega.
muuta saab arvutuste täpsust, ja valgus vihu laiust.
valgusallikat ja sihtmärki saab Click-Draggida
http://web.zone.ee/gamenet/applets/Viewer/FlashLight.html

Fame Maker

Vaata kasutaja profiili Külasta kasutaja kodulehte Otsi kasutaja postitusi Saada privaatsõnum Vaata kasutaja MSN-i
icedude
Mr. tl;dr
Avatar

Liitunud: 15.12.2008
Postitusi: 456
[EEMAL]




postitati 24.6.2009 18:40 Tsiteeri


Eh. See oli päris fun demo. Aga, gm-is sa seda ilma sin ja cos ei teeks. Ja see et sa koodis neid ei kasuta ei tähenda, et flash neid oma funktioonides ei kasuta. Kõik, kus on ringliikumine, ring või mis iganes...alati on Sin ja cos. Ja on võimalik kasutada polyspritede gm-is. Ja flashis oli vist mingi vector collision värk olemas ka, või tegid ise mingi funktiooni line vs line collision?
Aga see demo oli natuke mööda. Ma kasutan sama asja vaenlaste nägemis süsteemina mudu.

1) sa tegid lightning sprite, mis oli alpha 0.5 peal valge. See sprite peaks olema masklayeris. Mis siis ei omaks mingit värvi vaid ainult alpha väärtust. Et ei toimuks lightblendi alumiste layeritega. Ja alphablend oleks siis mingi musta peal oleva layeriga.

2) Nii, tee nüüd 360 kraadi sama asi ja 5 erineva lightning sourceiga.

3)Dünaamilist masking blendi väga lihtsalt gm-is ei tee.

4) Ja gradienti pole ka just kõige lihtsam light sourcile panna, mis on liikuv.

5) Ja kas ma minisin, kaks eelmist punkti on suecide FPS-i vaatevinklist.
Emo1: icedude, valter8bit III: võistlus kestab<br>
Vaata kasutaja profiili Saada kasutajale e-mail Otsi kasutaja postitusi Saada privaatsõnum
mängur
Level 2


Liitunud: 21.10.2007
Postitusi: 25
[EEMAL]




postitati 24.6.2009 21:52 Tsiteeri


sin ja cos koodis pole. ei kasuta ühtegi flashi sellist funktsiooni.
mu näites pole ka mingit ring liikumist.

kui teha sama asi 360 kraadi, siis oleks vaja kas max 1 sin/cos paari või saaks ka ilma, tehes selle näite nt 10 nurgaliseks. asi oleks küll natuke kandiline aga poleks hullu.
ja mingeid joonefunktsioone ma ka vist ei kasutanud.
enda aretatud hardcode funktsioonid.

Fame Maker

Vaata kasutaja profiili Külasta kasutaja kodulehte Otsi kasutaja postitusi Saada privaatsõnum Vaata kasutaja MSN-i
icedude
Mr. tl;dr
Avatar

Liitunud: 15.12.2008
Postitusi: 456
[EEMAL]




postitati 25.6.2009 07:33 Tsiteeri


Eh...peab siis täpsemalt vaatama. Aga see väike punane ring. Mis valemiga see valguse alati hoiab samade mõõtudega ja pöörab mõlemat vastas pungkti ümber oma telje? By the way, sinus on C/A või C/B ja tangens on A/B.
Õigemini ma peaks täpsustama. Mitte sin ja cos ei võta prose vaid ringi raadiuse, diameetri jne arvutamine. Diameetri puhul tuleb kasutada Sqr() funktiooni, kuid ühe ringi jaoks ei tohiks tõesti suuremat probleemi olla. Mul oli ta sellepärast, et ma tegin particle engineit kus raadiuse arvutamine sai probleemiks prosele.
Aga okey, kui sa mingeid joone funktioone ei kasuta, siis kuidas sa poligon to polygon collisionit kontrollid??? Seriously?? Kas vector matemaatika pole siis joon vs joon:D:D. Camoon? Ja flash kasutabki ainult ainult joon vs joon. Kui kasutad raster graafikat siis action script 2.0 ei kontrolligi pixel perfect collisionit vaid pead kasutama collisionboxe.
Emo1: icedude, valter8bit III: võistlus kestab<br>
Vaata kasutaja profiili Saada kasutajale e-mail Otsi kasutaja postitusi Saada privaatsõnum
h0lx
Kohalik sitapea
Avatar

Liitunud: 10.4.2006
Postitusi: 1826
[EEMAL]




postitati 25.6.2009 09:42 Tsiteeri


1. siinus(alfast) on a/c ehk (y/r) mitte c/a ja koosinus(alfast) b/c ehk (x/r), mitte c/b
2. siinuse arvutamine on keerulisem, kui üks jagamistehe
Platform II: -DMI-; H0lx&jorssJõulumäng I: h0lx&jorss
Vaata kasutaja profiili Otsi kasutaja postitusi Saada privaatsõnum
icedude
Mr. tl;dr
Avatar

Liitunud: 15.12.2008
Postitusi: 456
[EEMAL]




postitati 25.6.2009 13:02 Tsiteeri


Jup. My bad. Sin<=1 cos<=1. Jah, ei saa tõesti sin ja cos nii lihtsalt. Kui sul C ja A juba olemas siis üx jagamine:D. Aga see oleneb kust maalt sa seda arvutama hakkad. Aga tõesti, kui alustad x,y kordinaatidega siis kisub asi väga aeglaseks ja pikaks sest vahepeal ju ka sqr() sees. Mudu kordinaate kasutades oli vist isegi kiirem kui siinus kraadidest runtime-il saada.
Emo1: icedude, valter8bit III: võistlus kestab<br>
Vaata kasutaja profiili Saada kasutajale e-mail Otsi kasutaja postitusi Saada privaatsõnum
mängur
Level 2


Liitunud: 21.10.2007
Postitusi: 25
[EEMAL]




postitati 25.6.2009 13:48 Tsiteeri


oi ei....sin ja cos küll lihtsalt jagamine pole. ma kunagi huvi pärast tahtsin teada mis krdi valemiga sin ja cos leitakse. tehgelt polegi mingit valemit, on olemas mingisugused jõhkralt suured tabelid kust otsitakse sinu sisestatud nurgale kõige lähim vaste. asi polegi 100% täpne. uuri kusagil wikist vms. kõva astendamiste ja sqrt´imise jama on tegelt selle sin() fun taga.
see A/B peaks olema joone tõus. sellest võtad hiljem sin() ja saad nurga.

ja joone funktsioone ma ei kasuta. kui kasutaks, läheks asi kõvasti kiiremaks. mu funktsioon oli lihtsalt näide, sellepärast ma ka kiiruse pärast ei põdend ja tegin takistuse leidmiseks iga x piksli tagant pikki joont collision tsekki. ja neid jooni(nö valguskiiri saab ka lisada või vähemaks võtta) sealt ka resolutsioon, kvaliteet.

hetkel kasutab kogu näide vist ühte sqrt fun´i, aga ka selle saaks ära kaotada, kuidagi sisse hardcodeda või teha mingid ümardused.


ja kuidas on valgus kogu aeg ümber oma telje.
ok....niisiis algoritm näeks välja enam vähem selline.
1) alguspunktist tõmmatakse mõtteline joon lõpp-punkti.
ehk joon on selline ( p1.x,p1.y ja p2.x, p2.y)
p1 ja p2 on punased ringid.
2) mõttelise joonega leitakse täpselt 90 kraadise nurga all olev joon, mis on etteantud valgus vihu laiuse pikkusega
3) ristuv joon jagatakse X resolutsiooni järgi punktideks, st leitakse x arv punkte sellel joonel
4) valguse alguspunkist tõmmatakse mõtteline joon igasse ristuval joonel olevasse punkti, tehes iga X pixli järel collision tsekki.
5)kui collision tsekk leiab takistuse, lisatakse kokkupõrke punkt PolygonPoints arrayse mille järgi hiljem joonistatakse sprite.
6) kui takistust ei leita, lisatakse ristuval joonel parasjagu kontrollitav punkt arraysse, st kaugeim punkt kuhu valgus paistab.
7) joonistatakse sprite kui miski ekraanil muutub.
8) võib teha ka nö valguse BoundingBox´i ehk siis valgust arvutatakse uuesti kui miski selle BoundingBox´i alas liigub. ehk siis statsionaarsed lambid kusagil laes ei võtaks liigselt powerit vaid ainult siis kui player sinna alasse jõuab.

Fame Maker

Vaata kasutaja profiili Külasta kasutaja kodulehte Otsi kasutaja postitusi Saada privaatsõnum Vaata kasutaja MSN-i
jnt
Veebiguru
Avatar

Liitunud: 3.2.2005
Postitusi: 731
[EEMAL]




postitati 25.6.2009 16:48 Tsiteeri


mängur, sin, cos, tan on küll erinevate kaatetite ja hüpotenuuside omavaheline suhe. Ja seda päris kindlasti. Ja sõna "suhe" näitabki, et tegemist ON lihtlabase jagamisega. ;)
GigAHerZ Web - http://jnt.pri.ee/
Banner Exchange - http://be.jnt.pri.ee/
Mission Possible - http://web.zone.ee/mispos/
Black Nova Traders - http://bnt.jnt.pri.ee/
Aktsioon I: jnt
Vaata kasutaja profiili Külasta kasutaja kodulehte Otsi kasutaja postitusi Saada privaatsõnum
icedude
Mr. tl;dr
Avatar

Liitunud: 15.12.2008
Postitusi: 456
[EEMAL]




postitati 25.6.2009 18:23 Tsiteeri


ta arvatavasti pidas silmas sin() ja cos() funktioon aga kasutas siinuse ja koosiinuse lühendeid ilma funktiooni märgita, ja pole aru saanud, et sin ja sin() on kaks eri asja. Üks on A/C ja teine on sin(kraad)=A/C ehk A/sin(kraad)=C
Emo1: icedude, valter8bit III: võistlus kestab<br>
Vaata kasutaja profiili Saada kasutajale e-mail Otsi kasutaja postitusi Saada privaatsõnum
mängur
Level 2


Liitunud: 21.10.2007
Postitusi: 25
[EEMAL]




postitati 25.6.2009 23:33 Tsiteeri


logish et ma pidasin silmas sin() funktsiooni. ega see jagamine arvutil üle jõu ei käi, ikka nurga leidmine.
aga see selleks, edu lahenduse välja nuputamisel.

Fame Maker

Vaata kasutaja profiili Külasta kasutaja kodulehte Otsi kasutaja postitusi Saada privaatsõnum Vaata kasutaja MSN-i
normann
Level 15
Avatar

Liitunud: 28.4.2006
Postitusi: 1528
[EEMAL]




postitati 25.6.2009 23:37 Tsiteeri


Eriti midagi teemakohast(sin cos värk) mul pole praegu öelda, aga actionmängude võistlusel näete millega ma hakkama saan/kas saan.
Mõtlesin nende surfacede blendimise all seda et igal valgusti teeb mingi 64x64 surface enda kohale ja mängu alguses sulatatakse need kõik üheks suureks surfaceks ja täidetakse tumedad kohad(ilma surfaceta alad) musta värviga.
Seda loomulikult sellepärast ,et level editing oleks lihtsam/võimalik.


BTW: Kuidas sai teksti kirjutada ntx. view-i vasakust äärest 32 pikslit paremale, pole seda koodi meeles ega kuskilt ka võtta.
Edit:juba sain.

http://media.kickstatic.com/kickapps/images/40602/photos/PHOTO_7961920_40602_4826691_ap.jpg

Vaata kasutaja profiili Saada kasutajale e-mail Otsi kasutaja postitusi Saada privaatsõnum

Hetkel loevad seda teemat:
Mitte ühtegi - 1 külaline

Mine lehekülje lõppu





Foorumi algbaas põhineb XMB mootoril, modifitseeritud Valter Pundi poolt
Kodulehekülg on tehtud Valter Pundi poolt vpundi ät gmail punkt komm