Programmera spel i C++ för nybörjare/Bakgrunden och isometriska plattor


Det i särklass vanligaste sättet att skapa spelplaner är att använda isometriska plattor. Zyngas "farmville" tillsammans med i princip vartenda 2D spel som skapats sedan 1990-talet. Orsaken till det är enkel: ögat uppfattar en isometrisk värld som mycket mer "naturlig" att titta på än en som består helt och hållet av kvadrater.

Vad är en isometrisk platta? redigera

 
Exempel på isometrisk platta

En isometrisk platta ser ut som ett liggande rutertecken, romb eller diamant. Den här formen kan förskjutas litet åt olika sätt för att få olika effekter, men den enklaste formen är dubbelt så bred som den är hög. Är plattan 64 bred är den 32 hög.

För att åstadkomma det kan man tänka sig att vinklarna i hörnen längst ut till höger och vänster är prick 30 grader mot X-axeln. Jobbar du med vektorgrafik stämmer det bra. Men om man arbetar med pixlar på en dataskärm ger detta en litet klumpig linje. Därför beräknar man istället hörnen till 26.565 graders vinkel. (se mer: http://gas13.ru/v3/tutorials/isometric_pixelart_tutorial_mathematics_of_isometrics.php)

Du behöver inte fundera direkt över vinkeln när du skapar egna plattor. Tänk istället "två pixlar framåt och en pixel upp, två pixlar framåt och en pixel upp", och gör så hela tiden, så kommer du att få en snygg linje. Det innebär också att samtliga hörn är två pixlar breda och inte endast en pixel, som man lätt kan tro.


Färgade ytor redigera

En platta är ju egentligen kvadratisk eller rektangulär, inte diamantformad. Det innebär att stora delar av plattan aldrig syns. Det är faktiskt bara ungefär 25% av plattans yta som spelaren ser. Resten av plattan ligger under angränsande plattor. Detta utgör ett problem när man skall lista ut vilken platta en viss spelare står på. Vill man underlätta för sig själv kan man göra så att de plattareor som inte syns har olika färger: gult för övre vänsterhörn, rött för övre högerhörn, blått för nedre högerhörn och grönt för neder vänsterhörn, t.ex. Om man vill veta om en spelare befinner sig på en del av plattan som täcks av andra plattor kan man kontrollera färgen på den pixel som spelpjäsen står på. Om den är gul, röd, blå eller grön står spelpjäsen egentligen på en angränsande platta och färgen visar vilken.

På det här sättet har alla ytor vid kanterna av spelplanen färgade kanter, men det kan man lätt dölja med en svart bricka som passar in precis längs kanten och som ritas ut sist av allt.

Koordinatsystemet redigera

Kom ihåg att det är ett koordinatsystem i botten. Det visas bara upp på ett annat sätt. Tänk dig ett schackspel. Det är 8x8 rutor stort och bara genom att ange x- och y-koordinaterna vet man var en spelpjäs befinner sig. Säger man att svart dam står på 1,5 kan man peka ut den direkt. Bara för att koordinatsystemet roterats ett kvarts varv motsols och dragits ut på längden på en isometrisk spelplan så har inte koordinatsystemet försvunnit, damen står fotrfarande på 1,5.

Extra läsning redigera

http://www.gamedev.net/page/reference/index.html/_/technical/game-programming/introduction-to-isometric-engines-r744

Engelsk, beskriver på ett enkelt sätt hur man använder sig av isometriska plattor.

http://www.gotoandplay.it/_articles/2004/10/tcgtipa.php

Engelsk, en hel liten kursbok i hur man skapar isometrska världar.