Closed Jaculabilis closed 1 month ago
I'll admit I never considered raw text parsing for my latest implementation. There was some of that in the prototype and I quickly decided any future versions I made wouldn't rely on it as it wasn't that nice to use. For general layperson use, a graphical interface is much better to me.
You're correct that the client constructs data with predefined structure based on user input and the server works with that. The only time I regretted it was while I was encoding the DATC in that custom data structure - I could have copied the text verbatim as you suggest.
But anyway, as for the question of general notation for orders, I updated the README earlier today to include a screenshot of the game, and you can see some orders crossing timelines in the list on the right: https://github.com/Oliveriver/5d-diplomacy-with-multiverse-time-travel/blob/main/README.md
All units are just the tuple (Owner, Type, Timeline, Year, Phase, Region), so you can specify orders using normal notation if you substitute that for units and (Timeline, Year, Phase, Region) for locations. How you arrange that and what information you can omit, I don't have strong feelings on.
I'm closing this issue as the issue board is now being moved to an intended purpose of tracking bugs. I'm happy to continue this discussion elsewhere though, either in the 5D Diplomacy Discord server or or in your repo.
In classical Diplomacy, orders can omit information as long as the order remains unambiguous. If there is a German Army in Munich, , the order "Mun - Tyr" is unambiguously a move order for that unit. Even for bi-coastal provinces, the coast is only necessary for destinations and not subjects: DATC 6.B.1 has "F Portugal - Spain" fail, but 6.B.10 has "F Spain(nc) - Gulf of Lyon" succeed for a fleet on the south coast.
5D Diplomacy with Multiversal Time Travel adds two additional dimensions, the timeline and the turn/season. This raises the question of how those dimensions are represented in written orders when disambiguation is required. As I understand from skimming your code (I have not been able to get SQL Server to run on NixOS yet), your client constructs the orders as structured data, as do your test cases, and so you never have to deserialize orders from human-written text. My implementation, 5dplomacy (active development on git.alogoulogoi.com), parses orders out of raw text scripts as part of a system that integrates a REPL and test scripts copied near-verbatim from DATC.
I have iterated once or twice in 5dplomacy and am curious what you and others might find intuitive. Currently I designate timelines with letters and turns with numbers, so
Mun
in the first turn is reallya-Mun@0
. I am considering changing it toa0-Mun
ora@0-Mun
or something similar, but maybe there's another option that makes more sense?