BAC.KWARD

SURFACE

2023-11
Section of the world map

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 technical vision for SURFACE

  • A 2d side-on "metroidvania" in a very large procedurally generated base world that's the same for all players.
  • Three levels of gameplay, "exploring", "experiencing" and "building". All story content that can be experienced can also be built.
  • User's "building" activity is stored in a file which can be shared: a "culture". All persistent state is encoded in the built environment. Multiple cultures can be overlaid onto the base world. Culture files can be saved and shared.
  • Users create characters to interact with the world. Characters are relatively short lived and have varied attributes and abilities. They can engage in "building" or "experiencing" activity as their legacy, including setting up future characters.
  • Users are free to explore the world as an "observer" before creating a character, so they can decide where they want to start their play session.
  • Most interventions in the built environment require resources which are obtained through exploration.
  • Cultures can set up challenges in rooms or sequences of rooms.
  • The "aim" of the game is to reach the top of the map. This is a communal aim, not an individual one.

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

  • Tiles, black + 1 flat colour, very occasional accent colour, cell-based colour clash.
  • Simple geometries for fauna, particle effects. Intensity achieved by size, variety and number of on-screen objects: Spheres of Chaos, Geometry Wars.
  • ZX Spectrum, Atari 2600, NES, Vectrex.
  • Tasteful bloom in the centre of the map, glitches and weird camera shaders in distant regions.

Out

  • Fat pixels, judder, rigid angles, "techy" fonts, 3D effects, lighting.
  • Amiga, SNES, PlayStation or later.

Not sure about

  • Animation as opposed to motion. Probably not?

The story of SURFACE

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.

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.

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:

  • reading lore and story elements found in rooms
  • "birthing" characters in rooms which allow this

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

  • Decorating the interior of a room.
  • Linking one room to another. Each room can "point to" a single destination room, but a room may be the destination of multiple other rooms.
  • Installing actions in rooms, which visitors can trigger, like character creation.

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

  • food
  • fauna
  • hazards
  • items with temporary effects
  • items which can be carried somewhere and used (but not stored)

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

  • enhanced jumping and running
  • air control, flying
  • ability to teleport, Exile style (remember a location and return to it)

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.

  • Characters are not long lived enough to reach this distance from their birthplace without teleporting. If a character's maximum lifespan is 1 hour then it would need a sustained speed of 4640 units per second to reach the limit. This effectively sets a maximum speed for characters.
  • As the observer, the player must find a room in this area to create a character. The observer moves at a constant speed so again it would take some hours to reach the limit.

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.