I’m walking…

Ich lebe in einer Stadt, wo man im Prinzip überallhin zu Fuß gehen kann. Manchmal dauert es etwas länger.

Die Büros von Funcom liegen beispielsweise am Westende der Stadt, während ich weit im Ostteil wohne. Heute morgen habe ich beschlossen, den Weg mal zu Fuß zu gehen. Das hat 80 Minuten gedauert, bei sehr langsamem spazieren und zwei Einkäufen unterwegs. Aber es ist gutes Training für meinen nächsten Urlaub. Ich würde mir gerne vornehmen, das ab jetzt mindestens einmal pro Woche zu machen, glaube aber irgendwie nicht, dass das klappt.

When i get older…

Wenn ich 50 Jahre alt bin, was ja schließlich auch nur noch 20 Jahre hin ist, werde ich mich dann immer noce auf einem gewachsten Brett den Berg hinabstürzen? Und was, wenn ich 70 bin? Irgendwann wird Schluss sein mit dem snowboarden, und das wo ich gerade erst begonnen habe. Wieder etwas, das ich schon als Kind hätte machen sollen.

Norefjell, letztes Wochenende

Dieses Wochenende habe ich außerdem einen anderen Kindheitstraum nachgeholt. In den Büchern von Tove Janson und Astrid Lindgren, die wir früher gelesen haben, bauen die Kinder Höhlen im Schnee, indem sie sie einfach in einen Schneehaufen buddeln. Das ist in Norddeutschland unvorstellbar. Soviel Schnee. Am Freitag in Norefjell war genug Schnee für so etwas, ohne daß man erst Haufen machen mußte. Und wir ständig bis zum Kopf drin.

5 cm Neuschnee

Insgesamt 85 cm Schnee, letzter Schneefall heute nacht, -10° Celsius – das Wochenende kann kommen. Wir werden Freitag-Sonntag mit 8 Leuten in Norefjell sein. Snowboarden. Wenn der Eressea-Server also Sonntag wieder kotzt, gibt es die Auswertung erst spät abends 🙂

Und für Ostern sind seit gestern auch zwei Trips geplant, ein Wochenende und eine 5-Tage Tour nach Trysil.

Lange Unterhosen

…gelegentlich auch “Liebestöter” genannt, sind schon was feines. Wenn man dran denkt, welche zu tragen. Heute morgen waren es -15 Grad, als ich mich nur mit Jeans bekleidet aufs Fahrrad geschwungen habe, und mir zwei Dinge gewünscht habe: Meine Skibrille auf den Augen, und besagte lange Unterhosen.

-)

Es ist knackig kalt geworden. Letztes Wochenende waren es noch um 0° in Oslo, aber da war ich in Trysil zum snowboarden. Überhaupt, davon wollte ich noch erzählen: Trysil ist Norwegens größtes Skigebiet, liegt etwa 3.5 Stunden von Oslo entfernt, hat 62 km Pisten und ist auch außerhalb davon ein Snowboard-Paradies. Große Flächen mit tollem Puderschnee, der in der Woche zuvor grad neu gefallen war (30 cm Neuschnee sind was feines). Es ist unheimlich schön, dass man hier so einfach mal für 2 Tage ein Appartment mieten, mit ein paar Leuten Freitags nach der Arbeit rausfahren, und dann ein Wochenende im Schnee verbringen kann.

Norddeutschland ist im Vergleich dazu wirklich arm – wenn ich drüber nachdenke, wieviele Wochenenden ich verbracht habe, ohne etwas tolles zu unternehmen, wird mir ganz anders. Jetzt dagegen habe ich garnicht so viele wochenenden, wie ich Pläne habe – nächstes Wochenende “nur” Party, aber das Wochenende drauf ist schon wieder für Snowboarden in Norefjell verplant.

Songs inspired by SPAM

Durch Penny Arcade bin ich heute auf diese coole Sammlung von Musik aufmerksam geworden. Songs, die sich eine Zeile oder mehr aus einer Spam email nehmen, und nicht nur ein oder zwei, nein ein ganzes Album voll. Sehr unterschiedliche Musik von Independent Bands, einiges sogar recht lustig.

Mein Favorit: Uncle Azathoth – Urgent business Confidential. Überhaupt nicht meine Musik, aber gut gemacht 🙂 Und Justin Bacon – My Parents Are Gone For The Weekend (explicit lyrics) ist auch Spitze.

Mein Alter Schatz

Der beste Computerkauf den ich je gemacht habe, war mein Armada 7350 Notebook. Das war jetzt vor 6 Jahren, und in der Zeit hat er mich nur ein paarmal im Stich gelassen. Und der Service war Spitzenklasse, dafür habe ich gern ein paar Mark mehr gezahlt.

