Nekromanti [Subway] Att generera flödesscheman - jag har byggt en liten grej

krank

Lättkränkt cancelkultur-kommunist
Joined
28 Dec 2002
Messages
36,182
Location
Rissne
Jag har sportlov och tänkte använda det till att återhämta mig. En sak som jag märkt är supereffektivt för mig när det gäller återhämtning är att programmera saker. Inte åt någon annan i första hand, utan bara egen programmering för min egen skull. Inga krav på att det ska bli "bra kod" eller så.

Så. De senaste dagarna har jag byggt på SUBWAY.



Här: http://subway.krank.se/.

Den kan vara lite småtung att ladda in första gången (ett av javascript-biblioteken jag använder klockar in på ca 1.6mb) men det bör gå snabbare efterföljande gånger.

Subway genererar flödesscheman utifrån de principer jag brukar följa när jag designar mysterielösar-äventyr.
  • Varje nod kan vara en plats eller en person, eller i vissa fall en bit information.
  • Varje pil är en bit information som pekar mot en annan plats/person.
    • Generellt är informationen tänkt att levereras i form av en ledtråd till rollpersonen, som då behöver göra någon form av avkodning.
    • Ledtrådarna kan såklart vara låsta eller kräva en insats i form av genomsökning, övertalning, strid etc.
  • De flesta vanliga noder (minst typ 60% om jag minns rätt) har 2+ utgående pilar.
  • De flesta har också 2+ ingående pilar.
  • Man har alltid en startnod. Till exempel en brottsplats. Därifrån går det lite fler kopplingar än vad som är normen för vanliga noder, så att spelarna får flera olika vägar att följa redan från början.
  • Det kan finnas flera slutnoder. Antagligen är bara en av dem "slut-encountern", informationen om vem som faktiskt utförde mordet, skurkens hemliga gömställe, etc. Resten är dead ends, falska "skyldiga", etc. Red herrings.
Just nu kan man ändra texten i noderna, och lägga till eller ta bort noder från "End nodes" och "Nodes"-listorna.

Om man genererar ett flödesschema som man gillar, men man vill ha annan text i rutorna, så kan man ändra texten till vänster och trycka på den lite mindre "redraw"-knappen till höger om "Go".

Resultatet kan zoomas och panoreras. Det mesta bör funka på mobila enheter, men inte i IE.

För den som vill förfäras över min dåliga källkod så finns allting tillgängligt här på GitLab. Där kan man också kolla under "Issues" vilka saker jag planerar att implementera framöver. Där lägger jag också in buggar om jag inte fixar dem direkt.

Just nu tänker jag att jag ska prioritera:
  • Genremässiga platser som kan slumpas in i existerande noder. T.ex. cyberpunkplatser, fantasyplatser, etc. Och något enkelt sätt att bidra med egna listor.
  • ...I dunno. Generera formaterad text som man kan klistra in i t.ex. Word, tror jag.
Så. Testa gärna. Säg snälla, konstruktiva saker. Ställ frågor.

(Namnet kommer från att någon beskrev mina flödesscheman, det ickelinjära men fortfarande inte sandlådiga sättet att bygga äventyr, som ett "tunnelbanenätverk". Det klingade bättre än min gamla käpphäst "spindelnätsmodellen").
 

Attachments

Vimes

Sillkung
Joined
15 Jun 2000
Messages
12,089
Det vore coolt om ledtrådspilarna på något vis definierades. Alltså vad är det för ledtråd som leder från nod 1 till nod 2.

Sedan kanske det borde vara möjligt att det går två ledtrådar från nod 1 till nod 2?
 

clarence redd

FrostByte Books
Joined
23 May 2014
Messages
1,751
Location
Göteborg
Riktigt snajdigt! Påminner väldigt mycket om hur mina äventyr blir till.

En fundering: Varje gång man ändrar texten i en ruta så zoomar den ut. Skulle det gå att behålla zoomläget?
 

Vimes

Sillkung
Joined
15 Jun 2000
Messages
12,089
Lägger man till en ny slutnod heter den inte End #2 i default utan får namnet F.
 

krank

Lättkränkt cancelkultur-kommunist
Joined
28 Dec 2002
Messages
36,182
Location
Rissne
Vimes;n275943 said:
Det vore coolt om ledtrådspilarna på något vis definierades. Alltså vad är det för ledtråd som leder från nod 1 till nod 2.
Absolut. Jag tänker akta mig lite för feature creep, men man kan absolut tänka sig att man t.ex. ger varje koppling en siffra och sedan genererar/slumpar lite olika typer av info kring vad för slags ledtråd det är. Isåfall på något ganska generiskt sätt, för jag kommer nog inte att palla att t.ex. knyta det till vilken plats som slumpats fram etc. Så i värsta fall blir det kanske något användaren får göra själv =)

