Cosmic Verge is a “massively multiplayer” online game in early development. It is my passion project. While this is being re-introduced as a new project, I’ve been working on various aspects of this architecture for the last year. Some experiments have been successful; others weren’t as successful as I had hoped. This post is an exploration of what I’m currently pursuing and how it’s being built.
The Galaxy
Set in a Barred Spiral galaxy (SBd classification), the Gaians of this galaxy find themselves near the edge of their galaxy. They have encountered two other species so far, but their current space travel methods are preventing further exploration into the majority of the galaxy. It is almost certain that all three intelligent species of life that have been discovered so far were all planted by the same “people,” but without being able to explore further into the galaxy, understanding why may be impossible.
This “small” section of the galaxy is still quite large and will provide an area for the budding civilizations to grow and potentially meet other species. These species will not all be humanoid, but most will be all seeded from a common set of genetic code, producing species that resemble one another but are clearly adapted for their home environments.
Life in the Galaxy
It shouldn’t surprise anyone that one of the biggest needs in the galaxy is simply getting from one location to another. Billions of citizens travel the stars on a daily basis, living their lives, conducting their business, and there never seem to be enough pilots for the job.
One of the first goals of gameplay will be building an interesting logistics system. Various planets and stations will have populations that live and travel between other stations. Players will help transport those NPCs and the various supplies each station and planet needs.
Three primary factions have arisen. These factions play a large role in helping expand the civilization. Each faction will have its own construction goal that players can help contribute progress towards. These may be new stations, expansions to existing stations, or building the necessary infrastructure to be able to access another star system. These construction goals will be another source of quests, ranging from resource harvesting, exploration, manufacturing, and hauling.
Other players may find themselves more excited at the prospects of striking out on their own and exploring the stars. Even though civilization as we know it is sectioned off in a small sector of the galaxy, the explorable area is still vast. With so many planets and moons, there will always be opportunities to discover something new and exciting.
High-Level Gameplay Goals
The previous section attempts to inspire a vision, as so much of the game is still to be determined. Yet while it’s a vision, it doesn’t describe much about the actual game itself. Allow me to explore some of my overarching goals for this project.
The game should be about having fun
Despite my wanting to earn a living with this game, no gameplay features should be specifically designed to make money. No pay to win. No loot boxes. You should want to play the game because you’re having fun, and my goal as a game developer should be to help you have fun.
The game should be about community
When exploring the concept behind The Honor Sagas, I loved the idea that players would be rewarded for good deeds. In Cosmic Verge, I’m hoping to bring some of that feeling with the concept of players working towards community goals that expand and upgrade the galaxy for everyone. While players and factions will have different ideas on how to best go about improving the universe, everyone is working towards bettering life for everyone. At least, everyone that has been discovered so far…
To better facilitate community, there will only be one universe accessible to all players in all regions.
The game should have content added consistently
I don’t really want to release a press release letting people know that new features are available. I’d rather the player experience be that someone found a recipe for some new part while exploring, and other people figured out how to combine those parts into something new that enabled them to enter previously uncharted space. That sort of player story, to me, is what this game is about.
When designing gameplay features, I want to think about how to design features in a way that I can spend a few hours each week adding new discoverable content. One of the biggest challenges of a solo MMO developer is content creation. I need to be my own best friend and try to design the game to make it as easy to add content as possible.
The game should be a mystery
To me, min-maxing and wiki-reading became the death of having fun in modern MMOs. That is not to say that people aren’t having fun playing World of Warcraft or Final Fantasy XIV. However, it’s not uncommon to hear people bickering about how you get kicked from groups if you don’t have an optimal build. I’m hoping to design aspects of this game to make it harder to say confidently, “You’re doing that wrong,” if you see someone approaching a problem differently than you.
Crafting is one example. Want to know the recipe to craft any item in any MMO (or frankly, most games in general)? Just google it. I’ve been mulling over designs of systems that would allow me to let players write their own recipes and resell them – the idea being similar to there being a bazillion Devil’s Food Chocolate Cake recipes on the internet (it’s what I’m baking for my wife’s birthday this year). There are many ways to make a cake, and the quality of most of them will be quite high! But is there a perfect recipe out there?
Architecture Design Restrictions
As a solo developer, I’m putting some restrictions in place to help me ensure I can actually deliver a game.
One-second “tick”
I’m modeling my game server’s approach after EVE Online’s approach: The game resolves flight-related operations once a second. This means that when you press a button to fire your missiles, the server will receive your command, but it won’t immediately act. Instead, the server wakes up each second and looks at its current knowledge of every player’s commands, resolves the actions, and lets the clients know the current state.
This one-second update is important because it enables mostly fair play for users across the globe. While there isn’t currently any gameplay mentioned that requires fair tick resolution, it’s something I want to be present in case I do explore combat or other scenarios where these timings being fair are important.
2D Graphics and HTML
The restriction here is all about time-saving. Last year I spent countless hours working on a UI framework to try to support the complex interfaces this game would require. With modern CSS frameworks, making beautiful, accessible user interfaces is so much simpler. And as for 2d graphics, sprites are something I am extremely comfortable with.
Nearly all of the code will be written in Rust, but the game client’s target architecture will be a browser or a browser-wrapping downloadable application.
Straightforward monetization
I haven’t decided on the exact monetization mechanism, but at the core will be a premium account subscription. This will be a low-cost subscription that will unlock voting power on the Galactic Council – a way for me to allow paying players to vote on various decisions about the game. Those who are paying to support the vision of the game are the ones that I want to hear from the most, and exclusive access to this will be given to premium accounts.
There will likely also be cosmetic items that are unlocked as part of premium membership. Still, any unlocks that impact gameplay will be very carefully considered to try to avoid any semblance of needing to pay to seriously play the game.
Because my goals are meager, and I’m hoping to design the architecture to minimize hosting costs, I am hopeful that I can find a large enough audience to sustain the development of this game.
Development Update
It’s been roughly three weeks since I wrote about refocusing my efforts onto Cosmic Verge. Last weekend I showed off the current build at the February Rust Gamedev Meetup:
This led to me getting a screenshot with 10 people flying around onscreen with me:
I’ve been mostly focused on building the core architecture and getting basic space-flight implemented. I plan on documenting the architecture, and once I do that, it will make it much easier to talk about. At a high level, I’m “load balancing” system updates in a horizontally scaling using Redis to synchronize the servers.
The other big update is that I’ve open-sourced the project. There still is currently a private repository involved, but I have plans to eliminate it mostly. I’m hoping the “mystery” aspects of the game can be kept in database entries and not needing to keep specific algorithms secret.
Where to follow along
Discourse is the software I’m running these forums with, and it provides excellent digest emails. If you’d like to get occasional emails about what I’m working on, simply creating an account here and subscribing to the digests would be a perfect option. You can also chat with me and the friends I’ve gathered along the way so far on my Discord server. I’m occasionally streaming development on Twitch, and I’ll sometimes post gifs on Twitter.
As always, thank you for reading. Fly safe!