Tilekarttaeditori - Open Source

Jaa meneillään olevat projektisi tai valmiit pelit muun yhteisön kanssa täällä.
iTKEVAnAKKI
Advanced Member
Posts: 335
Joined: Tue Aug 28, 2007 3:55 pm
Location: Siellä jossain

Tilekarttaeditori - Open Source

Post by iTKEVAnAKKI »

Eli tällänen yhteinen projekti. Eli tarkotuksena olis saada ceebeelle mahdollisimman hyvä karttaeditori.

Aluks voitais vaan kattoo kuka haluis tehä "pohjan" koko projulle?

SPuntten viestissä "ohjeet" ;)
Last edited by iTKEVAnAKKI on Mon Apr 07, 2008 8:39 pm, edited 1 time in total.
Projektit:
Joku projekti meneillään... Mitähän siitäkin tulee ;)
SPuntte
Tech Developer
Tech Developer
Posts: 650
Joined: Mon Aug 27, 2007 9:51 pm
Location: Helsinki, Finland
Contact:

Re: Tilekarttaeditori - Open Source

Post by SPuntte »

Kannattaisikohan ainakin aluksi keskustella aiheesta vähän enemmän:
- millä kielellä toteutetaan
- käyttöön valmis CB'n til-formaatti vai joku muu? Kuka tekee uuden formaatin käyttö kirjaston CB'lle? vai molemmat?
- kriittisten kysymysten vastausten selvittyä joku roadmap koko projektille:
* kuka tekee ja mitä tekee
* miten tehdään
* koodirakenteiden standardointi ettei projekti kuole sekavuuden takia
* aikataulua/tavoitteita

Itse en kannata alustaksi CB'a sen tehottomuuden ja epävakauden vuoksi. Uutta karttaformaattia tuskin kannattaa alkaa väsämään, siitä tulee väkisin raskas.

Sen perusteella, minkä verran näin CB-Draw:n kehitystä, sanoisin, että kunnollista tästä ei saada sillä metodilla. Tosin jos joku osaava tekee erinomaisen pohjan, saatan harkita mielipiteeni muuttamista.

EDIT:

TYPOO, korjattu

CoolBasic henkilökuntaa
Tech-kehittäjä
CoolBasic Classic, Cool VES

CoolPhysicsEngine | MissileSystem | Jana-ympyrä -törmäys | cbSimpleTexture | CoolCPLX
Koodiapina
Forum Veteran
Posts: 2396
Joined: Tue Aug 28, 2007 4:20 pm

Re: Tilekarttaeditori - Open Source

Post by Koodiapina »

Itse olen valmis liittymään, kuten jo offtopicin puolella kerroin. En ole tutustunut tilekarttojen toimintaan, mutta osaan koodata (G)UI:ta ja minulla on kokemusta karttaeditorin teosta muuten.
SPuntte wrote:Itse en kannata alustaksi CB'a sen tehottomuuden ja epävakauden vuoksi.
Joo mutta tähän projektiin liittyykin vain ne jotka kannattavat ;) Onhan niitä parempiakin kieliä, mutta CB:n ansiosta useammat (näiltä foorumeilta) voisi liittyä projektiin.
TheFish
Developer
Developer
Posts: 477
Joined: Mon Aug 27, 2007 9:28 pm
Location: Joensuu

Re: Tilekarttaeditori - Open Source

Post by TheFish »

Grandi wrote:Joo mutta tähän projektiin liittyykin vain ne jotka kannattavat ;)
Elikkä ne "aloittelevat" koodaajat, jotka eivät ole vielä menettäneet uskoaan cb:n kaikkivoipaisuuteen. Saattaahan siihen tulla joku gurukin mukaan, mutta veikkaisin, että suurin osa pro-tason cb:läisistä jättää sikseen.
CoolBasic henkilökuntaa
Kehittäjä
SPuntte
Tech Developer
Tech Developer
Posts: 650
Joined: Mon Aug 27, 2007 9:51 pm
Location: Helsinki, Finland
Contact:

Re: Tilekarttaeditori - Open Source

Post by SPuntte »

TheFish wrote:
Grandi wrote:Joo mutta tähän projektiin liittyykin vain ne jotka kannattavat ;)
Elikkä ne "aloittelevat" koodaajat, jotka eivät ole vielä menettäneet uskoaan cb:n kaikkivoipaisuuteen. Saattaahan siihen tulla joku gurukin mukaan, mutta veikkaisin, että suurin osa pro-tason cb:läisistä jättää sikseen.
CBhän on nykyiselläänkin aivan loistava tuote suomalaisille nuorille koodauksen aloittamiseen!

Se, etten kannata CBtä tämän toteuttamiseen, ei tarkoita, etten voisi projektiin liittyä. Ajattelin vain, että jos tätä ihan tosissaan aletaan tekemään, sitä ei tehdä CB'llä, vaan joku 'guru' tosiaan tekisi sen jollain tehokkaammalla kielellä, kuten C sharp'lla tai VisualBasic'lla. Itseäni en kutsuisi guruksi. Nimittäin kun olen liian laiska ja mukavuudenhaluinen opettelemaan ensisilmäyksellä heprealta vaikuttavaa kirjasto-ohjelmointia ja muistinhalintaa. Lisäksi en ole julkaissut htään CB-projektia, taitoja kyllä riittäisi pitkälle, vaikka sen itse sanonkin.

