The Underground King cover
The Underground King screenshot
Genre: Racing, Role-playing (RPG), Strategy, Adventure, Indie

The Underground King

A serious update

Hello peeps!

I know we said (multiple times) that we'd do regular updates, but, uh, the universe seems to have other plans.

Due to us being a Romanian company, and things not being well on the eastern side of Europe, we couldn't focus on progressing the code or art. I hope you understand and are aware of what's going on.

For the time being, there won't be any updates but we're still keeping the lights on for the project.
It WILL see the full light of day, someday. Hopefully in 2022.

If you are willing and able, consider supporting the Ukrainian people. Here's a website guide but there might be better channels depending on where you live:

https://www.forbes.com/advisor/personal-finance/donate-relief-to-ukraine/

Thank you.

Small progress, slow progress

Bruh, ECS is hard.

Not only because it's a work-in-progress of the developers of the engine we are using, but because it's not a very intuitive way to program.

As a small reminder, we have switched to ECS to have BIIIIIG FPS but it takes some getting used to.

Fortunately, we've been hinted at that a new version of ECS 0.5 will come sometime in Q1 of 2022, which means sometime between January and March.

For the moment, we managed to spawn physical cars (no models yet) and have a shader render the asphalt on top of the terrain, regardless of the terrain shape. We can control how many lanes there are, how wide they are and small details like colors.

Progress will be slow, at first, then when we can migrate the old code, we will have leaps and bounds in stuff to show. For now, most of it is code but here's a quick render:



Next update will be a video when we get the physics engine up and running <3

We're back!

The calm before the storm


December and some of January have been the first vacation we've had in like 5 years. It was strange to NOT do things, and we probably cheated by doing some work when boredom was at its highest. I promise to keep it a secret if you will ;)

The wind is picking up speed


Art-wise, we are doing a makeover on all the graphics. The reasons are:

  • There are some assets from week 1, which were made, integrated, and have since become stale.
  • The png files themselves are exported with old versions of Photoshop and our game engine prefers recent renders.
  • There are some assets that we aren't using anymore and need to be tracked down and removed.

To be clear, we're not chacking the art style, merely bringing it to 2022
Code-wise, there is much work to be done, and I will write it in a separate paragraph.

"Toto, I don't think we're in Kansas anymore."


Upgrading the framework to DOTS/ECS.


Until now, the entire game ran on internal modules. Small and numerous modules. This allowed programming to be easy to read, easy to write and if a bug happens, it won't collapse anybody but the system it's in. It also made fixing the bugs easy because they could only BE in a single place.

But now, most of the gameplay, especially the racing scene will be converted to ECS. Long story short, it's a way to organize data and game mechanics to the likings of modern computer hardware. With the current code, we can stay over 30fps but not guarantee 60fps. In a racing game, I would like to stay over 100fps if I could. We are talking about a few dozens of "things" interacting on the race track.

ECS technology allows hundreds of thousands of "things" to exist in the scene and the game engine wouldn't bat an eye, even if they do physics.

Unfortunately, I can't show anything here as it's just code. I will leave you with this video (time 24:52)
[previewyoutube="BNMrevfB6Q0;full"]

2D racing to 3D racing.


