Sometimes, I dabble in trying to make games. Most of the time, I try and create them in raw C++, making all of my own technology. This project started from that.
I had been trying to make a 3D game, with very simple, though geometrically complex models. I first implemented OBJ loading to my engine, which worked fine for tiny models. But as I gradually made the models more complex, the loading times would sky rocket. This is due to the OBJ format being textual, requiring me to parse text, rather than just load in a simple binary.
I could have, of course, implemented a format like FBX, but that is a proprietary format, and despite there being specifications of the format to where I could write my own format, I decided to go against that and create my own special format.
This format was very barebones, and only contained vertex and index data to start, with only one object being permitted per model. I created this first version, with the simple barebones data, around July of 2016. Unfortunately, the game surrounding that format never came to fruition, but the project did recieve some upgrades.
Around June 9, 2017, I started to write another 3D game unrelated to the last one. I used the mcv format once more but this time around I needed individual objects within models. Thus, I upgraded the format to include that. I also had issues with conversion times from OBJ to mcv.
Previously, a large model would take an exponentially long amount of time to convert. For instance, the Sponza test model took upwards of five minutes on my machine! This was, of course, tedious when conversion was required. So I changed how the converter, and OBJ loader worked, and got that time down to mere milliseconds on my machine. This is what makes up the second version of the model format.
This project has about five stars in total on GitHub, and is easy to implement into any game project.