Updates on Personal Projects

It’s been a little while since I’ve posted anything new here so I wanted to give an update on what I’ve been up to. There’s not much I can talk about work wise, the work I did on Age of Empires IV was the last big project I worked on so it’s likely to be a while before I can talk about anything new there. However as usual I’ve got a few personal projects on going.

Game Maker

I’m still working on my Game Maker game, progress is slow but I’ve been plodding along with getting the core tech where I want it to be. As I worked more and more on the rendering I’ve gone from mostly using Game Maker’s sprite rendering to now having completely custom rendering with my own shaders, camera solution, and building vertex buffers. The more I dug into this part of Game Make the more I realised I needed to go the custom route to be able to get things like the cameras working the way I wanted them to. It’s meant getting that part of the game setup has taken a lot longer than it would have otherwise but the silver lining is that I have much more control over how things are rendered, which includes being able to render 3D objects and have 2D sprites drawn in 3D space.

The big challenge has been getting all that custom rendering code running at a reasonable speed. Draw calls in game maker are fairly slow so if you have a lot of individual objects being rendered per frame those draw calls quickly eat up all your frame time. To get around that I’ve implemented a system for batching multiple objects into a single draw call which speeds things up by a good margin. You can batch all objects together that use the same texture even if the vertex data is very different, so long as the vertex format is the same. So each frame I build new vertex buffers that batches all objects or meshes that share the same texture, to then be able to position those objects I’m passing an array of object matrices to the shader rather than just one as you normally would. While this massively reduces the number of draw calls it does create slow downs in other places because you’re pushing a lot of vertex data around but this can be alleviated by only updating what has changed and keeping the rest of the data across frames. I’ve also made some good performance gains by optimising some of the most commonly used maths functions like matrix multiply just by unrolling for loops.

Unfortunately there’s still not much to show off other than the same grid and GUI elements that where there in the last update. Hopefully once I’m done with the rendering code and optimising things a little I’ll be able to start working on something more visually interesting for the next update.

3D Practice

I’m still working away on the 3D model I’ve been making inspired by Arcane the League of Legends TV show. I’ve recently finished up the UV unwrapping, which I ended up doing in Blender rather than Maya. The method I used in Blender actually turned out to be easier which I was surprised about, it’s been a long time since I’ve used Blender so I still think of it as being the clunky piece of software with a confusing UI but that obviously isn’t the case anymore.

Currently I’m at the texturing stage, definitely one of the more fun stages. I’ve decided to try doing it all handpainted with a painterly but detailed style. The temptation with this is to go cartoony or stick closely to the style used in Arcane but I wanted to use this as an opportunity to find a style of my own. Ultimately I’m adapting the way I paint in Photoshop etc for 2D images to Substance Painter for 3D. So far I’ve blocked out the major colours and made a start on painting in the details on the barrel. I’m happy with the way it’s looking but I think the Substance Painter lighting setup seems to wash out some of the details and kills some of the hue variation. I do have a plan to use the paint layer to generate an additional height map to help make the details pop more with the lighting. Of course when I’m finished the painting stage I’ll try some custom lighting setups to get some good renders of the finished model and I’m sure that’ll help a lot with the look. A stylised model will likely look better with less realistic lighting, maybe something a bit more similar to cell shading and one that doesn’t alter the hues in the light areas too much.

Digital Painting

Lastly I’ve also started on a new landscape painting, giving Affinity Photo a try as an alternative to Photoshop. Going for a desert scene, with large spires and lots of dunes. I’m still not 100% sure on the rest of the content or subject. I’m thinking of going for an oasis, where a nomadic people are gathering and travel to and from. Narrative wise the idea being that this is a common meeting or resting point for people journeying through the desert due to the access to water and plant life etc. I’m also thinking of having some kids playing with a sci-fi(-ish) jetpack that they’ve made themselves, hinting that this is a futuristic setting rather than an ancient one. (And yes I have most likely been subconsciously inspired by the recent Dune films for this painting).

As you can see from the above work-in-progress image I’m first focusing on blocking in the main spires and areas of stone. I always enjoying painting rocky surfaces like cliffs because you can be so loose with it. I tend to just scribble in patches of light and dark and then gradually tighten it up from there letting the random patches of colour dictate the shapes of the rocks. I really try to get a good range of hues in at this point focusing more on the colour choices and overall shapes and composition. With desert style rocks I like to go for vibrant reds and oranges as the base then use yellows for the highlights and purples and blues for the shadows. You can also see I’ve sketched in where I want some of the key focal points to be, I tend to feel like composition is one of my biggest weaknesses so it’s something I’m trying to experiment with more and more. In this case I’m using the classic golden ratio also known as the Fibonacci sequence / spiral as a starting point and building variation and complexity from there, while also relying on the spires to create a strong sense of depth.


Leave a comment