22 votes

I had an idea for a Crusader Kings, but about rich families in Victoria-Modern Era. What could go wrong?

I had an idea for a game some weeks ago, just as the title says. It would be something like Crusader Kings, it's all about dinasties and roleplay, but set in more modern eras, from the beginning of the industrial revolution until today, or maybe the future, we'll see. And instead of kingdoms, it's all about businesses. It's all about owning global company empires. Being a kind hearted local chain owner, or a sociopathic cutthroat in the 1% that owns the world. Up to you.

And this idea is still stuck with me, and I wanted to get back into game development, so I might as well just try it for fun and see what happens.

I picked Godot, 1) because it's open source, 2) it's going to be fun to see how much it developed in the last decade and 3) it's free, and especially 4) I don't want to use commercial engines and risk being affected by something similar to the runtime fee fiasco

I still have to finish some tutorials and make some simple games to get a grip on the engine and see how everything works, but as a data analyst I already have programming foundations and, I think, this project is monumental for someone like me, but I also think it's doable.

I have a very rough idea of how the code will work for the AI. It will incorporate "ticks" like CK, each tick being a day, and some events fire weekly or monthly, where based on the stats and traits, each individual character will calculate how likely they are to accept or reject that event. This event can be about buying shares, accepting proposal marriages, going on a trip, etc.

My main worry here is if GDScript is good enough to handle "intensive" algorithms. If not, I can always use C#, or C++ if I really have to, and adapt the problematic algorithms.

Another is what would be the best database manager for this, but I'll cross that bridge when I get there.

As for the world, initially I was thinking about being about the real one, but I realized that I may not want to deal with... Well, accuracies. For example, I don't want these businesses to exist in a vacuum, I'm going to try to make a system that interacts both the world's political events and these businesses. I want to create events, like, a country invades another, which creates demands for weapons, and if you own a weapon factory, good news for you! If you own businesses in the invaded country, well, sucks to be you.

So, I want to do those kind of events, but without needing to worry about things like "Portugal would never invade Japan. What is your AI thinking!?" or "Why is Greece an industrial power house?". If a big studio like Paradox has trouble fine tuning their hundreds of nations in their games, me by my alonesome certainly will not be able to do it.

So I'm thinking just making a fictional world, populated by several countries and empires but not as many as the real world. This way I can fine tune it to my liking and without worrying about being accurate with the real world. This is another challenge by itself, with its own cliffs, but it's more doable.

And so far, that's it. After I'm done with the learning phase, I'm going to start a proper planning phase, lay down some key mechanics and develop a prototype.

I wrote this post as a way to put my thoughts down, double check with myself if the idea is good.

But also, to check with the tildes community if you have any inputs. It can be anything: ideas, suggestions, warnings, problems that you know that I'll face, etc. I'll appreciate anything that you can give me

