Page 1 of 4

cbMap - Karttafunktioita 3D-ominaisuuksilla

Posted: Fri Aug 31, 2007 12:21 pm
by Marcoder
Olin jo vanhalle foorumille lähettänyt tilekarttojen käsittelyyn tehdyn funktiopaketin.
Nyt tuo paketti on saanut ominaisuudet jolla tilekartalle voi helposti luoda 3-ulotteisia rakennuksia vanhaan kunnon GTA-tyyliin. Rakennuksia voidaan myös teksturoida.

Imuroi esimerkkiohjelma CoolTown ja kokeile!

Paketti on ollut valmis jo jonkin aikaa mutta KTE on yksinoikeudella tehnyt moottorin päälle demopelin.
Peli löytyy täältä.

Re: cbMap - Karttafunktioita 3D-ominaisuuksilla

Posted: Fri Aug 31, 2007 1:10 pm
by Jonez
Näyttää erittäin hyvältä, tätä tullaan varmasti käyttämään.

No leikin tolla vähäsen ja huomasin pari asiaa:
- Ensinnäkin, talojen korkeus voi olla vain kokonaisluku, mutta se voisi yhtä hyvin olla liukuluku. Periaatteessa turha yksityiskohta, mutta ehkä joku joskus tarvii sitäkin ominaisuutta. Sen saa kuitenkin itsekin helposti muutettua.

- Hieman pahempi ongelma on se, ettei tällä systeemillä voi tehdä taloja "päällekkäin". Ajattele kahta taloa, jotka ovat esim. kulmistaan kiinni toisissaan. Tällaisia on, ja monen muunkin muotoisia. Tällä systeemillä päällekkäin olevat talot bugaavat: matalampi talo piirretään tietyissä kulmissa korkeamman päälle.

- Kolmas ja ehkä kaivattavin ominaisuus voisi olla yksittäisten rakennusten poistaminen. Uudelleenteksturointi onkin jo, joka on erittäin hyvä asia, mutta ajattele esim peliä, jossa voin hyvällä omallatunnolla sinkautella rakennuksia singolla. Jos rakennuksia voisi poistaa ja rakentaa uudelleen, saisi helposti aikaan esim. jonkinlaisen romahdusefektin. Lisäksi tämä mahdollistaisi paketille suunnatun map-editorin (siis kyllä se vieläkin mahdollista on, mutta ei "reaaliaikaisena").

Mutta loppujen lopuksi tämä on erinomainen paketti, joka vetää vertoja jopa cbNetworkille jo helppokäyttöisyytensä takia. Hyvää työtä.

Edit. Ja tästä asiasta en nyt ole varma, kun se vasta juolahti mieleen, mutta olisi hyvä jos objekteja saisi jollain tavalla piirrettyä myös talojen päälle. Tämä olisi erittäin kaivattava ominaisuus.

Re: cbMap - Karttafunktioita 3D-ominaisuuksilla

Posted: Fri Aug 31, 2007 1:24 pm
by Marcoder
Jonez wrote: - Ensinnäkin, talojen korkeus voi olla vain kokonaisluku, mutta se voisi yhtä hyvin olla liukuluku. Periaatteessa turha yksityiskohta, mutta ehkä joku joskus tarvii sitäkin ominaisuutta. Sen saa kuitenkin itsekin helposti muutettua.
Rakennusten dimensiot määritellään tileinä joten siksi kokonaisluku. Katsoin sen olevan selkeämpää näin.
- Hieman pahempi ongelma on se, ettei tällä systeemillä voi tehdä taloja "päällekkäin". Ajattele kahta taloa, jotka ovat esim. kulmistaan kiinni toisissaan. Tällaisia on, ja monen muunkin muotoisia. Tällä systeemillä päällekkäin olevat talot bugaavat: matalampi talo piirretään tietyissä kulmissa korkeamman päälle.
Päällekkäisyydellä tarkoittanet intersektiota etkä korkeussuuntaista päällekkäisyyttä?
Jos rakennukset ovat osittain sisäkkäin niin silloin tulee kyllä ongelmia piirtämisen kanssa. Ongelman voi kiertää tekemällä ensin päärakennuksen ja sitten siipirakennuksen paloista.
Jotenkin näin:

Code: Select all

XXXXXX
XXXXXXWWWW
XXXXXXWWWW
    OOOOOO
