Hexemell: The Hexagon Markup Language

olaberg

Hero
Joined
1 Feb 2006
Messages
1,198
Location
Göteborg
Pillar med en datagrej: rita hexagonkartor med SVG.

Tanken är att utgå från en formell beskrivning av en hexagonkarta och sedan kunna rendera den på olika sätt.

En hexagonkarta består av en mängd hexagoner som är antingen stående (spets i norr och söder) eller liggande.

Varje hex har en position på kartan.

Jag laborerar dessutom med att en hex har tretton punkter: noll är dess centrum,
ett är nordnordost
två är nordost
tre är ostnordost
fyra är rakt österut
osv fram till
tolv är rakt norrut

Då kan man definiera miljöelement i hexen:
kustlinje från fem till nio (vattnet är alltid till vänster i ritriktningen)
höjdkurva från sex till tre (höjden är alltid till höger i ritriktningen)
vägsnutt från sju till åtta
staden Blärke i mitten

och så vidare.

Fråga: har något liknande gjorts? Finns det ett märkspråk för hexbaserade spelkartor redan?
 

olaberg

Hero
Joined
1 Feb 2006
Messages
1,198
Location
Göteborg
Om ingen har sagt "Jo det finns, kolla här ..." innan söndag så går jag igång och fortsätter med min ansats. Om någon gillar att koda javascript och SVG får den gärna hjälpa till.
 

zonk

muterad
Joined
10 Jan 2016
Messages
3,300
Jag är lite oklar med vad det är för format under ytan här.
Ja det kan man fråga sig! Jag bara menar att har man väl ett ordentligt Hexemell så kan man ju köra vilka behandlingar som helst sen (dvs som nån händig sätter samman).

Kanske finns nån kontaktinfo till personen bakom Watabou där nånstans på sidan?
 

Zire

Swashbuckler
Joined
18 May 2000
Messages
3,128
Location
Umeå
Jag är lite fundersam kring syftet, får du inte väldigt många parametrar genom den modell som du föreslår?

Man brukar väl annars utgå från ett rutnät och sedan "förskjuta" varannan rad ett halvt steg för att ge varje ruta två grannar i norr/söder. (Eller förskjuta varannan kolumn för att vrida hexarna åt det andra hållet.) Då kan man använda vanliga 2d koordinater, men beräknar grannarna med t.ex.:
n(x, y) -> n(x, y-1), n(x+1, y-1), n(x-1, y), n(x+1, y), n(x, y+1), n(x+1, y+1)
 

olaberg

Hero
Joined
1 Feb 2006
Messages
1,198
Location
Göteborg
Ja det kan man fråga sig! Jag bara menar att har man väl ett ordentligt Hexemell så kan man ju köra vilka behandlingar som helst sen (dvs som nån händig sätter samman).

Kanske finns nån kontaktinfo till personen bakom Watabou där nånstans på sidan?
Han heter Oleg och jag har honom på Twitter. Jag kan fråga.
 

olaberg

Hero
Joined
1 Feb 2006
Messages
1,198
Location
Göteborg
Jag är lite fundersam kring syftet, får du inte väldigt många parametrar genom den modell som du föreslår?

Man brukar väl annars utgå från ett rutnät och sedan "förskjuta" varannan rad ett halvt steg för att ge varje ruta två grannar i norr/söder. (Eller förskjuta varannan kolumn för att vrida hexarna åt det andra hållet.) Då kan man använda vanliga 2d koordinater, men beräknar grannarna med t.ex.:
n(x, y) -> n(x, y-1), n(x+1, y-1), n(x-1, y), n(x+1, y), n(x, y+1), n(x+1, y+1)
Jo, så gör jag när jag ritar det hela. (Plus lite andra tricks som innefattar pi och siffran 6 och roten ur två och grejer.)

Men det här handlar om att semantiskt beskriva innehållet i varje hex, så att olika slags renderingsalgoritmer kan skapa olika slags renderade kartor.

Ungefär som att ett GIS-system innehåller semantiskt data om områden, höjdkurvor och platser, som sedan kan ritas på lite olika sätt beroende på behov.

Varför jag inte använder befintliga GIS-system? Därför att spelighet (här i formen av hexagoner) ställer delvis andra krav än GIS-systemens.
 

olaberg

Hero
Joined
1 Feb 2006
Messages
1,198
Location
Göteborg
Ni som är gamla nog att känna igen en analog klocka, ni förstår. Ni som är gamla nog att ha lärt er "nordnordost en kvart ost" istället för 360-grader-på-en-cirkel eller 400 goner: jag bugar mig. Ni som är gamla nog att stå på ziggurater i UR och beskåda stjärnhimlen: tack, det var ni som kom på det här. Men varför är ni vakna och hemsöker mig nu?
 

Troberg

Sinister eater
Joined
27 Jun 2001
Messages
17,659
Jag skulle föredra om man tydligare såg vad som var sidor och hörn. Säg att namngivningen är s1-6 för sidorna, och c1-6 för hörnen, till exempel. Det gör allt mycket mer lättläst.

Ett annat problem som man måste hantera är att varje sida hör till två hexagoner, och varje hörn hör till tre hexagoner. Om man tex ska ha en cirkel i ett hörn, ska den nämnas i en hex, eller i alla tre? Eller är hexagonerna helt fristående (typ, grafiskt sätt så kan man tänka sig dem som separata hexagoner mer ett teoretiskt litet mellanrum mellan)? Datamodellsmässigt gör det rätt stor skillnad.
 

olaberg

Hero
Joined
1 Feb 2006
Messages
1,198
Location
Göteborg
Jag tänker att varje hex är fristående. Och det är så jag renderat dem: varje hex ritas runt sin mittpunkt som ett separat grafiskt objekt.
 

Zire

Swashbuckler
Joined
18 May 2000
Messages
3,128
Location
Umeå
Intressant! Du har inte funderat på att lägga upp det på github.com eller liknande?
 

olaberg

Hero
Joined
1 Feb 2006
Messages
1,198
Location
Göteborg
Intressant! Du har inte funderat på att lägga upp det på github.com eller liknande?
Jo, men inte än. Det är bara utforskande än så länge, och vem som helst som har länken kan tanka ner och joxa vidare.
 
Top