💾 Archived View for drawk.cab › projects › surface › index.gmi captured on 2024-08-25 at 00:02:17. Gemini links have been rewritten to link to archived content
⬅️ Previous capture (2024-05-10)
-=-=-=-=-=-=-
Section of the world map (2023-11)
A retro-styled shared world game: a cross between No Man's Sky and Jet Set Willy, with a bit of Sabre Wulf.
An experiment in creating places, distinct environments which people can inhabit, make their own.
A game that encourages players to create traditions.
The short lived characters make play sessions feel like playing an 80's micro game, from the days before save files. The design should match that.
Storytelling is done as part of the world building. But an initial culture file needs to come with the game, which provides enough interest and challenge to start a community. This isn't ready to start yet as we don't have the mechanics or gameplay loops to support it.
SURFACE is written in Rust, but I don't think you need Rust to run it. You can try this Linux binary which I haven't tested anywhere.
The world consists of a tunnel network with a system of rooms overlaid onto it. Everyone gets the same base world to work with.
In game, players are free to explore the game world in an "observer" state, just looking around and planning what they will do next. The observer is unrestricted by solid objects but can only interact in a limited way:
Characters once birthed may interact with objects in the world. Characters in this "experiencing" level are restricted by their attributes and abilities. They have a simple health/happiness system and, in order to facilitate building, they can carry objects and information from place to place. Characters' health constantly deteriorates, it should be impossible for a character to live longer than about 30 minutes.
Finally, players can build experiences of their own within the world. This activity doesn't necessarily need to be done in-game. However, any tools or companions should not enable players to build things they aren't in a position to build in-game. They should just make it easier.
Building activities comprise
Players can't create new rooms, so it's up to them to find locations whose room layout suits their intentions. But there are plenty of options.
The tunnel network links rooms and buildings and provides the basic experience of moving around in the world. In the tunnel network the player might encounter
These inhabitants of the tunnel network operate entirely on the level of a character experiencing the world. They can't cause lasting changes to the world or provide farmable resources for building. They can be destroyed but will always respawn when the location is visited later.
Currently players have no control over the tunnel network and cannot build in it or alter its inhabitants. But this might change. It may be necessary to enable players to blow up natural walls because we can't guarantee that rooms are accessible in the base map. There could also be interesting hunting challenges to be created.
Any game which has any kind of persistent state needs to answer these questions:
In SURFACE, each player has their own version of the world, made up of cultures overlaid onto the base world. Players can share their changes by sharing files. They can experience other players' work by installing these files. Higher-level file sharing structures like Git repos could provide ways for building projects to collaborate.
Their world stays the same, but other players may be changing their worlds. There may be elements that require time to pass, like you can't take a particular action until a specific time.
Players' changes to the world are immediately saved in their local culture file and persist. However, all changes are reversible in principle.
Players' characters are intentionally short lived. They can't gain new attributes or abilities individually. To progress in the game, you must build facilities which create more powerful characters for the player to use.
SURFACE doesn't need restore points as such. Culture files can be reverted to a previous state by higher level management. Characters' attributes are determined by their birthplace, so to play a session with the attributes of a previous character, the player must revisit that character's birthplace.
The base character is plain white and can only jump and run.
Other characters may have
Players should be limited in what they can build by the resources they have discovered. But we can't arbitrarily limit players' resources because no single player has a concept of "their" resources. Everything is potentially shared.
Instead SURFACE uses information as the basic currency. Some rooms have procedurally generated resources: which ones are where can only be discovered by exploration. To make a resource available at a desired building site, a nearby room with that resource must be found and linked to the building site, permanently tying that resource to the construction. Different (potentially multiple different) resources are required for different building activities.
All resource links are checked on game load and the resulting constructions are approved accordingly.
Players should be encouraged to create challenges as part of the culture they are building. A challenge is an activity which a single character can complete, whose reward is a building opportunity. Completing a challenge is a victory for the character, whose life then ends - the player returns to the "observer" state.
Challenges are part of the build/story contained in a culture file. Building opportunities which are protected by challenges should be identified in that file, and completion should be verifiable.
The act of claiming a reward and using it is also an event in the shared world. Once a culture accepts that a reward has been claimed, the challenge is "over", though players can still be congratulated for it.
Need to think this through a bit more.
The uppermost location in the culture file is the limit of knowledge of that culture. The game begins in the "observer" state at or below this level.
The inhabitable world is 2^32 tiles square (0x1_0000_0000). There is a margin of 2^28 tiles (0x1000_0000) around each edge which can't be visited. So players need to traverse up to 0xd000_0000 of map to get to the top.
The viewport can't scroll more than 2^24 camera units (pixels) from the place it was originally set up. This limitation actually originates in Bevy's camera system but is convenient for the design.
There should be no fast way to travel further up than the highest your culture has reached. Exile-style personal teleporters require you to visit a location to teleport to. Any "ancient" (i.e. procgen) teleporters should be inactive if they lead to locations above the limit.
As a result the community as a whole cannot approach the surface faster than the observer/character's maximum upward speed. If the maximum is 4640 u/s = 145 tiles/s, this would take 278 days. To enforce this, culture files do not contain legible coordinates.