Tilekarttaeditori - Open Source
-
- Advanced Member
- Posts: 335
- Joined: Tue Aug 28, 2007 3:55 pm
- Location: Siellä jossain
Tilekarttaeditori - Open Source
Aluks voitais vaan kattoo kuka haluis tehä "pohjan" koko projulle?
SPuntten viestissä "ohjeet"
Joku projekti meneillään... Mitähän siitäkin tulee
-
- Tech Developer
- Posts: 650
- Joined: Mon Aug 27, 2007 9:51 pm
- Location: Helsinki, Finland
- Contact:
Re: Tilekarttaeditori - Open Source
- 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.
TYPOO, korjattu
Tech-kehittäjä
CoolBasic Classic, Cool VES
CoolPhysicsEngine | MissileSystem | Jana-ympyrä -törmäys | cbSimpleTexture | CoolCPLX
-
- Forum Veteran
- Posts: 2396
- Joined: Tue Aug 28, 2007 4:20 pm
Re: Tilekarttaeditori - Open Source
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.SPuntte wrote:Itse en kannata alustaksi CB'a sen tehottomuuden ja epävakauden vuoksi.
Re: Tilekarttaeditori - Open Source
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.Grandi wrote:Joo mutta tähän projektiin liittyykin vain ne jotka kannattavat
Kehittäjä
-
- Tech Developer
- Posts: 650
- Joined: Mon Aug 27, 2007 9:51 pm
- Location: Helsinki, Finland
- Contact:
Re: Tilekarttaeditori - Open Source
CBhän on nykyiselläänkin aivan loistava tuote suomalaisille nuorille koodauksen aloittamiseen!TheFish wrote: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.Grandi wrote:Joo mutta tähän projektiin liittyykin vain ne jotka kannattavat
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
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.
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 ( )
- 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
Tech-kehittäjä
CoolBasic Classic, Cool VES
CoolPhysicsEngine | MissileSystem | Jana-ympyrä -törmäys | cbSimpleTexture | CoolCPLX
Re: Tilekarttaeditori - Open Source
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.
Re: Tilekarttaeditori - Open Source
- "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...
-
- Advanced Member
- Posts: 335
- Joined: Tue Aug 28, 2007 3:55 pm
- Location: Siellä jossain
Re: Tilekarttaeditori - Open Source
-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...
Joku projekti meneillään... Mitähän siitäkin tulee
Re: Tilekarttaeditori - Open Source
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ö...).iTKEVAnAKKI wrote: -Automaatti tallennusta cbn takia...
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ä.
Re: Tilekarttaeditori - Open Source
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 (21.54 KiB) Viewed 13209 times
- TheDuck
- Devoted Member
- Posts: 632
- Joined: Sun Aug 26, 2007 3:51 pm
- Location: C:\Program Files\Tuusula\
Re: Tilekarttaeditori - Open Source
Aloin leikkimään tolla jonezin jutulla ja tein kaupungin jossa oli vesiputket Hienoa koodia.
-
- Newcomer
- Posts: 27
- Joined: Mon Aug 27, 2007 9:23 pm
- Location: Kajaani
Re: Tilekarttaeditori - Open Source
-
- Advanced Member
- Posts: 335
- Joined: Tue Aug 28, 2007 3:55 pm
- Location: Siellä jossain
Re: Tilekarttaeditori - Open Source
Jos oot varma jäätymisestä, ni ainahan sitä voisi käyttää jonkinlaisena pohja?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ä.
Joku projekti meneillään... Mitähän siitäkin tulee
-
- Newcomer
- Posts: 27
- Joined: Mon Aug 27, 2007 9:23 pm
- Location: Kajaani
Re: Tilekarttaeditori - Open Source
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ää.iTKEVAnAKKI wrote:Jos oot varma jäätymisestä, ni ainahan sitä voisi käyttää jonkinlaisena pohja?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ä.
Re: Tilekarttaeditori - Open Source
Graafikko
-
- Tech Developer
- Posts: 650
- Joined: Mon Aug 27, 2007 9:51 pm
- Location: Helsinki, Finland
- Contact:
Re: Tilekarttaeditori - Open Source
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.
Tech-kehittäjä
CoolBasic Classic, Cool VES
CoolPhysicsEngine | MissileSystem | Jana-ympyrä -törmäys | cbSimpleTexture | CoolCPLX
Re: Tilekarttaeditori - Open Source
eikös stigmatorissa ole??Jonez wrote:Joo tuo copy-paste-systeemi on välttämätön. Jostain syystä sitä ei ikinä ole missään editorissa... :/
Re: Tilekarttaeditori - Open Source
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ä).
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.SPuntte wrote:Dynaaminen ikkunajärjestelmä olisi plussaa. Eikös Jare ole jotain sellaista joskus esitellytkin. Löytyy SDKsta muistaakseni nimellä janelas?
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.
-
- Forum Veteran
- Posts: 2396
- Joined: Tue Aug 28, 2007 4:20 pm
Re: Tilekarttaeditori - Open Source
Re: Tilekarttaeditori - Open Source
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
Ikkuna systeemi olisi kiva. Joko käytetään jo olemassa olevia paketteja, tai sitten joku voisi kehittää vartavasten editoriin tuommoisen systeemin.