How I imprinted on (not only computer) RPGs

Back when I was a kid (well, teenager), I had an Atari 800XL and played a great many list of games on it. The one that hooked me most though is a rather obscure one: Alternate Reality (The City) and it’s sequel Alternate Reality (The Dungeon).

For me, that game was eye-opening. The game world felt really alive in a lot of tiny ways, and was in many more way ahead than other games. It used a raycasting engine, on 8-Bit home computers nonetheless. It was basically an open-world game, where you didn’t wander through a set plot, but had to connect the dots yourself, and figure out who wanted what. That meant that you could suddenly die, because you wandered in the wrong part of the map, or that people you never met knew of you.

This thoroughly spoiled me for most of what followed. I couldn’t fathom why things had to be so static, why I couldn’t just rob this bank or plead with this monster. And the places made sense, even if they were labyrinthine. Also, with monsters like the „Clothes Horse“, it forged my sense of what is appropriate in a game and what isn’t.

Gosh, I miss that game :)

Karneval – Unter Druck

Oder auch: Warum ich Rollenspielkram lieber auf Papier habe.

Es ist ja schon irgendwie seltsam. Im Büro habe ich alles Papier von meinem Schreibtisch verbannt. Zuhause muss ich meist auch immer erst suchen, bevor ich einen Zettel finde, auf dem ich kurz eine Nachricht oder ähnliches notieren kann. (Meistens schicke ich dann doch eine elektronische Mitteilung) Bücher werden auf dem Kindle gelesen.

Nur Rollenspielkram, den kaufe ich mittlerweile fast exklusiv auf Papier. Ja, natürlich habe ich auch eine umfangreiche PDF-Sammlung auf der Festplatte, viel freies Material, aber auch PDF Kopien von Spielen und Quellenbänden die als Goodie mitgeschickt wurden. Und ja, einiges habe ich auch tatsächlich direkt als PDF gekauft – und dann nie bespielt.

Nein, wenn es ums Hobby geht, dann geht bei mir tatsächlich nur Gedrucktes!

Warum das so ist kann ich gar nicht mal so genau erklären, denn es ist eine Melange von Gründen.

Zum einen liegt es daran, dass so ein Kindle für mich zwar ein hervorragendes Lesegefühl bietet, das aber eben auch nur bei Fliesstext. Sobald Bilder, Tabellen oder sonstige Layoutspielereien dabei sind, macht das alles keinen richtigen Spaß mehr. Vollformat-PDFs gehen gar nicht.

Dazu kommt, dass die meisten Rollenspiel-PDFs meist auf Druck im A4  oder Letter Format ausgerichtet sind. Das verträgt sich nicht mit kleinen schwarz-weiß e-Ink Displays und leider auch nicht mit denen von klassischen Tablets. Hat man kein hochauflösendes Großformat muss man ständig scrollen und vergrößern/verkleinern und verbringt mehr Zeit damit, die Übersicht zu behalten, als den Text zu lesen.

Selbst ausdrucken finde ich ebenso doof – da fehlt mir dann die ordentliche Bindung, mein Drucker zuhause kann kein Duplex, und verflixt, es ist extra Arbeit! Außerdem geben sich immer mehr Verlage sehr viel Mühe damit, wirklich schöne und handwerklich gelungene Totholzausgaben zu erstellen. Sowas nehme ich gerne in die Hand, schmökere darin und lasse mich inspirieren.

Zuletzt ist so ein Rollenspieltext ja ein Gebrauchsprodukt. Man muss viel hin- und herblättern, Dinge nachschlagen, will sich ohne Mühe Notizen an den Text kleben können. Und all das ist zumindest mir mit den elektronischen Methoden einfach noch nicht befriedigend gelöst.

Außerdem gebe ich am Tisch lieber mein Buch als mein Tablet aus der Hand… :)

Subsonic & Caddy – oh my…


Subsonic has the nasty habit of generating certain URLs in a very hardcoded way.

The login screen for example. If you call index.view and are not logged in, it redirects you to $ServerSubsonicThinksItIs/login.view.

That will be localhost, if you want to do the „oh yay, let’s reverse proxy here“ thing. To make matters worse, $ServerSubsonicThinksItIs also contains protocol and port. This is apparently due to the implementation of Subsonics „generate a“ redirection.

As far as I can see, only the login and settings pages are the ones that are affected by this. They are still accessible if you manually add /login.view to your public address.

Of course, you can tell Subsonic to believe that it is on the servername you chose for it. As long as Subsonic and the reverse proxy server are in agreement of which host, path & port are shown to the browser, everything is fine. With non-encrypted http that is.

Of course you can re-enable https on Subsonic, in order to successfully proxy everything from A to B, but…

…Caddy checks the validity of the SSL certificate of whatever site it reverse-proxies to. And throws a Bad Gateway if it doesn’t like what it sees. This is actually done with a reason, but it doesn’t help me right now.

As far as I can see, I either have to wait for…

  • Subsonic finally learning to generate sane URLs or
  • Caddyserver being able to ignore faulty certificates upstream

Subsonic with Caddy

Ok, now that there is Let’s Encrypt, I thought that I shouldn’t have to do this certificate hackery all the time when Subsonic updates or the StartSSL certificate expires.

Caddyserver is the first Webserver/Proxy that I found that has most of the process automated and build in, so I’m using this. Getting started with this was pretty straightforward: Download, expand,  create a config file and before you start up, make sure that Caddy can run on port 80 without requiring to be root:

sudo setcap cap_net_bind_service=+ep ./caddy

My Caddyfile eventually ended up looking like this: {
 proxy / localhost:4040 {
 proxy_header Host
 proxy_header Scheme https

Well, it turned out to not be quite as easy. First I also had to make Subsonic stop hogging port 443. Those settings are found in /etc/default/subsonic. And while you’re at it, also edit out any certificates you may have added earlier in /usr/bin/subsonic. Oh, and make sure to note down which port non-https Subsonic runs, hopefully not 80, because Caddy needs that! I may have chosen 4040.

Restart Subsonic and make sure that you can reach it on the correct ports.

As stated, Caddy also needs to run on Port 80 for a brief moment. This is so it can do the certificate domain validation process. So edit your /etc/apache2/ports.conf to make sure not to block anything.

Restart apache2.

Now, to find out if everything works, start Caddy. If all is good, you’ll see a glorious all-ok message and can now access the server via https with a valid certificate.

But as you’ve undoubtedly noticed, Caddy isn’t running as a service yet. Thankfully Ubuntu has Upstart. So, add in a new file /etc/init/caddyservice.conf (thank you Mathias):

description "Caddy Server startup script"
author "Mathias Beke"
start on runlevel [2345]
stop on runlevel [016]
setuid runasme
setgid runasme
respawn limit 10 5
 cd /home/runasme/
 exec ./caddy

At this point I want to take a short moment to mention that whoever thinks that the Upstart Cookbook is an easy entry-level document is clearly out of their mind. Seriously, this „Cookbook“ has a whole chapter named „Critique of the System V init System“!

But I digress. If you don’t make the same mistake as me and confuse init with init.d, then you’re golden and now have a Caddy running as a service, forwarding requests to your Subsonic installation.

The only issue I haven’t been able to solve is that Subsonic has some stupid static URL linking going on so I have to open the settings in a new tab. But I can live with that.