Mitä minun osallisuuteeni tulee, voisin väittää olevani hyvä tekstin tuottaja, eli voisin jotain dokumentaatiota väsätä, kun äkshötmöl ja seeäsässäkin jotenkin sujuvat. Tosin kaikki riippuu siitä, miten laiska satun olemaan.. Koodauksessa voisin myös auttaa, esimerkiksi koodin siisteydestä ja jäsentelystä minulla on varmasti jotain sanottavaa :mrgreen:

Graafisen käyttöliittymän toteutuksesta (koodauspuolesta) minulla ei juuri ole kokemusta, mutta sen toimintamekaniikkaa voisin kyllä olla tekemässä. CB:ssä minulla on viimeajoilta eniten kokemusta TYPE-rakenteista ja funktioista. Siis olen ConvertToType()- ja ConvertToInteger()-funktioiden kanssa kuin kotonani. Lisäksi sellaista jotain satunnaista näpräystä osaan, kuten vaikka Homebrew FrameLimit jne.

Toki voisin sitä ihan perustustakin alkaa rakennella, jos saisin jonkun kohtalaiset taidot ja mieluiten keskitasoa paremman kokemuksen omaavan tyypin/porukan kaveriksi. Ensin täytyisi kyllä pitää jokin ideariihi, että mitä ohjelmalta halutaan, sitten siitä, miten toteutetaan. Esim: onko jokaiselle työkalullensa oma erillinen (laaja) funktionsa, vai kootaanko jokin matalan tason kartan editointiin tarkoitettu funktiokokoelma, joita työkalut kutsuvat tarvitsemallaan tavalla, jne?

Mutta jospas keskitytään sisältöön ensin. Laittakaapas siis listaa siitä, mitä ominaisuuksia toivoisitte ohjelmalta. Ja niitä viestejä, joissa on yksi lause ja siinä yksi toivottu ominaisuus, ei kaivata. Kiitos.
EDIT:

Tässäpä vähän sitä omaa toivomuslistaani (Enemmän ja vähemmän realistisia ehdotuksia):
- nopeus, ei syö kaikkea suoritintehoa
- selkeä, nopea ja tyylikäs käyttöliittymä
- automaattitallennus todennäköisistä salamyhkäisistä MAVeista johtuvien "tietokone ulos ikkunasta" -efektien välttämiseksi tai ainakin minimoimiseksi ( :twisted: )
- helppo systeemi kartan laajentamiseksi mihin tahansa suuntaan
- työkalu tietyn tilen korvaamiseksi toisella
- "patternieditori", jonka avulla kartalle saa lisättyä yhdellä klikkauksella mielivaltaisia tiiliyhdistelmiä, jotka siis rakennetaan etukäteen tässä työkalussa
- mspaint-tyylinen täyttötyökalu
- järjestelmä, jolla datakerroksen eri luvut saa "kommentoitua" eli käytännössä vaikkapa til-formaattiin kirjataan karttadatan jälkeen selitykset eri data-arvoille.

Lisää tulee, kun keksin

CoolBasic henkilökuntaa
Tech-kehittäjä
CoolBasic Classic, Cool VES

CoolPhysicsEngine | MissileSystem | Jana-ympyrä -törmäys | cbSimpleTexture | CoolCPLX
User avatar
Jare
Devoted Member
Posts: 877
Joined: Mon Aug 27, 2007 10:18 pm
Location: Pori
Contact:

Re: Tilekarttaeditori - Open Source

Post by Jare »

Itse editoriin minulla ei ole sinänsä ehdotettavaa (paitsi tuo jo mainittu kentän laajentaminen mihintahansa suuntaan).

Sen sijaan minulla on ehdotuksia karttaformaattiin:
-Pohjana cb:n tilemap-formaatti, ja .til-tiedoston rakenteeseen teemme omia lisäilyjä
-Kun .til (keksitään sille kuitenkin jokin toinen pääte, jottei sekoitu tavalliseen tilemap-tiedostoon) ladataan, siitä riisutaan kaikki lisätyt rakenteet jne. (ja käsitellään nämä samalla), jonka jälkeen annetaan cb:lle ladattavksi alkuperäisformaatissa oleva tilemap.
-Yhdistämällä uudet muutokset .til-tiedostoon, vältymme ylimääräiseltä tiedostolta.

