I'm fairly new to Clojure and LISPs in general, so excuse me in advance if this question sounds a bit silly. I've recently created a turn-based videogame in Java in a MVC fashion, with a thread in charge of the graphic loop (so, updating the geometric state of graphic entities on screen at a fixed rate), and a second thread in charge of handling the logic state of the game; it acted pretty much like a daemon: "sleeping" in the background unless requested to do something (elaborate user input), and then delivering a "change log" to the graphic thread so that it could render the changes made to the logic state. So the game world was not "shared" at all: only the logic thread had access to it, and the graphic thread's only duty was to apply changes to the rendering after an initialization phase and when a new a changed log arrived from the logic thread.
I read that Clojure has vars, refs and atoms. In such a scenario, which one of these identities should I use to store my game world state in the logic thread in Clojure?