Assuming cars are already at the intersection, I wait until each of them goes and then take my turn, unless it's someone's turn who wouldn't cause a conflict with me and nobody else could go at the same time and would cause a conflict with me.
When I arrive at the intersection at nearly the exact same time as someone else then some more complicated heuristics come into play (I'm not sure how you handle it when the timing is close enough to be in question). The person on a significantly larger road has priority over smaller road. People going straight have priority over right turners, which have priority over left turners, and if all else is equal, the right-most person should go first.
I guess I could sum it up as "if you can go safely, and nobody who was there before you can go safely, then go. Otherwise wait your turn", but with a lot more nuance around tie-breaking.
I guess one additional trick I use is to intentionally avoid conflicts: if it looks like I'm going to arrive at the same time as another car, I slow down a bit before arriving at the stop, then clearly stop AFTER they did, so it's clear that it's their turn to go. It works pretty well.
/shrug
People gunna peep.
But what's "simultaneous"? If I show up 0.1 seconds before the person on my right, he could think it is simultaneous and go...
There's also the direction that is 'claimed'. If there's a dedicated left turn lane or it is obvious that the person across from you is going straight, and you want to go straight, you should go too.
In the end, multiagent arbitration of a shared resource is hard.
It gets messy when people try to be polite or don't understand the rules correctly, but otherwise it's pretty easy.
It might depend on your jurisdiction, though.