Formaatin uusia ominaisuuksia voisivat olla:
-Rajaton määrä data-kerroksia. Datakerrosten tietotyypin saisi valita, joko Integer (kuten nykyään), Float, Short tai Byte. Useilla data-kerroksilla saamme datasta paljon käyttökelpoisemman, kun yhteen tileen saa talletettua useita arvoja. Tietotyypin valitseminen taas auttaa pienentämään tiedostokokoa siinä tapauksessa, että data-kerroksissa tarvitaan käyttää vain lukuja väliltä 0-255 (tuo oli vain esimerkki). Float ei varsinaisesti pienennä tiedostokokoa, mutta joku saattaa sillekin löytää käyttötarpeita. Stringiä ei tähän oteta, koska stringin koko vaihtelee, jolloin formaatin lukeminen olisi vaikeaa ja hidasta, kun elementtien paikkoja ei voida suoraan laskea matematiikalla. Toki lyhyitä stringejä voisi myös käyttää, jos niiden pituus rajataan. (Tosin esim. Integerillä voidaan toteuttaa nelikirjaiminen string tarpeen vaatiessa).
-Rajaton määrä back- ja over-kerroksia. Teknisesti nämä toimisivat lähes niin kuin datakerrokset, eli sisältäisivät tilenumeron. Kentän latausvaiheessa vain tehtäisiin niin, että kun useita tilejä on päällekkäin yhden tilen kohdalla, tehdään tilesettiin uusi tile, joka olisi päällekkäisten tilejen yhdistelmä. Tällaiset lisätilet eivät siis päätyisi tileset-tiedostoon, vaan ne generoitaisiin ohjelman muistissa olevaan tilesettiin kartan latauksen yhteydessä.

Mitä saavutamme näillä? Enemmän tile- ja datakerroksia yhdistettynä cb:n nykyiseen, nopeaan tilekarttamoottoriin. Enemmän tilekerroksia mahdollistaa yksityiskohtaisemman grafiikan, esim. lattia, jonka päällä on pöytä, jonka päällä on kirja, jonka päällä on maljakko. Kentän latausaika tosin pitenee, mutta muuten homman ei luulisi olevan paljoakaan raskaampi - yhdistelmätilejen ansiosta. Ylimääräiset datakerrokset taas olisivat luettavana taulukossa.

Mitä mieltä olette?

Edit:
Olisin itse kiinnostunut kehittämään sekä editoria, että formaattia. Aikani vain ei taida riittää. Suunnittelussa voin kuitenkin ehkä olla avuksi.
User avatar
Jonez
Devoted Member
Posts: 575
Joined: Mon Aug 27, 2007 8:37 pm

Re: Tilekarttaeditori - Open Source

Post by Jonez »

Ite oon joskus suunnitellu sellaista tilekarttaeditoria, joka pitäisi sisällään seuraavantyyppisiä piirteitä:

- "Huone-työkalu", jonka avulla voit editorissa vetää laatikon ja ohjelma osaa 1. Asettaa oikeat tilet seiniin ja kulmiin, sekä asettaa näihin hit-kerroksen. Ja 2. Asettaa oikeanlaisen taustatilen. Vaihtoehtoja voi olla useita, joista ohjelma arpoo. Näin seinästä saa nopeasti monipuolisen.
- "Tie-työkalu", jota käyttämällä voi helposti tehdä teitä, jokia, putkistoja jne. vain vetämällä hiirtä. Ohjelma osaa katsoa minkälainen tile tulee esim. t-risteykseen, kulmiin jne.
- "Random-työkalu", jota käyttämällä ohjelma arpoo tietyistä samantyyppisistä tileistä yhden. Näin saa esim. monipuolista maastoa.
- "Objekti-työkalu": Yksinkertaisesti annetaan tileille suhteelliset koordinaatit (toisiinsa nähden). Kun valitaan yksi tile, osaa ohjelma lisätä muut tilet siihen ympärille, ihan sama missä ne muut tilet sijaitsevat siinä tilesetissä. Näin saadaan esim. taloja rakennettua yhdellä klikkauksella. Nyt ajattelette: Talon voi piirtää suoraan tilesettiin. Se on totta, mutta aina tämä ei ole mahdollista. Lisäksi tällä työkalulla voidaan käyttää esim. yhtä ikkunaa, ovea, rikkoutunutta tiilenpalasta ym. useassa eri rakennuksessa ilman että kyseinen tile piirretään tilesettiin monta kertaa.

Toteutus:
Periaatteessa kaikki toteutetaan näin: Editorin käyttäjä voi asettaa omaa dataa tilesettiin. Kun sitten käytetään tiettyä tileä, tarkistetaan siinä oleva data, jonka perusteella ohjelma tunnistaa miten sitä käytetään. Tietenkin on pakko olla mahdollisuus käyttää tilejä ilman että ohjelma sekaantuu asiaan mitenkään.

Huone-data:
A1, vaakaseinä, A2, pystyseinä, A3 - A6, kulmat. Jos on esim. useampi A1, ohjelma arpoo niistä yhden. Jos halutaan monia eri huone-tilejä jotka eivät saa sekoittua A-huoneen kanssa, niille annetaan yksinkertaisesti arvo B1, C1 jne.

Tie-data:
Tajusitte varmaan jo idean. Eli A1, A2, B1, B2, tai vaikka Asuora, Bkulma1, jos ne ovat parempia.
Random-datan toteutukseen ei paljoa mielikuvitusta tarvita... Objekti-data toimii myös samoilla periaatteilla.

Näitä työkaluja vaaditaan tietenkin vain editorissa. Ne eivät nosta itse map-paketin kokoa mitenkään. Mutta helpottaa suunnattomasti mapin rakentelua.

Saattoi olla muutakin jota en vain muista...
-Vuoden 2008 aloittelijan ystävä -palkinnon voittaja-
Image <- protestipelikilpailun voittaja.
Space War
iTKEVAnAKKI
Advanced Member
Posts: 335
Joined: Tue Aug 28, 2007 3:55 pm
Location: Siellä jossain

