I have a super project that I’ve been wanting to make for a long time. This idea is actually one of the original reasons I learned how to program in the first place. The problem is that my idea is so complicated that I don’t know where how to begin.
Imagine trying to make something as complex as Dwarf Fortress but on a galactic rather than planetary scale. Then consider I want to individually simulate all the agents, species, factions, and planets so everything that happens in the game is real.
I say real due to a lack of a better word. Dynamically, perhaps? Naturally? I don’t know.
Let me try to explain it with an example.
That contract you see on the black market to recover a stolen item wasn’t generated out of thin air. It was created because a starving citizen stole said item out of desperation. It wasn’t created specifically for you, either. It was generated as a natural consequence of events.
If you don’t do it then someone else will. The game aims for a certain type of realism that can be summed up as things happening for a reason. It’s built on the idea of the butterfly effect. You’re just a cog in the machine of a living breathing world.
If that sounds daunting then you don’t know the half of it. It’s not like I haven’t tried, either!
Every one of my previous attempts has ended for basically the same reason. I put a bunch of work into building something only to realize I’ve barely accomplished anything. The end goal is so far away that no amount of work makes it seem feasible. That’s usually when my inspiration fizzles out until the next wave of motivation hits.
The problem is that it would probably take years of work to establish what I would only refer to as the foundation. The amount of time I would have to spend building this foundation so I can work on the actual fun stuff is what keeps crushing my spirit.
The obvious answer is to build it in baby steps but my question to you is: what’s the first step? Every time I start from what I believe is the bottom-most step I end up realizing there are another thousand floors beneath me. I just can’t get close to the metal.
Anyway, let me try and explain this so-called super project.
I’m going to use Star Wars as an example setting. It sucks, but it’s a setting that just about everyone knows and it can be compared to my idea in a thousand different ways.
The main similarity is that Star Wars has a classic big bad faction vs little good faction. Or, more specifically, the Empire vs the Rebellion. The entirety of my game revolves around this concept. The player is apart of the Rebel Alliance and the goal of the game is to defeat the Empire. That’s not as simple as just crawling through a dungeon and defeating the end boss, though. It will require more than I can even begin to reasonably explain. Imagine how you would go about winning a guerilla war of galactic scale.
Would you bribe politicians to remove laws that harm your movement? Blow up fuel refineries to cripple the Empires fleet movement? Take out generals so enemy forces are without leadership? Free slaves so they join the Rebel Alliance alliance? Sabotage top secret research to delay the release of terrifying new weapons? Steal enemy clothing/documentation so you can sneak into their base to plant false evidence? Lure an enemy patrol into a minefield you recently built? Hack a orbital defense laser to destroy other such lasers so the planet is open to invasion? Befriend distant alien races for unique technology? Pay smugglers to help you escape through an Imperial blockade? Antagonize civilian unrest so they riot in the streets? That commotion sure would make your assault on the capital easier!
The answer is all of the above and then some. The rebs will have to engage is just about every form of espionage imaginable to accomplish their goal. I intend to support as many strategies as possible. If you can think of something then it should be a possibility.
Here’s the problem, though – remember what I said earlier? I want things to be more natural. I don’t want the player walking up to random dudes with quest markers floating over their head telling them where to go and what to do. I want a more realistic setting where there’s no real guidance or obvious gamification. The purpose behind this reasoning will be explained further below. It can be summed up as making your own destiny, though.
Imagine looting a data disk from some high ranking imperial officer you just took out. You weren’t sent to target him specifically or anything. You were just following an encrypted signal that lead you into the forest where him and his crashed ship were waiting. Turns out you were following a distress signal! It could of just as easily been a bandits trap or random noise from a malfunctioning droid. He was shot out of orbit a few hours ago by pirates. They were bested by the officers escort ships but not before they shot his transport down.
These pirates didn’t know about the data disk or anything. They just wanted the treasures his well guarded ship may have contained. The officer didn’t just randomly spawn with it, either. There’s no random loot table non-sense. He was trusted with its transport by his superiors – whom are also as fully simulated as he is!
I’m going to stop the what if shenanigans here as this could go on for awhile. Finding a way to access the data disk and then actually make use of its contents is another couple of paragraphs on its own. The point was to show you the ever expanding web of interactivity that results from even the simplest of things in such a setting. It was also to try showing you the potential depth of a setting where everyone is living their own lives.
You could call all of this random chance but it nevertheless happened on its own. It’s chaos, sure, but it’s automatic chaos. It’s about as close to a living breathing world I can imagine code being.
It wasn’t something I specifically programmed to happen. I didn’t spawn the pirates. They were poor civilians that turned to piracy as a means to an end. I didn’t tell them to attack the officer. They needed money and knew a guarded transport might contain riches. I didn’t give the officer a top secret data disk full of information. He was trusted by his superiors due to outstanding performance. I didn’t lure you towards the officer with that signal. You just happened to be in the right place at the right time. I think that’s great and it’s the underlying basis for the whole game. This concept is the meat and potatoes of my super project and it extends to everything.
I’ll basically create the initial universe and then let things go off the rails on their own. The cool thing is that this simulation happens in a live setting. There’s no history to pregenerate. You help shape history by being apart of it rather than just living in the afterglow. I just spawn the planets, factions and other necessary set pieces and let the AI take care of everything else. They’ll all just start living their little silly lives and chaos will unfold by itself.
Is it worth it, though? I think so. The potential for story really interests me. This system gets around the constraints of being a person. There’s only so much content I can add and my creativity is limited. I’d rather make a chaos generator than code a thousand missions or random events by hand. I think the end result would be better.
I think the reason for my obsession with this idea is that a lot of sandbox games feel empty. If you play them long enough you realize a lot of stuff is being faked behind the scenes. That fleet you just destroyed, for example, doesn’t really matter. The game will just replace it with another one when you leave. In my ideal game it would matter. Their would be consequences instead of illusions. The Empire would have to spend resources to rebuild it. That means time, money, metals, labor. Their would be a whole production chain going on that you can interrupt at any level. If implemented properly you’d be able to not only do some genuine espionage but also experience the consequences of your actions! For example, if you keep raiding those ore mines then Imperial ship production will genuinely slow down.
That brings me to my final point of the day: consequences. This is where a lot of games that do what I’m trying to do end up falling short. They create this elaborate background system but fail to make the player adequately aware of it. Thus, everything they see or interact with might as well be random. To get around this problem I’ll be doing a lot of work to help reveal the worlds complexity to the player. I could add graphs so the player can see the long and short term effects of their actions or individual unit history logs so they can see what others have been up to. I think that kind of stuff would go a long way to helping players realize the richness of the setting and their impact upon it. There’s no point having an interconnected universe when you can’t examine the connections.
That’s all for today. This wall of text was several hours in the making. I should probably spent my time coding instead of talking but sharing my ideas helps motivate me. I don’t know what we’ll be talking about next. I might start going into detail about how I’ll be actually implementing this or just talk about more abstract stuff that only makes sense to me. Who knows?
If I do any actual coding progress I’ll be sure to let you know. I intend to document the process with videos because the idea of having its creation history on record from start to finish interests me.
Continued in part 2.
Hi! I have speculated over years about similar topics:
https://randomtower.blogspot.com/search/label/gameplay
https://randomtower.blogspot.com/search/label/quest%20system
and found that start and finish a little project is my way to go.
Simply start small, finish, then iterated an build on what you already have: my biggest mistake for years was to start from scratch every time!
For a puzzle game (but could be abstracted to any kind of kind of project), this was my approach (https://randomtower.blogspot.com/2019/06/into-hobbyst-game-development-time.html), inspired by this book (https://www.amazon.com/Designing-Games-Guide-Engineering-Experiences/dp/1449337937).
For your idea my suggestion is to read the book and move your work from programming/dreaming/writing to set a goal/design experience/programming/release
For develop and ship software, I keep as reference also https://www.amazon.com/Practical-Guide-Successful-Software-Projects/dp/0974514047
LikeLike
I’ve gone through the same problem of starting projects and then restarting them once significant progress was made. It burned me out for quite awhile! I’ve only recently really got back into actually enjoying programming. I’ll be sure to check your book suggestions out! I just got done ordering like 20 books from thriftbooks but I guess a few more won’t hurt.
LikeLike
books will not hurt most of the time :D
I have also seen this project, related to your path https://www.reddit.com/r/TheOutcome/
LikeLike