Archive of dev-blog

    Planet destruction Well, it's been another week of development on Starlight Revolution.

    One of the areas I focused on was planet generation. The old method relied heavily on the CPU, and thus wasn't really suitable for use during gameplay. It worked fine if I only generated planets during loading, but generating them at runtime led to a noticable stutter. I've completely rewritten this area so that it runs much faster- so fast, in fact, that it's entirely reasonable to regenerate planets on the fly. This is a major gain, because it means that I can do things like modify the look and shape of the planet due to comet impacts, orbital bombardment, and other ingame effects.

    There are still many improvements to be made to the effect before it's satisfactory, but for now it's a solid proof-of-concept.

    This week I've also done a lot of background engine work. One of the improvements I made was to switch from TinyXML to pugiXML as my XML library. I've done some profiling, and pugiXML actually runs noticeably faster even over the small set of XML files I load. As an added bonus, I find the library much more intuitive to use than TinyXML.

    Other changes I've made this week involved loading game data from files, and some minor improvements to how I handle rendering text on the screen.

    As always, feel free to drop me a line on twitter @JeckDev or leave a comment below. You can also subscribe to the mailing list for monthly email updates on what I'm doing. The first newsletter launched at the end of last month, so if you'd like to see what kind of content you can expect, you can check it out here.

    Art Workflow

    This week I've been doing some further work on concepting out new spaceship designs for Starlight Revolution. Concepting is important, because it lets me keep a coherent vision while working on individual spaceship parts. By using the concept as guideline, I'm able to see how things should work together, and it's also much easier to make large, sweeping changes when I notice stylistic areas that I dislike.

    One of the more interesting ideas I've had for this kind of work is displayed at left. My current workflow involves doing top and side view orthographic silhouettes, but yesterday I struck upon the idea of chopping these two images up and arranging them in 3D to give a quick and easy approximation of the final spaceship. I think it works well to give an idea about the shape, though it definitely doesn't define the entire volume.

    One of my main focuses right now is on creating art assets, so I'm probably going to be making a lot of these animated spaceship silhouettes.

    On the code side of things, this week I've been focusing on GUI work. This is one of the areas I've had trouble with in the past, but I'm hopeful that I've made some decent strides towards success.

    The big issue I've been working on right now is automatic layout and reflow. When you resize a website, the text on the page rearranges itself, and all the elements move to the right place. A similar issue exists in video games- everyone wants to run the game at a different resolution, and while they're unlikely to change resolution often, we don't want to have to design more GUI layouts than absolutely necessary.

    Another thing I did this week was put together both a personal website. I'll be using the personal website to post articles and blog entries that are about games and gamedev, but not specifically about Starlight Revolution. There's an article there about staying motivated for long projects, if you're interested.

    As always, feel free to drop me a line on twitter @JeckDev or leave a comment below. You can also subscribe to the mailing list for monthly email updates on what I'm doing. The first newsletter launched at the end of last month, so if you'd like to see what kind of content you can expect, you can check it out here.

    Art Workflow

    Art

    A lot of my time spent this week was on developing a good workflow for art assets. To the side you can see a rough overview of my process, from concept art to highpoly. None of this art is final, and the highpoly especially needs hours of additional work, but I think that I've settled upon a workflow that I like.

    I start with a concept for a finished spaceship, block out the shapes very roughly in 3D, and then begin refining the part blockouts into highpoly meshes. Once I've got the highpoly production meshes finalized, I'll retopologize them appropriately as game assets. My plan is to build a set of modular pieces which will be assembled together into ships. I'm hoping that doing things this way will allow for a decent degree of customization without requiring an enormous workload.

    I've been attempting to do one blockout per day, regardless of the other areas of focus, so right now I've got a decent library of basic shapes to play around with. The highpoly meshes will of course take longer, but because art requirements can change based on gameplay, I'm reticent to spend too much time on art just yet.

    Code

    As far as code goes, continuing in the vein of last week, I've also been working on making the game more mod friendly. One of the ways I've done that is by integrating PhysicsFS. PhysicsFS is a filesystem library that works by treating multiple real directories and zip archives as one virtual location.

    This vastly simplifies the handling of mod files, allowing players to build their mod into a zip archive and distribute it that way. If there are multiple copies of the same file, only the latest loaded one is used, so it's easy to override specific game files. What this means for the player is that they'll be able to download a single mod file, put it in a mod directory, and then switch it on or off in game.

    Integrating PhysicsFS went fairly quickly, though it did necessitate some changes to how we fed images and sounds to the game. The more time consuming aspect was getting the system to handle loading and unloading mods correctly; depending on what files a mod affects, this could involve anything from just removing new content to reloading the entire asset tree. I've still got a few kinks to work out, but for now it seems to be working well.

    If you'd like more info on what I'm doing, feel free to drop me a line on twitter @JeckDev or leave a comment below. You can also subscribe to the mailing list for monthly email updates on what I'm doing. The first newsletter just launched, so if you'd like to see what kind of content you can expect, you can check it out here.