Re: Tilekarttaeditori - Open Source

Post by iTKEVAnAKKI »

Ite toivoisin:
-Huone-työkalua niinkuin jonez, mutta eniten siinä sitä, että seinien kohdalle tulisi automaattisesti törmäyskerros.
-Kaikille "vanhoille" työkaluille täyttö systeemiä(eli että tietyn alueen voi vaikka täyttää datakerroksella)
-Nopeampaa poistotyökalua, eli vaikka hiiren kakkosnapilla
-Ctrl+c/v systeemiä ;) paitsi sellanen taitaa olla jo, mutta ei tilegenissä.
-Automaatti tallennusta ;) cbn takia...
Projektit:
Joku projekti meneillään... Mitähän siitäkin tulee ;)
User avatar
Jare
Devoted Member
Posts: 877
Joined: Mon Aug 27, 2007 10:18 pm
Location: Pori
Contact:

Re: Tilekarttaeditori - Open Source

Post by Jare »

iTKEVAnAKKI wrote: -Automaatti tallennusta ;) cbn takia...
Niin ja automaattitallennus myös, vaikka editoria ei tehtäisi cb:llä. Mikä tahansa ohjelma voi kaatua. Samoin kone voi sammua (esim. kannettavani sammuu joskus aivan yllättäen, lieneekö ongelmana lämpö vai virransyöttö...).

Nuo yllä mainitut työkaluideat ovat kaikki hyviä. Huoneista tuli vielä mieleeni, että näppärää voisi olla, mikäli työskentelyvaiheessa olisi mahdollista tehdä huone kokonaan uuteen tilemappiin (siis mahdollistahan tuo on toki nytkin). Sitten kun huone on valmis, sen voi kopioida varsinaiseen kenttään. Editorissa saisi siis olla myöskin välilehdet, jolloin useita tilemappeja voisi olla auki samaan aikaan.

Kenties tuon huoneiden kopioimisen voisi tehdä niin, että editorissa tilesettiin pääsee lisäämään toisia tilemappeja. Sitten olisi "tilesetissä" erilaisia huoneita, joita saa läiskiä isoon taloon mielensä mukaan.


Edit:

Toivoisin myös ominaisuutta, joka mahdollistaisi usean eri tilesetin käytön yhdessä mapissa. Mutta koska cb ei tue useiden settien käyttöä samanaikaisesti, tulisi tässäkin turvautua siihen, että mapin latausvaiheessa luodaan muistiin eriskoistilesetti, joka sisältää kaikki käytetyt setit.

Tämä mahdollistaisi tilejen paremman jaottelun erilaisiin luokkiin. Voisi olla esim. "nurmikko.bmp", "lattia.bmp", "huoneet.bmp", joista jokainen tiedosto sisältäisi nimeensä sopivia tilejä.
User avatar
Jonez
Devoted Member
Posts: 575
Joined: Mon Aug 27, 2007 8:37 pm

Re: Tilekarttaeditori - Open Source

Post by Jonez »

Joo tuo copy-paste-systeemi on välttämätön. Jostain syystä sitä ei ikinä ole missään editorissa... :/

Eihän tästä mitään hyötyä oikestaan ole, mutta tein aikani kuluks ton tie-systeemin. Siinä näkee vähän suuntaa että miten olin ajatellut sen toteutuksen. En ole tässä noudattanut täysin mitään kunnollista linjaa itse koodin ulkoasussa. Myös esim. kulma- ja t-risteys-tilejen tarkastus voisi olla hiukan optimoidumpaa.

Funkkarit GetTileX() ja GetTileY() ovat cbSDK:sta.

Hiiri1 tekee seinää ja johtoa, hiiri2 maalaa taustaa.
Näppäin 1 vaihtaa johtoihin, näppäin 2 seinään.

Rivit 19 - 130 ovat tilejen dataa, joka oikeasti ladattaisiin jostain tekstitiedostosta. Tätä dataa voisi muuttaa sekä editorilla että tekstinkäsittelyohjelmalla.
Tää toimii pelkästään tolla tilesetillä jonka laitan liitteenä, ellei sitten noita data-tietoja muuta (tai ellei joku tee settiä jossa oikeat palat on juuri oikeilla kohdilla).

Code: Select all

SCREEN 1024, 768

Type tTiles
    Field cType
    Field cId
    Field cKuva As String
End Type

Const ROAD = 1
Const SEINÄ = 2

//Jokaisen tilen tiedot. oa = oikea ja alas, yoa = ylös, oikea ja alas (siis t-risteys ) jne.
//Todellisuudessa nämä tiedot ladattaisiin data-tiedostosta, ja niitä voisi säätää editorin kautta,
//mutta tässä ne on laitettu suoraan koodiin.

//Ohjelma ei osaa luoda hit-kerrosta, mutta se on helppo lisätä.

//JOHTOJA
nt.tTiles = New( tTiles )
nt\cType = ROAD
nt\cId = 36
nt\cKuva = "oa"

nt.tTiles = New( tTiles )
nt\cType = ROAD
nt\cId = 37
nt\cKuva = "vaaka"

