Nekromanti Världar som finns utan att ha skapats

Feliath

Swashbuckler
Joined
28 Nov 2000
Messages
1,905
Whoa there, Calculon

Eftersom alla namn ger ungefär ett och samma tal så var den här metoden rätt sugig, men det märkte inte jag förrän nu när jag började göra exempel. Eftersom jag inte orkar klura på något nytt så får det här stå som ett moment över hur korkad man framstår när man inte klurat i förväg innan man börjar skriva ett inlägg.
Eh? Det spelar väl ingen roll om de flesta av starttalen ligger i samma område? Modulusoperatorn ger ju bara resten vid division; 32 är lika skilt från 33 som 347 är i dina tabeller, t.ex, medan 347 och 32 ger samma resultat. Det behövs inte tal av vilt varierande storlek, alltså, eftersom modulusoperatorn ändå reducerar ner alla tal till ett spann av heltal stort som nämnaren.

Har jag helt missat din beef med din metod, här?


/Feliath - pack my dreams a parachute :zeppelinare:
 

Simon

Swashbuckler
Joined
10 Oct 2000
Messages
2,602
Location
Malmö/Stockholm
Redigera en gång till

Byt plats på "hårda" och "mjuka" om du tycker att det spelar nån roll att ha det rätt.

Älskar tråden, för övrigt!

/S
 

EchonCique

Hero
Joined
22 May 2000
Messages
1,779
Wow och lite trivia

Wow!

Underbar tråd måste jag säga, sedan skall tilläggas att med den länk du postade får jag följande titel: Exalted Equidistant Gazebo Maxi-Platypus Surrealist Gewgaw Yyrkoon (the Third).

Kom ihåg det i fortsättningen folk!

Sedan för att vara lite mer seriös så kan jag tipsa om att ta kontakt med skaparna av EVE som på något sätt har programmerat en algoritm som de använt sig av för att skapa hela spelets innehåll i princip.

Denna algoritm har använts för att skapa över 5000 unika stjärnsystem, med planeter, månar, asteroidbälten och stationer som utvärde (Dvs namn, storlek, antal, placering i universum, etc.). Dessutom har de använt den till att skapa alla namn på alla NPC i spelvärlden som med en grov uppskattning kan uppgå till 75000 fördelade på fyra distinkt särskiljda raser.

Om man på något sätt kan skapa en dylik förenklad algoritm som man kan använda sig av i rollspelsprodukter skulle i alla fall JAG bli en glad are och lyckligare människa!
 

Danno

Veteran
Joined
16 Sep 2000
Messages
118
Location
Göteborg, Sverige
Re: Ett väldigt omständigt och ogenomtänkt uppslag

Hemligheten ligger väl i att det inte ska vara slumpen som avgör utan en algoritm.
 

Troberg

Sinister eater
Joined
27 Jun 2001
Messages
17,659
Re: Ett väldigt omständigt och ogenomtänkt uppslag

Hemligheten ligger väl i att det inte ska vara slumpen som avgör utan en algoritm.
Men samma logik håller om man genererar stabila slumpliknande tal, ungefärsom jag beskrivit på andra ställen i tråden.
 

Dimfrost

Special Circumstances
Joined
29 Dec 2000
Messages
8,636
Location
Fallen Umber
Det här är verkligen spännande. Jag hade liknande tankar när jag pysslade med 3*3-systemet för att bygga grejer, när jag hade tänkt mig att man skulle kunna kombinera element utan att på förhand kunna veta vilka effekter de skulle få. Man skulle kunna ana det, som att en motor antagligen ger någon form av drivkraft, men bieffekter skulle vara väldigt slumpmässiga, och kanske bara bygga vagt på tidigare erfarenheter. Du kanske minns att jag svamlade om systemet att kombinera djinner i Golden Sun till GBA i vrållådan.

Visst, det är svårt att genomföra på ett enkelt sätt, utan datorberoende algoritmer, men idén som sådan är klart häftig. Vi får klura vidare lite.