12 comments

  1. [3]
    archevel
    Link
    With regards to performance I'd wager your choice of data structures and algorithms will be what has a noticable impact on performance (e.g if you are looking up entities in a list vs looking them...

    My main worry here is if GDScript is good enough to handle "intensive" algorithms. If not, I can always use C#, or C++ if I really have to, and adapt the problematic algorithms.

    Another is what would be the best database manager for this, but I'll cross that bridge when I get there.

    With regards to performance I'd wager your choice of data structures and algorithms will be what has a noticable impact on performance (e.g if you are looking up entities in a list vs looking them up by id in a dictionary). If you notice performance issues and you're sure it is due to using GDscript, then you can always drop down to a more performant language with less overhead. But, to me that seems like something to postpone as long as possible.

    As for using a database; do you really need one? If all game entities are loaded into memory operating on them directly can often be more efficient than db queries (especially if you have a small amount of "rows" eg 10s of thousands).

    6 votes
    1. [2]
      JCAPER
      Link Parent
      Thanks for the tip, that does sound reasonable. I want to avoid C# and especially C++ as much as possible, but I'm open to the idea of having to use them just in case there's some inherent problem...

      language

      Thanks for the tip, that does sound reasonable. I want to avoid C# and especially C++ as much as possible, but I'm open to the idea of having to use them just in case there's some inherent problem with GDScript.

      database

      This is the part that I really have no idea how it will work out (pardon my ignorance if I say anything stupid here). I don't know how many instanced entities Godot can handle... Or maybe there isn't a "limit", the problem will have more to do with the hardware than anything else?

      A CK3 game can have, I believe, thousands of characters at any moment. Late game, I wouldn't be surprised if it gets at least 10k. I still don't know how many characters this game will have, but better to assume for now that I may have many.

      Or maybe I'm overcomplicating. Good old .json or .yml files would do the trick just as well, in case I need to offload instances (e.g. dead characters probably don't need to be in memory, they could be offloaded and only fetched when necessary, for related events)

      1 vote
      1. archevel
        Link Parent
        @PendingKetcup's suggestion of having a simple array for all the characters is where I'd start. Fairly simple to just lookup a character's data when you actually need to display them in some way....

        @PendingKetcup's suggestion of having a simple array for all the characters is where I'd start. Fairly simple to just lookup a character's data when you actually need to display them in some way. You could get into some weird concurrency bugs if the game is running on multiple threads, but to start out I'd just ignore that and make a fun game :) good luck!

        2 votes
  2. [6]
    PendingKetchup
    Link
    Your technical problems are solvable. You might not want 10k characters kicking around as Godot nodes, but even though Godot isn't an entity-component-system engine you could bolt one on and write...

    Your technical problems are solvable. You might not want 10k characters kicking around as Godot nodes, but even though Godot isn't an entity-component-system engine you could bolt one on and write a "character system". Or you could skip the framework and write your own little module for doing "character physics" quickly with all the character data compactly stored in the Big Character Array. Then you could use Godot nodes as UI and instantiate stiff to show just the characters the user is looking at. Then you dump the giant array to disk and that's basically the save game. You can fit 10k characters of 1k bytes in 10M of memory or disk, which is easily manageable.

    I think your bigger problems are going to be with theme, tone, and what you are trying to say with your game.

    There are two kinds of Crusader Kings players. The players you want are your Jack de Quidts, who play these games with (or to develop) an understanding that feudalism was bad. There's no better indictment of a system than experiencing firsthand how its structure is making you, a fundamentally good person, really really really want to torture innocent people in your dungeon, so you can learn their secrets, so you can blackmail your neighbor into swearing fealty to you, so you can shake off the yoke of your own overlord.

    The players you don't want, they log thousands of hours and still somehow think that if there was a Count of San Francisco, it would be them, and it would be pleasant. You do not want these dudes in your community. They are bad news all around.

    Your game needs to be designed to communicate that, while the mechanics of "owning global company empires" present interesting problems, it's a fundamentally bad idea in real life. Put the player's moral principles in strong and obvious tension with the demands of optimal play. Put another character on screen a few times so the player has a chance to grow to like them, and then pull in that character, not a random one, to fill the slot for the event where the player has a great opportunity for trechary. Make sure that, by the time the player is on top of the world, there's not a lot of world left, and the rising seas are coming for their private island. Every time they see the "You Win" screen, you want the player asking themselves "But at what cost?". Everyone going in is going to want to be the kind-hearted local chain owner: your job as a game designer is to set up systems that force them to compromise those principles, thus communicating why those guys are so thin on the ground.

    6 votes
    1. [5]
      JCAPER
      Link Parent
      Thanks for the tips and links! Will take a look at them later once I've found my footing. As for the messaging, I'm planning to go down the same route as paradox games. By that I mean, let's look...

      Thanks for the tips and links! Will take a look at them later once I've found my footing.

      As for the messaging, I'm planning to go down the same route as paradox games.

      By that I mean, let's look at EU4 for example, where slavery is a resource. Slavery is, obviously, horrible and it can never be justified. But what EU4 does is simply show the player that slavery existed, and it was profitable. It doesn't justify it, it just shows why nations in the past used it. And the player is just going to make the game harder for themselves if they don't use it.

      In Vicky 3, war is bad... But forcing Japan and China to open their market to you is profitable.

      In CK3, killing your kids is bad... But you really want to make your younger son with the perfect traits the sole heir to the kingdom.

      Etc etc

      That's the direction I want to take this. Exploration of workers is bad... But look at your coffers filling up! Unions are bad... For you, as a business owner, best to tackle them as much as you can. Communist countries are bad for business... Better to cozy up with their politicians. Global warming is bad... But look at that nice yacht that your family owns, etc etc.

      Basically, the way I'm invisioning this, I'm going to provide several actions/events where you can support workers at the cost of your wealth, or work against them in favor of your own wealth. Show the player why the rich business owners do what they do.

      3 votes
      1. [2]
        Aerrol
        Link Parent
        So I'm an avid paradox game fan with low modding and coding experience, but I'm curious reading this comment especially: why not just work on a Victoria 3 mod? Or a CK3 Mod? I haven't played the...

        So I'm an avid paradox game fan with low modding and coding experience, but I'm curious reading this comment especially: why not just work on a Victoria 3 mod? Or a CK3 Mod?

        I haven't played the latest dlc but it sounds like the trade has been revamped nicely. Is the core of why you don't want to use Victoria as a starting base the it the family nature of things being too hard to abstract in that engine? If so, the real interesting question to me is how you tie the personal nature of CK to something new. If it's just ck with a focus on money and trade, that sounds like it'd be faster to try an overhaul of ck3 with a focus on adjusting the adventuring bands into a family company instead. Or maybe adjusting the administrative domicile.

        Anyways, just my two cents. I don't mean to be overly negative, it's a very intriguing idea and I'd love to give it a kick if you get it playable. But it seems to me much more likely to be something you can achieve in a playable state as a mod.

        4 votes
        1. JCAPER
          Link Parent
          Nah mate don't worry, you didn't come off as negative. Funny thing is, I've been playing CK3 and Vicky 3 a lot, then I saw an Interactive Fiction game where you play as the heir to a global...

          Nah mate don't worry, you didn't come off as negative.

          Funny thing is, I've been playing CK3 and Vicky 3 a lot, then I saw an Interactive Fiction game where you play as the heir to a global company, and it hit me, that the whole dinasty thing in CK3 is still a thing nowadays (sure, not exactly the same, it works under different rules, but it's still a thing)

          The game I want to make is more similar to CK3 than Vicky 3. Roleplay and characters will take more focus, while trading and business owning are on the backseat. I don't plan to make a system as elaborated as Vicky 3.

          That's why, if I were to make a mod, it would be for CK3. You're right, it probably would be faster codewise, but I don't have experience with 3D modeling, so making clothes for victorian era all the way through to the present with similar quality as the base game, ehm.... I would be screwed lol... And I would have to create the whole world since CK3 only has part of it. edit: scratch that, I could create a custom map instead

          But even if I had experience, I still would prefer to make my own game. It's an opportunity to finally make a serious project in a game engine, something I always wanted to do, and it's a way to improve my skills in case I decide to develop other games.

          PS: fair warning, as you probably guessed, it's a long term project. If I end up making it, don't expect to hear about it so soon lol

          PSS: try out the latest patch >=1.9 for Vicky 3, it really changed the game for the better. It's much more enjoyably now, and allows you to try out different tactics

          4 votes
      2. [2]
        sparksbet
        Link Parent
        I think in terms of how the systems you build tell stories through the incentives they create, there's a lot of interesting stuff you can do there. I think having incentives for the...

        I think in terms of how the systems you build tell stories through the incentives they create, there's a lot of interesting stuff you can do there. I think having incentives for the player/characters to do things that were bad in real life isn't necessarily a bad thing -- you just need ro be very conscious of the story those incentives are telling about real-world history. This can be more complex in a simulation game like this than it is in a lot of other types of game.

        You mention slavery, so I must link to this video that goes over how various Paradox games handle slavery. It's relatively short and iirc very good in how it analyzes the way different Paradox games treat the issue, and there are great comments analyzing the issue further too. It comes from the perspective of a Paradox fan as well, fwiw. He also goes through a lot of interesting history as context as well! The section on Victoria 3 is particularly apt imo.

        Definitely mostly a design question for once you've got the basics up and running, as opposed to this stage in development. But I encourage you to explore what your mechanics say about the history when making a game like this -- there's a lot to sink your teeth into there!

        1 vote
        1. JCAPER
          Link Parent
          Thanks for the video mate, will take a look later Undoubtedly, making these events and fine tuning them, as well making sure they are tone consistent, is going to be the biggest challenge in this...

          Thanks for the video mate, will take a look later

          Undoubtedly, making these events and fine tuning them, as well making sure they are tone consistent, is going to be the biggest challenge in this game. But I'll cross that bridge when I get there

          1 vote
  3. NaraVara
    Link
    I have no game development experience myself, but what you’re describing seems to be a very system heavy game. One bit of advice I’ve gotten about independently developing a game is to try to...

    I have no game development experience myself, but what you’re describing seems to be a very system heavy game. One bit of advice I’ve gotten about independently developing a game is to try to first work out the systems as a card game or board game before you even worry about anything technical. Once you understand what kinds of rules and systems you’re going for you’ll have a better idea of what sorts of trade offs are best to make with your choice of engine. And also, you’ll have a better idea of whether the game itself is workable and fun before you burn a bunch of time on yak shaving to start development.

    It seems like a lot of what you’re describing could be simulated with character sheets, a deck of “event” cards, and some dice.

    3 votes
  4. [2]
    imperialismus
    Link
    Good luck! It's a huge project you're taking on, but I hope it works out. I want to point you in the direction of a game called Espiocracy, if you're not aware of it. It's a Paradox-like grand...

    Good luck! It's a huge project you're taking on, but I hope it works out. I want to point you in the direction of a game called Espiocracy, if you're not aware of it. It's a Paradox-like grand strategy game being made by a solo dev in Godot. The developer posts yearly updates on the r/Godot subreddit with some technical tips. It looks like the game is slated for release this year, but it also puts into perspective how much work this is: it's taken over four years.

    But it shows that it can be done. The dev said they were a web developer with no game dev experience prior to this project, and also said that aside from a few art assets that were contracted out, almost all the work was done by this one person. It's probably the closest thing you'll find to your project, and I'm sure there's a lot of useful things you can take from it.

    1 vote
    1. JCAPER
      Link Parent
      Holy sh*t mate thanks! It's encouraging to see that grand strategy games are possible in Godot (there was no reason to think they weren't but you know, it's good to see confirmation) I'll...

      Holy sh*t mate thanks! It's encouraging to see that grand strategy games are possible in Godot (there was no reason to think they weren't but you know, it's good to see confirmation)

      I'll definitely take a look into his progress