Translations for our friends around the world.

Author Topic: Ancient Armies: by Rob Pollard  (Read 17894 times)

0 Members and 1 Guest are viewing this topic.

Offline Asid

  • HAVOC
  • *
  • Posts: 26361
Re: Ancient Armies: by Rob Pollard
« Reply #30 on: August 15, 2018, 03:52:24 PM »


I have engaged the Borg!

Posted on August 14, 2018



Everything’s still working! 🙂


Ok, the title is a little melodramatic, but I have finally started work on column movement.

I wasn’t going to update the blog until column movement was done, but have relented so as to provide a quick update as to what’s going on. After all, it’s been around a month since the last update.

In many respects, the above image is quite significant.

Practically every line of code has been touched or changed since July. That’s a lot of code changes. Overall, I’m pretty happy that things are still working as they should be!

The code changes encompassed the following:

•   Updating all source code to modern coding standards – a big task
•   Replacing the Microsoft serializer with my own home rolled one – an even bigger task!
•   Removing all calculations in degrees and having everything done in radians only – another big task.

Of the three changes, I’m most proud of the serializer. For those that don’t know, the serializer’s job is to both save and load data. Such as saved games etc…

I had been using the Microsoft Binary serializer, but that one had many issues:

•   Very brittle. Any code changes would result in all previous file assets being rendered unusable. This invariably lead to having to continually recreate those assets.
•   The obfuscated saved games and data were not compatible with the non-obfuscated saved games and data. (Obfuscation refers to making the final binaries (the game) commercially releasable.)
•   Different obfuscated versions were not compatible between themselves! *Ouch!*

Designing a new serializer that would address all the above issues, and be easy to retro-fit into the system was quite a challenge – but one that I rose up to!   8)

I’m really pleased with the new one. It addresses every issue posed by the Microsoft one. In addition, it also produces much smaller files, is faster and type-safe – the latter makes it a lot harder for me to code dodgy code!

This new serializer has already paid dividends and saved me a bundle of time.

Being able to make changes to armies to support columns and then have the system still be able to load the older versions of these armies and automatically patch them to the newer versions never grows old.

With the Microsoft one I would have had to delete all my maps, armies and scenarios after every code change. Not any more!  :)

The new serializer has also saved me time by allowing me to create data whilst programming and then being able to use that exact same data with the obfuscated released versions of the game (and vice versa) – something the Microsoft one could not do.

In terms of the practicalities outside of the development environment, the new system will allow me to patch the game post release – all without breaking anything! This is very important for the users.

Overall a worthwhile enhancement.

The other big change to have taken place has been to my development process. I now have a much more robust planning pipeline, one that starts off with releases.

Releases are now planned ahead of time – up to 4 or 5. Each release is tied to a defined high level goal. No further releases are planned until the current tranche of releases is done.

Here are the current ones in the system:


Each release is tied to an envisioned piece of functionality…

These pre-planned releases provide focus and enable me to concentrate on the project from a reasonably high level. As an additional bonus, a release’s progress can now be tracked too. From the above screenshot you can see precisely where I am and what I have achieved!

Each release has an ‘Epic’ associated with it.

Epics can be thought of as high level work packages. They contain very high level information as to what the objectives are. One can think of these as business requirements.

When I start a new release, I spend some time refining that release’s associated Epic.

Refinement is the process of analysing the requirements of the Epic and then synthesizing a number of tasks that will ultimately deliver on that requirement.

For example here is the Column movement Epic after refinement:


Each epic is broken down into a number of tasks/stories…

You can see that it now has a number of lower level tasks, each of which can be monitored for progress.

Having this level of planning is a God send for complex pieces of functionality like this. Without such a plan it can be hard to know where to start. This can lead to analysis paralysis, which can ultimately slow down or halt development.

With such a plan development becomes easy and focused – just follow each task!

Once all the tasks are complete, the Epic is closed and the release is released. This helps produce a project heartbeat:


The project now has a heartbeat!

In the above diagram I can review the releases over time and see the number of created issues vs the number of fixed issues. This graph is on the first page of my JIRA system so I can immediately see where I am and where I am going.

It shows the 0.2, 0.3 and 0.4 releases, as well as the number of tasks that went into them.

Overall, I’m very happy with the new development process. It helps generate direction and focus from the highest levels down to the lowest levels. This means that I never feel lost and that I always know exactly what I need to do.

This is invaluable tool when you are a lone developer working on such a large project!

That’s it for this short update. The next one will be after column movement is done   :)

Till then

Laters
RobP





