WIP: Rogue Colony UPBGE Action-RPG Hobby Project

Rogue Colony is an old-school single-player action-rpg in a classical (European) medieval fantasy world inspired by games like the Gothic or Witcher series.

It is a purely recreational project that I use for improving my blender skills and fulfilling long term dream of releasing a fully featured 3d game. I hope to release for free with sources under GPLv2+ if I should ever finish it.

Lore and Setting

Discover a world filled with gigantic monsters. The United Federation of Mal, lead by their immortal leader, has managed to unite all of humanity after many years of war. Hated as a tyrants by those seeking to restore their former countries while loved by others for giving the common man access to dust. A rare substance that allows humans to perform feats of magic. But the process of mining dust is tricky and dangerous. To supply the population giant mining colonies have been set up. Convicts and trouble-maker are sent there by the thousands.

Recently one of the northern colonies in the Kingdom of Kamaal has stopped their supply of dust. No communication could be established. You are tasked to investigate the issue and restore order. Will you fulfill your duty to the federation or will you side with the convicts in their daring plans?

Ingame Screenshot:

Note that I am using many free third party assets like the player character to mock things up and cause my modeling skill is currently barely good enough for donuts.

Because a fully featured RPG might be a bit too much in scope for both me but probably also for the game engine in its current state, I am currently working on “Chapter 0” which is a prologue on how the character got access to the mines. It is supposed to be a playable tech demo of roughly 1h playtime to serve as a basic foundation to see what is possible. Basically building the minimum viable RPG.

What currently works:

Basic third person controller with camera control, walking animation and so on

Next:

Implement the “hoarding simulator” i.e Inventory system.

Figure out how to improve performance. UPBGE has proved to be quite performant but for some reason “GPU latency” is going through the roof, taking up 50% of the time while capping me at like 20 fps which is not exactly great.

Edit: Performance issues fixed now, back on track

Looking forward to hear your ideas, thoughts and feedback.

1 Like

I believe GPU latency measures vsync. i.e. how long your GPU is waiting to display the rendered image onto the screen. If you turn off vsync (in the render panel) you will see a performance imporvement, but this may introduce screen tearing.

Are you using UPBGE 0.2 or 0.3? there is a quirk with normal maps for 0.3 that was tanking my FPS as well.

Good luck with your game :slight_smile:

Thanks. :slight_smile:

Oh yes, I am using 0.3 with Eevee. What did you do to fix the normal maps thing?

As for vsync, yeah that is a good point. Does not seem to make a difference currently whether it is on or off right now, so probably not the main culprit. But good to keep it off for now, I guess.

There is an addon you can enable called “Normal Map nodes to Custom”. It adds a button to the shader node editor that replaces the default normal map node with a version that runs on the GPU.
It’s much faster, but doesn’t have quite as accurate a result. I’ve seen significant speedups on rigged meshes, although I’ve yet to test it’s performance on static geometry.

image

1 Like

Many thanks, this is super handy and did indeed improve performance.

This also helped me finally find the main issue as I was getting around checking shaders: In my terrain shader is did randomly rotate my grass tiles so they look less checkerboard-like. Because the terrain is quite large, this has significantly reduced my performance. Without it, I am hitting 60+ fps in some parts of the map again. It still seems to chocke sometimes but I am quite happy for now. Plus the grass looks fine anyway, because I don’t have many flat surfaces.

The fix might seem obvious in hindsight but for some reason my mental model was that blender would “bake” the shader on start up, missing that it could be dynamically changed at runtime, so I did not worry about it.

Now I can finally work on the Inventory. To be honest I am dreading the UI stuff a bit because that does not seem to be a strong point of the engine at the moment but I am sure it will work out.

I ran into the same problem with high GPU latency. It seems like a bug with the profiler, rather than actual high vsync latency.
So unfortunately no quick performance win by reducing GPU latency. Once the bug is fixed usage will show up in rasteriser like it’s supposed to.
Here’s the issue:

1 Like

I finished a first prototype of the inventory system.

Here is a small sneak peak on the mushroom gathering simulator.

Sadly screen tearing is kind of an issue at the moment even though general performance is mostly fine. Also camera clipping is not easy to avoid on uneven terrain, will have to revisit later. (I am using the third person camera template that ships with UPBGE which works fine on even terrain.)

As you can see, the player can now pick up items and store them. They even stack. Finally the player can interact with the world in some way. It is starting to feel like a actual game!

The UI stuff wasn’t hard at all, just not many tutorials at the moment as UPBGE 0.3 changed stuff around. Make a overlay collection, add a camera to it, add it to your scene and off you go.

Stuff like item names showing above items when player is near took me quite some time to get right though.

Next:

  • Display player health
  • Implement using items
  • Implement equipping and using one-handed weapons
  • Add some critter for the the player to fight
  • Quest and dialog system

So yes, I will not get bored anytime soon. :slight_smile:

Have you ever fought a rat with you bare hands?

Got lot’s of stuff done:

  • Health bar and death
  • Enemy AI that will chase and attack you if you enter its territory
  • Combat System basics
  • Items can be used and can effect the game

My whole game still uses less than 500 lines of Python. The language is insanely expressive.

Next:

  • Add one handed weapons
  • Quest and dialog system
  • Start Menu

After that I will finally be able to work on the actual content.