Vimes;n275943 said:
Sedan kanske det borde vara möjligt att det går två ledtrådar från nod 1 till nod 2?
Jag funderade på det men valde att åtminstone tills vidare tänka att en pil i de fallen får representera flera ledtrådar. För att minska plottrigheten något.

Det är lite som att det egentligen borde vara möjligt för två noder att ha ledtrådar till varandra, dvs att det skapas en loop, men jag har åtminstone tillfälligt hindrat det. Jag har nåt slags vag tanke (som antagligen aldrig blir av) om att låta användaren välja vad som ska göras och i vilken ordning - dvs hur mycket ska slumpas, i vilken riktning, hur många pilar kan man ha, ska det finnas loopar etc. Men det blir antagligen mycket mer jobb än det är värt...
 

Vimes

Sillkung
Joined
15 Jun 2000
Messages
12,089
Finns det inlagt hur många steg det måste vara från start till mål? Nu körde jag ett antal genereringar, och även med ganska många noder slutar jag oftast på två steg.
 

krank

Lättkränkt cancelkultur-kommunist
Joined
28 Dec 2002
Messages
36,182
Location
Rissne
Vimes;n275949 said:
Finns det inlagt hur många steg det måste vara från start till mål? Nu körde jag ett antal genereringar, och även med ganska många noder slutar jag oftast på två steg.

Det finns inte inlagt; risken minskar såklart om man lägger in fler noder men du har en poäng. Skriver upp det bland saker jag ska fundera på hur jag ska lösa.
 

Vimes

Sillkung
Joined
15 Jun 2000
Messages
12,089
krank;n275947 said:
Absolut. Jag tänker akta mig lite för feature creep, men man kan absolut tänka sig att man t.ex. ger varje koppling en siffra och sedan genererar/slumpar lite olika typer av info kring vad för slags ledtråd det är. Isåfall på något ganska generiskt sätt, för jag kommer nog inte att palla att t.ex. knyta det till vilken plats som slumpats fram etc. Så i värsta fall blir det kanske något användaren får göra själv =)
Verkar rimligt. Och mer prioriterat att göra listor att använda tänker jag mig. Har man väl fått hjälp med vad noderna, och vilka som leder till vilka, borde man fått en helt del hjälp på vägen mot att själv kunna definierar ledtrådarna.
 

Vimes

Sillkung
Joined
15 Jun 2000
Messages
12,089
krank;n275947 said:
Absolut. Jag tänker akta mig lite för feature creep, men man kan absolut tänka sig att man t.ex. ger varje koppling en siffra och sedan genererar/slumpar lite olika typer av info kring vad för slags ledtråd det är. Isåfall på något ganska generiskt sätt, för jag kommer nog inte att palla att t.ex. knyta det till vilken plats som slumpats fram etc. Så i värsta fall blir det kanske något användaren får göra själv =)
Verkar rimligt. Och mer prioriterat att göra listor att använda tänker jag mig. Har man väl fått hjälp med vad noderna, och vilka som leder till vilka, borde man fått en helt del hjälp på vägen mot att själv kunna definierar ledtrådarna.
 

Vimes

Sillkung
Joined
15 Jun 2000
Messages
12,089
krank;n275951 said:
Det finns inte inlagt; risken minskar såklart om man lägger in fler noder men du har en poäng. Skriver upp det bland saker jag ska fundera på hur jag ska lösa.
När jag lajjade runt nu kan jag konstatera att jag hitintills inte fått fler än noder mellan start och mål när jag har A-G. Med A-H är det för det mesta samma sak, men ibland 3 noder. Med A-J verkar det nästan alltid bli 3 noder.

Det kanske inte är ett jätteproblem egentligen, i synnerhet med red herring-slutnoder (vilket jag inte testat något).
 

krank

Lättkränkt cancelkultur-kommunist
Joined
28 Dec 2002
Messages
36,182
Location
Rissne
clarence redd;n275945 said:
Riktigt snajdigt! Påminner väldigt mycket om hur mina äventyr blir till.

En fundering: Varje gång man ändrar texten i en ruta så zoomar den ut. Skulle det gå att behålla zoomläget?
Det borde inte vara omöjligt, om det är önskvärt. Nackdelen blir isf att det inte längre finns något sätt att återställa... Men det kanske kan lösas med en separat knapp. Lägger in det som en issue iaf, så ordnar jag det förr eller senare.
 

krank

Lättkränkt cancelkultur-kommunist
Joined
28 Dec 2002
Messages
36,182
Location
Rissne
Vimes;n275946 said:
Lägger man till en ny slutnod heter den inte End #2 i default utan får namnet F.

