Jypeli-JYU / Jypeli

A simple educational C# game programming library built on top of Silk.NET.
24 stars 4 forks source link

Kentän luominen Tiled-editorilla, part 2 #38

Open xNPx3 opened 10 months ago

xNPx3 commented 10 months ago

Noniin, terve taas. Päätin palata asian äärelle nyt, kun lukioelämä rauhoittui yo-kirjoitusten jälkeen. Viime PR:n #29 ehdotuksia on hyödynnetty ja nyt pitäisi olla kaikki kunnossa. Muutama TODO-kohta löytyy vielä koodista, mutta ne eivät ole peruskäytössä välttämättömiä.

Tein Content.cs-tiedostoon LoadText-funktion, joka lukee tiedoston sisällön Contentista. En tiedä oliko tämä juuri sellainen ratkaisu jota haettiin, mutta toimi ainakin Windowsilla ja Androidilla testatessa.

Lisäksi tein repon esimerkkipelille, missä TiledMappia on sovellettu käytännössä.

(näemmä korjasin myös erään typon jossain vanhassa commitissa :D)

Otan mielelläni palautetta vastaan :)

- Samuel

roeyskoe commented 10 months ago

Kiitos, mahtavaa. Jätin pari kommenttia noista muista lisäyksistä. Katson tuota itse Tiled latauskoodia tarkemmin parin päivän sisällä kun minulla on paremmin aikaa.

roeyskoe commented 10 months ago

Testailin tuolla sinun esimerkkiprojektilla ja hyvin vaikuttaisi toimivan. Onko muuten joku syy miksi tässä käytit Newtonsoft.Json, etkä vakiokirjastoista nykyisin löytyvää System.Text.Jsonia?

xNPx3 commented 8 months ago

Jees, siistin vähäsen koodia ja vaihdoin tuohon System.Text.Jsoniin. Newtonsoft oli vaan ennestään tuttu kirjasto :D

ajlakanen commented 2 months ago

@xNPx3 Ehtisitkö kirjoittaa tähän myös lyhyen dokumentaation, miten tuota käytetään?

xNPx3 commented 2 months ago

@xNPx3 Ehtisitkö kirjoittaa tähän myös lyhyen dokumentaation, miten tuota käytetään?

Eli perusidea oli se, että pystyisi hyödyntämään Tiled-editorilla tehtyjä karttoja Jypeli-kenttien pohjana, vähän samaan tapaan miten nykyinen TileMap toimii.

Uuden kentän voi tehdä luomalla uuden TiledMap-instanssin ja kertomalla sille Content-kansiossa olevien olennaisten karttatiedostojen nimet: TiledMap map = new TiledMap("kartta.tmj", "tileset.tsj");

Kartan voi määrätä kutsumaan omaa funktiota tiettyjen ruutujen kohdalla: map.SetOverride(123, ABCD);

SetOverride-metodi toimii melkein kuten TileMapin SetTileMethod, parametreiksi annetaan tietyn tilesetin ruudun ID, sekä void ABCD(Vector position, double width, double height, Image tileImage) -muotoa oleva funktio.

Lopulta kutsumalla kartan Execute-metodia kartta luodaan peliin. map.Execute();

Tiledin kerroksille voi asettaa omia ominaisuuksia ja koodi pyrkii asettamaan samat ominaisuudet myös Jypeliin luotaville ruuduille; koko kerrokselle hyödyllisiä mm. CollisionIgnoreGroup tai MakeOneWay. bjWP6oG

Tässä muutaman kuukauden takainen esimerkkiprojekti: https://github.com/xNPx3/TiledMap-Jypeli

Seuraavia kehityskohteita voisi olla esim. kerrosten parempi hallinta. Jos Tiledissä on enemmän kuin 6 kerrosta, se saattaa aiheuttaa ongelmia Jypeliin tuotaessa.