The last few days I’ve been working on subsurface scattering and skin shading in my renderer. This is a ray traced solution, so I simulate how every ray of light bounce around hitting particles inside the skin before leaving. I exported the highest detail level of the model from zbrush, since I wanted to see how the small details react to the light. The model in this image has more than 19 million polygons.
Category: Programming
Renderer
I’ve started making a physically based path tracer. It’s using cuda to make it run on the GPU, which makes it quite fast. I simulate a physical camera to get the depth of field and bloom.
The backgrounds are lightprobes from hdrlabs.
The World Outside
I made an entry for Ludum Dare 38. This time I had the monday off, so I decided to do the jam so I’d have three days instead of two. The theme was “A Small World”. I really felt like doing an action adventure game, so I thought I’d make the beginning of one, and then where ever you went you’d just find the end of the world instead of the epic adventures you’d hoped for.
I wanted to do a more stylized character. I thought it would be quicker than making something realistic, but it ended up taking the whole first day since I’m not used to making that kind of models. I had to redo the face three times because it became really creepy the first tries. In the end, I think it turned out really charming, so I’m happy I spent the time on it.
The second day I spent on the fighting system. I wanted you to be able to dash with the right mouse button, and hit with the left mouse button. I thought it would be good if you had to time your dashes and hits to be able to hurt the enemies. I made the enemies dash away when you got to close to them. I thought it got a bit to hard, so I made it a bit easier, but the difficulty was still the worst part of the game, and the one I got most critique about.
The last day I made a model for the enemies. I used the one I had for the main character and resculpted it, so I could use the same skeleton and animations. I also added gates so you’d have to get a key to be able to get to the next path. That made the progression better. I had hoped I’d have the time to add a bit of a story, but the time was running out, so I didn’t get to do that. I think a story and some sound would have done alot for the atmosphere of the game.
I think my biggest mistake was that I didn’t have anyone who could play test the game during the jam. Then I’d have seen that it was way to difficult and could have tuned the difficulty down a bit.
Other than that I’m very happy with the game. I’m really proud of how well the graphics turned out, and I had a great time making it. I also learned alot about Unreal Engine 4.
CrateBlaster
I made a game for Ludum Dare 37. The theme was “One Room”. At first I thought it sounded like a great theme, but I had a really hard time coming up with ideas that only took place in one room.
I decided to make an adventure game, but when I had a working prototype, all puzzles got really easy because you found everything you needed too fast when everything took place in the same room. To have a game of any length, I’d have to fill it with a lot of story, and I had a hard time coming up with anything good.
After waking up the second day, I felt it wasn’t going anywhere, so I started over, and had a good idea about a little puzzle game I wanted to make.
I only had a day to finish it in time for the compo, but I managed to get everything I’d thought of in to the game, and I’m glad I finished in time.
I didn’t think of adding a highscore when making the game, and that’s something I think would have made it more fun to play. Otherwise I feel the concept was quite unique, and I’m happy with how the game turned out.
NightBird
I made a game for Ludum Dare 35. This time I choose to use Unreal Engine 4, since I haven’t used it before, and it seemed like a good time to learn it. The theme was “shapeshift”. At first I thought I’d make a game where you could transform into all sorts of animals, but I had to rethink, since the scope got way too big for a two day project.
After alot of thinking, I decided to make a game about a man who can transform in to a bird, who fight crime at night. Sort of a superhero kind of game.
I ended up spending way to much time sculpting, rigging, and skinning the character, so I didn’t have time to get the gameplay to the point I wanted. The fight animations were the last thing I finished before the deadline, so the fights aren’t very polished. It’s more of a prototype than game, but I’m glad I got it finished on time.
Overall, I had a good time learning UE4, and altough I didn’t come as far as I’d hoped I would, I think I got the idea across, and I kind of like the mood and feel of the game.
CafeGarden
I’ve been thinking about participating in Ludum Dare for a while now, but the last few times I’ve been busy the weekends when the compo has taken place. Last weekend worked though, and that’s when Ludum Dare 34 was. The theme voting was tied between growing and two button controls, so you could pick one or use both. I chose growing and made a game about gardening. I entered the compo, so this was done from scratch in 48 hours using Unity.
Plot: After a cafe has lost all money and ran out of food, an employee takes it upon himself to save the cafe by growing fruit and food in the garden outside.
Walk around with wasd, press space to open the menu, hold down the mouse and drag to move the camera, and press f to harvest.
Game Engine
I’ve been working on my game engine for about three years now. I’ve mostly been planning on making iPhone games with it, but it runs on windows and mac too, where I also have a user friendly editor to make the scenes and levels.
I can register classes in the code to expose them as game objects that I can place in the scene. Then I can add parameters to be able to modify values on individual objects in the editor. The parameters can be anything from a number to a reference to another object in the scene. When I’ve placed some objects and models, I can start the game directly from the editor.
I use OpenGL for graphics, OpenAL for audio, Xinput for xbox controllers, and some file loading libraries. Other than that, I don’t use that many libraries. I try to make most things from the ground up, including the UI which is rendered as textured quads in OpenGL, and alot of the design is generated from code (buttons, list backgrounds, top bars). The interface is customizable and all windows can be docked.
To make the scenes look as good as possible while maintaining a good framerate, I made a lightmapper that calculates global illumination throughout the scene and bakes it to textures. For dynamic lighting I generate a cubemap of the scene, make one version for diffuse lighting, and one for reflection where I keep different bluriness in the mipmaps to be able to change the sharpness based on a roughnessmap. I also have a node based material system that generates shaders from your node connections.
I’ve started making a third person shooter with it. It’s running at 60 fps on an iPhone 6+. So far you can walk, run, shoot, jump and dodge. The enemies walks around and shoots at you when they see you. I think it’s turning out quite fun.