Yup, det är för att jag använder samma "hämta nästa bokstav i alfabetet"-grej som för andra noder. En vacker dag ska jag fixa så att den går över till "AA", "AB, "AC" etc. när den når Z...

Jag funderar på att bygga en "om den tidigare texten slutar på en eller flera siffror, använd de siffrorna som ett tal och använd grundtexten + lägsta lediga tal"-grej också.

Frågan är vilket som är bäst om det t.ex. bara finns en "End #4" kvar:?
  1. Nästa blir "End #5"
  2. Nästa blir "End #1"
 

krank

Lättkränkt cancelkultur-kommunist
Joined
28 Dec 2002
Messages
36,182
Location
Rissne
Vimes;n275956 said:
När jag lajjade runt nu kan jag konstatera att jag hitintills inte fått fler än noder mellan start och mål när jag har A-G. Med A-H är det för det mesta samma sak, men ibland 3 noder. Med A-J verkar det nästan alltid bli 3 noder.

Det kanske inte är ett jätteproblem egentligen, i synnerhet med red herring-slutnoder (vilket jag inte testat något).
Jag tror att steg 1 kommer att vara en mycket enkel grej som förhindrar tvåstegslösningar, dvs att en slutnod aldrig kopplar sig till någon av de noder som utgår från startnoden om det finns några andra alternativ.

I senare skede kan jag göra det mer avancerat; att den kollar ett visst antal steg från startnoden beroende på molnets storlek, eller kanske får en lista av noder sorterad efter hur nära de har till startnoden och slumpar så att det är mer sannolikt att få de noder som ligger långt ifrån.
 

krank

Lättkränkt cancelkultur-kommunist
Joined
28 Dec 2002
Messages
36,182
Location
Rissne
Vimes;n275956 said:
När jag lajjade runt nu kan jag konstatera att jag hitintills inte fått fler än noder mellan start och mål när jag har A-G. Med A-H är det för det mesta samma sak, men ibland 3 noder. Med A-J verkar det nästan alltid bli 3 noder.

Det kanske inte är ett jätteproblem egentligen, i synnerhet med red herring-slutnoder (vilket jag inte testat något).
Nu har jag fixat så att den skippar noderna närmast startnoden. När det blir för få noder, så att det inte funkar (det blir svårt på två noder, eller en) så struntar den i det, men har man 3+ noder så bör det inte skapas några tvåstegslösningar nu.
 

krank

Lättkränkt cancelkultur-kommunist
Joined
28 Dec 2002
Messages
36,182
Location
Rissne
clarence redd;n275945 said:
En fundering: Varje gång man ändrar texten i en ruta så zoomar den ut. Skulle det gå att behålla zoomläget?
Fixat nu. Har också lagt till knappar för zoom och återställning av zoom/panorering, så det hela funkar lite bättre på mobila enheter.

Vimes said:
Lägger man till en ny slutnod heter den inte End #2 i default utan får namnet F.
Det är delvis önskat beteende, men numera så numrerar den iaf uppåt ifall man klonar slutnoder. Eller andra noder med ett nummer i slutet.



Nästa projekt nu blir definitivt "fyll nuvarande noder med slumpade platser från miljö/genre X"; jag har skjutit upp det länge nog. Det är dock ett ganska omfattande projekt, som jag åtminstone inte gör ikväll... =)
 

krank

Lättkränkt cancelkultur-kommunist
Joined
28 Dec 2002
Messages
36,182
Location
Rissne
stenhöna;n276569 said:
Open-source?
Har inte gjort det explicit men ja, koden på GitLab får man ladda ner och göra precis vad man önskar med. Om man tror att man får ut något av det =)
 

krank

Lättkränkt cancelkultur-kommunist
Joined
28 Dec 2002
Messages
36,182
Location
Rissne
NEKROMANTI!

Idag har jag:
  • Fixat så att start- och slutnoder är lite tydligare markerade.
  • Äntligen blivit klar med funktionen som låter en slumpa platsnamn till noderna. Ännu så länge är det framför allt cyberpunkgenren som fått kärlek, men det finns ett par andra lite kortare listor också. Om inte annat kan man skriva in egna listor utan problem.
 

Attachments

ceruleanfive

Bläckfisk
Joined
23 Feb 2017
Messages
2,827
Location
Eskilstuna
krank;n281694 said:
NEKROMANTI!

Idag har jag:
  • Fixat så att start- och slutnoder är lite tydligare markerade.
  • Äntligen blivit klar med funktionen som låter en slumpa platsnamn till noderna. Ännu så länge är det framför allt cyberpunkgenren som fått kärlek, men det finns ett par andra lite kortare listor också. Om inte annat kan man skriva in egna listor utan problem.

Mycket fränt!
 
Top