nt.tTiles = New( tTiles )
nt\cType = ROAD
nt\cId = 38
nt\cKuva = "va"

nt.tTiles = New( tTiles )
nt\cType = ROAD
nt\cId = 68
nt\cKuva = "oy"

nt.tTiles = New( tTiles )
nt\cType = ROAD
nt\cId = 69
nt\cKuva = "pysty"

nt.tTiles = New( tTiles )
nt\cType = ROAD
nt\cId = 70
nt\cKuva = "vy"

nt.tTiles = New( tTiles )
nt\cType = ROAD
nt\cId = 100
nt\cKuva = "yoa"

nt.tTiles = New( tTiles )
nt\cType = ROAD
nt\cId = 101
nt\cKuva = "vao"

nt.tTiles = New( tTiles )
nt\cType = ROAD
nt\cId = 132
nt\cKuva = "yva"

nt.tTiles = New( tTiles )
nt\cType = ROAD
nt\cId = 133
nt\cKuva = "vyo"

nt.tTiles = New( tTiles )
nt\cType = ROAD
nt\cId = 6
nt\cKuva = "risteys"


//SEINÄÄ
nt.tTiles = New( tTiles )
nt\cType = SEINÄ
nt\cId = 1
nt\cKuva = "oa"

nt.tTiles = New( tTiles )
nt\cType = SEINÄ
nt\cId = 2
nt\cKuva = "vaaka"

nt.tTiles = New( tTiles )
nt\cType = SEINÄ
nt\cId = 3
nt\cKuva = "va"

nt.tTiles = New( tTiles )
nt\cType = SEINÄ
nt\cId = 33
nt\cKuva = "oy"

nt.tTiles = New( tTiles )
nt\cType = SEINÄ
nt\cId = 35
nt\cKuva = "pysty"

nt.tTiles = New( tTiles )
nt\cType = SEINÄ
nt\cId = 34
nt\cKuva = "vy"

nt.tTiles = New( tTiles )
nt\cType = SEINÄ
nt\cId = 65
nt\cKuva = "yoa"

nt.tTiles = New( tTiles )
nt\cType = SEINÄ
nt\cId = 66
nt\cKuva = "vao"

nt.tTiles = New( tTiles )
nt\cType = SEINÄ
nt\cId = 97
nt\cKuva = "yva"

nt.tTiles = New( tTiles )
nt\cType = SEINÄ
nt\cId = 98
nt\cKuva = "vyo"

nt.tTiles = New( tTiles )
nt\cType = SEINÄ
nt\cId = 67
nt\cKuva = "risteys"


Global map
map = MakeMap( 20, 20, 32, 32 )
set = LoadImage( "tileset.png" )
PaintObject map, set

Global gTileWidth, gTileHeight
gTileWidth = 32
gTileHeight = 32

For x = 1 To MapWidth()
    For y = 1 To MapHeight()
        EditMap map, 0, x, y, 4
    Next y
Next x

Global va, oa, vy, oy, vaaka, pysty, vyo, vao, yva, yoa, risteys

Main()    
Function Main()
    _type = 2
    LoadQuicktool( _type )
    Repeat
    
        If KeyHit( cbkey1 ) Then 
            _type = 1
            LoadQuicktool( _type )
        EndIf
        
        If KeyHit( cbkey2 ) Then 
            _type = 2
            LoadQuicktool( _type )
        EndIf
        
        If MouseDown( 1 ) Then
            
            For xx = -1 To 1
                For yy = -1 To 1
                    
                    x = GetTileX( MouseWX() ) + xx
                    y = GetTileY( MouseWY() ) + yy
                    
                    vasen = False : oikea = False : ylä = False : ala = False
                    
                    If InMap( x, y ) Then
                    
                        If InMap( x - 1, y ) Then 
                            If RoadTile( x - 1, y, _type ) Then vasen = True
                        EndIf
                        If InMap( x + 1, y ) Then
                            If RoadTile( x + 1, y, _type ) Then oikea = True
                        EndIf
                        If InMap( x, y - 1 ) Then
                            If RoadTile( x, y - 1, _type ) Then ylä = True
                        EndIf
                        If InMap( x, y + 1 ) Then
                            If RoadTile( x, y + 1, _type ) Then ala = True
                        EndIf
        
                        If RoadTile( x, y, _type ) Or ( yy = 0 And xx = 0 ) Then
                            //SUORAPALAT
                            If vasen = False And oikea = False And ylä = False And ala = False Then
                                EditMap map, 0, x, y, vaaka
                            EndIf
        
                            If vasen Or oikea And ylä = False And ala = False Then
                                EditMap map, 0, x, y, vaaka
                            EndIf
                     
                            If ylä Or ala And vasen = False And oikea = False Then
                                EditMap map, 0, x, y, pysty
                            EndIf
                            
                            //KULMAPALAT
                            If oikea And vasen = False And ylä = False And ala Then
                                EditMap map, 0, x, y, oa
                            EndIf
                            
                            If oikea = False And vasen And ylä = False And ala Then
                                EditMap map, 0, x, y, va
                            EndIf
                            
                            If oikea And vasen = False And ylä And ala = False Then
                                EditMap map, 0, x, y, oy
                            EndIf
                            If oikea = False And vasen And ylä And ala = False Then
                                EditMap map, 0, x, y, vy
                            EndIf
                            
                            //RISTEYKSET 
                            If oikea And vasen = False And ylä And ala Then
                                EditMap map, 0, x, y, yoa
                            EndIf
                            
                            If oikea And vasen And ylä = False And ala Then
                                EditMap map, 0, x, y, vao
                            EndIf
                            
                            If oikea And vasen And ylä And ala = False Then
                                EditMap map, 0, x, y, yva
                            EndIf
                            If oikea = False And vasen And ylä And ala Then
                                EditMap map, 0, x, y, vyo
                            EndIf
                            
                            If oikea And vasen And ylä And ala Then
                                EditMap map, 0, x, y, risteys
                            EndIf                        
                        EndIf
                        
                    EndIf
                Next yy
            Next xx
        ElseIf MouseDown( 2 ) Then
            If InMap( GetTileX( MouseWX() ), GetTileX( MouseWX() ) ) Then
                EditMap map, 0, GetTileX( MouseWX() ), GetTileY( MouseWY() ), 4
            EndIf
        EndIf
        
        Text 20, 20, FPS()
        Text 20, 40, "Tool: " + _type + " (valitaan napeista 1 ja 2)"
        
        Text 400, 20, "Hiiri1 luo seiniä tai johtoja"
        Text 400, 40, "Hiiri2 luo taustaa."
        DrawScreen
    Forever
