I've actually identified one of the probable causes this slowdown happens and am working on a fix. Right now in the base game every single time you move, the game loops through every slave in existence and runs a check to see if they want to use you.
I.e., every time you move one tile in Dominion, the game loops through every single slave every single time performing these checks no matter what. And it happens pretty much everywhere.
The workaround I currently have implemented is the game takes a random slave from the pool and looks at whether it meets all the checks. If not, it dumps the slave from the pool and tries another at random. When it finds a slave, it immediately breaks from the loop.
Obviously this is not ideal, because if all (e.g.) 300 slaves don't meet the checks, it's still running through all slaves per tile. But I haven't found an efficient way of handling this yet. I'm probably going to have to rewrite how tile encounters are handled to solve this.
This concept might help you: do all the random rolls *only* once and in advance! Therefore you already know what
or when something will happen and the rolls for that encounter are minimal.
When refereeing tabletop RPGs, I would
pre-roll for *all* possible random encounters the players may find in an upcoming day (basically, I would know in advance
*when* they would possibly occur and occasionally
what they would meet then). So,
(1)
*when* that time in the game arrived; and,
(2) if the players were somewhere a random encounter
*could* occur; then,
the players would experience a random encounter appropriate for then & there.
This cut down on some of the grind and memory work for me and certainly made the players' adventures more varied.
e-d
P.S.: Sometimes when the players were *not* where a random event could occur--I would make that encounter happen to some NPC and the characters would hear about it later from someone else. This adds red herrings and maguffins to virtually every genre and every campaign!
