All is dark. So why do we have eyes? Why do we have vestigial sight organs, as delicate and complex as the others, but useless prior to the age of civilization? Myth and science alike hint at a time before, when our homeworld orbited a perpetual light, powered by hydrogen fusion, and our ancestors wandered beneath its warmth. If true, what snuffed it out?
Over the summer of 2024, I was looking for a project that I could fit in on my weekends around my work. I was looking for something small in scope, of a genre that I haven't attempted to work in before.
The pitch I settled on was Ergosphere, a singleplayer card-strategy game about a group of civilizations warring for control of the last power source in the universe, a supermassive black hole at the center of the galaxy, surrounded by a massive megastructure called the Ergosphere Engine.
In Ergosphere, each player starts with a hand of seven cards, and does not possess a deck or other source to end up with more cards. The goal of the game is to be the last player able to take actions, which can either mean playing a card or activating the ability of a card you've played. The most powerful card in the game, then, is the Ergosphere Engine, which allows you to simply pass the turn as your action.
Inspiration
The game draws its concepting and mechanics from a lot of different sources. The game rules started as a hack of the game Get the MacGuffin, a game with a similar premise where players have a finite hand of cards that they have to spend trying to guarantee themselves the ability to survive an indefinite number of turns.
The science fiction elements come from science fiction channels on YouTube such as Science & Futurism with Isaac Arthur, and the more well-known Kurdzgesagt - In a Nutshell.
Lastly, the narrative / story structure was mostly inspired by Inscryption - I would love to do a 3-act structure where the rules of the game change a bit at each act.
Game Architecture
Currently, the game is centered around a couple of crucial classes responsible for most of the functions in the game. This is not an exhaustive list, just the most important cards:
Game Manager - Responsible for creating the other relevant blueprints at the start of the game - the cards, the players, etc, as well as keeping track of the turn order, and zones other than the battlefield.
Player - Responsible for both the Human Player as well as AI-made decisions. Tracks cards in hand and in play for that player, communicates with the HUD if played by a person.
HUD - Visualizes cards that are currently in the player's hand, allows the player to choose which cards to play, what cards to choose for effects, what opponents to target with negative effects.
Card Widget - Used to communicate information to the player about card effects and mechanics.
Card_Physical - Responsible for visualizing cards that are in play.
Card_Effect Component - Responsible for executing the effects of cards.
Mechanic Demonstration
Above: A prototype of how dynamic targeting might work in the game.
Programming Challenges
With this being my first time making a card game, I made a lot of mistakes with my game architecture that cost me a lot of time repairing down the line.
Some of the biggest mistakes included making the player and AI use two separate classes instead of being child classes. This ended up needlessly increasing the complexity of the code as each element that interacted with players needed separate cases for bots and humans, even when the behaviors were identical. Then, my second mistake was following that up by making them the same class. The latter is mostly an issue of readability. But I now know and I doubt I will be making the same mistake in the future.
Another problem that plagued me was figuring out how to make the game UI respond properly, as the UI demands of a card game are often more intricate that that of other genres. I found that it was difficult to make cards respond correctly in their behaviors, even after following
Documents
If you are interested in seeing how I documented Ergosphere, this is a (admittedly dated) version of the Game Design Document.
Comentarios