I haven’t posted in a while, but I’ve been busy figuring out the whole tech art process for The Hologram. I’ve came across many techniques for many different things and I ended up testing a lot of stuff and tried to do it all at the same time, so there haven’t been much to show, but at this point I’m pretty happy with the current workflow.
In modelling: At first a modelling based on subdivisions seemed like a great idea, but getting all the supporting geometry and quads in the right places is a great amount of work, it would be feasible if not for the huge amount of geometry in the end too. I ended up with 20k polygons for a single ship with very little detail and I think that’s too much for this project. Then I tried using a technique that I saw in a youtube video: model low poly, then copy the mesh and bevel it, then transfer the normal data from the first to the second. Ended up with a decent amount of polys, and very beautiful bevels. Would have used it in my current ship if I didn’t try this so late in the process. This should be done before marking the edges for unwrapping, but even then, UV mapping this with all the bevels is a nightmare, especially in Blender which has indecent UV mapping tools. I’m not using this in the current ship I’m modelling, but will definitely use it on another, in a more discreet way. So yeah, which leaves me with a process I call: fuck it and let’s go with bare flat geometry.
In texturing: considering that I want the player to go outside ships, that presents an immediate problem of scale. Even with a mere 300 or 400 meter ship, a single texture of 4092px is not enough to look sharp when the camera is very close to the surface of the ship, but I only noticed how bad it was after I made my first texture of a model of that size. This has several solutions, and I think I tested them all, but the most fancy is to have a library of detailed normal maps which can be rendered as decals in Unreal. This technique is explained in this video and is used in Star Citizen and Fractured Space. So I made my own normal library in NDO, a single 4092px texture that will be used for the entire game. And also, a smaller texture for color and emissive decals.
I doubt this is very performant, after all I’m stucking hundreds of decals with different materials in there, but we’ll see how it goes. If I did it again from scratch I would have created a fully shaded texture library with color+rough+emissive+normal instead of having a material for each, but I don’t know if that would be better or not.
In the end I achieved most of my objectives, which was to learn more technical art and end up with a workflow that doesn’t require high poly meshes and full texture normal maps. I just wish UV Mapping was simpler (and Blender makes this task even worse), and considering I’ll be using tiled normal maps in some areas, the necessary UV Mapping discipline is even higher (as you can see from the screenshot above). There’s a tradeoff between number of islands and right angles in UV space. With more islands you lose performance, but with less islands you end up with less right angles which might mess the alignment of tiled textures and you may get jagged edges.
Also revamped the UI, but that is a story for another day.
After completing the racing course (you can see a video of it here https://www.youtube.com/watch?v=e_vIEi0v7h0 ) I decided to take my Patreon account down. In spite of having steady supporters from beginning to end, it wasn’t enough to stop me from worrying about bills and so I had to keep paying attention to commissions too. In effect, Patreon was straining me to complete some kind of content every month in addition to commissions and that workload wasn’t realistic nor it provided me with a large enough engaging audience, nor I could keep them interested for long. So, now I can work on the core game without worrying about dealing finished content to supporters.
About development proper: the good news is that now I have a pretty tidy spaceship class with all the core mechanics completely independent from the Controller class. This means that the Player should be able to pilot and fight in any spaceship in a level. Then I had to revamp other systems like the targeting system and docking. A complete revamp of the turret class was also made to be more clean, faster and to ensure that their convergence accounts for target distance and the currently selected camera. The navigation seen in the racing video is now called Drone mode (forward orientation controlled by mouse) it makes it easier to navigate in smaller ships without turrets.
With all that said, I wonder if in a real mission, the ship won’t be too hard to pilot, which probably begs for a tight control of a ship’s maximum speed and UI feedback of movement. So now I’ll be moving onto basic AI functions: seeking/fleeing, targeting and shooting, because shooting against drooling AI isn’t fun =)