To begin with, I'm sorry for not posting any blog posts for some time - but fear not, the machines are running and here's a super mega update for compensation! Don't forget that you can follow Terra Militia on social media for more frequent updates... hint hint.
Now then, let's get straight down to business! A truckload of time (because #science) has been spent grinding the multiplayer high-level code which has now been greatly optimized and also allows for more than two players.
One of the bigger problems the game had was how many players found the game unplayable due to spikes of very low frame rate (1-6fps). I finally found the culprit behind most of these frame rate issues, which were situations where orders were being re-run because units could not reach their target(bots especially enjoyed doing this a lot). These were all(?) fixed and as a result syncing times were also improved and players now experience far less "waiting for player lag" than before.
With these two important parts of the game improved, I thought I'd finally spend some time working on the fun stuff!
I had pretty much left the AI code since I wrote it the first time, and now that the game is really shaping up I thought it was about time to improve it.
First of, support for more than 1v1 was added. Playing eight player matches is quite interesting.
They are much better at placing buildings, defending and attacking and realizing when to do it (without cheating through free vision etc!). The bots are also less predictable now and vary slightly in their behavior each game.
The first bot iteration cheated by gaining 300% resources from gathering, it's now decreased to 200% and they perform much better than before and offer a challenge to most players. Preferably the bot shouldn't cheat at all, but there's a long way to get there. The plan is that when bot difficulties are added there will be at least one or several levels that don't cheat.
Improving the bot difficulty is not very high on the priority list as the single player aspect of Terra Militia will focus mostly on campaigns where players are given scenarios to complete and not generic bot encounters.
In fact, it's very common for bots to cheat in real-time strategy games. Some examples: Starcraft I, Starcraft II, Age of Empires 2, Empire Earth.
If you've read my earlier posts you probably have an idea of how much time I spend on making things, in my eyes, perfect. Therefore, I decided it was time to make a streamlined system for all input when I realized how I'd have to bang my head against the wall for the next couple of the days if I didn't.
This time, a set of reusable input components (that work fantastically together through events), for both reading and displaying user input that was made. This immensely simplified the process of adding the ingame console, a chat to lobbies and remaking the options menu.
I have to admit it was a huge mistake not to implement an easy way to speak with the code in real-time before now. A task easier to carry out than anticipated yet has already saved a lot of valuable time previously spent on changing a few values in the code, exporting a build and running it. All now accessible by pressing a hotkey, typing out a command and hitting enter. Commands and values are easily defined in the code in beforehand. As a bonus, all custom script commands can be run through the console, to ease up the debugging process for map-makers.
A proper system for options was made and new options are now super easy to add at any time. In addition, the following options were added;
- Vertical Sync - On | Off
- Particles - Enabled | Disabled
- Clouds - Full | Subtle
- Always Show Resource Bars - On | Off
- Camera Movement - Smooth | Instant
- Mouse Orientation - Left | Right
- Printscreen Key - Print Screen
More keybindings to be added Soon™.
Related to this, the main menu and options menu were redone, with options now FINALLY being accessible ingame.
It's been amazing to play more and more multiplayer matches as it greatly increases the amount of feedback I get. Here are some of the latest QOL improvements and fixes worth mentioning.
- When in Borderless or Fullscreen mode, the cursor will now lock to the monitor displaying the game to prevent the cursor moving to another when panning the camera. Personally I almost always move the camera by holding the scrollwheel. (Not finalized)
- Player names are now displayed not only for units but for buildings too.
- Players are now properly warned if one of their buildings is under attack.
- Towers will now correctly start firing at maximum range. (These are the broken things you notice when you start playing with the aim to win.)
- A big batch of unit balancing.
- Various interface fixes.
- Ordering several gatherers to gather from player-made resources (farms) will now properly spread them out to available farms.
- Various fixes to decrease frequency of units going idle.
Functionality for teams was written from the ground up and the host can now assign teams in the lobby. Players in the same team share vision. Co-op multiplayer might still cause desyncing though.
In the launcher you can now choose whether to run a Stable or the latest (experimental) build. It's a relief to finally be able to test things on multiplayer on a regular basis without ruining the experience of other users. However, should you be curious you can always jump into the experimental version to get a sneak peek of latest changes.
All this and more is now available in the experimental mode, make sure to keep an eye out for keys if you haven't got one yet!
As you might have noticed it's been hard to follow a regular scheme of blog posts, often because I'm working on something that I think isn't interesting enough to write about and sometimes because I'm having too much work to get around writing about it.
Do you personally prefer more frequent small updates or fewer but larger ones? I'd love to know. Please leave a reply below.
Trigger01, over and out.