💾 Archived View for drawk.cab › projects › rust-cave › index.gmi captured on 2023-01-29 at 02:40:16. Gemini links have been rewritten to link to archived content
-=-=-=-=-=-=-
An open explorable environment where people can host their own activities.
Sandbox games tend to have a single avatar of the player, who both explores the world and builds things in it, which are stored on some central server.
Conversely, games with a modding scene allow people to create new in-game experiences by working outside the game universe. These generally involve altering or rewriting the client, so modded
games have limited ability to affect the experience for other users.
The model I want to try out is somewhere in between. Players can explore the world, but things built in it are hosted like a Web site. The central server just acts as a land broker.
I had some guff here about why this idea is new, but I haven't researched it thoroughly, so it probably isn't.
Practically, I get distracted easily, so I try to make it easy for me to build things, and a high-level abstraction layer means I don't have to reimplement as much for every new idea.
But I'm also interested in platforms as settings in their own right: distinct environments in which different ideas can be envisioned. From this perspective, I'm not actually all that bothered if there is a game as such there. You could call it a reaction to the enclosure of the mainstream Web, but unlike the historical enclosures, we don't need to live in the space that's been taken from us: there are limitless new lands to inhabit.
On a Web server, there's no "space between" pages. You navigate directly from one to another, like a series of rooms connected by doors (or teleporters, if you prefer.) Here there is a large space managed by the server, in which user interventions exist. So there also needs to be a default exploration activity provided by the platform.
Entering the arena of a specific activity can be deliberate, like entering a building in an RPG and seeing the inside open up. But in this project you'll be able to see the contents at all times. This can also serve as a way for explorers to discover new experiences.
Activities will need to be insulated from each other. If I'm playing the farming game, I don't want to be suddenly wiped out by somebody playing a shooting game. (This kind of thing is a major drawback of the IRL universe.) But at the same time the space needs to have a coherent identity, and not just be a discovery mechanism for the experiences located in it. Not sure.
This is looking ahead a bit far. I don't have any users yet, let alone players.
For the moment let's assume, like the Web, that the platform is going to be a server, and there will be users building things on it. Let's also focus on a single player experience, where you're exploring other users' creations rather than directly interacting with them, because that part is hard.
So what are the concepts here?
A "game" is an activity paired with a player-agent, so it must be easy for users to write both at the same time.
So what does the server need to provide?
I would really prefer all servers to coexist within the same world, but that just shifts the devolution problem up a level. Either you have a master world server to devolve control to you, or you have to blockchain, and then you have more problems than you started with. So I'll not worry about that for now.
We'll also need a default player-agent, which only needs implements the most basic activities: fly around, hit walls. Maybe a bit of light resource extraction? At this level, we can say the universe is what it looks like. So if a player of a farming game grows a crop, then players of other games can see a crop in that location. But I'm in a plane flying over crops I don't really need to know which crop is which or what properties they have.
For this project, I'm going to keeping objects simple in appearance. Circles, slopes, simple characters. Think PETSCII. Objects in the universe which belong to a different game don't have any behaviours, so they're static, indestructible scenery. You just fly straight through/past them.
WASD pans, Shift to go faster. IJKL jumps 2^20 units (1048 km)
TODO: finish cellular greenery
TODO: different roughnesses over large scales
TODO: move chunk management into a plugin
TODO: player
TODO: flocking?