Norske ManagerLeague fyller 20 år, med 220.000 linjer Perl
Christian Lassem har koda på fotballsimulatorens Perl-kode i over 20 år. – Jeg tror egentlig ikke jeg liker det spesielt godt.
Hvordan er det egentlig å vedlikeholde en over 20 år gammel kodebase – laget i et programmeringsspråk som hadde sin storhetstid på 90-tallet og tidlig 2000-tall – Perl?
Christian Lassem står bak spillet ManagerLeague, ett av verdens lengstlevende fotball-manager-spill. Spillet ble lansert i 2005, og feirer 20-årsjubileum 15. september i år. Med rundt 13.000 spillere lever spillet fortsatt i beste velgående, og det videreutvikles fortsatt.
– Jeg må si jeg har et ganske avslappet forhold til teknisk gjeld. Spillet har jo tross alt kjørt i 20 år, og selv om jeg stadig utvider, utvikler og forbedrer det, så er jeg godt plantet i "hvis det ikke er ødelagt, ikke prøv å fikse det"-leiren, forteller Christian Lassem til kode24.
Han er eneste utvikler i Fifth Season, selskapet bak spillet, i tillegg til at han er Game Director i spillselskapet Snowcastle. Tidligere har han vært innom selskaper som Funcom, Fairplay og Artplant.
Fikk idéen på slutten av 90-tallet
Lassem fikk idéen til ManagerLeague da han jobbet i Fairplay AS i 1997-1998.
– Vi var en gjeng som skulle lage et online MMO fotballmanager-spill. Desverre ble det spillet aldri ferdig, og selskapet overlevde ikke. Men ideen var fremdeles levende.
Han og to tidligere kollegaer etablerte Fifth Season tidlig i år 2000 og lagde først spillet Planetarion. Spillet ble en stor hit, men de klarte aldri å få de store inntektene. Da dot.com-boblen sprakk og annonseinntektene uteble, ble selskapet lagt på is.
– På fritiden begynnte jeg å leke med ideen til det som skulle bli ManagerLeague. Og etter litt klabb og babb med å prøve å finne penger nok til utviklingen og lansering, ble ManagerLeague lansert 15. September 2005! sier Lassem.
Han sier han har stått for idé og utvikling stort sett alene, men at de en periode hadde en annen utvikler som også jobbet med både ManagerLeague og et annet spill som nå er lagt ned.
– På det meste hadde vi vel oppunder 50.000 brukere, men jeg tror dette tallet var litt blåst opp av "ikke veldig aktive kontoer". Nå har vi 13.000. Og vi er ganske brutale med fjerning av inaktive klubber. Logger du ikke inn på 90 dager er det takk og forvel!
Helt uten rammeverk
– Si litt om tech-stacken deres!
– Uff, tech-stacken ja, haha, det er nesten så jeg kvier meg for å prate om den. Klienten er forsåvidt grei nok, det er (selvsagt) HTML/CSS og Javascript. Det skal sies at det er nesten bare håndkodet Javascript over hele fjøla, selv om det kanskje er en håndfull jQuery-referanser her og der fremdeles, sier Lassem.
Alt er "vanilla" JavaScript, uten bruk av moderne biblioteker og rammeverk som React eller Vue. Dette fantes ikke for 23 år siden, da arbeidet med spillet begynte.
Som nevnt er hele backenden med en masse simulatorlogikk skrevet i Perl.
– Det høres jo litt spesielt ut i dag, men det var ikke så sært for 23 år siden, sier Lassem.
Jeg tror egentlig ikke jeg liker det spesielt godt, og det er en befrielse hver gang jeg kan fokusere på klienten med bare Javascript.
Han forteller at da Perl ble valgt, så var det et relativt populært språk for web/cgi. Tilfeldigvis var det også et språk han nesten kunne, i tillegg til C og Turbo Pascal. Dermed var valget enkelt.
– Jeg tror egentlig ikke jeg liker det spesielt godt, og det er en befrielse hver gang jeg kan fokusere på klienten med bare Javascript, for eksempel. Det er noe med alle symbolene man gjerne finner i Perl-kode, som ikke er spesielt hyggelig.
– Det er nok fair å si at jeg nå og da ser på gammel kode og tenker "Hva i alle dager, hvorfor gjorde jeg dette på denne måten?", men det er kanske bare et tegn på at man er blitt litt klokere?
220.000 linjer Perl
Lassem forteller at ManagerLeague teknisk sett bare er en "litt avansert nettside", med en del tung simulering i bakgrunnen:
- Klassisk Nginx-frontend foran Apache/mod_perl
- Dataene ligger stort sett lagret i en MySql-database.
- For ytelsens skyld har Lassem laget en del smarte og skreddersydde cache-løsninger, som regel basert på et MemCache-layer som kan avlaste og cache litt.
– Det er 20 år siden spillet kom ut. Hvordan er det å vedlikeholde en kodebase over så lang tid?
– Det å vedlikeholde eller videreutvikle et spill, i over 20 år, hehe, ja det synes nok både her og der i kodebasen. Backend Logic-biten inneholder over 220.000 linjer Perl-kode, og det kjører kode hver eneste dag som faktisk har vært i bruk i da... ja, over 20 år!
Totalt har spillet passert to millioner kodelinjer. Den mest komplekse biten i puslespillet er selve kampsimulatoren.
– Den har jo selvsagt hatt mange iterasjoner opp igjennom årene. Den er idag i sin 18. utgave, med rundt 16.000 linjer kode. Man kan kanskje si det er en fordel med høy pasta-toleranse noen ganger. Og det er nok en fordel at jeg er bare én utvikler.
Vurderer å lage spillet på nytt
Lassem har ikke lagt de store planene for videre utvikling av spillet ennå, men har et digert Trello-board med massevis av forbedringsforslag. Men etter 20 års utvikling anser han spillet for å være rimelig komplett.
– Jeg har egentlig lyst til å lage hele spillet på nytt, ny platform, nytt språk – sikkert javascript både på klient og server. Men det vil jo ta noe tid.
– Som et forprosjekt har jeg egentlig såvidt startet på en slags spinnoff, hvor jeg rett og slett flytter spillet inn i en typisk dystopisk fremtid, en blanding av SpeedBall (gammelt Amiga-spill) og FM kanskje?
– Uansett hva det blir, så er jeg ganske sikker på at det ikke blir laget i Perl! avslutter han.