The original prototype called for simplicity and having a 2D sidescroller was easy to achieve.
Our mistake was relying on the prototype and building what NOW is painfully obvious to be a shoddy foundation :(
We are recreating the gameplay in a 3D world with all the trimmings:

  • Procedurally generated terrain, textures, and props (like trees, volcanos).
  • Biomes and props that you expect to be found there (forest, lava, arctic, etc.).
  • Fully physical world (like meteors in the background will hit trees and burn them).
  • Day/night lighting and weather (rain hitting the car)
  • Environmental dangers (lightning bolts, meteorite showers, volcanos, etc.)

Here's a taste:


There's no place like home


Next up, the immediate step is to have a rudimentary ECS implementation. I want the cars (cubes) to spawn, accelerate, switch lanes, and the basic starting-line and finish-line lifetime of a race.

I already made the terrain and some trees procedural during the vacation. It's possible to random different biomes but for now, the forest biome will suffice.

On a personal note, both of us have overcome the financial difficulties that the 5 years invested in and the recent world crisis inflicted and can be in a healthy & creative mental space. It's not a lie to say that people supporting, praising, and even harshly criticizing us have given us energy and we hope to rely on you in the months to come.

The next update will be either in 2 weeks or 4 weeks, depending on how lucky we are with the ECS upgrade. Till then, stay safe, wish us luck, and have fun!

The good, the bad, and the future!

Hello friend, it's been a while, hasn't it?

We're writing a short update to let you know what has been going on in our lives, the game, and what we plan to do in 2022 and beyond. It will start a tad bleak, but it gets better, we promise.

The bad.


Things haven't been the best for us, for years now. When we booted up the project, we intended to get funding via Kickstarter, to remain independent, and, you know, fed.

That didn't happen.

The backup plan was to find a publisher that believes in us, wants to grow and be successful together and reap the rewards together.

That didn't happen either, but we were smart enough to do research beforehand and avoid effectively selling the game, the IP, and becoming mere employees to our own dream.

More than 4 years of fulltime / overtime working on the game drained us mentally, emotionally, and financially. Effectively alone, we only had each other to rely on and as time went on, mutual support became hard to provide. We were both running on empty.

Eventually, the bank accounts went into the red and we could not continue at the desired pace. We decided to pause development and recharge our batteries. It took a year, but we are now more stable.

The good.


The Underground King isn't just a game we want to make / play / sell. It represents us and our chosen profession. One with programming, the other with art, we put pieces of ourselves into the game to create something that has the best of both, which becomes more than the sum of its parts.

Give up on development? That's saying to give up being developers, which is so ludicrous, it's funny.
Circumstances have been against us but it's nowhere near enough to break us, oh no.

When we launched the game in Early Access (perhaps, too early), we started gathering players. Some supportive, others, well, let's say critical. But it was AMAZING to connect to complete strangers through the medium of games! Something we experience, as players, with other video games. At no point does making games feel like a wrong choice, despite the hurdles we had to push through.

The future.


Inbetween day jobs, we have been working on T.U.K. The plan is to switch from 2D racing to a fully 3D environment. The procedural generation will also be elevated since we are dropping a lot of constraints that the 2D tools forced upon us. Ironically, going 3D is also more performant as the industry has invested a lot of technology in this regard.

It's too raw in order to show anything RIGHT NOW, but from January 2022 and beyond, we will return to regular updates. For the first three months or so, we will be limited to screenshots of in-game renders, but we want to have a beta branch on Steam asap, where people can beta test the new gameplay.

Since the game's art style is consistent throughout, we will apply the new 3D tech to the map as well, having a city you can navigate and explore.

The break in development has done us good from a game design perspective as well. We realized issues in design we could not see before and alongside the visual refactoring, we will fix them with very little effort. It's quite funny to experience the "can't see the forest for the trees" happening to you.

That's about it! Not quite a SHORT update but we can hardly contain our excitement.

We leave you with an old render of the 3D racing environment. Today's version is way juicier, but you will have to be patient till we are ready ;)

Best wishes,
Alex & Alex

Bee-bop; Update time!

Hey, Alex here!

My wrist hasn't been getting better and I was gently but sternly told by my beloved to take it easy and lay off the keyboard for some time.

Our sweet artist has been taking some R&R as well and both our birthdays are coming up so taking a bit of time off for recuperation is welcomed.

I will make a post when we resume the high-level development we've been doing these 3 years and I will have some sweet stuff to show you all.

Cheers,
Alex

New feature, small update!

Hi all! Alex (Dev) here! I've been having wrist pain this week, probably from keyboarding 14 hours a day for 3 and half strait years, mayhaps.

I took a break from terrain generation and work on a secondary feature we just hinted here and there. At the moment I don't have anything visual to show, but I can show you a scene from a game called Path of Exile which uses this technique. I will explain how it works under the video.

[previewyoutube="cfk3-0Ds15c;full"]

The easiest way to have an explosion crater, a bloodstain, acid splash, puddle of water, etc. is to take a predefined shape and spawn it in a specific place. The advantage is that it is cheap and fast.

The problem is that it requires a lot of work to control the shape and have multiple overlapping blobs looks funky since they don't merge, they overlap. Like adding two pieces of paper on top of each other, they don't make a bigger single paper. It's also costly for having so many entities for a simple fire visual. Meteor Shower can generate...hundreds.

The technique shown requires the use of a shader, in which the blobs are made out of white shapes on a black background. All the blobs are merged together to get a final, bigger, combined blob of white on black colors. This will be used as a mask.

The shader I mentioned can be anything. I gave an example of blood, acid, water, fire, etc. and it can be anything. It WILL be a lot of things for The Underground King. We will use it extensively when Meteor Shower leaves craters and patches of fire on the ground, which can combine together.

Any of the players or enemies can leave fire trails behind them when using stuff like Nitro which can also combine with other fire sources.

Another super advantage of using this technique is that it is very efficient memory-wise as it's technically only 1 entity at any time. Combining the masks together is also lightweight. Alex (artist) will be able to make individual effects for each type of effect and then we sandwich all of them on top of the terrain.

All these layers will morph on the terrain shape so it will look natural. We can also use these effects for snow, flowers, mud, etc!

It's a super exciting feature and I took a small break to take a crack at it while my wrist rests.
Hope I get better so I can show you some stuff next week.

Lots of love,
Alex & Alex

3D Terrain Generator Update

It's been a hard couple of weeks, let me tell ya. Working with math is my least favorite thing to do when programming video games, but it has to be done.

Below is a gif showing some of the settings that generate the terrain. No need to explain what they are, I am showing how tweaking them influences, resolution, smoothness, etc.


View Full Size

Here's another that shows the controls over leveling. If this curve would be straight from 0,0 to 1,1 then it would be pure terrain generation. Our wonderful artist can shape it to look like a crosssection of a terrain that heavily influences the final shape. The randomness of natural terrain still comes through, but the general flow is dictated by this little curve.


View Full Size

Next on the menu, I will have to find (or make) a road generator. We aim to have a wavy road just like it's now in 2D so it's gotta look like the road was built ON the ground, not that the ground was morphed to fit the road. Code wise it totally morphs the ground to fit the road :D

That's it for this week. From now on we will post updates Saturday instead of Friday so people still at work don't miss these.

Cheers! :D
The team

Still working at it!

Lean update this week, Alex has been doing coding and it's not complete enough to show anything new but progress has been going well.

Definitely showing something yummy next Friday :D Cheers!

3D Conversion Update

Hey all! We've been working hard on the 3D conversion and while we're not yet ready to let you play with the new toys, we can give you a few peeks behind the developer curtain :D

Until now



  • Levels were generated from a single source of information we called "Countryside". This allowed us to have a handmade feel despite the chaotic nature of procedural generation.
  • We can control the day/night progress, which at Night, tints the graphics towards a cool/dark version of the vibrant green you normally see during the Day.
  • The backdrop elements (buildings, bushes, trees, etc.) are chosen from a list and we show 1-3 types at random densities.
  • Obstacles are generated depending on length and difficulty.
  • There are many other small systems like this that all contribute to unique experiences.


The Problem



  • The art our amazing Alex Nae does is done in 2D space, including any organic parts like hills, mountains, bodies of water, etc.
  • This was fine and well in the beginning when we have to build the game from scratch, but now we have that quantity and need QUALITY.
  • Tinting art that is meant for Daylight does not translate well to Nighttime in all cases. Specific fixes for specific levels take a lot of work and universal solutions look mediocre in all cases.


The Solution



  • By converting to 3D, we are letting the engine handle lighting and tinting using similar-to-real world physics.
  • By letting the terrain generator handle the shape of the level, we can let Alex focus on texture and aesthetics rather than put the time in rendering the terrain.
  • As I hinted in the last update, by changing textures, colors, gradients, and the light sources, we can change the feel of a level while both letting the engine handle the brunt work AND letting Alex express his creative intentions.
  • Not everything is generated made by the code. We still want the hand-made feel, so elements like the road's shape segments, landmarks in the terrain, and the terrain flavor itself remain at our manual control. Below is a look at the terrain generator and a short explanation of what things mean.




This describes Lava Land, a biome that is applicable for Racing Pins that satisfy a few of the conditions below:

Terrain


Tells the level loader if it can use this biome if the length is between 0-100% and difficulty is between 0-100% In this specific case, Lava Land can be loaded in any length and difficulty. Most biomes will be so.

Layers


Tells the biome what kind of textures are associated with this biome. As you can imagine, we have Ground, Lava, and Ash texture for this.

Terrain


Multipliers control how high hills and mountains are, as well as how deep water goes (shallow for puddles, very deep for an ocean view).

Day / Night


In the city, you can start races during the Day or Night. The equivalent here is Noon and Midnight. Twilight allows both. We named them so because the Sun's position and the shadows generated are best in these times of the day. Eclipses are for certain World Laws.

Water


This is just a layer of "liquid" that CAN exist in a level. If we tint it with orange and red colors, it looks like lava. Tint it by black and grey, and you get tar pits. This solution is super performant and optional.

Aurora Borealis & Other things


Also called the Northern Lights, these are rare but beautiful, nonetheless. They aren't implemented yet but it's delicious eyecandy. There are other options planned that will contribute to the richness of level generation, and next update, we will show you some more!

That's it for now, have a good weekend,
Alex & Alex!

Update v0.1.5 is here!

UI


Added a little more information in the racing results.
Replacing various graphic assets with better, cleaner versions.
Attempted to make the game run better on 4K monitors. We need screenshots and/or exact resolutions to make it even better, so if you are using 4k resolutions, please post some screenshots on the forums.

Gameplay


Added achievements! Brag to your friends and enemies of your accomplishments!
Reduced trauma rates down from 100% guarantee. Exploding your vehicle has a chance of adding a trauma for each item, driver, vehicle that participated.
Recalculated the number of nights in a week. The initial math was designed for 100-day loop but for now, it's only 30.

Upcomming


We have good progress on the 2d -> 3d stuff:

So, we're going for a realistic approach to level generation, mostly with flat planes / small hills so that the camera isn't blocked by mountains, and we can place buildings near the road if the code decides so. We also want to have closed tracks for levels with multiple laps on the same track. Here's an example:



The first step is to generate the world, and during the past week, we had a good first start! We can control the number of mountains, the bumpiness of hills, and the presence of water/beaches.



We can even control the water levels to simulate a race in a swamp or lagune!



By switching the textures a bit, we can simulate different biomes!



Imagine giving the water a red tint and instead of snow or grass, we use ash. Boom! Volcano level!
Use green water and throw in some bones? Boom! Acid land!
Use black water and throw in the same bones but scaled to x10 size? Boom! Dinosaur tar pits!

For the next couple of updates, we will be sharing our progress on the 3D progress, and as soon as we can, we will put it in the game as an optional way to complete a level. The game mechanics will be the same(ish) and the rewards too.

Thank you for your continued support,
Alex & Alex