SURFACE

Section of the world map (2023-11)

A retro-styled shared world game: a cross between No Man's Sky and Exile, with a bit of Jet Set Willy and a pinch 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 technical vision for SURFACE

The aesthetic of SURFACE

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.

In

Out

Not sure about

The story of SURFACE

Storytelling is done as part of the world building. SURFACE comes with an initial world state but it doesn't currently contain any stories. For there to be a shared understanding of the environment, there needs to be an official seed story, which implies a 'hub' which everyone visits which can tell it. Not sure yet how people will find their way to this hub.

I want to try 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.

SURFACE v0.8.0

Thought dump

Exploring, experiencing and building

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

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.

Persistent state and legacy

Any game which has any kind of persistent state needs to answer these questions:

Under what circumstances can other players see the changes a player has made?

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.

What happens in the world between play sessions?

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.

If the player's character dies, what happens to the changes they've made in the world?

Players' changes to the world are immediately saved in their local culture file and persist. However, all changes are reversible in principle.

If the player's character dies, what happens to the progress they've made in their character?

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.

If the game offers restore points or different characters, what then?

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.

Character attributes and abilities

The base character is plain white and can only jump and run.

Other characters may have

Resources

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.

Challenges

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.

Large-scale exploration

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.

Inspirations

Building will be an important part of the experience. Jet Set Willy is the main inspiration.

Its screens are simple but extremely varied. The textures used for walls are abstract but different in every room. This gives personality to the build. I want to see similar variety in SURFACE. But - I don't expect the user to have to do it. Some kind of low level procgen tile texture would be cool.