/Dimfrost
 

Snow

Swashbuckler
Joined
17 May 2000
Messages
2,617
Location
Klippan
efter en lätt modifikation tar min personlighetsgenerator numera ett namn som indata för att bestämma värdet på fyra olika variabler som styr vilka personlighetsdrag som väljs fram.

Jag tar ascii-värdet på bokstaven
multiplicerar med motsvarande tal ur talserien X=X*2-1 (2, 3, 5, 9, osv)
sedan summerar jag talen
(summan modulo 200)-100 ger ett värde mellan -100 och 100
genom att dela summan med vissa tal (pi, e och 0,3333333) får jag andra tal som jag också tar modulo 200
detta ger de fyra variablerna: God-Ond, Stark-Vek, Trevlig-Otrevlig, Kaotisk/Strukturerad
Som bestämmer vilka karaktärsdrag namnet har
 

Rising

Vila i frid
Joined
15 Aug 2001
Messages
12,763
Location
End of the green line
Re: Whoa there, Calculon

"Eh? Det spelar väl ingen roll om de flesta av starttalen ligger i samma område?"

Sorry att jag är sen att svara, men jag har varit ledig. Nej, det är inget problem i sig att talen är i samma område, men som jag föreslog det så ger vanliga namn ett väldigt litet omfång av olika tal, och det är ett problem.
 

Rising

Vila i frid
Joined
15 Aug 2001
Messages
12,763
Location
End of the green line
Eftertänk

Talföljder brukar fucka upp de modulära operationerna.För den som exempelvis vill göra ett rymdspel där man ska kunna knapa in koordinater och generera olika planeter och solsystem så brukar det uppstå olika mönster om man reser ett steg i taget i exempelvis X-ledd och hela tiden observerar vad man ser. Det brukar vara lätt att skönja mönster om man bara fortsätter på det viset tillräckligt länge.

Den matematiska lösningen är att låta talen upphöjas med höga primtal, samt att låta dem snurra runt i ett modulärt kretslopp som i sig är väldigt stort (och det bör också vara ett primtal).

Woo! Blev det för mycket på en gång? Okej, vi tar det lite lugnt nu. Det finns två problem med lösningen jag har angivit ovanför. Att räkna med upphöjningar är extremt jobbigt.

Det första problemet
Tänk exempelvis att du befinner dig på x-koordinaten 106, och att vi skall upphöja x med 29. Försök knappa in 106^29 på din miniräknare du. Det går inte. Till och med för datorn blir det snabbt för jobbigt med sådana här matematiska operationer.

Det andra problemet
Om du kommer på 20 olika planettyper så ter det sig naturligt för dig att göra en matematisk beräkning på så vis att du i slutändan får ett tal mellan just 1 och 20. 20 är dock varken ett primtal eller särskilt högt. Ur en rent matematisk synpunkt vill du därför hellre modulera på så vis att du får ett tal mellan 1 och 269, typ. Men inte kan man väl förvänta sig att du skall orka hitta på så många olika planettyper?

Det andra problemet är lätt att lösa. Man modulerar helt enkelt två gånger. Först med ett högt primtal för att få en bra matematisk variation, och sedan en gång till för att få ett spann som man vill arbeta med. Det första problemet är lurigare. Tack vare Simon Singhs "kodboken" så har jag dock fått lära mig denna lilla sköna pryl:

X^7 mod Z = (X^4 mod Z) x (X^2 mod Z) x (X^1 mod Z)
X^3 mod Z = (X mod Z) x (X mod Z) x (X mod Z)
X^8 mod Z = (X^4 mod Z) x (X^4 mod Z)

Ser du? Man kan räkna upphöjningar i omgångar om man bara hela tiden modulerar och multiplicerar bitarna med varandra. På så vis kan man relativt enkelt upphöja stora tal med andra stora tal utan att datorn kraschar.