End Function

Function LoadQuicktool( _type )
    For it.tTiles = Each tTiles
        If it\cType = _type Then
            If it\cKuva= "va" Then va = it\cId
            If it\cKuva= "oa" Then oa = it\cId
            If it\cKuva= "vy" Then vy = it\cId
            If it\cKuva= "oy" Then oy = it\cId
            If it\cKuva= "vaaka" Then vaaka = it\cId
            If it\cKuva= "pysty" Then pysty = it\cId
            If it\cKuva= "vyo" Then vyo = it\cId
            If it\cKuva= "vao" Then vao = it\cId
            If it\cKuva= "yva" Then yva = it\cId
            If it\cKuva= "yoa" Then yoa = it\cId            
            If it\cKuva= "risteys" Then risteys = it\cId                          
        EndIf
    Next it
End Function

Function RoadTile( _x, _y, _type )
    For it.tTiles = Each tTiles
        If it\cType = _type Then
            If GetMap2( 0, _x, _y ) = it\cId Then
                Return true
            EndIf
        EndIf
    Next it
End Function

Function InMap( _x, _y ) 
    If _x > 0 And _x <= MapWidth() Then
        If _y > 0 And _y <= MapHeight() Then
            Return True
        EndIf
    EndIf   
End Function 
Function GetTileX(_x)
    mapX# = (ObjectSizeX(Map) / 2.0) - ObjectX(Map)
    Return RoundUp((_x + mapX) / gTileWidth)
EndFunction


Function GetTileY(_y)
    mapY# = ObjectY(Map) + (ObjectSizeY(Map) / 2.0)
    Return RoundUp((mapY - _y) / gTileHeight)
EndFunction
Attachments
tileset.PNG
tileset.PNG (21.54 KiB) Viewed 13209 times
-Vuoden 2008 aloittelijan ystävä -palkinnon voittaja-
Image <- protestipelikilpailun voittaja.
Space War
User avatar
TheDuck
Devoted Member
Posts: 632
Joined: Sun Aug 26, 2007 3:51 pm
Location: C:\Program Files\Tuusula\

Re: Tilekarttaeditori - Open Source

Post by TheDuck »

Ya, gj jonez. Itse olisin valmis mukaan jos projekti tehtäisiin CB:llä. Toki myös seeplusplus-projekstiin tulisin, mutta tulos ei olisi omalta osaltani silloin suuri taitojen takia.

Aloin leikkimään tolla jonezin jutulla ja tein kaupungin jossa oli vesiputket :P Hienoa koodia.
^^
project coder
Newcomer
Posts: 27
Joined: Mon Aug 27, 2007 9:23 pm
Location: Kajaani

Re: Tilekarttaeditori - Open Source

Post by project coder »

Voin liittyä, jos editori toteutetaan cb:llä tai jollain muulla basicilla. Olen jo tehnyt yhden keskeneräisen editorin cb:llä (Lataa) ja toinen on tekeillä, mutta se on jäätymässä.
Kotisivut: (Uusitaan)
Secret Unit War (Frozen)
Tilekarttaeditori (Frozen)
Käyttöliittymän osia
iTKEVAnAKKI
Advanced Member
Posts: 335
Joined: Tue Aug 28, 2007 3:55 pm
Location: Siellä jossain

Re: Tilekarttaeditori - Open Source

Post by iTKEVAnAKKI »

project coder wrote:Voin liittyä, jos editori toteutetaan cb:llä tai jollain muulla basicilla. Olen jo tehnyt yhden keskeneräisen editorin cb:llä (Lataa) ja toinen on tekeillä, mutta se on jäätymässä.
Jos oot varma jäätymisestä, ni ainahan sitä voisi käyttää jonkinlaisena pohja?
Projektit:
Joku projekti meneillään... Mitähän siitäkin tulee ;)
project coder
Newcomer
Posts: 27
Joined: Mon Aug 27, 2007 9:23 pm
Location: Kajaani

