Sign in to follow this  

Best free engine for a Grand Strategy Game?

Recommended Posts

I'm looking into making a little "grand strategy" game in the line of Europa Universalis or Crusader Kings by Paradox Development Studio, as a free time project for personal learning and amusement. It'd be focused on singleplayer (but I'd like to be able to implement multiplayer later on if I'm succesful).

 

For those who don't know these games, the main interface is a world map divided in provinces owned by entities (nations or characters depending of the game). Both characters/nations and provinces have a wide range of different stats and attributes. A player can select to control one nation/characters, and the AI controls all others.

 

As it'll be my first project, I want it to be wholly 2D. Also, since there is going to be a lot of calculations running constantly, I'd like to be able to get the most efficiency in the programming language as possible.

 

On the other hand, I want the game to be very moddable, with the end user being able to use a custom scripting language to manipulate the ui and the game mechanics.

 

Since I'm new to game development, I'd like to find a platform with a not too steep learning curve.

 

Lastly, as the title implies, I'd like it to be free.

 

I'm not sure if there any developing platform that fullfills this criteria, but if it isn't, which would fullfil most of them?

 

Share this post


Link to post
Share on other sites

You can start using unity or unreal engine 4 for free. Both are quite popular and can work for all game types.

 

That is my default plan if I don't get better directions. I gather that Unreal's C++ is faster/more efficient than Unity's C#, is that correct?

 

Which one would be easier to learn? (so far my programming experience is restricted to small programs in high-level languages, mainly Python and Ruby).

Share this post


Link to post
Share on other sites

C# is much closer to Python and Ruby, it's much easier to use that for you.

 

Your real problem is not speed, it's writing working code. Games are complicated programs. Do yourself a favor and don't add a new programming language onto your plate.

Take on C++ after you know how to write a game.

 

As for speed, you gain 90% of it by not writing stupid code. Somewhere in the last 20% or so, the programming language becomes really relevant.

 

I don't know any of the games you mention, but strategy games are often not much action at the screen, but lots of calculations behind the scenes. I would argue Python would work there too. Use pygame for the graphical front-end, and use normal Python for building prototype computations. Once you have them, chances are it's fast enough. If it isn't, you can rewrite parts in C or Cython to get the required performance.

 

That's very valuable advice, thank you!

Share this post


Link to post
Share on other sites
As others have said, speed comes from picking the right approach to solving a problem.

I suggest you read up on general computer science, algorithms and data structures, and big-O notation to get you started while you learn an engine, this will help you understand what's fast and what isn't, regardless of if you code in C++, C#, Python, or any other languages...

Good luck!

Share this post


Link to post
Share on other sites

As others have said, speed comes from picking the right approach to solving a problem.

I suggest you read up on general computer science, algorithms and data structures, and big-O notation to get you started while you learn an engine, this will help you understand what's fast and what isn't, regardless of if you code in C++, C#, Python, or any other languages...

Good luck!

 

Thanks!

 

Would you mind point me to any text book on those topics, or any post around here listing sources?

 

Also, do you know of any place where I can check a list of available free development platforms?

Share this post


Link to post
Share on other sites
I think your best and most affordable option is to search Google for university lecture slides, and similar materials. You'll want materials relating to computer science and the various maths modules often taught alongside it. Operating systems design, and algorithms, are always useful to Google up.

There are many books on the subject that I remember owning as a student (i don't anymore, nor do I remember their names). For me, university was a long time ago.

There are likely a lot of people here where uni is fresher in their minds who might be able to provide you with a proper reading list :)

Share this post


Link to post
Share on other sites

Would you mind point me to any text book on those topics, or any post around here listing sources?

Youtube is a pretty good resource for lectures. If you wanted to look into good C++ code then the cpp con lectures are great and hosted by notible prefessionals. For example: Herb Sutter "Back to the Basics! Essentials of Modern C++ Style"

Share this post


Link to post
Share on other sites

You might consider modding CK or EU instead of writing your own game.  That would let you focus on game design and learning many of the basics of game implementation as a stepping stone into developing something much larger, and it's "free" in terms of development cost to you if you already own the games -- and you and your target audience probably do.

 

After all, doing a solo implementation of a 10000 developer-hour game is most likely to land you in never-finished limbo, whereas focusing your available 100 hours on the bits you find interesting and getting quick feedback could deliver the rewards you're seeking.

Share this post


Link to post
Share on other sites

You might consider modding CK or EU instead of writing your own game.  That would let you focus on game design and learning many of the basics of game implementation as a stepping stone into developing something much larger, and it's "free" in terms of development cost to you if you already own the games -- and you and your target audience probably do.

 

After all, doing a solo implementation of a 10000 developer-hour game is most likely to land you in never-finished limbo, whereas focusing your available 100 hours on the bits you find interesting and getting quick feedback could deliver the rewards you're seeking.

 

Actually, while I kind of see your point, I have to disagree, As a matter of fact, being a modder for CK2 is what made me want to try my hand at it -my design needs are not fit anymore for the scripting abilities those games provide, and specially the ability to improve the interface is really limited, and that's not counting the language being execesively verbose.

 

I don't aim at matching a 10000 developer-hour game. (actually, Crusader Kings 1 had faaaar fewer than that). I'd want to do something smaller in scope, but more flexible in its moddability. And the design work, on an abstract level, I have already. What I want to learn is how to implement it. Even if I'm doomed to fail -which I'm probably am- I want to do it for the sake of learning and fun!

Share this post


Link to post
Share on other sites

I don't aim at matching a 10000 developer-hour game. (actually, Crusader Kings 1 had faaaar fewer than that). I'd want to do something smaller in scope, but more flexible in its moddability. And the design work, on an abstract level, I have already. What I want to learn is how to implement it. Even if I'm doomed to fail -which I'm probably am- I want to do it for the sake of learning and fun!

You really think it would take a team of, say, 8 people less than 6 months to churn out a game like CK?  Your expectations are far higher than mine, but maybe the developers, artists, designers, writers, QA specialists and managers I've worked with are all generally sub-par in the productivity domain.

 

Nevertheless, if you've grown past modding you might consider going the browser-based route like Europe1300. That means using something like node.js, Python, or similar to generate HTML. A lot of the enabling technology is already taken care of and lets you develop ideas quickly with rapid turnaround time.  You can use it for rapid prototyping and then rewrite in another language when you start hitting walls again.

Share this post


Link to post
Share on other sites

As it'll be my first project, I want it to be wholly 2D. Also, since there is going to be a lot of calculations running constantly, I'd like to be able to get the most efficiency in the programming language as possible.


By all means go for it! But a project like a grand strategy is thousand times harder then creating a game like pong. Don't be disappointed if you won't succeed because something like Europa Universalis IV took a couple years to develop with a huge experienced team working on it. For solo indie developers it's best to create much smaller projects so you can finish it within a year of hard and dedicated work. If you want to finish something a lot bigger you need to be an expert programmer so you can keep implementing small pieces to the game without issues, in other words "you need to know exactly what you are doing". Other then that 2D or 3D has not much to do with the scope of a game, 3D could even cut off production time since animating thousands of sprites could take more work then modeling, texturing, rigging and animating. You can cut a lot of corners with 3D production.

 

To make a game moddable you have two good options. The first is to make everything you want to be moddable data driven. This means you have your program load in the data from a file, like xml or json. You (or even modders) can create tools to visually change these. Another option is to expose some of your code through an API, a great example of this is Dota2 and I think Oblivion and Skyrim also do this but they call it "Creation Kit". This kind of programming needs extreme planning and adds a lot of time to production, but obviously it can pay off enormously. My advice here is the same, try this in a much simpler game like a arcade game.

 

It's very noble of you to make the game free but expect a game like this will probably take a quarter of your life to develop. If you are good enough writing proper documented code you can setup a working prototype within a view years and go open source so everyone can jump in to make it a success.

Share this post


Link to post
Share on other sites

 

I don't aim at matching a 10000 developer-hour game. (actually, Crusader Kings 1 had faaaar fewer than that). I'd want to do something smaller in scope, but more flexible in its moddability. And the design work, on an abstract level, I have already. What I want to learn is how to implement it. Even if I'm doomed to fail -which I'm probably am- I want to do it for the sake of learning and fun!

You really think it would take a team of, say, 8 people less than 6 months to churn out a game like CK?  Your expectations are far higher than mine, but maybe the developers, artists, designers, writers, QA specialists and managers I've worked with are all generally sub-par in the productivity domain.

 

Nevertheless, if you've grown past modding you might consider going the browser-based route like Europe1300. That means using something like node.js, Python, or similar to generate HTML. A lot of the enabling technology is already taken care of and lets you develop ideas quickly with rapid turnaround time.  You can use it for rapid prototyping and then rewrite in another language when you start hitting walls again.

 

 

Alright, I've made a very gross miscalculation there. I apologise, I absolutely didn't mean to disrespect or downplay any developer's work. I can only be humble towards other's work. If I can ever be optimist about any possibilities of success in my project is due to the whole "dwarfs raising atop giants' shoulders".

 

That said, thanls for pointing to Europe1300, I didn't know of it so I'll have to check it out. It's strange that I can't find any iin-depth info of the game before signing up in it, though. Or it might be just me making a too quick search.

 

 

As it'll be my first project, I want it to be wholly 2D. Also, since there is going to be a lot of calculations running constantly, I'd like to be able to get the most efficiency in the programming language as possible.


By all means go for it! But a project like a grand strategy is thousand times harder then creating a game like pong. Don't be disappointed if you won't succeed because something like Europa Universalis IV took a couple years to develop with a huge experienced team working on it. For solo indie developers it's best to create much smaller projects so you can finish it within a year of hard and dedicated work. If you want to finish something a lot bigger you need to be an expert programmer so you can keep implementing small pieces to the game without issues, in other words "you need to know exactly what you are doing". Other then that 2D or 3D has not much to do with the scope of a game, 3D could even cut off production time since animating thousands of sprites could take more work then modeling, texturing, rigging and animating. You can cut a lot of corners with 3D production.

 

To make a game moddable you have two good options. The first is to make everything you want to be moddable data driven. This means you have your program load in the data from a file, like xml or json. You (or even modders) can create tools to visually change these. Another option is to expose some of your code through an API, a great example of this is Dota2 and I think Oblivion and Skyrim also do this but they call it "Creation Kit". This kind of programming needs extreme planning and adds a lot of time to production, but obviously it can pay off enormously. My advice here is the same, try this in a much simpler game like a arcade game.

 

It's very noble of you to make the game free but expect a game like this will probably take a quarter of your life to develop. If you are good enough writing proper documented code you can setup a working prototype within a view years and go open source so everyone can jump in to make it a success.

 

 

Thanks! I'm starting with making the little games of the Unity tutorials, then "breaking" them apart to see how things work. Since I'm using unity, I'll have to head over to their forums and ask how to leave assets and such exposed to the public instead of being compiled into an exe.

 

Edit: I could have never thought that animating 3d would be harder than animating 2d, thanks for sharing that tip.

 

(I finally settled for Unity mainly because my current pc isn't fir tor UE4). For now, I'll be happy to have a map, an interface, and a pausable "clock/calendar" which controls the flow of in-game time. The first two I know how to do conceptually, but the latter is proving a hard nut to crack. I guess if I can't figure it out I'll open a new thread asking for advice on the topic.

Edited by gsgeek

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

Sign in to follow this