Progress update 2019-09-19:
The current phase of multiple player support, alien contacts, sensors(!), and intelligence gathering is done!
Same thing at 5 second auto-turns and zoomed in:
And the event log:
Phew. This was a rough one. As part of the multiple-player support, I wanted to include alien contacts, but that wound up being quite an ordeal. I think this is the most I've ever had to redo, re-redo, and re-re-redo various parts of code in this project, as more and more mechanics and situations emerged. I had a lot to learn along the way about how A4X functions, learning that required rethinking and redoing how I coded things. There are so many "moving parts" involved in sensors, contacts, and intel. They involve multiple tables working together tracking the various bits of information each race has learned about every other race.
The following items were implemented:
Smoothly switching between races on any window with a race dropdown
Smooth transition between default races
SM View on Events window
Fleet orders involving contacts
Contact list on the F3 system map window
Show/Hide lost contacts
Display contacts and movement tails on in F3 window, colored by allegiance
Display alien active sensors on F3 in red
Contact names include the intel known about them in F3 and anywhere else
When an alien ship has multiple active sensors, only be verbose about the sensor with the biggest radius. Show only radius on F3 window for the smaller ones.
'Distances' checkbox on F3 contacts tab (show distance from selected target on the contact name)
Planetary thermal sensors detect ships
Ship thermal sensors detect ships
Active sensors detect ships
EM sensors detect active sensors
Lost contacts are logged. Info about a contact detected by active sensors is retained to support Show Lost Contacts on F3.
Discovering new alien races
Discovering new alien classes
Discovering new alien ships
Record maximum observed speed and thermal for alien classes and log when changed
Record all the types of active sensors detected via EM per alien ship
Record and log target cross section (estimated tonnage)
Pick starting friendliness (political modifier) based on detecting species xenophobia and race xenophobia
Log changes in thermal signature
Thermal signature when towing another ship and when being towed should be accurate
Fleet orders involving contacts - this includes trajectory prediction. It also lands the fleet right on top of the contact, not just nearby. This is significant because movement happens before detection, so when moving toward where you *think* a contact is based on your sensor intel, the contact has already moved but detection of its new location has not yet occurred so your fleet would move to the wrong spot. The game will peek at the contact's actual location, but only if the target contact is in sensor range.
Currently all aliens are classified neutral. Other than the starting friendliness, no further diplomacy is supported for now
You might have been wondering how I got both races to show side by side in the first animation. No video editing was done, that is now possible in Q4X. Earlier today I added a "Second System Map" item to the Help menu, so you can have one race open in the main system map window, and another race open in the second one, and see how the world looks from either side, simultaneously. I renamed the Help menu to Quasar4x, and this is where I will put any new toys that aren't present in A4X, to keep things tidy.
The "Second System Map" is experimental but it works if you just want another view on things. It was done primarily just to aid with development, but I thought it was cool, so I left it in. Much farther down the road I may polish it up and add support for unlimited system maps. There was very little effort in making this feature, due to the modular nature of the window, and the fact that quasar's state, like aurora's, is stored almost entirely in the database (when not processing an end-of-turn). It wouldn't be a very big leap to support running multiple quasar4x's side by side, it would just involve adding some code to lock the other quasars' UI when processing the end-of-turn. The database already handles its own locking for when players make quick updates, although it couldn't hurt to add a few quick safeguards. Then after that, it's not much more of a leap to have the database be stored remotely rather than on the current computer, allowing many connections from many different places....
Whoa, got lost in the clouds there! So anyway, there is more work in the areas covered by this update but for now I'm calling the current phase of multi-empires, sensors, contacts, and intel gathering complete! The parts not done should be straightforward to add later on when they're needed, because the code for these features is all set up now and functioning (to great detail) from end-to-end.
And now, at long last, it's time to go back to the basics, and fill in quite a few easy bits that are missing from basic gameplay. For example, mass drivers, research queues, terraforming, team ops, ground unit training, the list goes on and on. There are a lot of core gameplay mechanics that should happen when time passes that don't, making a peaceful non-ai game as of yet still unfeasible. I plan to change that, starting with the most basic of missing mechanics items and going from there!