Original post: Click Here
funny
0
informative
0
Thanks
0
No reactions
No reactions
No reactions

I stand against Racism, Bigotry and Bullying

Offline Asid

  • HAVOC
  • *
  • Posts: 26361
Re: Ancient Armies: by Rob Pollard
« Reply #31 on: November 23, 2018, 01:43:15 AM »


Slow, But Steady!

Posted on November 19, 2018



Spot any changes?


Before we start, those who prefer to watch a video rather than reading, should scroll down to the end of this post and watch the video there. For those that prefer to read, carry on, but I still highly recommend that you watch the video too!

The last month or so has seen a lot of work put into Ancient Armies. Alas, most of that work will not be visible to the user. :/

Adding column movement was proceeding rather smoothly, right up until the point where I had to add a unit’s text to the column model.

I discovered that there was no easy way to copy text from an original unit’s model to the column model. The reason for this was due to the fact that a unit’s text was not encapsulated and involved many calculations.

Calculations?

Yes!

For those that don’t know, Ancient Armies units are dynamic. They are sized based on the underlying data. This means that the text that appears on them has to be able to scale properly and fit within the constraints of the user designed unit.

This is no simple task. Every formation shape had a lot of arcane code to calculate the text sizes and positions for a variety of unit shapes and sizes.

Alas, this code was scattered all around the formations models system which makes it very difficult to copy text to the column model.

To get around this I would need to create a specific class to encapsulate the concept of unit based text. This seemed kind of simple until I discovered that the Ancient Armies graphical model system does not support this very well.

The upshot of all these observations was that I had to refactor the entire model graphics subsystem to enable me to create a text model. This was the task that sank most of my time.

Was it worth it?

Yes! (in my opinion)  😎

I now have a much simpler code base, though paradoxically, one that is also a lot more powerful.

A lot of duplicate code got removed and much of the technical debt that I had accumulated over the years got fixed as a result of this refactor. I was going to address this technical debt, but at some point in the future. However, the text issue forced my hand on the matter.

With the new system I can now easily copy text. But I also gain other advantages too. Text scaling now works properly:


Text now works with all sizes of unit – regardless of size!

Direct-X’s implementation of text has a flaw where if you change the font size, it makes no difference whatsoever! The older code had a particular approach to get around this limitation, but it wasn’t robust across a wide range of unit sizes – as seen in the upper unit above.

The new text class has custom code in it that addresses the scaling issue in a totally different and neater way. As a bonus, it now allows for the accurate positioning of text, as well as performing scaling in a robust manner across a myriad of unit sizes.

The new text code also incorporates a lot of additional functionality such as text clipping (needed by column movement). But the best thing of all is that this powerful code is now located in one place, neatly encapsulated within one class.

Thanks to the new text system we can now do this:


A unit in the process of stripping down to move into column. (The window top left is the replay window)

Here a cavalry unit is in the process of stripping down to move into column (the column itself is not shown as that is still being developed). Notice how the text is perfectly clipped?

Without the new system there would be no clipping, and indeed, as far as the column model was concerned, no text at all!

Unit stripping and reassembly are one of the crucial parts of column movement. The implementation was non-trivial but we are now around 80% there. Once this part is done, I’ll be able to work on the actual columns themselves.

The column system is very flexible and allows a unit to be specified with multiple column formations:


Multiple column support

In all I’m happy with the progress so far, despite the massively expanded scope of the column release:


70 Issues – Ouch!

I am starting to win the fight on this release with only 20 more issues to crack. Had the architectural issues not reared their heads, I would have been a lot further along with column movement. But it is what it is.

At least I am now winning the fixes vs new issues battle! :


A month of swimming against the current!

In addition to the start on column movement, I have also given the Ancient Armies fatigue system a few changes. Units now have their fatigue capped at 100%. They now slow down as they get near that figure, until eventually, they stop.

One of the things that grated me with the fatigue system, is that unlike cohesion, there was no visual feedback to the player. This has now changed:



We can now see fatigue!

The unit on the top left is heavily fatigued. This is now visualised by a unit’s colour getting paler as its fatigue increases. This provides instant visual recognition and works pretty well with the cohesion system’s visualisations too.

Other fixes also managed to be snuck in…

Rhomboids had an issue with their size calculations – this was only discovered whilst testing the column stripping functionality:


Rhomboids fixed!

The fixed version is on the bottom. Although not as aesthetically pleasing, it is accurate and also reflects some of the ancient descriptions of these formations being described as lozenge shaped.