X on päärakennusta ja O ja W kaksi erillistä palikkaa jotka muodostavat siipirakennuksen.
Tuo on luonnollisesti purkkaviritys ja tekstuurien kanssa joutuu kikkailemaan.

Sitten on tuo korkeussuuntainen päällekkäisyys. Sen pystyy tekemään. Taitaa olla CreateBuilding:in kolmas parametri jolla ilmoitetaan lattiatason korkeus. Normaalisti se on nolla eli maassa kiinni ja silloin systeemi lisää automaattisesti HIT-kerroksen talon alle. Jos talo on ilmassa niin pelihahmo voi kävellä sen alle piiloon.
Systeemi yrittää epätoivoisesti laskea jonkinmoista piirtojärjestystä mutta joissain tapauksissa se kusee.
- Kolmas ja ehkä kaivattavin ominaisuus voisi olla yksittäisten rakennusten poistaminen.
Tähän tulee jossain vaiheessa päivitystä. KTE:lla oli tuossa demopelissä jo tämänkaltaisia ongelmia joten tulossa on.
Pitäähän vanhat talot purkaa pois kun uusi kartta ladataan.

Re: cbMap - Karttafunktioita 3D-ominaisuuksilla

Posted: Fri Aug 31, 2007 1:31 pm
by iTKEVAnAKKI
KIITOS KIITOS JA KIITOS!!! Nyt saa ns. 3d nopeasti. Mietin vain, että eikö tuota maan ja kameran välistä kulmaa voisi muuttaa jotenkin jolloin saataisiin vielä parempi 3d-tunnelma? :D

OT: Ja tein pienen ja yksinkertaisen funktion talojen lataamiseen jos ei tarvitse erinlaista tekstuuri joka sivulle.

Code: Select all

Function LoadFullBuilding(building,wall,roof)
  SetTexture(building,TX_ROOF,roof)
  SetTexture(building,TX_LEFT,wall)
  SetTexture(building,TX_RIGHT,wall)
  SetTexture(building,TX_FRONT,wall)
  SetTexture(building,TX_BACK,wall)
EndFunction 
EDIT: Ups. olihan siellä jokin "PERSPECTIVE_RATIO#". Ja toivottavasti se tarkoittaa tuota mitä haluan :D Paitsi laitoin vahingossa siihen tasan 5 joka taisi olla "hieman" liikaa. Kone oli jumissa joku 5 min. nyt uus yritys :D

Re: cbMap - Karttafunktioita 3D-ominaisuuksilla

Posted: Fri Aug 31, 2007 1:45 pm
by Marcoder
iTKEVAnAKKI wrote:Mietin vain, että eikö tuota maan ja kameran välistä kulmaa voisi muuttaa jotenkin jolloin saataisiin vielä parempi 3d-tunnelma? :D
Ei voi!

Tällä systeemillä ei ole mitään tekemistä oikean 3d:n kanssa.
Yhtään ainoaa 3d-laskukaavaa ei ole käytetty vaan illuusio perspektiivistä saadaan hyvin yksinkertaisella kertolaskulla.
Jos kameran kulmaa muutettaisiin niin silloin oltaisiin jo oikeassa 3d-maailmassa jossa pelkät illuusiot ei riitä (eikä varsinkaan cb:n tehot).

EDIT:
EDIT: Ups. olihan siellä jokin "PERSPECTIVE_RATIO#". Ja toivottavasti se tarkoittaa tuota mitä haluan :D Paitsi laitoin vahingossa siihen tasan 5 joka taisi olla "hieman" liikaa. Kone oli jumissa joku 5 min. nyt uus yritys :D
Juu, kannattaa säätää aika varovasti sillä pienikin muutos vaikuttaa.
Tuo muuttaa vain perspektiiviä eikä kameran kulmaa maahan nähden.

Re: cbMap - Karttafunktioita 3D-ominaisuuksilla

Posted: Fri Aug 31, 2007 1:54 pm
by iTKEVAnAKKI
Joo okei. Mutta kuitenkin pirun hieno :D Oletko kokeillut kuinka montaa taloa pystyy pyörittämään? :D Vai toimiiko aivan normaalisti? :D

Re: cbMap - Karttafunktioita 3D-ominaisuuksilla

