Clouds of Vertices

2021-01-13 / Mark Sowden

← 2021-01-052021-01-21 →

So unfortunately I missed writing up another post yesterday as I was not feeling well. Possibly an ear infection of sorts, not 100%, but regardless I'm feeling better now albiet stupidly tired - woke up at about 2am with dry lips, my tongue feeling numb(?) and generally my mind all over the place, I can only put it down to the cold at the moment though (we have no central heating here).

What's happened since the last time I posted? Eh, not much.

I recently decided to take another swing at reverse-engineering the Rayman Raving Rabbids data formats, specifically the geometry data. 

As far as I understand it the BF format (or BigFile as I believe it's referred to internally) is essentially a tree of different collections, each containing a collection of other files, though I haven't looked too much into it given others have already written tools to extract the contents. No, what I'm really after is what's within those collections.

Turns out the Jade engine uses a proprietary format called Gao, which can contain anything ranging from scripts, geometry, animations, effects and more.

To aid me I was hoping to use an existing tool called hex2obj but it didn't do quite what I was looking for, so instead I ended up whipping up a tool on my laptop called bin2obj which I'd imagine practically does the same thing but I find it significantly easier to use - especially if you don't know what you're looking for. The only downside of my tool is that it currently assumes that vertices are stored as floats in X, Y and Z order, but this works fine for my case.

You can see the result of the tool below.


It doesn't look like much, particularly when it's just a static image, but I did eventually manage to see some resemblence of models and did track down where the vertices were stored for a particular Gao file - but unfortunately could not make heads or tails of where the indices were nor the general structure of the header.

Having looked at another tool that supports Beyond Good & Evil, I did get some vague ideas but nothing notibly useful thus far.

Over the weekend I also started thinking about how the networking architecture in Yin is going to work, not something I've had to deal with before but the experience will be useful as I can translate that over for OpenHoW later.

As I had currently written Yin, it was with the assumption that I would never want or need networking support. Obviously as the project has grown that plan has changed.

I'm debating whether or not to roll the networking implementation into it's own library as well, so that the editor can use it for multi-user sessions.

Eh it's all up in the air. I did at least make some progress on the general simulation state so there are significantly fewer hacks involved now. The engine now initialises, console opens and you can load in a map that way rather than having to hit a particular key, and input is now handled in a more flexible manner too.

I'm not super happy with how console input is being piped right now but it's using a system I'm going to be rewriting anyway, so I will change it at the same time as that.

For the Warlock game I'm producing in GameMaker, I've got nothing new to show except for some pretty awful sprite work but I'll spare you from that for now. 

This will probably be the only game I'll ever likely make with GameMaker. It's a good toolkit but I don't like how the implementation works - going more in-depth than that will probably require it's own blog post.

On the side for TalonBrave.info, I've been piecing together a dedicated page for Double Aught's cancelled Duality. There's very little information about the game outside of the Web Archive, so I thought it would be a good idea to try and put as much as I could, information-wise, onto this page.

The screenshots below show an obviously unfinished copy of the page but it should give you an idea of what I'm going for.


As for what I'm doing as my next article for TalonBrave.info, I still don't have any ideas. This is partly why I'm investing my time in doing more research into Rayman Raving Rabbits and Duality, as my hope is that either of these might lead to something I can perhaps write about. Otherwise I'm open to suggestions!

Unfortunately I have one more project to add to my list, and this time it's a fork of a Quake-like engine called Void, written in C++, which I've been working on for a few days. It's not intended to be anything major, mostly just a clean-up.