Vaeltajarapu


Downloads: Linux | Mac (untested) | Windows (untested)


Ludum Dare page


A few days ago:
Hanako: "I shouldn't tell you about this idea."
Me: "Oh?"
Hanako: "Massively multiplayer hermit crab simulator."

...

Then Ludum Dare showed up, and I have an intern who needs training. Perfect opportunity to test out networking code, ne?

Game status:

You can log in to a remote server (at least on Linux, I haven't tested it on Windows or MacOS). The server works and doesn't crash that often. The fish will try to eat you. You can wear shells (which protect you from the fish to a degree.). If the fish do no damage when they bite, they get bored and wander off. When the fish are full they get bored and wander off even if you're still alive. Ghost crabs can't wear shells. Only one of the shells is on fire. Background seeding means all players get the same procedurally generated terrain.

Design decisions:
Security, privacy, and reliability were NOT concerns. As the game's written in Python and has relatively limited support for user-supplied data (you can talk to other players and name your crab, but that's it) there shouldn't be any arbitrary code execution vulnerabilities in it; I expect both the server and the client to be riddled with ways to remote-trigger a traceback, though. Game logic is replicated in both client and server in an attempt to mask network lag; the server trusts the client far more than it should in a realworld deployment.

I chose Python because it seemed practical to do poorly-audited network code without putting people at risk of anything worse than a traceback using it. The builds were made in Ren'Py because it's a straightforward way to distribute Python games with all the needed libraries included and without needing to walk people through compiling pygame on OSes I've never used or the like.

Major bugs:
Sprites don't have sensible center-points for pivoting, leading to occasionally confusing behaviours when mobs rotate.
If you look at the server code you'll notice hints at size and hunger mechanics that lazy caterpillars didn't get around to implementing. The original plan involved needing to digest to heal or grow, and larger shells only being wearable by larger crabs.
Also the parasites that were going to clog up your stomach, making it harder to eat and actually giving the game a relationship to the theme? Not actually written yet. Oops.
The server doesn't understand disconnecting correctly, it probably should because that will get annoying otherwise.

Other bugs:
I didn't turn off a lot of the Ren'Py features that just plain don't make sense for a network game.
Fish probably should think more often, right now they will sometimes go right past you.
I never really implemented a way for your crab to properly defend itself.
The protocol doesn't do anything to detect or properly cope with lost packets, which can lead to the server getting out of sync with the client representation.
Plenty of stuff could use polish or adjustment or expansion.