I haven't started modifying the core to accommodate map edits yet on the server side, I thought I'd hash out the client issues first. To edit the map client side, I opened up the client in a hex editor (after finding the locations in ida pro) and I edited the parameters passed to CreateFile, CreateFileMapping, and MapViewOfFile. The access and sharing modes are hard coded in the client, so its just a matter of passing in the correct modes. Normally the client is set to read-only. Changing it to read | write in the subroutine will make the client open every memory mapped file in read/write mode.
Then the only thing lacking was that the client passes null as a parameter for the shared name (which is the name that other processes need to share the memory space when they call OpenFileMapping). Changing that to something predictable wasn't very difficult. The subroutine was already using the file and path. I wrote a simple function in C and compiled it to bytecode that iterated through the string until it had a pointer to the filename without the path. I found some empty space between subroutines and injected the bytecode. Then it was just a matter of changing a couple instructions to get the client to jump to my code, push the new pointer onto the stack and jump back just before calling CreateFileMapping. The result was that the client would then open its mul files in shared mode with predictable names.
Then in my prototype application, I could call OpenFileMapping with the shared access rights and pass it a name like map0.mul. Then I'd have access to the same memory mapped file the client was using, and any changes I made would be paged back out to disk, and the next time the client accessed that section of memory from the file mapping, it would see the altered memory.
I'm sure there's better way to make it work with more clients without patching the client.exe (maybe dll injection / searching through the client process), but this made sense to me at the time and I thought it would be a good experiment to see if something like this would actually work.