Jun 29

Progress (or a visible lack thereof)

Tag: VectorStormtrevor @ 7:51 pm

Just a quick note that yes, I’m still alive and kicking.  Been a little distracted by various non-coding things, but have fixed up a few more rendering issues.  Most notable new stuff is that we no longer waste time drawing terrain triangles which would have been drawn beneath the water (since the water surface is opaque), and some optimisations to my VBO implementation, which gives faster rendering overall (substantially faster, on my laptop).

I’ve also gotten a start on GUI stuff for MMORPG Tycoon 2, but that’s still in a very early state.  Hopefully there’ll be new things which can be screenshotted and posted within a few days!

Apart from all that, I’ve also been enjoying Ghostbusters: The Video Game far more than it deserves by any objective game review criteria, been watching re-mastered episodes of classic Star Trek (which aren’t quite as cringe-worthy as I’d expected them to be), and listening to JUMPsplat.

2 Responses to “Progress (or a visible lack thereof)”

  1. Dan Haraj says:

    Since this space is empty, I think I’ll use it for my own use :p I was wondering about the rationale behind choosing C-style file i/o over fstreams. In fact, is there any article detailing the design of VectorStorm that I’ve missed, or is that something off into the future?

    Cheers.

  2. trevor says:

    You’re right; I should really write an article about the design of VectorStorm. I do have one major change in the organisation of the core graphics portion of VectorStorm that I really want to make, which will make the engine far more powerful, but I haven’t yet figured out how to make it without totally breaking backwards compatibility, and making the engine more difficult to use. So I might wait until after I’ve figured out how to implement that change, before really documenting everything nicely.

    The strongest rationale for using C-style file i/o over C++-style file i/o inside the VectorStorm engine is really just that it’s what I’m most comfortable with, and so it’s how I implemented the file reading routines. From a game programmer’s point of view, the VectorStorm engine supplies a couple of different file reading tools that you can use, rather than have to parse files yourself. Text files can be read using the ‘fsRecord’ and ‘fsToken’ classes, which will parse text data for you into nice manageable chunks (this is how we read text-based models and other data files), or for binary files, you can use the memSerialiser interface (which is how MMORPG Tycoon 1 read and saved its save games).

    I have serious reservations about using typeless functions (such as the C++ iostream < < and >> operators) to move data in and out of binary data buffers. They make it much too easy to accidentally have a mismatched set of variables in your load and save code, and thus get your file load/save code out of synch with each other in a very difficult to debug way. That’s why everything in the memSerialiser and memStore classes have functions named explicitly for the type of data that you’re reading/writing, rather than just providing stream operators (or “Read()” and “Write()” functions) which can accept many different types of parameters.