Re: Tilekarttaeditori - Open Source

Post by project coder »

iTKEVAnAKKI wrote:
project coder wrote:Voin liittyä, jos editori toteutetaan cb:llä tai jollain muulla basicilla. Olen jo tehnyt yhden keskeneräisen editorin cb:llä (Lataa) ja toinen on tekeillä, mutta se on jäätymässä.
Jos oot varma jäätymisestä, ni ainahan sitä voisi käyttää jonkinlaisena pohja?
En ole varma jäätymisestä, mutta turha sitä on varmaan jatkaa, jos open sourcena tulee sellainen editori, joka sisältää samojen ominaisuuksien lisäksi enemmän ominaisuuksia. Voi sitä jonkinlaisena mallina käyttää.
Kotisivut: (Uusitaan)
Secret Unit War (Frozen)
Tilekarttaeditori (Frozen)
Käyttöliittymän osia
Pate5
Artist
Artist
Posts: 551
Joined: Tue Aug 28, 2007 4:53 pm
Location: Vantaa

Re: Tilekarttaeditori - Open Source

Post by Pate5 »

Itse voisin auttaa käyttöliittymän teossa, jos siihen asti päästään.
CoolBasic henkilökuntaa
Graafikko
SPuntte
Tech Developer
Tech Developer
Posts: 650
Joined: Mon Aug 27, 2007 9:51 pm
Location: Helsinki, Finland
Contact:

Re: Tilekarttaeditori - Open Source

Post by SPuntte »

Näyttää siltä, että ominaisuustoivomuslista alkaa olla jo kohtuullisen pitkä mutta siihen se sitten jääkin. Antakaapas välillä omaperäisiä ehdotuksia projektin toteutuksesta, niin ihan teknisemmästä (ohjelmointiteknisestä, koodiläheisestä) kuin abstraktimmastakin näkökulmasta. Älkää takertuko pikkuasioihin, muten yksittäisiin työkaluihin vaan ajatelkaa ohjelmaa yleisesti ja serityisesti sen perusrakennetta.

En jaksa kovin käytännönläheisesti tätä nyt alkaa miettimään ja selostamaan, mutta minusta olisi hyvä, että ohjelman koodirakenteen kapseloinnin taso olisi kohtuullisen korkea. Tämä tarkoittaa sitä, että ohjelman eri osat kirjoitetaan toimimaan suhteellisen vähällä riippuvuudella muista, ja että ohjelman toimintaa korkeammalla tasolla on mahdollista ymmärtää ja kehittää ymmärtämättä matalan tason toimintoja, kuten funktioiden sisältöjä. Tällöin myös uuden ominaisuuden lisääminen olisi kohtuullisen helppoa.

GUIn ja kartanmuokkausmoottorin tulisi minusta erottua hyvin toisistaan. Siis ensin kannattaisi rakentaa monipuoliset ominaisuudet kartan muokkaamiseen, vaikka lähes kokonaan ilman käyttöliittymää. Eli karttaa rakennettaisiin tässä vaiheessa vaikkapa joillain konsolikomennoilla. Vasta kun varsinaiset kartan editointityökalut ovat ohjelmallisesti kasassa, aletaan rakentaa symbolista käyttöliittymää, joka sitten toimii esimerkkiini viitaten "graafisena konsolina" eli kutsuu kartan muokkausjärjestelmää.

Dynaaminen ikkunajärjestelmä olisi plussaa. Eikös Jare ole jotain sellaista joskus esitellytkin. Löytyy SDKsta muistaakseni nimellä janelas? Näin kaikilla ylimääräisillä työkaluilla voisi heittää vesilintua, kun niitä ei tarvitse, ja keskittyä olennaiseen. Tämä tietysti edellyttää sitä, että työkalut on jaoteltu jotenkin järkevästi, tai että niiden käyttöliittymä on täysin dynaaminen. Näin on useissa Windows-ohjelmissa, eli työkaluja voi lisäillä ja siirrellä työkaluriveistä toiseen mielensä mukaan. Ei kuitenkaan ole mitään mieltä, että ohjelma tuhlaa prosessoritehoa turhan monipuoliseen ja muokattavaan käyttöliittymään, jonka kaikkia ominaisuuksia kukaan ei tule käyttäneeksi.

Tässäpä taas vähän asiaa purtavaksi. Esittäkääpähän rohkeasti omia mielipiteitänne, vaikka sitten ihan poikkeavia, jos siltä tuntuu.
CoolBasic henkilökuntaa
Tech-kehittäjä
CoolBasic Classic, Cool VES

CoolPhysicsEngine | MissileSystem | Jana-ympyrä -törmäys | cbSimpleTexture | CoolCPLX
MAVmaggot
Advanced Member
Posts: 468
Joined: Fri Aug 31, 2007 10:18 pm
Location: bitspace

Re: Tilekarttaeditori - Open Source

Post by MAVmaggot »