Och det blir himla vackra talserier till slut, de ser helt slumpmässiga ut, och de blir relativt välfördelade över alla resultat. Titta här bara; här kör jag X upphöjt med 17 och modulerar detta sedan med 199, sedan modulerar jag det en gång till med 20 så att jag får ett tal mellan 0 och 19:

1 -- 1
2 -- 10
3 -- 8
4 -- 4
5 -- 3
6 -- 10
7 -- 11
8 -- 0
9 -- 2
10 -- 10
11 -- 16
12 -- 11
13 -- 0
14 -- 15

osv. Här blev det några fler tior än väntat, men låt inte det foola dig; metoden är grym när man bara fortsätter räkna och håller på tillräckligt länge.

En sådan här matematisk operation kan man kalla för envägsfunktion, eller Humpty Dumpty-funktion. Den är enkel att beräkna åt ena hållet, men den är svår att göra åt andra hållet. Och det är ju precis det vi vill. Vi vill att det ska vara enkelt att räkna för oss när vi skapar världen, men att det inte skall framstå något tydligt matematiskt mönster när vi väl utforskar världen som rollpersoner. Vi skall inte enkelt kunna "räkna ut" vilka koordinater som kan leda oss till den häftigaste planeten. För att hitta dit måste vi utforska världen precis på det riktiga sättet...

Jag byggde ganska snabbt en sorts labyrintgenerator i Qbasic som genererade fram fåniga rum i samma anda som det gamla kultspelet "Stugan" och det blev naturligtvis direkt så att man tog fram papper och penna och började kartlägga hela huset. Nå... om man ska använda en sådan här generator till ett rollspel så ska man väl inte göra spelet så beroende av datorn (även om det ju skulle gå att programmera en sådan här generator i en vanlig programmerbar miniräknare eller köra den i en modern mobiltelefon), men det skulle ju kunna fungera som ett bra underlag för en spelledare för att snabbt generera ett så stort område som han behöver för ett äventyr. Om spelarna efter äventyret vill börja utforska världen i en ny riktning så kan man låta dem ange sina planer i slutet av spelomgången så att man får tid att förbereda sig mellan spelomgångarna.
 

Zire

Swashbuckler
Joined
18 May 2000
Messages
3,128
Location
Umeå
Re: Eftertänk

Det var en mycket intressant tråd, synd att jag inte såg den förrän nu.

[fikonspråk]
Jag tänkte bara tipsa om den allmänna (pseudo) slumpgeneratorn: x(i+1) = (a * x(i) +b) mod p
där x(i+1) är det nya slumptalet ((i+1) är bara index).
a, b och p är primtal, gärna så höga som möjligt.
x(i) är det tidigare primtalet

Man använder sig alltså av en rot först, vilken, insatt i formeln ovan som x(i), används för att skapa ett nytt slumptal.
Detta tal används i sin ordning för att skapa ytterligare en ny o.s.v.
Genom att variera roten får man alltså olika talserier.

Då man ska använda sig av talet så förkortas det med modulo operatorn till den räckvidd som man vill använda.

Vill man ha långa serier så bör höga primtal användas. Använd inte mer än p/1000 tal från samma talserie, de kan bli periodiska. Välj a så att 0.01p < a < 0.99p.
[/fikonspråk]

Men jag funderade på genereringen av pseudoslumpmässiga system, typ rymdkartor och liknande.
Att göra ett system som man kan beräkna lite fort verkar ganska dumt. Det kommer att behövas en hel del slumptal, och det blir så otroligt mycket enklare (och bättre) att göra det med hjälp av en dator istället, eller någorlunda kompetent räknare. Så jag håller med, kanske inte helt bra att använda för rollspel.

"Den är enkel att beräkna åt ena hållet, men den är svår att göra åt andra hållet."
Snabba upp den och få 1 million dollar. Problemet är att du förmodligen blir mördad på kuppen.


- Zire
 
Top