Posted: Fri Aug 31, 2007 2:01 pm
by Marcoder
iTKEVAnAKKI wrote:Oletko kokeillut kuinka montaa taloa pystyy pyörittämään? :D Vai toimiiko aivan normaalisti? :D
En ole kokeillut mutta talojen määrä ei juuri vaikuta suorituskykyyn sillä piirtovaiheessa käsitellään vain näkyviä taloja.
Latausajat tietysti kasvavat. Suurin osa ajasta kuluu tekstuurien valmisteluun mutta systeemi osaa käyttää jo ladattua tekstuuria samankokoisissa seinissä.

Omalla koneella tuo esimerkki pyörii paikasta riippumatta täydet FPS 60.

Re: cbMap - Karttafunktioita 3D-ominaisuuksilla

Posted: Fri Aug 31, 2007 2:34 pm
by Harakka
Ohhoh. Todella vaikuttavaa - aiheutti ihan oikeasti suurimman koskaan koetun WOW-fiiliksen CB:n parissa. Tämä on mahtavaa. Tuli hyvä inspis päälle. 8-)

Systeemi tahmaa välillä ja alkaa sitten pyöriä uudestaan sulavasti. Mistäköhän se johtuu?

Re: cbMap - Karttafunktioita 3D-ominaisuuksilla

Posted: Fri Aug 31, 2007 2:37 pm
by leonarven
Jee... uutta Marcoderia :D

Hieno on ja käyttöön tulee. Mulla oli FPS 17.
Tulooko tämäkin CB SDK:hn?

Re: cbMap - Karttafunktioita 3D-ominaisuuksilla

Posted: Fri Aug 31, 2007 2:47 pm
by Mr.Demolition
UU uuuu! One Saintin lähdekoodi vain uusiksi. Pitää vähän tutkailla tuota kooia, jos vaikka oppisi jotain :D

Re: cbMap - Karttafunktioita 3D-ominaisuuksilla

Posted: Fri Aug 31, 2007 2:48 pm
by Kelli
Loistavaa, tämähän on oikein laadukas systeemi. Kyllä minulla oli tässä kaupunki esimerkissä tasaisesti 60fps, mutta tuossa zombie pelissä oli 30 pintaan. En tiedä oliko 30fps limit tuossa, vai oliko se muuten vain raskaampi.

Re: cbMap - Karttafunktioita 3D-ominaisuuksilla

Posted: Fri Aug 31, 2007 2:53 pm
by Marcoder
Harakka wrote:Systeemi tahmaa välillä ja alkaa sitten pyöriä uudestaan sulavasti. Mistäköhän se johtuu?
Mullakin tuolla toisella koneella tahmaa välillä eli ukko jähmettyy vajaaksi sekunniksi kunnes taas jatkaa kulkuaan.
Tutkiskelin eri prosessien suorittimien käyttöä ja aika-ajoin joku prosessi tekee jotain. Lataa päivityksiä tai jotain. Kone on läppäri jossa Windows 2000.

Tällä koneella (läppäri XP:llä) pyörii täysin sulavasti kaiken aikaa.

Sitten on vielä yksi läppäri jossa on Vista. Tulos on kelvoton.

leonarven wrote:Hieno on ja käyttöön tulee. Mulla oli FPS 17.
Tulooko tämäkin CB SDK:hn?
Aika heikko FPS! Koneen tehot ja käyttis?
SDK:n ylläpito on ollut viime aikoina aika kuralla. Pitäisi ottaa taas itseään niskasta kiinni ja tehdä asialle jotain. :roll:

Kelli wrote: Kyllä minulla oli tässä kaupunki esimerkissä tasaisesti 60fps, mutta tuossa zombie pelissä oli 30 pintaan. En tiedä oliko 30fps limit tuossa, vai oliko se muuten vain raskaampi.
KTE:n zombie-pelissä vesisade ja zombien suuri lukumäärä verottaa suorituskykyä.

Re: cbMap - Karttafunktioita 3D-ominaisuuksilla

Posted: Fri Aug 31, 2007 3:13 pm
by leonarven

Hieno on ja käyttöön tulee. Mulla oli FPS 17.
Tulooko tämäkin CB SDK:hn?
Aika heikko FPS! Koneen tehot ja käyttis?
SDK:n ylläpito on ollut viime aikoina aika kuralla. Pitäisi ottaa taas itseään niskasta kiinni ja tehdä asialle jotain. :roll:
Koneen käyttis on Windows XP Home Edition.
Tehoja:
Prossua 2,66 Ghz, RAM:ia 768 ja näyttis ATI Radeon 9250

