💾 Archived View for gemini.panda-roux.dev › log › entry › 7 captured on 2022-04-28 at 17:19:16. Gemini links have been rewritten to link to archived content
-=-=-=-=-=-=-
Posted on Tuesday May 25, 2021
Hello gemini folk,
Last week I wrote something about an idea I had for a game that could be played over the Gemini protocol.
you can read post here if you care to
My primary goal with this is to exercise my Gemini protocol server, MoonGem, and tease out its flaws and limitations. I thought that a good way to do this would be via a simple game, particularly one with some kind of server-side statefulness. I enjoy roguelikes, and given their use of ASCII graphics I figured a good place to start would be building one of my own.
I will be hosting a WIP demo here, if you'd like to try it out
Over the weekend I put some work into this concept. See an example of the UI below:
name: Ara Fairsword score: 0 abcdefghijklmnopqrstuvwxyzABCDEF ┳ 0 ████████████████████████████████ 0 1 ████████████████████████████████ 1 2 ████████████████████████████████ 2 3 ████████████████████████████████ 3 4 ████████████████████████████████ 4 5 ████████████████████████████████ 5 6 ████████████████████████████████ 6 7 ████████████████████████████████ 7 8┣█████████████@██████████████████┫8 9 ████████████████████████████████ 9 10 ████████████████████████████████ 10 11 ████████████████████████████████ 11 12 ████████████████████████████████ 12 13 ████████████████████████████████ 13 14 ████████████████████████████████ 14 15 ████████████████████████████████ 15 ┻ abcdefghijklmnopqrstuvwxyzABCDEF [1] Move to... [2] Move NORTH [3] Move SOUTH [4] Move EAST [5] Move WEST
The following features are shown here:
Game state is kept in-memory between requests by a small server application that runs in the background. It listens on a UDP port for requests from the Gemini server, serving a player view model as well as accepting 'move' commands. The server also handles serializing the player state to disk periodically (in JSON format right now, because it's convenient).
Currently the only functionality that's implemented is moving the player around in a static grid, shown above. My next steps are going to be to implement the following:
Since all interaction is performed via links, moving one tile at a time is somewhat slow and tedious.
I think the two solutions to this are either to disincentivize moving long distances in any one direction (how?), or to allow 'teleporting' to arbitrary tiles at will. In the latter case, how does this jive with the tunneling mechanic?
How should they relate to one-another logically, if at all?
My first instinct was to have them identified by numeric X/Y offsets from some origin point. I see a couple of issues with this:
So the natural conclusion is to have some sort of an 'address' system for sectors. Populated sectors could be listed someplace accessible, and shared between players if they wish to cooperate in some way. Movement between sectors can be performed either by choosing a 'random' option to be sent to a randomly-generated address, or by manually keying one in.
Given the set of mechanics mentioned so far, in what ways could players cooperate with one another? Listed below are a couple of ideas I've got so far:
The more I think about it, the more I am really feeling excited about the prospect of a mutual-aid-themed Gemini Roguelike. I hope I can hold onto this motivation for a while.
This being my first 'dev blog' kind of post I've written, it turned out being quite a bit longer than I expected. Thank you for reading if you've made it this far.
- panda-roux -