Hello again! The time has come for me to get a new machine. My core 2 duo from 2006 is really causing me a lot of difficulty working on this project!
However, I have still done plenty of work.. if you only want to see some pretty pictures and aren’t interested in any technical details, avert your eyes now!
OK.. since the last post I have:
— Converted the project to Visual Studio 2012, from 2008. This required buying 2012. This was actually a lot of work. I converted for three main reasons:
1) I had been considering buying Glowcode or VTune (both very expensive) for profiling, but just couldn’t justify the money. VS2012 has profiling built-in, and it has been absolutely awesome to use. Glad I waited.
2) VS2012 has graphics debugging (aka its own PIX style debugger) integrated. Can’t tell you how happy I am that I will not be using PIX much ever again.
3) VS2012 integrates HLSL compilation (with all associated flags/options) into the build process so you don’t need to build them with external batchfiles anymore, and can change the compile options per project configuration more easily. This was especially nice as it seemed like VS had bugs related to custom build tools not running for every single file that was changed, it seemed to only do one at a time for each time you hit build.
— Done plenty of work on the editor..
o Made a ModelWriter class for saving any changes to models (map tiles primarily right now)
o Added surface-movement placement of models (e.g. based on terrain mesh collision) rather than just X/Y/Z free movement.
o Made a Decal shader for things like brushes (using spellshadow now as a test for object placement)
o Allow adding of any model object in the data tree, to a map tile
o PropertyGrid data for every model object and asset (in addition to the database items that were already there) - not all editable yet.
— Created a texture format, called .TXR. (I guess you could say my simpler answer to .BLP). This format supports the mipmap chain, and defines the size and number of mips in the header. Currently its RGBA uints but I will support various image formats ideally.
— Used said texture format in creating texture converter tool that can convert all the stuff that was converted from BLPs (or really anything stb_image.c can load) into .TXR. My engine currently loads .TXR for terrain textures. A lot faster than box filtering custom mips every time you load a texture. Soon I will load .TXR for all textures.
— Converted my PacketHandler (used by client/server) to use function pointers to access the handlers faster. Also started prep to convert the socket code to be binary rather than text-based - harder to debug but will be much tighter/more compact and faster (and thus scalable beyond local tests)
— Worked on creating a default SQL file to install into a local database for starting to use an editor on your own install of the tools.
— Added minidumps to all apps so that crash reports will be useful (or even existent…thanks Garthog for prodding me there)
— Removed 99% of the extraneous ‘fixing’ i was having to do in my ModelLoader/object initialization due to weird WoW asset issues - usually having to do with positioning. I moved all these fixes to the converter as it should have been to begin with.
— Fixed a huge copy bug that made water rendering quite slow and made it the slowest part of the rendering frame.
— Re-tooled the ModelLoader into separate functions for ease of profiling and cleanliness. There is a function per chunk type basically (sometimes more than one). ModelWriter will get the same treatment soon.
— Converted all ‘flag-like’ variables the shader used into a single uint for boolean operations. This reduced per-mesh buffer copies by quite a few bytes. Significant improvement.. stupidity that I didn’t do it earlier.
— Converted tons of common shader stuff to common shader #includes, making changes much faster now. I couldn’t really get this to work before. Originally it was because I did run-time shader compilation which is very tricky to get working with include handlers. Now that i’m compiling HLSL natively in VS I’m VERY glad to do it - though it didn’t work at first. It couldn’t find the file I was including for some reason. Then it magically started working. Hrm.
— Added a lot of things to my debug toggles for comparing framerates/performance, e.g. instancing opaques vs instancing transparents (or both at once).
So you see, even though some start to call the project ‘dormant’, quite a lot is actually going on behind the scenes. Typically I don’t like to post a blog entry unless I can show something new in a video or picture, but there’s LOTS going on, believe me!
Special thank you to Garthog for being my first alpha-tester and helping me figure out many local-specific configuration problems that would be a disaster in the future.
On the topic of alpha-testing, thank you to those who volunteered - I’ve added most/all of you on github. I hope to put some deploy builds up there as soon as I can make a HOWTO that is complete and makes sense.