Gorgon Update #8

Gorgon

This is a small update that contains a few more fixes and additions.

As always, to get the latest version, go to the Github Releases page and download version 3.0.86.259 . As always, there is a commit log on the release stating what changes were made.

What I’ve been doing

Obviously, I’ve been attending to fixes and small enhancements in Gorgon. And when making changes/additions I like to ensure that things are working by dogfooding the libraries. So recently I created a testing framework using a home grown, mostly-SOLID compliant (‘m sure some purists out there would be calling for my blood if they saw it) ECS that is tailored to what I need. It also serves as a means of teaching myself how to implement an ECS. I used this article on GameDev.net by Hodgman (who is seriously brilliant in my opinion) as a loose guide for implementing the pattern. I much prefer his way of handling things as I find Unity’s approach to be an awful mess (as is anything using service locator patterns and Open/Close + Liskov violating code). Regardless, what I’ve built works really well (for me). Maybe in the future I’ll dump it up on Github for people to play around with.

Showing off

The purpose of that framework is that it allows me to find shortcomings, and/or bugs in the APIs. I then can correct these things by treating it like writing a game (note: I am NOT writing an actual game, so don’t ask) and seeing how it would work in a production environment. Of course, this doesn’t catch all design flaws (especially since it’s catered to how I work), but for the most part it’s pretty handy.

Anyway, in the interest of sci-ligion, here’s a couple of screen shots:

Looks similar to the space scene example I know. But the architecture is very different.

I’d like to point out that every sprite in that image is a flat image, no 3D models at all. I used a custom version of the deferred lighting effect (which I’ll probably port back in, but it’ll definitely be a breaking change) and some other customized functionality. I’m very pleased with the outcome.

And just to show that everything is indeed a 2D sprite, here’s an image without the lighting and HDR Bloom:

Just a slight frame rate increase here…

Nowhere near as pretty obviously. Also nowhere near as many draw calls (5x more in the upper image), so it runs super fast. Of course, I’m running a beastly GPU (GeForce 1080 GTX), so mileage will vary on other GPUs.

Obviously, this is a pretty decent amount of code. And nowhere near as easy to implement as it would be in Unity, Unreal or Godot. But then, Gorgon is meant for programmers, so it takes some elbow grease to get this stuff going. Regardless, it’s much less code than doing every little thing yourself.