Noeska's

Div Games Studio Page

Cursussen

Cursus scrolling #2

Hij heeft lang op zich laten wachten maar hier is hij dan toch: de cursus tile based scrolling! Het is meteen ook de laatste cursus die ik voor div games studio maak.

De theorie

Het idee achter tilebase scrolling is dat een level samensteld uit een aantal kant en klare blokjes (tiles). De opbouw van het level plaats je in een struct. Hier geef je dmv codes aan waar een bepaald blokje komt te staan. Blokje 1 is bijvoorbeeld lucht en blokje 2 is bijvoorbeeld gras. Je kunt dus nu aangeven dat posite 0,0 in het level lucht is en dat 2,3 gras is.

We hebben nu een level definitie. Nu zouden we een grote map kunnnen maken en daar doormiddel van de map kopieer kommando's de hele mikmak naar de juiste posities kopieren. Maar daar schieten we eigenlijk niets mee op want dan zitten we nog met een in eerste instantie lege maar toch nog ettelijke mb's grote map file. De truuk is nu dat we een map gebruiken die iets groter is dan de grote van het scherm waarin we hem gaan afbeelden. Zeg dat we aan iedere kan de ruimte die een blokje inneemt extra nemen. Hier kunnen we dan in eerste instantie het eerste zichtbare deel in plaatsen.

Natuurlijk moet de map scrollbaar zijn en wel zo dat hij zich herhaald. Dus wat rechts het scherm uitgaat moet er links weer inkomen. (hoe dat werkt kun je eventueel nalezen in het eerdere deel van de scrolling cursus #1)

Nu kunnen we in de onzichtbare delen de delen van het level die komen gaan plaatsen. Zodat als er gescrollt word een ander stuk van het level zichtbaar wordt. Div rekent ook buiten de map door dus als we een x pixel waarde weten kunnen we deze door de breedte van een tile delen en we weten welk tile we moeten plaatsen. De plek waar deze getekend moet worden bepalen we met behulp van MOD breedte van map. Kijk even in de source kode als je dit niet kunt volgen.

De praktijk

Het is allemaal mooi in theorie met tile based scrolling. Maar de werking in div games studio is helaas niet gemakkelijk. Probeer maar eens na te gaan hoe het voorbeeld programma in elkaar steekt. Denk er om dat wat rechts in het scherm moet komen links getekend moet worden en andersom! Denk er om dat div games studio vanuit het midden van een blokje denkt! Wie daar een oplossing voor heeft moet dat ergens melden!

Bovendien zit je met snelheid van verwerking met tile based scrolling. Zelfs op een snelle pc met een snelle video kaart is de opbouw niet altijd even mooi. Hij bibbert wat waar de linker en rechterkant van de map bij elkaar komen.

Hoe nu verder...

Je hebt nu alleen nog maar een level map. Maar je weet waar de speler zich bevind in het level, dan kun je dus aan de hand van het soort blokje dat op die positie zit dus een bepaalde actie ontketenen. Het poppetje pakt een muntje ala mario bros ofzo. Tegenstander plaatsen word al iets lastiger. Ze moeten geplaaatst worden aan de hand van de posities in de level map en die moet je weer terug zetten naar schermcoordinaten.

Opdracht

Probeer het voorbeeld verder uit te werken zodat bijvoorbeeld ook op een neer gescrollt kan worden. Er is nu alleen horizontale scrolling. Of probeer bewegende tegenstanders in het level te plaatsen.

PS probeer zoveel mogelijk bugs te verzamelen uit het voorbeeld programma :-)