What do we need for a Strategy / Tycoon game?
There’s a list of things that we need from the engine to be able to handle without a problem:
- Camera movement
- Building system
Of course, there are many other features the Strategy game needs, but in terms of developing one, these are probably top questions you would ask.
Mall Craze is coming to Kickstarter!
I want to float around! – Camera Movement
Camera movement and controls are essential for Strategy games (as for any other game, duh!). With Unreal Engine you’ll have to get your hands dirty, as there’s currently (December 2019) no template provided by Epic, that would give you the exact same movement you know from the latest Strategy games. Luckily there are many online tutorials to choose from. I personally followed RTS Tutorial by 3 Prong Gaming for about 14 episodes, before our games went into slightly different directions.
So to answer your question – Can I make my camera move with WASD, move when I hit the edge of the screen, drag move, pan, tilt, and zoom?
Let me build something already!
It would be a pretty boring Strategy game if you couldn’t build anything. Of course, there are exceptions, and some Strategy / Tycoon genres don’t require you to specifically build something yourself. In our case, there’s one “Unfortunately” and one “Fortunately”.
Unfortunately .. you can’t place your building by just adding one blueprint node or one line of code.
Fortunately .. it doesn’t take that much effort.
You’ll just have to get your mouse position in world space and then spawn a new Actor at that location. Easy Peasy. Again, I recommend the tutorial that I followed in the beginnings of Mall Craze’s development.
I’ve added 10 NPCs and my FPS is lower than my GPA score!
Well, not if you’re using Unreal Engine. Let me show you a real-world example. In Mall Craze, in order for your mall to not feel like a dead town, you need roughly 100 – 500 customers, depending on the size of the mall. I’m not gonna say that I was able to achieve these numbers right away. With the default settings, I was able to have 200 characters on the screen, before the frame rate was unacceptable. (Humble Brag Alert!) But I’m happy to announce, that with a little bit of optimization and turning off unnecessary features, Mall Craze now supports 450 thinking, fully independent AI characters, and the frame-rate stays at 60 FPS. All that with 7 years old AMD FX-8350. (another question answered – you don’t need the cutting edge hardware in order to make games).
All it took was disabling unnecessary features of the default Character pawn in Unreal Engine.
Continuing on the same idea – Performance?
We dig into the performance a little bit in the previous chapter, but what is the overall power of Unreal Engine in a game, where you don’t really know how much “stuff” your game will have to handle at any particular time? The worst-case scenario of your game is where you’ll need to do your optimization work. Everything less than the worst-case should result in a better performance.
One big plus of Unreal Engine is that you can throw hundreds of thousands of vertices at him and he will just smile at you saying: “Is that all you got?”. We now know that vertex count is not what we should stress about (even though you still shouldn’t build a simple sphere with thousands of vertices). What’s more problematic is out Actor count (i.e. how many objects you have in your scene).
With Mall Craze, this got quickly out of hand when I implemented the pavement. Suddenly you could cover a whole area with pavement objects, which in my particular worst-case scenario could be even 20 000 objects ticking every frame.
My optimization was therefore on the single object level. What went out first was the Tick method. No need for that in this particular example. Basically, every logic that was being run through needed to be decreased in frequency. Other methods involve instancing, mesh combining, etc.
It feels so alone here. Where are my friends? – Networking
“With great internet speeds comes the responsibility to implement multiplayer in your game!”
– or at least the quote was something similar, I don’t remember.
What I do remember, is that I didn’t touch the networking tools in Unreal Engine yet, and I’m not sure if I ever will with my current project. That’s, unfortunately, the reason why I don’t have much to say about multiplayer at this particular moment. All I can do is look at other games and see that they implemented the network code successfully, so why shouldn’t you?