Tarvis: The solution to that is to use a library to handle OS specific stuff, like SDL, just like OpenXcom. In fact, if this project used SDL, it'd already have a leg up on OpenXcom and other projects like DOSBOX and dxx-Rebirth and because XWVM would be new enough to be able to start with SDL2!
I agree it would be nice to use SDL2. Alas, I'm not that well versed on that library. Last time I played with SDL was back at the University, in C. And it has been more than 10 years since.
The problem is that I'm not a graphical programmer. I don't have the training for wrapping my head around all that about culling planes, shading and all the algebra involved. Or I had it, but I have forgotten since. :) In the end, I would spend several months of my scarce free time just to end with something that looks like crap next to any of the readily available 3D frameworks. Please, have a look at
this short discussion to understand my point.
I want this project to become a reality and I want it sooner than later.
Most of the work will be, anyway, figuring out the original data format (can we say reverse-engineering in this forum without summoning industrial property lawyers?), and the rules of the movement and AI behavior of the ships. Once that knowledge base is set, implementing something that runs it is almost trivial.
For example, I have been researching the kind of AI that the spaceships seem to use for flying around and avoiding obstacles or crashing against each other, or stay in formations. I think I have it cornered as Potential Fields movement planning. I just need to refine the constants and the exceptions. But the results I am getting in the Unity prototype are quite convincing compared to how a battles used to look like when witnessed from the XvT realtime map.
My point is that, once this is figured out, implementing it in Unity or SDL is just the last step, and not necessarily the one that is most time consuming.
I'll go for Unity now, because it's what I know and feel confortable with. I have built some momentum with it that would be halted if I need to go back to the drawing board to implement a 3D framework from scratch. Later on, I would be totally open to transfer all of it to SDL when the rest of the work is done, though.
Tarvis: I am pretty sure it's the .SHIP files in RESOURCE/SPECIES.LFD. Beyond that I do not know what the format is. But it can be researched if enough talented people are interested in the project. Just like OpenXcom, every format will have to be fully reverse-engineered. Chances are, though, it probably has a lot in common with other LucasArts model files (probably even OPT) so it might not be a stretch.
Which reminds me - for modding support, modern image formats such as .pngs would be great, OpenXcom also does this. It allows people to mod the game without having to use the obscure old file formats. Of course it would be supported in conjunction with the originals.
I bet they're much simpler to decipher than OPT, since there is no UV mapping information. Probably nothing more than submodels, vertex coordinates, polys, and what color the poly is.
Reverse engineering isn't something that can be done overnight. That is why I have started by implementing the flight engine, rather than the whole menu/concourse system. The .XWI, and .PLT file formats, and stats for the ships were found out in the 90s. That has allowed me to build some barebones flight sim with stuff that knows what to do and where to go. Far away from playable, but something at least.
I think it's important to flow around roadblocks instead of trying to drill thru them. I don't know the SHIP format? Then I will just paste there a free 3d model from Devianart until something better is found later. One good thing of Unity is that it can use many formats without having to transform everything to a particular one. I can use 3DS, Collada, Blender, or many other models, and use many kinds of audio and image formats without any problem. That will allow us to reach a prototype faster.
Tarvis: In the end, I think the art and sound assets are the only ones that REALLY need to be reverse engineered, and most of it already is. Things like stat tables, cockpit layouts, concourse layouts, etc. might be better off getting a new human readable format instead. and just remade by hand.
Beyond that, I think most of the unknown fileformats by now are all for TIE Fighter CD (XACT graphic format, WRK cutscene video format, possibly shared by XvT), I think X-Wing is pretty much totally figured out.
X-Wing is now, TIE Fighter is in the future. TIE Fighter already has 640x480 resolution and so it's in less urgent need for a facelift. Also, TIE Fighter is in all aspects an evolution of X-Wing, with much more complex... well... everything. That's why I start with X-Wing.
The iMuse system seems to be one of the most complex assets. We could use the General MIDI music files and figure out what to do with them. I am not so sure what would be the point of emulating Adlib or MT-32 or the GUS at this point. I have listened to the X-Wing soundtrack running over those different hardware sound cards and even when some of them sound better than other, it all sounds quite, let's say, MIDI to modern ears.
It would be awesome if we could get the guy that made the Reorchestrated TIE Fighter soundtracks to do the same with every iMuse chunk of music, then glue them togheter at real time as the iMuse system did. If that would be possible, I could live perfectly without Adlib, MT-32 or GUS emulation.
I know that the iMuse system was more complex than that. It could silence some instruments or make them sound louder, or alter the tempo and all of that (It easy to spot on the X-Wing main concourse, the soundtrack adds a trumpet if you keep any of the shuttle gates open).
That would be impossible to do with digital recordings. But it's a better compromise than nothing or the awful Redbook music.
Choice between original cockpit interiors a la XW/TF/XvT or 3D interior like in XWA.
Tarvis: That would be nice, but what I would REALLY love to see is a combination of both - specific, handmade instruments rendered into the 3D model itself using render-to-texture gauges and displays. That way it wouldn't have to use a generic 2D overlay like XWA does! Plus it would open the door for things like TrackIR and Oculus Rift without straying from the original aesthetic, especially if cockpit models were made using the DOS cockpit art as a texture base. No offense, but I think the XWAUP cockpits are kinda ugly compared to the DOS ones...
Well, I never really saw the point of the 3D cockpit in XWA. In XW, TF and XvT, the cockpits were actually showing your instruments. But in XWA, they are there just to limit your field of view. You had the virtual cockpit instruments around the screen, so the real cockpit actually had no value.
The XWAU ones were prettier but still useless.
The problem of the 2D bitmap cockpits is that some people feel constricted by them. A friend couldn't play these games, he told me, because the 2D X-Wing cockpit makes him feel like if he would be a flying Hannibal Lecter's head with his famous asylum psycho mask on. :D Also it would be impossible to use Oculus or TrackIR with those.
What you say about mixing 3D surfaces with the 2D textures intrigues me.
I guess the idea would be to build the interiors in 3D, then UVmapping them so that the original 2D cockpits are laid over them like a decal?
Maybe the 640x480 cockpits from the W95 or Mac editions would look okay. But what about the 320x200 cockpits from the DOS editions?
Damn, I didn't want to start meddling with Blender this early but now you have picked my interest. :D I suspect it will look kind of retro-3D. Like Fez or a Nintendo DS game.
Then I need to figure out where the cockpit art is stored and what palette it uses.
If you have any information about it, please share it with me. :)