Another 2 Weeks over. Time for another progress update.
After Recap:
Since the last post I was taking somewhat of a break since the high amount of progress drained me.
Also since I was finishing up Systems I was running into a direction of not knowing which project to takle next.
Though I had a project list the decision was not so easy. Since a couple System require other Systems.
Particles:
So after a bit of thinking around I decided to work on the Particle engine.
Particles are something not so easy to do since there is different variants.
3D, 2D, 2D(Billboard/Camera-Facing) are just a few (maybe all).
Deciding which type to use was not sure and I still have not fully decided yet.
It will be done on a case by case. Which will take a bit of time.
So after long time of constantly fighting with ideas and getting loads of requested input from different sources I managed to make a System that would have somewhat full control over how particles look.
It's a Dynamic Triangle Renderer that can render 2D/3D with custom transforms and a world synchronized update logic. That means these Particles can interact with the world safely.
Camera Changes:
That required a couple changes though. The Camera caused that Particles had some jittering. The reason was the current Camera when moving was moving not frequently enough.
The Camera Updates were because of performance issues in very old version only 20UPS. So movement was 3x slower then actual FPS (60) and having that caused issues. But moving everything on to 60FPS even so the core parts are designed of this 20UPS was a bit of a problem. So after a couple tests I just decided movement of the camera is at FPS Level while the Input is fixed to 20UPS (its stacking the camera inputs).
The Camera got a lot smother thanks to that and performance stayed ruffly the same. (Maybe 0.1ms of a change at worst case tests)
But all the issues with Particles I had were gone instantly.
So a noteworthy change.
First Outside Tests:
Since I started on this "Nameless" Game + Engine I had never let someone actually really test it. Yes "BeastLe9enD" has some access to the game because he helps me with internals, but other then that I was keeping this game in a fort knocks kind of place.
On a Harddrive on my PC with no GitRepository that would leak it in some way of form.
That will stay that way until I think its worth being released for the first (closed test) and then beta testing??? Not sure how I will do that yet. But I keep this private for as long until I am happy with the "Playable" result.
But to the actual topic. Since my PC is somewhat beefy (arguably) and my engine was only tested on that kind of PC performance tests were only so good. I have a backup PC that is a lot weaker and can barely run games at 60FPS. Some at high settings some at low ones.
But that was still to strong of a PC since I know laptops are pretty wide spread and not all of them have dedicated GPUs.
So a friend "MainFreak*" was helping me out by doing some tests. His Laptop is not the strongest but can at least run a couple games.
As normal the first thing that happened was, everything broken and after a short time there was a crash.
That was to be expected since was my first Engine and my OpenGL knowledge was pretty limited when I started.
So that mistakes had happened was pretty obvious. Where it striked gave me trouble.
A Buffer Underflow Crash, on a Buffer that was expected to be bigger then it actually was.
So it turns out OpenGL does not always keep buffers the same size as you request, that is dependent on the GL version but weird.
After some head scratching and reading/questioning my sources I found potential fixes.
Second my shaders were not working on Mains laptop which turns out, GL is not good at enforcing it's own set of rules. What made his side crash would work at my side what would crash at my side would work perfectly fine for him. (ForwardCompat is really buggy it seems or it is just me) So after turning ForwardCompat off everything was fixed. (Still using GL4.0)
So since the actual engine bugs were gone it was time for actual testing on how the Engine performed.
The Empty Terrain Map + a bit of Tree / Forester placement was running quite well.
Exact stats: Empty Terrain with a view distance of 80 Tiles (5 chunks) it was at 60FPS (13ms). Adding a couple extra things would still keep him at 60FPS staying at ruffly the same lag (do not have the ms values sadly).
Then accidentally pressing the H key which spawns at all possible positions a Tree, which tanked his FPS down to 20, which I thought was a issue of the batch size, so reducing was my first attempt of fixing it (from 40k trees in a batch renderer to 8k). But after further testing it turned out to be just the render distance was still to big. Though reducing the batch size would half the lag for him. (From 60ms to 30ms)
I doubt in a full game with a lot of things that I will be able to keep 60FPS since my game is GPU heavy that it is not possible by the amount of objects to render.
But my goal is by the end that I can at least at Integrated CPUs keep 30FPS or higher.
I am not sure that I will be able to do that because I have no idea how much more stuff is coming into the engine but if the existing amount of content is a base line its at least doable to some degree.
New Features Through Testing:
So since the performance Testing was somewhat over and most of the bugs were fixed, main came with his improvements list. He had a lot of complaints/ideas/thoughts on a lot of features that already existed.

One of it was that Height changing would make it hard to change only a single height piece, which I was aware of but never saw as an real issue since I was never doing precise work.

Rotating the camera would mess with you a bit, this is still not improved because coming up with a solution here is not as simple sadly but a valid issue.

Gui Components in a window would not focus the window itself. (Focus decides which tool you work with) So it would be less intuitive.

And last but not least (not fixed yet) the render order issue.
These were some of the issues he found that I think I would have not found easily on my own since my play style is different and would as a dev not account for that so easily.
Also I am documenting that for the simple reason because I value his testing work and showing issues is important.
Some of his ideas were for example a Overlay or pre-showing of the Terrain (Like the Preview at the top has),
Improving the Input in multiple occasions with good suggestions,
allowing to customize UI Windows in the color scheme,
and a couple other things.
Overall he grew my Todolist massively which I have and had to thank him on multiple occasions.
This was really valuable input to me.
Yeah and with that the week ended with a couple IRL things that came up.
Just a couple end notes:
Main requests no links to his Social media, which I respect.
FYI: Anyone I have direct contact with and helps me out gets asked if they want to be linked.
Exceptions is if I found help through external means to them. Stuff like Github or other things, then I will link to these people no matter what to provide sources.
Anyway thanks for Reading.
Speiger