For 2D strategy, what game engine to use?
To start, however, I'm trying to determine whether I should use Unity or Unreal for this purpose. Can anyone clue me into the limitations and benefits of both engines if one is interested in building a game that has humble graphics but involves a lot of brute force calculations? Unity seems like an easy candidate, seeing as how the asset store could give you some helpful shortcuts to get started. On the other hand, I'm not sure if Unity is capable of doing what I need it to (similar tiles will need to connect with one another to form ecosystem "patches," withon which would contain wildlife information which would regularly be recalculated based on numerous intetnal and external variables).
Obviously, I'd be starting very small, playing around for a few months with maps of a few dozen tiles, but I would eventually want to scale it up to many thousands of tiles. I understand the extent of the undertaking and I don't have any dillusions as to the difficulty or the immense amount of time required (I'm actually a successful published novelist, so I KNOW how much time a major project takes). When you get down to it, I'm really interested in just playing around with an engine and creating population and migration models with graphical representations, and if some semblance of a game comes out of it, great, if not, than it's an enjoyable hobby. However, everyone must start somewhere, and I'm just not sure what criteria I should use to judge the available engines. Thanks in advance.
There are definitely ways to have Unity create relations between tiles through scripting. You could definitely use Unity for this, and I'm sure you could use Unreal, but I don't know much about that one. Almost any engine will work for your purposes. A 2d tile based sim is not particularly demanding from a game engine perspective. Think about the exact requirements of your game.
Does it need complex graphics?
Will you require detailed input handling through multiple devices?
Complicated navigation or collision code?
Detailed management of assets? (textures, models, fonts, audio, animations)
Does your project need to work on multiple platforms?
I'm guessing that the answers are basically no to the above questions, and yet those are the things that big time game engines are really going to help you with. You don't always need an engine to build a game. You might be better off with skipping the engine and instead use libraries for specific functionality. A good multi-media library like SDL or SFML will handle input, assets, windowing, and other features, and there are always libraries available for specific functionality such as collisions.
As far as whether or not a specific engine would allow your calculations and such, the answer is yes, no matter the engine. The kind of calculations you'd be working through are not unique to your game, every game needs some kind of similar mechanism.
A 2d tile based sim is not particularly demanding from a game engine perspective.
I hope you mean graphics engine and not game engine. Even 2d games can be rather CPU heavy.
-potential energy is easily made kinetic-
A 2d tile based sim is not particularly demanding from a game engine perspective.I hope you mean graphics engine and not game engine. Even 2d games can be rather CPU heavy.
I mean demanding as far as the features of the engine you will need or how much you will be pushing the engine to it's limits function wise, which I realize was a rather blanket statement to make to a genre of games, but I meant it more in reference to the style the OP seemed to be talking about. But yes, 2d games can be extremely CPU intensive, but so can text based games....
There are definitely ways to have Unity create relations between tiles through scripting. You could definitely use Unity for this, and I'm sure you could use Unreal, but I don't know much about that one. Almost any engine will work for your purposes. A 2d tile based sim is not particularly demanding from a game engine perspective. Think about the exact requirements of your game.
Does it need complex graphics?
Will you require detailed input handling through multiple devices?
Complicated navigation or collision code?
Detailed management of assets? (textures, models, fonts, audio, animations)
Does your project need to work on multiple platforms?
I'm guessing that the answers are basically no to the above questions, and yet those are the things that big time game engines are really going to help you with. You don't always need an engine to build a game. You might be better off with skipping the engine and instead use libraries for specific functionality. A good multi-media library like SDL or SFML will handle input, assets, windowing, and other features, and there are always libraries available for specific functionality such as collisions.
As far as whether or not a specific engine would allow your calculations and such, the answer is yes, no matter the engine. The kind of calculations you'd be working through are not unique to your game, every game needs some kind of similar mechanism.
Thanks, this way very helpful. I was leaning toward Unity (and correct me if I'm wrong) because I didn't want to have to deal with art assets at this early stage, and it would be nice to be able to drop a few hundred dollars to get take care of that end while I'm just fitzing around. If the game ever becomes more than a dedicated hobby, I can then go from there. Really, part of the point here for me is to become a better coder, learn some new languages, etc. and I seem to learn best by working with a pre-existing foundation and working outward.
I'm wondering, though, how much flexibility I would have for my scripts as far as Unity was concerned? When I was working with the EU4 engine I was very, very limited with what I could do and I had to come up with totally exotic and CPU heavy ways to get it to do what I wanted it to do. Would I be able to work through the engine or would I have to work around it? In my EU4 mod, even though EU4 it wasn't a CPU intensive game per se, I ended up slowing it down quite a bit because I had to work around the engine (the language involved was similar to C++, but with Downs Syndrome).
And I think I'd like to build my game from scratch in the long term, but right now, I feel like maybe I'm still too much of a novice to take that plunge. Am I wrong? Part of "sticking with it" is seeing milestones and results, and I feel like if I spend 6 months stuck at the foundation with no moving parts, I might lose my momentum.
Thanks, this way very helpful.  I was leaning toward Unity (and correct me if I'm wrong) because I didn't want to have to deal with art assets at this early stage, and it would be nice to be able to drop a few hundred dollars to get take care of that end while I'm just fitzing around.
If the game ever becomes more than a dedicated hobby, I can then go from there.
Really, part of the point here for me is to become a better coder, learn some new languages, etc. and I seem to learn best by working with a pre-existing foundation and working outward.
I'm wondering, though, how much flexibility I would have for my scripts as far as Unity was concerned?
When I was working with the EU4 engine I was very, very limited with what I could do and I had to come up with totally exotic and CPU heavy ways to get it to do what I wanted it to do.Would I be able to work through the engine or would I have to work around it?
In my EU4 mod, even though EU4 it wasn't a CPU intensive game per se, I ended up slowing it down quite a bit because I had to work around the engine (the language involved was similar to C++, but with Downs Syndrome).
And I think I'd like to build my game from scratch in the long term, but right now, I feel like maybe I'm still too much of a novice to take that plunge.  Am I wrong?Part of "sticking with it" is seeing milestones and results, and I feel like if I spend 6 months stuck at the foundation with no moving parts, I might lose my momentum.
Unity is not a bad pick to start with... I got to like Unreal Engine 4 despite it being "more involved" in some areas where Unity gives you shortcuts, but I am not sure how good the 2D Aspect of UE4 is. Speaking of which, did you have a look at Game Maker or similar 2D engines?
Using a fully blown 3D engine for a 2D game is always a little bit overkill...
About the "work around the engine" part... yes, you will end up there eventually, when you try to something that the engine wasn't made for. I had to do many ugly hacks in my time with Unity.
That being said, this only happens when you get into the REALLY complex parts of your project (for me the worst was actually PhysX, which was/is a buggy mess that needs a ton of hacks to work for complex situations), and you will encounter that with any engine out there. The only thing that can help you in this cases is going with an engine you get the source for... which is something that Unreal Engine 4 would provide you, while Unity AFAIK still only does that in parts.
How much time you would spend amending the engine for your customization, and how screwed you would be when you had to re-apply your changes to every new version of the engine IDK though.
For MOST cases you will not be hindered in any way with your scripting though. I wouldn't worry about it until you are trying some cutting edge stuff that was only just published in a theoretical paper a month ago. You might run into other problems like I did when trying to use Unity/PhysX wheel colliders for offroad racing, but these cases are rather rare.
Unity's C# system (which is using Mono under its hood) is pretty good to work with. For me as a professional Java Engineer much easier to get into than Unreal Engines C++ Stuff.
Unity is not a bad pick to start with... I got to like Unreal Engine 4 despite it being "more involved" in some areas where Unity gives you shortcuts, but I am not sure how good the 2D Aspect of UE4 is. Speaking of which, did you have a look at Game Maker or similar 2D engines?Thanks, this way very helpful.  I was leaning toward Unity (and correct me if I'm wrong) because I didn't want to have to deal with art assets at this early stage, and it would be nice to be able to drop a few hundred dollars to get take care of that end while I'm just fitzing around.
If the game ever becomes more than a dedicated hobby, I can then go from there.
Really, part of the point here for me is to become a better coder, learn some new languages, etc. and I seem to learn best by working with a pre-existing foundation and working outward.
I'm wondering, though, how much flexibility I would have for my scripts as far as Unity was concerned?
When I was working with the EU4 engine I was very, very limited with what I could do and I had to come up with totally exotic and CPU heavy ways to get it to do what I wanted it to do.
Would I be able to work through the engine or would I have to work around it?
In my EU4 mod, even though EU4 it wasn't a CPU intensive game per se, I ended up slowing it down quite a bit because I had to work around the engine (the language involved was similar to C++, but with Downs Syndrome).
And I think I'd like to build my game from scratch in the long term, but right now, I feel like maybe I'm still too much of a novice to take that plunge.  Am I wrong?
Part of "sticking with it" is seeing milestones and results, and I feel like if I spend 6 months stuck at the foundation with no moving parts, I might lose my momentum.
Using a fully blown 3D engine for a 2D game is always a little bit overkill...
About the "work around the engine" part... yes, you will end up there eventually, when you try to something that the engine wasn't made for. I had to do many ugly hacks in my time with Unity.
That being said, this only happens when you get into the REALLY complex parts of your project (for me the worst was actually PhysX, which was/is a buggy mess that needs a ton of hacks to work for complex situations), and you will encounter that with any engine out there. The only thing that can help you in this cases is going with an engine you get the source for... which is something that Unreal Engine 4 would provide you, while Unity AFAIK still only does that in parts.
How much time you would spend amending the engine for your customization, and how screwed you would be when you had to re-apply your changes to every new version of the engine IDK though.
For MOST cases you will not be hindered in any way with your scripting though. I wouldn't worry about it until you are trying some cutting edge stuff that was only just published in a theoretical paper a month ago. You might run into other problems like I did when trying to use Unity/PhysX wheel colliders for offroad racing, but these cases are rather rare.
Unity's C# system (which is using Mono under its hood) is pretty good to work with. For me as a professional Java Engineer much easier to get into than Unreal Engines C++ Stuff.
Okay, interesting. It was my impression that Game Maker was rather--- how shall we say--- simplistic. Am I wrong? Aside from using the basic premise of tiles and bei g isometric, my game concept had little to no similarities to other turn based strategy games, so I want a lot of liberties to build from the ground up, but enough boundaries to hone my skill without being ovrwhelmed.
That, and I wasn't sure if there were any robust assets to use for my kinds of purposes (for my case, a good selection of fantasy tile sets to buy from the asset store).
Although Gamemaker can do 3d games it seems to be used mostly for 2d games and might have an optimized asset workflow for it. If you have steam you can try it out for free, I installed it on my machine but haven't really used it yet. IIRC the Professional version of the software (99-150, don't remember) now includes their native code compiler so if CPU performance is a concern that should allay your fears somewhat. I think they have an asset store now as well.
edit - tilesets in asset store https://marketplace.yoyogames.com/category/42/backgrounds
-potential energy is easily made kinetic-
Although Gamemaker can do 3d games it seems to be used mostly for 2d games and might have an optimized asset workflow for it. If you have steam you can try it out for free, I installed it on my machine but haven't really used it yet. IIRC the Professional version of the software (99-150, don't remember) now includes their native code compiler so if CPU performance is a concern that should allay your fears somewhat. I think they have an asset store now as well.
edit - tilesets in asset store https://marketplace.yoyogames.com/category/42/backgrounds
Thank you for your time. My only concern was that most people seem to use Game Maker specifically so that they don't need to learn much code, where as I'm actually TRYING to improve my coding skills by making games. The finished product itself is kind of just the engine of my learning experience, rather than the objective itself. Since I'm still a relatively new coder, is GML a language that's actually worthwhile learning? Is it a useful stepping stone? I've learned some C++ and python and I'm in the process of learning some C#. I'm finding it not too difficult and actually quite enjoyable, but I'm still sort of in the early-intermediate stage.
I'll totally give Game Maker a shot
My only concern was that most people seem to use Game Maker specifically so that they don't need to learn much code,
Thats not necessarily true, it has a scripting language for a reason.
where as I'm actually TRYING to improve my coding skills by making games. The finished product itself is kind of just the engine of my learning experience, rather than the objective itself.
Then why don't you go the C# SFML route? If you're doing simple 2d graphics then that might be exactly what you're looking for.
Since I'm still a relatively new coder, is GML a language that's actually worthwhile learning? Is it a useful stepping stone?
GML is only used in gamemaker AFAIK, so unless you plan on making GM games its not much use. I haven't looked at GML in a long time so I couldn't tell you if its similar to another language (like how the scripting language for Godot is supposedly similar to python). As a stepping stone I'd say all programming experience is good in regards to logic and problem solving.
I'll totally give Game Maker a shot
If you don't want to learn another language for whatever reason look into C# with SFML it might be what you're looking for.
-potential energy is easily made kinetic-