Wednesday, July 7, 2010

Flaskhalsar

Väldigt mycket av det vi gör i våra liv består av att få olika flaskhalsar att lossna. Eller, rättare, väldigt mycket av det vi gör beror på att våra omständigheter inte tillåter oss att göra vissa saker förrän andra saker är gjorda. Eller, ännu rättare, för att göra en viss sak så måste vi väldigt ofta vänta på att en annan sak blir gjord först, vilket tvingar oss att vänta där vi i övrigt inte hade behövt det.

Coding Horror visar pedagogiskt hur det här med datorer utgör en ständig kamp mellan fyra flaskhalsar, som var och en ställer till det för en - processorn, hårddisken, nätverket och arbetsminnet. Närhelst saker och ting börjar gå heta inuti datorburken så är det alltid endera av dessa fyra som tvingar de andra tre att arbeta på mindre än 100% i väntan på sig själv, och tricket för den gode datornörden blir då att försöka se till saker och ting inte sinkas allt för mycket av att endera av dessa är allt för slö. Vilket, traditionellt sett, består i att uppgradera komponenterna en efter en så att flaskhalsen placerar sig där den gör minst skada.

En annan plats flaskhalsar ofta uppenbarar sig är i trafiken. Broar är förstås paradigmatiska exempel på detta, eftersom de många gånger utgör det enda sättet att ta sig förbi det de överbryggar, varpå alla måste använda dem. Det spelar ingen roll hur god trafiksituationen än är på endera sidan av bron - när viljan att ta sig från den ena sidan till den andra och/eller tillbaka uppnår en viss nivå så blir erfarenheten att ta sig över den en lite långsammare upplevelse än vad det hade kunnat vara. Det klassiska sättet att ta sig ur problematiken är förstås att bygga en bro till, så att arbetsbördan fördelas mellan olika potentiella flaskhalsar på ett sådant sätt att stockningar inte uppstår.

Vi skulle kunna rada upp ett par exempel till, men jag tänker greppa tag i ett oväntat sådant. Två stycken, faktiskt - de gamla klassikerna Outpost och Outpost 2. Ni kanske eller kanske minns dem från en nostalgisk gamerungdom, men trots att de inte har så mycket med varandra att göra rent spelmässigt så går det ändå att se att bägge har flaskhalsar som huvudkomponent.

Många minns Outpost som ett väldigt lovande men samtidigt väldigt buggigt projekt, som släpptes långt för tidigt med alldeles för många halvfärdiga komponenter för att egentligen vara spelbart. De fixade förvisso många av de mer akuta buggarna i en 1.5-patch, men - well. Det blev aldrig riktigt klart, vilket är oerhört synd eftersom det som sagt var väldigt lovande.

Utgångspunkten är denna: jorden har gått under, och du har lyckats bli ledare för de överlevare som lyckats ge sig ut i rymden för att kolonisera ett alternativt hem. (Ett väldigt stort hål i storyn är varför de inte bara nöjde sig med att åka till Mars i stället för de oräkneligt många milen till andra solsystem, men, som sagt, ofärdigt.) Det börjar med att du bygger det rymdskepp som ska ta er ut till stjärnorna, och redan där börjar flaskhalsarna göra sig synliga.

Det finns som bekant enbart ett begränsat utrymme på ett rymdskepp, så det går inte att plocka med sig hur mycket som helst. Så även om det hade varit en god idé att ta med sig tillräckligt mycket med teknologiskt godis för att överleva ungefär varenda tänkbar situation som skulle kunna uppstå, så får en nöja sig med ett absolut minimum av förnödenheter som kanske eller kanske inte räcker när tillflyktsorten väl är nådd. Vilket då är nästa flaskhals - resurser.

Outpost innehåller absurt många resurser, och det gäller att hålla koll på vilka som används var och hur de tillförskansas. Om och när de tar slut så slutar även de byggnader som kräver dem att fungera, vilket i just det här spelet är synnerligen brutalt eftersom de byggnader som krävs för att skaffa resurser kräver just resurser för att fungera. Vilket då innebär att även ett kort avbrott i produktionen blir en dödsstöt åt den stackars kolonin - och att spelet är slut även denna gång utan att du kan göra så mycket åt det.

Anledningen till att det ser ut så här är förstås att utvecklarna drabbades av de största flaskhalsarna av dem alla - tid och pengar. Om de hade haft lite mer av dessa så hade de kunnat lägga ner mer tid åt buggfixande och annat mys som inte riktigt blev gjort - men, likväl. Den som lyckades överleva - vilket mestadels tycktes bero på slumpen om det inträffade eller inte - belönades med ett ganska trevligt utforskande av teknologiträdet och dess till synes oförutsägbara vindlingar. Förvisso bara första gången, men det var värt att spontandö många gånger för att få utforska det helt.

