This isn't a simulated universe per se, but in a similar fashion, there is an entity "in" this universe (let's call it the "Processor" to keep the computer analogy). This Processor "simulates" the entire universe. In other words, it computes the laws of physics and applies them to the world and thus updates every object (or field; I'll probably ask a separate question about exactly what the Processor needs to update to update everything). To update "everything", the Processor needs to know all information about everything in this universe at all times.
This poses two problems:
It creates a preferred frame of reference (the Processor's frame) and thus we can define "absolute simultaneity" simply as "two events that happen at the same time according to the processor"
Information can travel faster than the speed of light. The Processor knows what happened because it "made" it happen
(I don't think this breaks quantum physics because, assuming the processor can generate random numbers, it can introduce non-deterministic physics through them)
Do these problems break the logical consistency of the world or are they not real problems because "inside" the universe to every entity it still "seems" that the laws of relativity are intact? If they do, can I make a small change to my setup to remove this inconsistency, or is relativity fundamentally mutually exclusive to "simulated" universes?
(I have a possible fix: to have each particle have its "own" processor, keeping information localized. But that doesn't really fit in with the magic system I'm creating, and poses the issue of particles vs waves vs fields etc.)
Editing to clarify what I mean by "the frame of the processor." This is not the frame that the processor experiences, but the one that it calculates. Here is the model by which it operates: It runs the calculations on the current state of the universe, figures out the values needed for the next state of the universe, and then updates those values. I'm calling each such calculation a "Frame." It doesn't matter if the processor takes longer on one frame than the next in its own time, because the simulation time is independent of the processor time. The processor could pause for a thousand years in its own time and the simulation wouldn't be able to detect that.
The universal frame is instead the "frame number," or the "time coordinate" that the processor uses in its own calculations. Let's say there are two values (it doesn't matter what they are, just that they are actual values that exist in the universe. Can be the value of a field at two points, for instance). The Processor updates both of them in the same frame. Thus, from the "universal frame," they are simultaneous events.
EDIT 2: It was wrong of me to state that the Processor exists "in" this universe. I think it's best to model it as something that exists outside of it but can be accessed from inside it.