Looking at all the pieces of code spread over my disk, and the months of time which have passed since the last update of the source code on GitHub, I realized it's time for some spring cleaning. I've also added a new download page to the site and changed the front page.
You can download all the demos in one big zip here:
You can download all the source code here: Part 50 Demos - Source.
Or get all the source from GitHub:
There are numerous small changes to the framework and demos. For UI, you can get help on all the demos with F1. The demos now start with an arrow cursor and you end the app by just closing the window. ESC toggles to a cross cursor which works shooter-style causing the mouse to turn the eye.
I've rebuilt the 2D text using the FreeType library, so we now have text on all three platforms. Yay! This may cause some problems:
The other big change in the framework is the internationalization code. I'll write a separate part on that. It still needs work.
Readers have also asked me to update the statistics on how much code there is in the project. That's a bit of a problem. There's a lot of code duplicated in the framework -- between OpenGL 2.1 and OpenGL 3.3, and between the Linux initialization and the Mac initialization, etc. The demos have variations on the same code for their UI. It's a judgement call what to count.
When I last counted all the code (part 19), I was picking and choosing parts of each platform, based on how different I thought they were. I neglected to make a list of which files I counted! To get comparable counts from then to now, I've redone the Part 19 counts to just include OpenGL 3.3 on Windows, and nothing else. I've done the same for the Part 50 source. This is just lines of c/c++ source, with no include files and no shaders.
Counted this way, the 3D framework hasn't grown much. Some function has actually moved out of the framework into the "Utilities" category -- all the covering classes for threads, events and timers moved, for example. The biggest growth has been in application code.
I've eliminated duplicate code in Crafty, McrView and SeaOfMemes, as well as duplicate classes in the little framework demos. I'm also not including any of the utilities I've written like the Collada importer, or side projects like ray tracing. So this is an underestimate of the project size at this point.
I don't plan to update the source totals very often, since it's kind of a nuisance. I have to combine the source from all the parts of the project, then eliminate any shared code and any library code. I'll do it again when I have some kind of significant milestone.
Next, let me run through each part of the project and give you the status.
The demo shows the planet, moon and ring. You can sort of land on them by approaching until the range text turns red, then hitting "L". That should rotate the eye space until you are in the coordinate system of the object you land on. It doesn't quite work right. Hit "L" again to transition back to space.
The options file controls the rate of motion of all the system objects. You can change the rotation speeds if you like. The "DayLen" options at the end are in seconds. Don't use zero.
There's dead code in the project for asteroids and generation ships, etc. I'll get to work on cleaning that up soon. For now, this is the same as the Part 41 video.
I've thrown out the old Octree-based version and replaced it with the latest code from McrView. I'm generating the landscape procedurally and converting it into cubes as you move. There's no editing function yet. That will be the next item on this part of the project.
To download Crafty alone, go to Download Crafty.
There is nothing new in McrView since Part 37. I'll put putting an export dialog into this next.
I might also add code to read the location of your avatar from the Minecraft files. That's kept in a completely different table than the world data, and so I ignored it. Some of the worlds I download from the net have the buildings far away from the (0,0,0) position however, and I can't actually find the good stuff!
A map view would also be nice. So would a way to view nether areas.
Of course, as I was testing this, I happened to fire up the real Minecraft, and noticed they've changed the file format (again!) So now I have to add code to handle the new database. Sigh.
There are now four framework demos -- TestCube, Trees, Landscape and SaucerMovie. To download these, go to Download Framework.
That's all for this week.
blog comments powered by Disqus