Die ersten 3 Jahre lief der Rechner 24/7, und das sage ich nicht nur so, sondern genau so war das. Wenn ich nachts schlief, hat der Rechner oft Profiling-Läufe gemacht. Ich habe ihn in Bus und Bahn und Autos benutzt, im Rucksack durch Deutschland geschleppt, bei Freunden in die Telefonleitung gestöpselt, usw. Wir waren unzertrennlich, mein Armada und ich.

Heute ist er ein wenig in die Jahre gekommen. Die Pentium 166 CPU kann nicht mehr mithalten. 800×600 Pixel Auflösung reichen zwar noch zum programmieren und für Mail, aber ich wünsche mir ständig etwas mehr. Und ich brauche ihn auch nicht mehr so oft. Meine Adressen verwaltet der Palm, Mail lese ich daheim und auf der Arbeit, reisen tue ich nur noch selten, und im Bus lese ich inzwischen wieder Bücher, statt zu programmieren.

Aber heute wird er wieder aus der Versenkung geholt. Ich fahre nach Deutschalnd über die Feiertage, und bei meinen Eltern zu bleiben, ohne einene eigenen Computer, ist einfach undenkbar. Außerdem habe ich 19 Stunden Fährfahrt, in denen ich vielleicht mal zum schreiben komme.

Neue Räder

Heute habe ich endlich Winterreifen gekauft. Für mein Fahrrad natürlich. In Deutschland habe ich die noch nie gesehen, da sind die auch nicht so wichtig, aber hier in Norwegen, wo Bürgersteige mehrere Zentimeter dicke Eisschichten tragen, kommt man ohne spezielle Reifen ins schleudern.

Piggdekk

Jetzt muss ich sie nur noch montieren, aber ich glaube, das mache ich, wenn ich von der Weihnachts-Tour nach Deutschland zurückkomme. Morgen geht’s los.

Eressea und luabind

Für die neue Vinyambar-Partie habe ich mir den Spaß gemacht, Lua-bindings für Eresseas wichtigste Funktionen zu machen. Das bedeutet, ass man jetzt den Server aus lua heraus skripten kann. Der Server ist in dem Sinne nicht mal mehr strikt ein Server, er kann auch für programmatische Änderungen am Datenfile benutzt werden. Das ist cool, und sieht z.B. so aus:

function process(infile, outfile, orders) if read_game(infile)~=0 then print("could not read game") return -1 end read_orders(orders) process_orders() write_passwords() write_reports() if write_game(outfile)~=0 then print("could not write game") return -1 end end

Das ist eine normale Auswertung: Datenfile laden, Befehle lesen, Befehle abarbeiten, Passworte schreiben, Reports schreiben, Datenfile wieder speichern.

Für WdW müssen wir haufenweise Parteien in Allianzen einordnen, Aussetzen, und eine Menge Einheiten mit Startitems für jede der Parteien machen. Da die Daten dafür in der Datenbank stecken, generiere ich mir einfach ein kleines lua-skript daraus:

alliance = add_alliance(13, "Einwohner von Lummerland") position = get_position(13) faction = make_faction(position, alliance, 5, "bla@fasel.de", "Dämonen") ... for faction in factions() do local u = add_unit(faction, position) u:set_skill("magic", 3) u:add_item("money", 1000) end

Das ist nur beispielhaft, das wirkliche Skript ist 200 Zeilen lang.

Das schöne ist, sowas kann ich beliebig weitertreiben. Ich brauche eine Datei, in der der aktuelle Spielstand steht? Kein Problem, einfach eine lua-funktion gemacht, die den in eine Datei rausschriebt.

Das gute daran ist, dass man verschiedene Skripte für verschiedene Vinyambars (oder Eressea) benutzen kann, aber alles den gleichen Server benutzt. Der spielbezogene Teil muss nicht neu kompiliert werden, weil die Skripte zur Laufzeit interpretiert werden.

Das ist toll. Ich kann jedem, der ein eigenes PBEM schreibt, nur empfehlen sich einer Skriptsprache zu bedienen, zumindest um die Kern-Funktionen seines Programmes steuern zu können.

Als Tool benutze ich dazu [url=http://luabind.sf.net]luabind[/url], das erlaubt es sehr einfach, C und C++ Code nach lua zu binden. Dafür ist der ganze Eressea-Server jetzt C++-verträglich geworden (schon vor einer Weile). Der luabind-code sieht in etwa so aus:

void bind_region(lua_State * L) { module(L)[ def("regions", &get_regions, return_stl_iterator), def("get_region", &findregion), class_<struct region>("region") .property("name", &region_getname, &region_setname) .property("info", &region_getinfo, &region_setinfo) .property("terrain", &region_getterrain) .def_readonly("x", &region::x) .def_readonly("y", &region::y) .def_readwrite("age", &region::age) .property("units", &region_units, return_stl_iterator) .property("buildings", &region_buildings, return_stl_iterator) .property("ships", &region_ships, return_stl_iterator) ]; }

Ja, das ist [b]wirklich[/b] reines C++, auch wenn es nicht so ausschaut. Habe ich auch erst nicht glauben können 🙂