We’ve restarted full-time development on The Story of Sin (Project SOS), and wanted to begin an ongoing development blog to keep our internet friends up to date on our progress. It’s going to be an eventful few months of panic, coffee and early morning office hours, but we’re all excited to see where it leads us.
A quick recap for those who don’t know what SOS even is; The Story of Sin is Chaos Theory’s third game, a dark and ambient puzzle platformer set within the underground ruins of an ancient civilization. With a race of pre-civilized tribal warriors watching your every step as you descend further into the darkness, you begin to uncover the unwholesome truths that led to this tribe’s catastrophic downfall.
Developed entirely within XNA with scripting support from Lua and a level editor built in Windows Form Apps, this project is really stretching the bounds of what we know to create a game that truly looks inviting through a unique aesthetic. Involving systems such as switching between a continuous and a looping world, controlling gravity’s effect on individual objects within the world, creating entirely scripted characters and scenes as well as fusing 2D and 3D elements together with dynamic lighting SHOULD prove challenging enough, but to add to that, we hope to get the game through Steam’s Greenlight program and offer the game to a much larger audience than Oversight.
In this last week, we’ve begun working with 2D shaders and graphics buffers to enhance the appearance of our 2D assets with simulated lighting relying on normal, specular and diffuse textures for each object. We decided early on that we did not want to rely on a 3D workflow to produce normal and specular maps for the game’s 2D assets as it would take exorbitant amounts of development time for our 1 and a half artists. However, producing textures such as normal maps for a hand-painted texture is not an easy task, and did some research into the area to discover what our options were.
Snake Hill Games has recently pushed a project through Kickstarter called Sprite Lamp (yay, Australian Kickstarter projects), which enables the production of normal maps that relies on inputting greyscale lighting profiles from 4 cardinal directions, which are assets that have to be handmade for each texture. Although the project does some of the work for you, producing those lighting profiles is a huge amount of work, and once you have those its not too difficult to produce a normal map yourself using some Photoshop Trickery with channel blending. With the asking price required for a pro version (which promises the features that we need) sitting at around $70, and a not-yet-finished program, we decided to look elsewhere.
nVidia’s Texture Tools offered a free plugin for Photoshop that could produce normal maps automagically from a single layer or Photoshop comp. It even allowed a really basic 3D previewer that seems to disagree with our AMD graphics cards (we see what you did there, nVidia), which was really useful to see the results of our various button and slider shifting, but it didn’t work correctly when we included it in our game engine. Our 3D character had a normal map that was working perfectly fine, but the colour output of the Texture Tools normal map was hue shifted from the baseline of the normal map produced in Maya, causing lighting anomalies in game. Using the layer as a height map to produce more detail in the normal map appeared to be the cause of this problem, but unchecking this option resulted in a normal map that barely did more than produce shadows on the opposite side of the object with respect to the light source. Giving up probably too quickly, we continued the search.
CrazyBump was our final stop. A free demo confirmed the features boasted in its video, and although its UI gives the program a bit of a second rate feel, this program is POWERFUL. It could produce detailed normal maps, specular maps, depth maps and shadow maps for a plain 2D texture with loads of slider options to customize the output of each. CrazyBump comes with a price tag though, $300 for a commercial license! After checking out its competition and comparing usability, we really couldn’t resist, and decided to take the plunge. It definitely saves us more than it costs in the long run, and we wouldn’t be able to achieve the look we want without it. Plus you can create over-the-top normal maps with a few simple tweaks that almost fakes a cel-shaded look for 2D assets, which is an added bonus.
We also managed to finish of the first beta version of our level creator after all of the game’s objects were implemented and usable. Alongside this, we developed a new method for converting the levels into edge loops for collision processing in the game engine relying on the coordinates of the wall tiles instead of a level outline, saving us an additional image required for each level and producing a more accurate collision profile in the process.
Check back next week for some 3D woes!