Nekromanti Det här var rätt coolt [stadskartor]

Olle Linge

Snigel
Joined
23 Oct 2003
Messages
2,882
Location
北極東邊
Enda problemet är väl att det tar en mindre evighet att göra något vettigt plus att man innan måste ha bra koll på vad det är man vill göra. Det kanske är ett bra (men tidskrävande) sätt att visa hur en stad ser ut efter att man redan har planen klar, men annars vet jag inte om jag ser så stora användningsområden.
 

DODswe4

Hero
Joined
3 Mar 2004
Messages
1,283
Location
Stockholm
Det är sött och man kan få hel lustiga städer som inte alls är realistiska.

eller använda det till det du sa.
 

Rising

Vila i frid
Joined
15 Aug 2001
Messages
12,763
Location
End of the green line
Typiskt sött, lite jobbigt bara att den inte håller reda på vad som är fram och bak så att man måste börja "bakifrån" för att förgrunden ska överlappa bakgrunden ordentligt. Men det är mysigt med isometrisk vy, man borde göra något sånt här fast som skulle funka som Populus, alltså så att man dessutom kunde höja/sänka marken, och så att man bara behövde ett verktyg för att sätta ut murar, exempelvis, och att den sedan förstod själv hur den skulle vinkla murarna så att de olika bitarna hängde ihop ordentligt.

Jag byggde flera sådana program i Amos (alltså inte där man skulle bygga städer för att använda i rollspel, utan där man byggde banor som man sedan kunde spela mina små strategispel på (tyvärr blev de inte bra, jag önskar att jag kunde åka tillbaka i en tidsmaskin och göra det ordentligt)) och det är förvånansvärt lätt, faktiskt. Isometrisk vy är förvisso rätt klurigt, åtminstone om man ska kunna höja och sänka marken (jag orkade bara göra så att man kunde höja/sänka marken i en enda nivå utöver marknivån, när jag höll på i Amos)

För den som är nyfiken så kan jag berätta ett litet tips:

Man tar helt enkelt ett stort rutnät där varje ruta får ett nummer assignerat till sig. 0 kan exempelvis få vara gräs, 20 kan få vara ett hus och 26 kan få vara en viss gubbe. Varje gång något positioneras ut på kartan så ritar man ut allt som syns på skärmen radvis, från rutan högst upp till vänster och vidare neråt mot rutan längst ner åt höger. På så vis så hamnar ALLTID saker i förgrunden framför saker i bakgrunden, oavsett i vilken ordning användaren sätter ut dem.

Nå, när det gälller murar/vägar och vattendrag så kan man göra så här: Varje gång du sätter ut en sådan "vägsnutt" på en ruta så får den rutan ett enskilt nummer, precis som när man sätter ut något annat, MEN -du ger den inte vilket nummer som helst, utan för att ta reda på vilken bild som passar bäst så kollar du vad som finns i rutorna ovan, under och till sidan om din ruta. Du tar fram en variabel som inledningsvis nollställs.

Om det dessutom är en väg ovanför din ruta, då börjar du räkna +1 på din variabel.
Om det finns en vägsnutt till vänster om din ruta, då räknar du +2 till din variabel.
Om det finns en vägsnutt till höger om din ruta så räknar du +4 och om det finns en vägsnutt i rutan under din ruta så räknar du +8 till variabeln.

Det nummer du har fått kan du sedan utgå från när du väljer vilken vägbit som passar till din ruta. Poängen är nämligen att du i förväg har numrerat dina vägsnuttar så att de passar ihop med räknesättet ovan.

Exempel: För att göra en T-korsning som leder vägar ut åt väster, öster och söderut, då skall man rita vägar på det sätt som jag sätter ut tekoppar bland gröna gubbar i skissen nedanför:

:gremsmirk: :gremsmirk: :gremsmirk:
:tekopp: :tekopp: :tekopp:
:gremsmirk: :tekopp: :gremsmirk:

Så... vad för nummer får tekoppen i mitten? Jo, det finns en väg till vänster (+2), till höger (+4) och under (+8) vår ruta; alltså skall vägbilden som föreställer en T-korsning ha nummer =14.

När man väl har gett rätt nummer åt bilden man håller på med, då skall man fortsätta att checka rutorna omkring den ruta man håller på med, för även de kommer ju att ändras.

Det fina med +1,+2,+4 och +8 är att varje summa man kan få genom att kombinera dem enbart går att få på ett enda sätt, så det finns ingen risk att datorn vill rita ut en lång nord-sydlig raksträcka där du vill att den ska rita ut en kurva från syd till väst.

Om värdet noll får vara en liten vägstump som inte leder någonstans, då får man hela sexton olika vägbilder, allt som allt. I en av mina karteditorer så hade man både vägar, murar, sand och skogar som man kunde sätta ut på en karta med i övrigt bara gräsmark. Varje grej behövde alltså sexton bilder.

Det här är det sätt som man exempelvis sätter ut vägar i gameboyspelet Advance Wars. Ett betydligt mer avancerat system finns i Civ3 när man ska rita ut kustlinjer och vägar. Dels för att de dessutom går att rita ut diagonalt (det ökar sifferantalet markant) och dels för att varje "siffra" finns i två(?) varianter. Civ3 är, tror jag, uppbyggt ungefär som ett schackbräde, och varje vägstump/kustlinje finns i två olika utföranden beroende på om man sätter ut dem på en vit eller svart ruta. Det gör kartorna lite mer mångfaldiga.

När man höjde marken i Populus så funkade det ännu lite konstigare. Där var det nämligen inte på någon ruta man valde om man ville höja eller sänka, utan ens markör stannade vid rutornas fyra hörn. På så vis kunde man låta en kulles "spets" få befinna sig mellan fyra olika rutor, istället för att vara i mitten på någon enskild ruta. Då får man ha ett imaginärt rutnät vid sidan om, så att man både kan hålla reda på vad för något som har ställts rutorna (såsom gubbar och hus), och på vilket sätt som rutorna ändrar utseende beroende på vad som befinner sig mellan dem.

Uuuh... snacka om OT...
 

Troberg

Sinister eater
Joined
27 Jun 2001
Messages
17,659
Det fina med +1,+2,+4 och +8 är att varje summa man kan få genom att kombinera dem enbart går att få på ett enda sätt, så det finns ingen risk att datorn vill rita ut en lång nord-sydlig raksträcka där du vill att den ska rita ut en kurva från syd till väst.
En kul variant på detta som funkar bättre i vissa databaser (som oftast av någon anledning saknar bitvis logik), men som är lite ineffektivare i lagringsutrymme är att i stället för att addera jämna 2-potenser så multiplicerar man primtal från serien 2, 3, 5, 7, 11, 13, 17 osv. För att plocka ut enstaka bitar så är det bara att se om talet är jämnt delbart med primtalet ifråga, något som de flesta databaser klarar galant.
 

Rising

Vila i frid
Joined
15 Aug 2001
Messages
12,763
Location
End of the green line
Ahhh, smart! Det kanske är en mycket smartare metod när man dessutom ska checka diagonalerna (vilket ju blir klöddigt om man gör det binärt). Ska ha det i bakhuvudet nästa gång jag gör ett sådant program.

/Rising
gillar att prata datorspelsprogrammering, även om han är för korkad för att förstå diskussionerna som hålls i ämnet på de olika spelmakarfora som finns
 

Troberg

Sinister eater
Joined
27 Jun 2001
Messages
17,659
Det kanske är en mycket smartare metod när man dessutom ska checka diagonalerna (vilket ju blir klöddigt om man gör det binärt).
Nej, det borde gå på ett ut. Det är bara fyra riktningar till, utöka bara din talserie upp till 128.
 
Top