New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Model Viewer/format #2
Comments
I've found this file type description from srtuss in the source code of a project I was working on but never finished: Header (58 bytes)
{
char sig[24]; // "BULLFROG OBJECT DATA"
int numUnknown1; // 00
int numUnknown2; // 00
int numVerts;
unsigned short const_105;
unsigned short numTris;
unsigned short numVerts2; // numVerts == numVerts2
unsigned short const_4F;
int numUnknown3;
int const_1F7F;
int const_127F;
unsigned short const_D9DD;
}
Triangles[Header.numTris] (either 12 bytes or 6 bytes, depending on "l")
{
unsigned short l; // either "5" or "4"
unsigned char idx[3]; // vertex indices
unsigned char y; // presumably texture-atlas index
unsigned char c[6]; // presumably texture coordinates
}
Vertices[Header.numVerts] (6 bytes)
{
short x, y, z;
}
char[Header.numVerts]; // some table I'm trying to get this project to work so that we have a proper utility to convert from DAT to OBJ model format. |
The tool is complete. The source code is in the repo and I've uploaded a binary for you (29kb): https://thrill-project.com/archiv/coding/Hi-OctaneObjectsConverter.zip You can select DAT files and it tries to produce OBJ code you can store in a textfile and view in any 3D model viewer. Works great dropping files here: https://3dviewer.net/ This is the code responsible for reading the DAT files: |
Awesome, thanks so much! It seems to work with the Creation models: |
I converted nearly all of them with your tool, but there are a handful that don't work: |
Great that it works! I'll have a look at the "animations" when I get some time, maybe tomorrow. |
Here are the 3 missing files converted to obj: I'm not sure if there is more in the files - I assume that they contain some information on how to animate the vertices but I didn't look into that in detail. guy.dat and spermani.dat contain the same model, the whale. Object.dat is a humanoid. I've also updated the file behind the download link: https://thrill-project.com/archiv/coding/Hi-OctaneObjectsConverter.zip Hope that helped, if you need something else, let me know :) |
That's fantastic, thanks! I think these models were only in use for a short time, they seemed to move to this format when they first moved the game to use polygon models instead of 2D textures and were working on Hi-Octane (with Creation inheriting the engine progress from that game), but post-Hi-Octane quickly moved on all and further upgraded the engine for what became the final base for Creation, which used the .prj models. There don't even seem to be any textures for these models included in the files (there are lots of weird texture files included so I'm not 100% on that, but I'm about pretty sure there aren't). Are you interested in other Bullfrog games at all? I've spent a ton of time reverse engineering Syndicate Wars. I noticed the pre-alpha demo of Syndicate Wars has seemingly a lot more models than actually used, and also some of them seem to use a precursor to the model format used in Hi-Octane, with the header "Bullfrog Standard 3D Object Format". |
Sure, I'm interested. My time is limited but I will see what I can do to help. As for the engines back then, I think you're right - it was steadily evolving from game to game. As you can see in the reply I got from Sean Cooper, the engine used in Hi-Octane was already a hybrid of the engines/features used in Magic Carpet and Syndicate. |
Awesome! I saw the correspondance with Sean Cooper, very interesting. I've been reading through the diaries they wrote for PC Gamer on Creation and they talk in there about how after the demo of Creation came out the engine would be redone to support true 3D landscapes with caves in rather than just the Magic Carpet height map. Did you ever hear from them again? Any more plans for working on Hi-Octane, or is that dead? If you're interested in the Syndicate Wars stuff, I spent some time playing with it today. One thing I didn't realise until now is that while there is a folder called OBJECTS full of the 3d models... it's not actually used at all! In the final game the 3D models are in various compiled files in the QDATA directory along with their textures, and they must have already implemented that stage here. Therefore there's all kinds of weird stuff just dumped in this directory unused. If you delete the objects folder the demo still runs fine. From looking at it, there are the following types of files: FOO.DAT - I assume this was their primary 3D model format (big assumption, may be wrong!) FOO.B01 - These are the low hanging fruit. They just seem to be a variant of wavefront .OBJ as they have a very similar ASCII structure. They start with a header "Bullfrog Standard 3D Object Format". I even tried to quickly hack one together by hand, but it didn't work. I might have another go as even my meager skills might be able to figure it out. I noticed some of these have corresponding .D01 etc files, so I wonder if they are conversions of the same model between different model formats. The .D0x files are a lot smaller, probably due to no ASCII bloat. Most of the objects just seem like buildings which likely won't be that exciting, but would be interesting to see. The vehicles would be more interesting, especially veh04 which it says is a train engine, something not in the alpha demo at all (it's possible to hack in other vehicles). I upload all the files here: https://easyupload.io/4ykbbb If you have any luck, let me know. |
Thank you. No, I didn't write to the developers again. I had a quick look at the files you uploaded. Not sure if I have enough information about the game to be helpful here ... I've never played it, to be honest. Do you have a place for discussion for the Syndicate topic? Maybe we should continue there... |
Thanks for the info. The files are definitely from the demo, one thing I've been careful of is finding the origin source for lots of these things. They nearly all came from magazine cover discs (which I now have), but people just go by rips off the internet. This meant that for example, people thought the Creation demo had no sound at all. It was actually because it came with loads of other Bullfrog demos (including the Syndicate Wars one) in a special Christmas pack they made, with a shared sound setup program. The rippers didn't include this, so the sound wouldn't work! I don't really have any other place for discussions. This is a problem I've been considering for a while, Syndicate Wars in particular I've increasingly stumbled across people interested in the work in reverse engineering it and the source port, but there's no community anywhere, and I not sure enough people care to make one sustainable. Some kind of overall Bullfrog games website/forum might work. What is notable is that there is still a big community around Dungeon Keeper and the KeeperFX project, so possibly they could be leveraged, but DK is very a particular game and I'm not sure many would be interested outside of it. |
I figured out how to convert from the other Bullfrog format to .OBJ: |
Wasn’t it also a .NET project? I have been interested in a 3D accelerated version of Hi-Octane for PC ever since it came out. Today, I would be interested in a modern multi-platform version. Well, maybe not particularly an XNA .NET version. Hi-Octane came out during a really delicate time when 3D hardware acceleration became a thing on the PC. And, although this game was made for and in 3D, unfortunately we never saw it on PC the way we should have. 😢 Other systems like the PlayStation and SEGA Saturn have been more fortunate. Sure, you can emulate those systems on PC pretty well by now but it just does not feel right. I think Bullfrog also might have released some obscure
Yeah, I guess rewriting the game mechanics and importing game assets into a modern 3D engine may be the easiest way to create a remake and maybe also the best solution for long time preservation? Anyway, although I have not tried the editor, I have to say that you have done excellent work reverse engineering and documenting the game’s assets @movAX13h. 👍 |
Do you mean the CGL (Creative Graphics Library) versions? They were official 3D accelerated versions of the game, but only worked via the dead end CGL API on literally two graphics cards. There's more info on them here. Not sure they'd be that useful, as I don't think any of the CGL API is understood these days. As you say, based on how simple the game is it would probably make more sense to start from scratch for a remake - the graphics and map format are understood, the only really unique things in the game are the physics engine and the single player AI. |
Hello Jake, thank you! Most of the hard work was done by @srtuss I've figured out some parts using the tools I've made and documented everything.
No, he made it in C++. The tilebased setup of the original maps is not ideal for modern GPU implementations. A complete mesh has to be generated, leaving out the morph areas and then they have to be generated separately so that vertex updates don't cause the full mesh to be uploaded to the GPU again. I did that in the PlayCanvas implementation. Also, UVs of each map cell have to be split to support tilebased texturing OR a complete texture has to be pre-rendered on game start or during the build process. Collision detection can be reduced to simple map-grid checks (height of pillar at location x/z). The physics of all ships are completely identical btw. They didn't have time to balance vehicle meta. Aybe started to work on a remake in Unity but I dont know how far he got with that. I also have a Unity map loader (without morphs) but I find it boring to use Unity for this. I'd be for a browser remake of the game so that no installation is required. The low-poly style of the game is ideal for modern browsers (WebGL). I was not aware of the fact that there is a kind-of-accelerated version of the game but I doubt that the assets there are stored differently or in a more convenient way for modern GPUs. |
But you guys have not open sourced it yet, right?
Oh, that’s definitely better than XNA. 👍
I can image that. However, I guess that on the latest GPUs especially geometry shaders could become very instrumental to that. Yet, I believe you could also modify morphing vertices with standard vertex shaders per vertex index?
Usually, it is best to go with a texture atlas. 😉
Sounds interesting. However, you would still require users and browsers to load the original assets from a local location (unless you want to recreate the assets completely to avoid licensing issues). So, although I am not web developer this seems like a cumbersome and error prone solution to me.
I do not recall and I have never used or seen this version live, then I guess it must be the one. Yeah, it is indeed unfortunate they did not target any standard graphics API. But then, one cannot blame them since neither OpenGL nor Direct3D were actually available when game development started and no one could foresee which way the graphics market would go. @Moburma Do you think that the Magic Carpet 2 HD engine could be somehow used or extended to implement Hi-Octnane? |
Yep, he doesn't like to release stuff because people keep bugging him for updates/help on all of his projects. I have the source code but I'm not sure it is the latest version ... and it is very messy. Physics are custom and not perfect. It supports multiplayer and singleplayer but many gameplay mechanics are missing. It was ment to be a remake of the game - Hi-Octane Refueled. I don't see the need for an accelerated version that looks the same as the original because it is perfectly playable in DosBox. |
@JakeSmarter There's a video of the PCI version of the 3D Blaster edition (confusingly the 3D Blaster series comprised of two different cards based on different chipsets, the later PCI version supported some better features like bilinear filtering) someone made here: I've only got very little programming ability, so my opinions on 3D engines are about as valid as my knowledge of brain surgery, but my understanding is a) Hi-Octane obviously was derived from the Magic Carpet 2 (see the deforming terrain feature both use), so might be a starter, but b) the decompilation project doesn't have any symbols or other helper files (there are some available for MC1 though), so I imagine it would be a nightmare to use for derivative works. Obviously the people who worked on that project could assist far better. The Creation demo is also clearly derived from Hi-Octane and has some debug symbols in its executable. Are you aware of thisrepo? Doesn't seem to have done very much, but might be a useful ally for working on a combined project. @movAX13h Do you know of any thing else cut you came across in the files? I've been having a poke around and might do a write-up on the game. I noticed the unused shield power up you found, and there's also a generic grey hexagon that seems to have been used as a template for the others. Also the MSPR and HSPR files seem to have Deluxe Paint style buttons in them that were almost certainly from the game's level editor. |
@Moburma besides the shield item, I've noticed that there is a 3D model of a barrel among the models but it is nowhere used in the level files. Each object type seems to be handled differently and for the barrel it seems to be disabled in code because I suspect it is entity type 3.3 which is used in the level files but is not shown in the game. There is also a 3D model of a simple road sign that is also not used. I've asked the original devs about it but they don't remember. Regarding your thoughts on the engine, Sean Cooper wrote: "I did spend 6.5 weeks of life writing this game using the Syndicate and Magic Carpet code, including the design skills I had learnt from both. In addition we used both the editor code from Syndicate and Magic Carpet. It must be a massive mess of glued together code." I asked if he knows if the level editor is still in it and he replied: Me and srtuss looked for leftovers in the disassembly but didn't find anything that pointed directly to the existance of a level editor, only some traces, mostly strings in the executable but I can't recall the details now ... I suspect, the editor was a separate executable and only some source code was shared among projects. Regarding collisions and physics he stated: "The collision was achieve in 2d, simple (but quite complex at the time) intersection of line test and breaking down the steps so the object could not completely cross over. the collision on the ground was 4 points height of ground (the cubes were not included). No physics model really, the collision produced some kind of deflection bounce vector thingy and then it left the ground simply by the motion vector, i.e. where the position was going and then brought back down by z-=gravity. So you could some serious climbs and create a massive jump. The craft (and everything other thing) was represented by position and delta. Oh z was up and down in the game code and probably in the graphics engine (as Glenn wrote that)." Alex Trowers explained: "There were a couple of modes in the editor. Everything was tile-based - we could toggle between painting textures down or the height of each vertex in the top-left corner of each tile. That's how we built the basic geometry of the world. These answers, to me, make at least 2 things very clear:
|
@Moburma Hey, thanks for sharing this video. 👍 And yeah, I can see bilinear filtering on the track but if you look closely at the vehicles they strangely not only lack filtering but also perspective correction. 😉 I guess this was a deliberate performance trade off by the developers.
Does it? To me, it looks just like the DOS software renderer’s frame rate, ca. 14 fps. Besides, no matter how much compute power you have under the hood the frame rate does not scale up beyond 14 fps. Fog was indeed a separate capability up until DirectX 8. So, not all GPUs did support fog even in 2000. There were also two types of fog, linear and exponential, with exponential being the more realistic option but also more expensive in die area to implement.
Yeah, unfortunately it does not have much going on. Anyway, like I have mentioned, the biggest issue is getting the physics and game mechanics right which imho you cannot get right without basically decompiling the original executables. I wish we’d have at least the original DOS source code. Then you could sensibly recreate the original behavior in modern code. Otherwise it comes down to digital archeology and guess work, and I am not into archeology.
😢 But anyway, thank you @movAX13h for sharing with us your conversations with the original devs. When you look at the original game, one can clearly see that it has not been finished on time. There is so much stuff lacking. Unfortunately, a lot of great potential has been left on the table by the publishers. Hi-Octane Refueled sounds like an interesting proposition, even if you would not get the physics right, but it would still mean basically a completely new product and this is where things can easily go wrong. So, this is why I am a quite skeptical that it would suffice to recreate and extend existing game assets to have a worthy successor game. |
@movAX13h Thanks for that, very interesting. I see the road sign object as well you mentioned. I started writing up a TCRF page on it, but just came down with COVID, so that's slowed me down... The editor stuff is interesting, it does look like it was cut out. They seem to have been very careful with this in their other games (not so much in their demos though!), I couldn't even see any strings that looked editor related. There's also that mysterious EDITOR directory that comes with the game, so it would make sense for it to be a different program entirely. EDIT: Also, do you know if the cut green shield item actually does anything? I guess I should play around with it. @JakeSmarter have you seen this before? Bullfrog artist Mike Man created some concept art sketches for a Hi-Octane 2, but it seems the game never got beyond that point. |
Thank you for sharing @Moburma! 🤔 Interesting, I have never assumed or been aware that Bullfrog was ever toying with the idea of a sequel. Because the game was basically incomplete and sort of just a fill-in project I have always assumed the publisher and bean counters made a hard cut on the development. Well, I guess you cannot stop artistic freedom. 😃 |
I went away and did some proper digging into the game and its demo, and found some interesting things (I'd only briefly played it before, I didn't know it that well). End results are here and here. tl;dr:
|
Hi,
I don't suppose you know of any tools that can load the model format used by Hi-Octane? The reason I ask is that the demo of the unreleased Bullfrog game Creation also has some unused models that seem to be in the same format (same "BULLFROG OBJECT DATA" header) and I'd love to see what they were.
Thanks
The text was updated successfully, but these errors were encountered: