Bit late to this, but it's something I have thought about a lot.
*) Major obstacle is IMO scripting. You'd need to change the scripting language. My preference would be Lua since it's basically the industry standard for game scripting, as well as small, light and simple to embed. JS could also work, I guess. But the main problem here is that all tables would have to be redone, scripting-wise, as well as having to re-educate the community about scripting in a new language. So this issue is IMO more social than technical, which is always scary. If we could integrate a second scripting engine in parallel so that old tables still work while new ones can be developed in the new language, that would probably be the best way.
*) VPinMame integration. This uses COM objects now. Probably a simple (assuming) Lua extension which either has VPM compiled in or calls into VPM, for now, via the existing COM interface should do the trick to get rid of this dependency. Of course, at some point VPM itself needs to be ported to work outside of Windows and I don't know how much work that is, but pushing the COM dependency out of VP is more urgent, IMO.
*) File format. VP uses this Microsoft Structured Storage API which won't be portable. So a new format is needed. Here I would lean towards something like JSON or MessagePack for the table file itself, with binary resources stored as external files in the same folder. This would create a nice open file format. A lower-friction way would be to use POLE, which is an open source implementation of Structured Storage, but maybe it's a nice opportunity to open up the file format and do it the right way.
*) Rendering. OpenGL, obviously. I think this is relatively doable since the RenderDevice is already abstracted. One issue is that shaders use a different syntax in OpenGL, so these would have to be hand- or machine-translated. I think there are some software projects which attempt to handle portable shaders, but haven't looked into it much. EDIT: This looks interesting, used in Unity: https://github.com/a...p/hlsl2glslfork
*) Codewise, the player needs to be refactored so it is more standalone from the editor. The editor is beyond all saving from its Windows/COM dependencies, but the player alone would be quite doable if the above problems are fixed. It would take quite a bit of refactoring to really separate the player from the editor, but probably minor compared to the above issues.
That's pretty much all of it, I think. So, quite a lot of work. I think, however, that even attacking any single one of these would be worthwhile, since it removes one more obstacle from the path. For instance, if you could get OpenGL rendering working and coexisting along the DX9 renderer, I think that's something really valuable. If we think in the long term, we just need to make one step after the other, and the order isn't so important.
Edited by mukuste, 12 January 2015 - 10:26 AM.