Below are some of my original notes that I used to meticulously check the calculated results:


Funky rhomboid notes!

Another fix was the unit flags. These never used to scale at all. This resulted in them being very tiny on large units. Now they scale to the size of the parent unit to make them more visible.

This is can be seen by comparing the old and new rhomboid units above.

Another important fix was an issue with Chronos – the replay and time system.

I discovered that it wasn’t being used to playback a turn! It was only being used when the replay system was activated. This meant that the turn replays tended to slow down or speed up unpredictably. It also caused a number of bugs when using the game at high time compressions.

This has now been fixed and Chronos is now used for everything. We now have super-accurate timings regardless of the computer specifications running the game. Plus, as an added bonus a lot of redundant code got removed as Chronos took on the burden of animating the player’s turn.

That’s it for this post. I wasn’t originally going to put anything up, but then decided that a progress report would be good. After all, you folks need to know that the game is being actively worked on.

Below is a You-Tube video showcasing all of the new improvements. It’s worth watching as I cover a fair bit of ground not covered here! Best viewed in HD-4K 😎




Laters

RobP



Original post: Click Here
funny
0
informative
0
Thanks
0
No reactions
No reactions
No reactions

I stand against Racism, Bigotry and Bullying

Offline Asid

  • HAVOC
  • *
  • Posts: 26361
Re: Ancient Armies: by Rob Pollard
« Reply #32 on: December 22, 2020, 02:24:10 PM »


I’m Back! And this time I brought Euterpe!

Posted on December 22, 2020



After two years away, I decided to get back into coding Ancient Armies.

I’m changing the format of these posts in that they will be 100% video from now on to maximize the time coding – besides, I think most people would much rather see things working in the flesh!



I’m Back!

I hope you enjoy the video update!

Have a Merry Christmas and I’ll see you all in the New Year!

RobP

funny
0
informative
0
Thanks
0
No reactions
No reactions
No reactions

I stand against Racism, Bigotry and Bullying

Offline Asid

  • HAVOC
  • *
  • Posts: 26361
Re: Ancient Armies: by Rob Pollard
« Reply #33 on: February 10, 2021, 02:20:45 AM »


Computer says ‘No’

Posted on February 09, 2021


Late last year my computer broke down – it was experiencing intermittent resets. These random resets have made any kind of concerted coding almost impossible.

After replacing a number of parts, rebuilding the system and even adding water cooling, the issue has still remained.

My original intention was to not bother posting about this as I had put in an order on the 6th January for a replacement computer. The expectation being that I would get a brand new machine in a number of weeks and things would be back to normal.

Alas, after around a month of waiting I decided to get in contact with the vendor and it appears that they are still waiting for their suppliers to provide the graphics card and as of now there is still no ETA as to when this will arrive. I guess COVID is affecting everything.

For the moment Ancient Armies will be on hold until the new machine arrives. I’ll be keeping tabs on the computer order and it might be that I will have to cancel it and go for a different specced machine – but I’ll cross that bridge when I get there.

I’ll let you folks know as soon as anything changes!

RobP

funny
0
informative
0
Thanks
0
No reactions
No reactions
No reactions

I stand against Racism, Bigotry and Bullying

Offline Asid

  • HAVOC
  • *
  • Posts: 26361
Re: Ancient Armies: by Rob Pollard
« Reply #34 on: July 28, 2022, 07:53:07 PM »


Intel!
Posted on July 14, 2021   

My computer is now fixed and the coding is on again 🙂

In this video update I demonstrate the new Intel system. Battlefield information is always incomplete, which can make for some tricky decision making – and for some fun situations!

As with the last post I’m keeping the coverage of the new functionality to video only so as to maximize my coding time. Have a look at the video and let me know if you have any feedback.




RobP

funny
0
informative
0
Thanks
0
No reactions
No reactions
No reactions

I stand against Racism, Bigotry and Bullying

Offline Asid

  • HAVOC
  • *
  • Posts: 26361
Re: Ancient Armies: by Rob Pollard
« Reply #35 on: July 28, 2022, 07:56:29 PM »


Large Map Optimizations!
Posted on July 18, 2021   



Ancient Armies is now faster, much faster! 😀

The last post demonstrated the new intel functionality on a small map. There was a very good reason for this.

I tried running that demo on this Marathon Map (this is still a test map so don’t worry about lack of detail!):


Marathon done ala-quick!

The game ground to a halt with many bugs becoming apparent – hence why the last post was demonstrated on a small map.

After a day of optimization I can happily report that large maps are no longer an issue! For full details on the optimizations and other fixes watch the video below:




Big Maps? No longer a problem! 😀

Laters

RobP

funny
0
informative
0
Thanks
0
No reactions
No reactions
No reactions

I stand against Racism, Bigotry and Bullying

Offline Asid

  • HAVOC
  • *
  • Posts: 26361
Re: Ancient Armies: by Rob Pollard
« Reply #36 on: July 28, 2022, 08:01:43 PM »


Sojour!?!
Posted on July 28, 2022

Sojour? What’s that? And what does it have to do with Ancient Armies?

Sojour is a solo RPG VTT Tool that I have been working on. It is this that has taken me away from Ancient Armies development. I thought I’d better put up a post to clarify what’s going on 🙂

The good news, is that Sojour’s development has finished – at least for the initial release. It is 100% functionally complete. The only thing left to do is beta testing and then releasing it to the world at large.

This does have some advantages for Ancient Armies. Firstly, I’ll gain some business experience and will already have the business stuff up and running for when Ancient Armies is ready to ship.

Secondly, Sojour used a bunch of Ancient Armies technology. This technology transfer will not be one way. Much of what was exported to Sojour got improved upon and will find itself back in Ancient Armies.

For example map scales:




On the left is Sojour’s map scale and on the right is Ancient Armies map scale. Sojour’s range of scales are much larger than Ancient Armies. It can go from cms/inches up to thousands of miles or km’s, plus as a bonus it supports both the imperial and the metric systems. In addition, Sojour’s scale can be sized to fit the screen resolution. Ancient Armies scale cannot. So the size you see above is as big as Ancient Armies’ scale can ever get.

So by porting this tech back to Ancient Armies, we get all of the advantages of the enhancements made in Sojour.

These advantages even extend to new map measurement tooling:




Sojour can measure map ranges, arcs of fire and areas of effect – none of which Ancient Armies can do right now. This tech might seem simple, but it is quite hard to produce accurate measurement tooling that supports both imperial and metric measurements. However, this has now been done within Sojour using Ancient Armies map marker tech. So once again, these improvements can now be easily back-ported the other way back to Ancient Armies.

There is a lot more tech in Sojour which will be planted back into Ancient Armies too. So although I have been away from the project, it will still benefit from the development work in Sojour.

So what made me prioritise Sojour over Ancient Armies?

Money.

Playing Role Playing Games is extremely expensive, many of the books can easily run you into spending hundreds of pounds or a lot more. To make matters worse, many of the commercial Virtual Table Tops (VTTs) force you to re-buy books that you already own, simply to use them in their VTTs. This is obviously very expensive.

So in the end I decided to write my own VTT – Sojour. At the time of writing, it has already saved me North of £400 and is still saving me more money with each new purchase. Hence its prioritisation. These savings don’t even include how much easier Sojour is to use when compared to the other Commerical offerings.

Please do not be alarmed. As noted above, Sojour’s coding has been completed, it’s just minor bug fixes and some minor enhancements for the initial release.

Once Sojour is released, the intent is to go back to Ancient Armies, back-port Sojour’s enhancements back into Ancient Armies and then get coding again.

I do apologise for the shift in priorities, but alas, there is only one of me and I can only do so many things in any given day. I sometimes wish I could clone myself 🙂

For those that are curious about Sojour, you can see what it is in this You-Tube video. Its best viewed at 4K. However it is rather long, so feel free to use the timestamps at the bottom.




I hope to get my hands back into Ancient Armies as soon as possible.

Laters

RobP


funny
0
informative
0
Thanks
0
No reactions
No reactions
No reactions

I stand against Racism, Bigotry and Bullying

Tags:
     

    Aggressors: Ancient Rome

    Started by Asid

    Replies: 31
    Views: 17495
    Last post December 18, 2018, 01:20:54 AM
    by Asid
    Ides of March Promotion - up to 75% discount on Ancient Rome Games

    Started by Asid

    Replies: 0
    Views: 1795
    Last post March 09, 2020, 11:41:45 PM
    by Asid
    ancient steel shadows frontier

    Started by zakblood

    Replies: 2
    Views: 2511
    Last post November 26, 2018, 11:00:22 AM
    by zakblood
    Ancient Arenas: Chariots

    Started by Asid

    Replies: 0
    Views: 1689
    Last post May 15, 2022, 11:13:02 PM
    by Asid
    Ancient Frontier

    Started by Asid

    Replies: 0
    Views: 2790
    Last post February 13, 2019, 02:10:52 AM
    by Asid