Re: cbMap - Karttafunktioita 3D-ominaisuuksilla

Posted: Fri Aug 31, 2007 3:37 pm
by vilQuri
Sanoisin että VAU!! saatan nyt muuttaakkin tekeillä olevan räiskintä pelin koodia :shock:
FPS oli 73 ja hyvin pyöri!

Re: cbMap - Karttafunktioita 3D-ominaisuuksilla

Posted: Fri Aug 31, 2007 3:40 pm
by Mr.Demolition
Pääsinpä nyt tuota tilesettiä ja tilemappia vähän muokkaamaan, ja täytyy sanoa, että koko One Saint menee uusiksi. Yritän vähän opetella tuota CB koodausta (typet ja funktiot pitäisi ainakin opetella). Sitten lisäilen vähän rakennuksia tuonne ja laajennan mappia pikkuhiljaa. Yritän pistää kuvaa kun on pelaaja edes jotenkin valmis.
Keep up the good work!

Re: cbMap - Karttafunktioita 3D-ominaisuuksilla

Posted: Fri Aug 31, 2007 4:07 pm
by Thomazu
Siis WAU!!! Tää siis on jo jotain todella mahtavaa! Tuli kyllä heti vanha kunnon GTA 2 mieleen :lol: Nyt sain kyllä kunnon inspiraation :) täytyy varmaan omistaa viikonloppu koodaukselle ja suunnitelulle :P

Re: cbMap - Karttafunktioita 3D-ominaisuuksilla

Posted: Fri Aug 31, 2007 4:29 pm
by regalis
Uskomattoman hieno! Jonkun on pakko tehdä joku GTA-tyylinen peli tämän pohjalta. :)
Onko tuo miten hidas isoilla kartoilla? Kuoleman pataljoonat -pelissäni on 200 x 300 tilen kokoinen kartta, taitaa hidastua jonkin verran, jos käyttäisin tätä? Muuten kyllä voisi tehdä "3d-talot" siihen...

Re: cbMap - Karttafunktioita 3D-ominaisuuksilla

Posted: Fri Aug 31, 2007 4:37 pm
by Mr.Demolition
regalis wrote:Uskomattoman hieno! Jonkun on pakko tehdä joku GTA-tyylinen peli tämän pohjalta. :)
Onko tuo miten hidas isoilla kartoilla? Kuoleman pataljoonat -pelissäni on 200 x 300 tilen kokoinen kartta, taitaa hidastua jonkin verran, jos käyttäisin tätä? Muuten kyllä voisi tehdä "3d-talot" siihen...
Teen jo ;)

Re: cbMap - Karttafunktioita 3D-ominaisuuksilla

Posted: Fri Aug 31, 2007 4:58 pm
by TheDuck
Mr.Demolition wrote:
regalis wrote:Uskomattoman hieno! Jonkun on pakko tehdä joku GTA-tyylinen peli tämän pohjalta. :)
Onko tuo miten hidas isoilla kartoilla? Kuoleman pataljoonat -pelissäni on 200 x 300 tilen kokoinen kartta, taitaa hidastua jonkin verran, jos käyttäisin tätä? Muuten kyllä voisi tehdä "3d-talot" siihen...
Teen jo ;)
Mäkin :O

Re: cbMap - Karttafunktioita 3D-ominaisuuksilla

Posted: Fri Aug 31, 2007 4:59 pm
by Marcoder
regalis wrote:Onko tuo miten hidas isoilla kartoilla?
Itse kartan koko ei vaikuta suorituskykyyn mitenkään.
Rakennusten määrä on ratkaiseva tekijä ja siinäkin vain ruudulla näkyvien rakennusten määrä.

Huomasin pienen optimointivirheen jonka korjaan jossain vaiheessa.
Ensin määritellään rakennusten piirtojärjestys. Sen jälkeen piirretään vain näkyvät rakennukset.
Parempi tapa olisi ensin tutkia piirretäänkö taloa ylipäänsä ja vain piirrettävät rakennukset osallistuvat piirtojärjestyksen laskentaan.
Vaikutus tuskin on merkittävä mutta vaikutus kuitenkin.