A blog about my rantings, including Games, Game Development, Gaming, Consoles, PC Gaming, Role Playing Games, People, Gaming tips & cheats, Game Programming and a plethora of other stuff.
Some progress in my home engine has been had, first of all multiple geometry rendering through my fixing up and better understanding both render passes and descriptor sets.
All of this is nuts and bolts, what I want to get to; just like the DirectX 11 rendered version; is to play with 3D geometry and placing objects into a scene.
To this end my hand written geometry is no longer hacking it, and you will have seen from my raw game engine posts I did use Milkshape 3D.
Milkshape, lovely as it is to my eye, is not a modern well featured 3D suite and sadly does not let me easily plug into the geometry live within it (one can only export and perform post-processing).
To that end I delved into how one might write a Blender add-on to export your own format...
Long Story short, here's my text intermediate output from just such a plug-in written in python.
The plug-in is far from robust, I followed the lines of another open source plug in and applied my own, copying it into blender with a batch file and clearing the pycache each time I perform an edit.
But it is doing the job I initially want, and I get my own format of file output.
And indeed I can load these into my engine...
I can work on the axis for the data output and start to ensure my camera system from the main client works as expected in vulkan; since the maths here is exactly the same code I don't anticipate any issues.
This should free my mind up to think about a lighting system and to finally get back to where I was with the coloured cubes in the DirectX 11 version and ultimately onto a full scene.
I have four constant things in the world, a ground plane, a skybox and a center marker flag (showing X, Y and Z axis respectively) with a quartet of boxes in the center of the scene. This is the test scene for the "world" loaded into the scene graph. And it's where I want this to be this time next week perhaps.
Since progress has been much quicker now I'm past the deep dive into learning the initial set up of vulkan.
I can also appreciate much more why folks just pick up an off the shelf engine, I myself make little prototypes in Unreal Engine 4. But this kind of denudes me of the walk through these technologies.
For the most part creating an engine like mine, which is planned to have solid shaded low poly vehicular combat, well it's a solved problem, so I'm enjoying following in a lot of well trod foot steps to better my understanding of the processing, memory, mathematics and challenges in writing a game engine.
It has been a whilst since I had a personal improvement project grace these pages, so here's one I started over the weekend.... A graphics engine.
Sure this is something I play about with all day in the office, we're writing games! That's literally my job, but I've been a system engineer for such a very long time, and I've seen all these sparkly things coming from folks working on game play and wanted some sparklies of my own.
I therefore began two projects, both are graphics engines, but they're very different from one another... one is in Vulkan, which is not what we're talking about here, no we're talking about the other one... And this is a graphics engine I've written myself.
It's gone through three phases since Saturday, Sunday and then just tonight. The first phase was setting up the basic rendering, getting a triangle on the screen and making it flat (orthographic) projection.
The engine is written in C++, uses SDL2 for the window and renderer, but the engine itself does all the geometry transforms through linear matrix mathematics that I hand crafted, and it reaches into the third dimension in orthographic mode.
The shapes can be rotated, scaled, translated, the usual. But before I drove myself mad with writing shapes by hand on graph paper, I wrote a very simple importer for the very simple Milkshape 3D model editor, and started with a sphere:
Milkshape has appeared on these pages before and is really the only modelling package I'm familiar with, I really do need to learn Blender don't I?
So with models loading I got a little adventurous:
This mesh really stresses my single core linear mathematics, so I started to switch it out in favour of GLM tonight:
// Model
glm::mat4 model(1.0f);
model = glm::translate(model, trans);
model = glm::rotate(model, glm::radians(angleZ), { 0, 0, 1 });
model = glm::rotate(model, glm::radians(angleY), { 0, 1, 0 });
model = glm::rotate(model, glm::radians(angleX), { 1, 0, 0 });
model = glm::scale(model, glm::vec3(scale.x, scale.y, scale.z));
So, that's been my three days.. I'm interested where and what I will do with this engine.
However, Vulkan, that's the other thing I'm learning.