Projekti kuulostaa mukavalta ja käytännölliseltä :D minä voisin tehdä myös käyttöliittymää, olen opiskellut photoshopin joitakin kikkoja sen toteuttamiseen.
Jonez wrote:Joo tuo copy-paste-systeemi on välttämätön. Jostain syystä sitä ei ikinä ole missään editorissa... :/
eikös stigmatorissa ole??
User avatar
Jare
Devoted Member
Posts: 877
Joined: Mon Aug 27, 2007 10:18 pm
Location: Pori
Contact:

Re: Tilekarttaeditori - Open Source

Post by Jare »

SPunten ehdotus on mielestäni hyvä. Kartanmuokkausmoottori tulee tehdä ennen käyttöliittymää.

Ohjelmarakenteen lisäksi olisi syytä sopia myös formaatista. Tyydymmekö nykyiseen tilesterin formaattiin, vai otammeko mukaan lisäominaisuuksia? Näiden mukaan sitten suunnitellaan muokkausmoottori. (Jos mukaan tulee erikoisominaisuuksia, tulee toki olla myös mahdollisuus tallentaa alkuperäiseen tilemap-muotoon, mutta tätä tuskin tarvitsee vielä pahemmin miettiä).
SPuntte wrote:Dynaaminen ikkunajärjestelmä olisi plussaa. Eikös Jare ole jotain sellaista joskus esitellytkin. Löytyy SDKsta muistaakseni nimellä janelas?
Jep. Tuo ikkunajärjestelmä vain on melkoisen vanha. Voisin kehitellä sitä lisää, jotta se täyttäisi paremmin tämä projektin tarpeita (silti pitäen sen mahdollisimman yleiskäyttöisenä). Käyttöliittymäelementit siihen pitää ainakin tehdä. Tällä hetkellä CBSDK:n elementit (Inputfield, button jne.) eivät yksinkertaisesti toimi siinä, koska hiiren koordinaatit janelas-ikkunassa ovat eri kuin ruudulla.

Otan vastaan parannusehdostuksia ikkunajärjestelmään, mutta mieluummin yksityisviestillä (tai uuteen aiheeseen), ettei tämä aihe mene sotkuiseksi. Tähän aiheeseen voitte kommentoida, kannatatteko ylipäätään Janelasin käyttöä tässä editorissa, vai haluatteko tehdä uuden ikkunajärjestelmän. Niin ja haluatteko ylipäätään käyttää CoolBasicia tähän projektiin.
Koodiapina
Forum Veteran
Posts: 2396
Joined: Tue Aug 28, 2007 4:20 pm

Re: Tilekarttaeditori - Open Source

Post by Koodiapina »

Kannatan uutta ikkunasysteemiä. Ja sellaista kysyisin, että jos teemme uuden formaatin niin joudummeko koodaamaan myös uudet komennot joilla käyttää karttaa?
JATothrim
Tech Developer
Tech Developer
Posts: 606
Joined: Tue Aug 28, 2007 6:46 pm
Location: Kuopio

Re: Tilekarttaeditori - Open Source

Post by JATothrim »

Mielestäni Uusi kartta formaatti olisi hyvä, nimittäin on sama tehdä uusi kuin parannella vanhaa. helpompaa. Ja kartan lataamiseen tarvitaan vain yksi lisä funktio.
Muistakaa ihmeessä ne valmiit kartta komenot - kaikki mitä niillä saadaan tehtyä tehdään myös niillä, turha sitä pyörää on uudestaan keksiä.

Ja Aivan ehdottomat ominaisuudet formaatissa:
Back, Over ja Hit kerrokset pakataan juova koodauksella. Yksinkertainen ja nopea mutta tiedoston koko tipahtaa tapauksittain jopa 60%
Data kerroksia äärettömästi. ;)
Animaation tilet tallennetaan muotoon: Animaation ID, TileMäärä, tile1,tile3,tile2,tilen.. jne. Sitten tulee Sijoittelu data: X,Y,ID ... jne
Eli animaation kasaamisessa ei enää olisi peräkkäisyys-järjestys sääntöä ja joka kohtaan kartaan saataisiin oma animaatio vaikka käytettäsiin samoja tilejä. ;)
Eli kartan käytöön tavitaan vain neljä funktiota: LoadTilemap(), UpdateMap(), (GetDataLayer() ja SetDataLayer(), jos äärettömät data kerrokset)

Ja Tottakai kartanmuokkausmoottori tulee tehdä ennen käyttöliittymää -> PALJON vakaampi ja selkeämpi editorin kehitys.
Ominaisuuksia voisi ruveta kasaamaan niin että ensin tehdään se formaatti ja yleiset käyttö funktiot. Sitten tehdään itse työkalut näitten 'päälle'
Näin Vältetään ristiriitoja koska kaikki tulisivat käyttämään samaa pohjaa, Kartan Dataa, ja muita ominaisuuksia. Ja kuka tahansa voisi lisätä helposti työkaluja editoriin :P
Ikkuna systeemi olisi kiva. Joko käytetään jo olemassa olevia paketteja, tai sitten joku voisi kehittää vartavasten editoriin tuommoisen systeemin. :D
-On selkeästi impulsiivinen koodaaja joka...
ohjelmoi C++:lla rekursiivisesti instantioidun templaten, jonka jokainen instantiaatio instantioi sekundäärisen singleton-template-luokan, jonka jokainen instanssi käynistää säikeen tulostakseen 'jea'.
Post Reply