Your best option is, as you say, use Japa's RemoteFortressReader.
It provides to you a lot of "cooked" information ready to be processed by your tool. You will be using Unity, so C#, which has support for Protocol Buffers.
The other option would be to write a dfhack plugin in C++ and then, get all the data that you need from dfhack, process, package in protocol buffers and send it to Unity. That's what RemoteFortressReader do.
Cons: You need to be able to write a dfhack C++ plugin (relatively easy to do), generate .proto files for the data to be sent/received to/from unity, run protoc compiler to generate C++ files and add them to the source files of the plugin.
If you need support about that option, feel free to ask in #dfhack in freenode IRC. We'll provide support there.
Forget about lua scripts, as they are very slow compared to C++ plugins and if you add the delay that protocol buffers layer adds to the processing time, things become very very slow.
If there's something that you need and RemoteFortressReader doesn't provide, you can try to add pull requests or fork it and modify it.
PD: My always unfinished project is a dfhack plugin that provides protocol buffers support for any dfhack documented data structure, so you acces the data from your tool as if you were accesing it in a dfhack C++ plugin or lua script.
Alas, job is keeping me very busy so I don't have time to finish it.