Outpost 2 är inte lika sadistiskt, men är ändå bundet av flaskhalsens logik.  Den mest uppenbara är att varje byggnad kräver folk för att fungera, och folk är en akut bristvara. Dessutom så kräver de byggnader som håller folket vid liv folk för att fungera, vilket gör att du har ännu mindre folk tillgängliga till att göra annat än att bara överleva.

Den andra uppenbara flaskhalsen är resurser, återigen. Den här gången är de bara två, och väldigt många gånger sitter en och väntar på att nästa lass ska komma in så att en kan komma vidare. Ohemult många gånger sitter en och väntar på att tillräckligt med resurser för att bygga någonting som gör det snabbare att inhämta ännu mer resurser, vilket då illustrerar flaskhalsens paradox i ett nötskal.

Den tredje flaskhalsen är forskare, som förstås används för att forska fram saker och ting. Ju fler av dem du har, desto snabbare går det - men ju fler av dem du har, desto färre folk har du som kan ägna sig åt byggnadsarbete. Vilket innebär att du måste avväga mellan den livsnödvändiga forskningen och den ännu livsnödvändigare infrastrukturen.

Den fjärde är industrikapacitet, dvs förmågan att göra någonting av resurserna. Vilket kräver både resurser och byggjobbare, och således är en avvägning gentemot de andra faktorerna.

Därefter kommer tid. Om du sölar för mycket i ditt avvägande så kommer du antingen att ätas upp av naturkatastrofer eller av fienden - eller, om spelet känner sig riktigt grymt just den dagen - en naturkatastrof som slår till precis innan en helt oskadd fiendearmada dyker upp.

I ettan dör du spontant. I tvåan är det synnerligen planerat.

Den viktigaste flaskhalsen är dock inte vare sig folk, resurser, forskare, industri eller ens tiden självt, utan spelet som sådant. Om du väl lyckas få igång allt hjälpbart mycket så kommer du att märka att även om du har tillräckligt av allt så går saker lite för långsamt, och detta beror på att interfacet är så pass uselt designat att det är en plåga att göra saker snabbt. Om du vill göra någonting så måste det ske via ett av de klumpigaste interface som världen någonsin skådat i ett RTS, och det största hindret för spelets vinnbarhet i de svårare stunderna är alltså spelet självt.

Vilket är sadistiskt på ett helt annat plan än vad spontan massdöd är. Och vilket också lämnar oss med tanken att flaskhalsar kan uppstå även på de mest oväntade ställen.

Exempelvis så är många snabbmatsrestauranger relativt optimalt utformade för att göra saker snabbt och effektivt, och börjar närma sig en punkt där den långsammaste enheten i systemet inte är en del av köket, utan av användaren - dvs konsumenten och dennes beslutsångest, som tvingar köket att gå på tomgång medan alternativ a och alternativ b noga avvägs mot varandra.

Det blir alltså viktigare att titta på systemet som helhet än att analysera dess delar i detalj för att förstå exakt vari de viktigare flaskhalsarna sitter. Även om jag nu fått en synnerligen giltig ursäkt för att skriva om två av mina mindre kända - och, indeed, inte helt aktivt omspelade - favoritspel från förr, så är det inte de som är poängen.

Poängen är snarare att banka in att om du verkligen börjar tänka på det hela så befinner de sig överallt, dessa ömma flaskhalsar - och det går att åstadkomma väldigt stora förbättringar genom väldigt små förändringar om dessa kan identifieras och avlastas. Inte bara i stora system som vägnät, infrastruktur, semikomplexa datorspel eller överorganiserade snabbmatsrestauranger, utan även i vardagen, i den lilla föreningen eller - indeed - i det egna finnandet av tid att skriva i vissa bloggar.

Exakt hur detta görs varierar förstås från situation till situation och från system till system, men principen är alltid densamma. Det finns ett par viktiga faktorer som spelar in för systemets interna funktionalitet, och där en av dem närmast alltid är lite för långsam för att de andra komponenterna ska kunna användas till fullo, och i de fall där systemet är väl avvägt så tillkommer det alltid något externt störningsmoment och gör livet tjurigt för en.

Den flaskhals som ställde sig i vägen för skrivandet av det här inlägget, you say? Tja.

Jag hade tillräckligt mycket folk, tillräckligt mycket resurser, tillräckligt mycket industri, tillräckligt mycket tid - men inte tillräckligt mycket sadism.

Det är som sagt alltid någonting som ställer sig i vägen för en...

Flattr this

No comments:

Post a Comment