Shaping Darknet's World
I added two new features this week, both of which deal with the larger scale of gameplay in Darknet.
The first has to do with the shape of the networks in Darknet. In Ciess (Darknet’s prototype) and in the alpha version so far, the network takes the shape of a sphere with its top and bottom cut off.
This is pretty cool; it gives the feeling of being surrounded, and everything is easy to see just by looking around (at least, as long as you have a swivel chair). But it starts to feel same-y after a while; even if the contents of the network vary drastically, the shape itself gets boring.
So, I created “level shells”. A level shell consists of some 3D geometry, some defined edge lines, and a bunch of other variables that are useful for random level generation. Instead of spawning nodes on a sphere, the nodes are spawned on the surface of the shell’s geometry. The levels still work in the same general way (with the player in the center, looking around at the nodes), but now I can make them in any shape. Like, say, a square.
After implementing this, I immediately encountered two problems. First, the shapes weren’t all that apparent from the player’s view, even when I made sure to emphasize the edges of the shape. In the square network above, it doesn’t feel very different from the spherical network, even in 3D. Second, if the angles of the shape are too acute, the size differences between nodes become hard to see, and they start to overlap each other in ugly ways. See, for example, a triangular network.
So, now I’m thinking that level shells might need to be mostly-spherical after all. Maybe I can get away with a hexagonal prism or cylinder or something like that, but the faces of the shell need to be mostly facing the player. However, not all is lost! I can still use the shell concept to do things like cut a hole in the level, or I can cut out multiple sections to create a “bridge” section.
It’s still something I need to play around with, but I’m a little disappointed by how this feature turned out. It just wasn’t as cool as I imagined it. Luckily, the other feature I worked on this week turned out better. First, a bit of background:
One of my favorite moments in RPGs is accessing the world map for the first time. Sure, a map is pretty meaningless on its own, without context. But once I’ve experienced a small part of the game world, and I see that experience shrunk down to the size of a “you are here” mark, my imagination fills in the rest of the space, and I’m overwhelmed by the scale of the world. That’s something I want to do for Darknet.
Anyway, this week I worked on allowing levels to be infinite in size. So far, they’ve been limited by the number of nodes I can reasonably put on a level shell. Sure, I could just make a gigantic sphere of nodes, but eventually I run into problems with performance and visibility of the game elements.
So, I decided to allow level shells to connect to each other. Each level shell is encased in an enormous sphere. Now, the player can zoom through tunnels from one sphere to another as part of a larger network. And that moment of traveling in between nodes is an excellent place to pursue that sense of enormous scale of the game world. So, while the player is zooming through cyberspace, they can see not only the immense spheres that are part of the immediate network, but also a particle system that stretches out into the void. In every direction, you’ll see hundreds of glittering points of light, each of which represents another network, far in the distance. This is the wide view of cyberspace, and it’s big. It doesn’t look very elaborate, at least not yet, but it feels very cool to me.
I love this feeling of floating in the infinite void, surrounded by unthinkable complexity. In fact, I’m now faced with an unexpected problem: because the player only sees this when traveling automatically between nodes, there’s not much time to appreciate it. Part of me wants to redesign this system so that the player has time to just float in space, taking it all in.
The stories of these two features are pretty typical for me. First, I fall in love with an idea. Then, I implement it in some rough form. Then, I discover firsthand all the ways in which it deviates from my imagination. Sometimes it’s better, sometimes it’s worse, but it’s almost never exactly what I expected, and figuring out how best to handle the reality of the feature is usually the harder part of the design process for me.