The last week has been exceptionally busy. Not only have I been learning more new tech for work – yes Angular, I’m looking at you – I have also managed to cram in a lot of enhancements and bug fixes into Ancient Armies.
As of now, there are no bugs that I’m aware of, though I’m sure there are still others lurking about that will reveal themselves in time. This means that most inconsistencies and issues seen in previous videos have probably been rectified – including all of the line of sight issues…
Anyways, enough of bug fixes. What enhancements have been implemented?
First up is the orders system symbology:
The orders symbology now shows a ghost unit on the end of the last order. This will enable users to not only precisely place their units, but to also make sure that they are aligned with other moving units’ destinations correctly.
The other reason for going to all the trouble of incorporating this functionality is to provide the player with an aid-memoire when any of the game’s line of sight modes are active.
Normally when a unit goes out of line of sight, both it and its orders symbology disappear from the display. However, with this new system, the ghost unit at the end will still remain – that is until it is directly eyeballed again.
This means that in the heat of battle, one will be able to keep track of where one has ordered one’s units to go, even where one no longer has a direct line of sight to them.
I am also tinkering with the option to enable players to turn this feature off, as I suspect that some hard-core players won’t want to be reminded of where they have sent their units!
If this new feature isn’t that clear right now, do not despair. I will be releasing a detailed line of sight video pretty soon, which will explain this feature and many of the other features that Ancient Armies offers!
Another subsystem that was looked at was the cohesion subsystem. I have spent a fair bit of time enhancing the graphical representations :
When a unit becomes unformed due to cohesion, its unformed graphic now exactly matches the shape of its originating pristine graphic. This includes accurate placement of internal colour splits and the perfect placement of rotation points:
These enhancements make the transition from a pristine unit to a cohesion damaged unit completely seamless – and vice-versa too. So the odd unit micro-jump that one used to see in the old videos is now long gone!
Irregular units have also been improved too. Their text is now much more legible. However, my first attempt wasn’t so successful:
However, I soon realised that having the display in a real 3d engine enables me to take advantage of some lighting tricks:
Another area that I decided to look at was unit terrain detection:
The old system was very fast and worked well for most circumstances. However, it will fail with linear terrain.
In the above example, if the triangular unit were to move over the stream, it would get to a point where all three sample points would straddle the stream. At that moment in time the unit would think that it was in clear terrain and speed up, until it’s trailing corners arrived at the stream.
This would create odd movements, with a unit slowing down, then speeding up and then slowing down again as it crossed the stream.
The old system wasn’t quite this simple though. It used to have a latching mechanism that would help a unit know if it was still crossing a stream or other linear obstacle. However, this mechanism could easily be tricked.
In the end I decided to replace the entire mechanism so that it used the new unit detection code that I wrote for the line of sight system mentioned a couple of blog posts back. This mechanism is super-fast and super accurate, plus it neatly gets around the issue mentioned above! 😎
Whilst looking at unformed units I also thought I’d re-visit unit collisions too:
In the old system units were completely prevented from passing through each other. This is now no longer the case.
However, passing through one of your own units (unless either unit is an irregular unit or it’s a maniple manoeuvre) will result in both units taking a lot of cohesion damage – as seen above. One might want to avoid doing this in the game. 😉
The system is designed so that units can pass through other irregular units (and vice-versa) without cohesion damage, though passing through such units will still hinder progress.
Enemy units however are still impenetrable. If you want to go through those, you will have to fight them and rout them!
Surely that’s all the enhancements for this week?
Having ordered submenus will make looking for orders and formations a lot simpler between differing units as these orders will now all be in an expected place within the menu – regardless of which orders are available.
In addition to the feature enhancements mentioned above, I also rejigged the directory structure of the game to make it compatible with modern operating systems. From here on in all data is stored in an Ancient Armies folder located under the user’s Documents folder:
These folders are structured by data type too, which makes assets easy to find. It also allowed me to update the game and the various editors so that they automatically look in the correct folders for the data type that the user wishes to manipulate. This makes for less fiddly folder navigation when using the tools or the game.
This next bit is quite geeky, so you might want to put on some peril-sensitive-sunglasses!
As an added bonus, my JIRA system got a free update this week:
Although using agile for just one person seems a little insane – it does actually help! Having a sprint board enables me to concentrate on a particular delivery without any distractions. It also aids in planning the work pipeline going forward. In all, it should make me more productive! 🙂
Well, that’s it for this week! I will put out a new line of sight video pretty soon, so that you can see the nuances of that system as well as many of the enhancements mentioned in this post.