BGMC 21 | The forbidden relic

I ended up running out of time, so things like proper sounds and menu’s are not quite present yet.

it doesn’t have a menu yet or even loading screens for that matter and still has animation bugs and other glitches I haven’t got around to fixing yet (or figuring out how to fix).
On the plus side I managed to create my first procedurally generated game, you can check the console to see it working.
Additionally the compressed filesize is around 6MB which is cool.

survive as long as possible!
My highest is 900m

Hopefully it gives you a laugh or two :D.


Preview image:



Welcome to the procedural world. Enjoy the amazing possibilities.
Wow the main character has a weird smile at the beginning.

Sometimes it seems entire rows are actually impassable. May just be my inability to time jumps though.

Thanks! Yeah I’m still trying to get my head around procedural, even this demo only has basic 3 row generation but in the future I might look more at dungeons and less basic things.
This will be my terrible attempt at trying to rig efficiently with a low poly model, it was amusing to animate however.

Impassable means, beetleman, rockfall, wall hands, you should be able to either jump or duck to maneuver around other objects.
Also hearts and coins will only spawn on normal rails (7/20 chance for a coin, 1/20 chance for a heart).

Hi, I think this game (and some of your other projects) could really improve with more lighting. You did a very good job on modelling, animating and gamelogic, but it’s not easy to look at all those things, especially in the fps game and the forbidden relic. I find myself looking away from the screen to relax my eyes several times when looking at those games.

I adjusted the brightness of your screenshot and this is the result:

In your game, most of the colors have values lower than 1/3 of white. You probably tried to keep the atmosphere, but if you keep the background and the borders dark, you can light up the important parts of the scene without breaking up the atmosphere. I applied a simple curve to stretch the values all over the full range from black to white, and I think it came out pretty nice.

To implement this in your game, you could add some lamps or just do the same adjustments in color management, but make sure to leave the UI untouched.

It might be too late for the competition, but I hope it helps you with further projects.
Have a nice day.


JAFER! but anyway ti looks great and seems like a lot of fun and with some polish it would be better than most of the other endless runners i know. are you sure, this is procedural? concerning to hearts and coins, it seems more like randomly generated.

WOW, this game is so cool!!
my only suggestion is that maybe you could slowly get faster.
my distance is 11847m:ba:

Great game!
Reminds me of playing Skate or Die when I was a kid.

I didn’t find any bugs, but I did find the Easter egg. :slight_smile:

Thanks for the feedback! I was originally planning on having 2 lamps on either side at the top of the tunnel to may be make it a bit brighter, but as I mentioned, i sort of ran out of time.

Perhaps making the spot lamp less bright would have made this better to play, but again I also wanted to keep the atmosphere as you mentioned.

The best method for dealing with this is probably using some 2D filters, however I’m not sure how much this would deter from the original atmosphere. Lighting has never really been a strong field for me, but I’ll look more into it in the future!

Thanks :smiley: yes some more polish could make the game a bit more user friendly, some animations and stuff are still glitching to the point where the character doesn’t move at all.
As far as I know, Procedural generation is just random generation that has to follow a set of rules/an algorithm. This game is a super, super basic, and the code is basically:

randomly select rail, obstacle or impassible for rail 1, same for rail 2
On rail 3 check previous generation, and if both are impassible, spawn a rail or obstacle
This is stored as a list and then fed to the spawners which execute the items on the list like queue

Fun Fact: If you open up the console you should be able to see the generated list being printed (’#’ = rail, ‘-’ obstacle, ‘x’ impassible).

Thanks! nicely done :), I don’t think I ever got past 1000!
Yes originally I had planned to speed it up, however just using 1 property to determine the speed didn’t work, as slower speeds would overlap the rails and faster speeds would cause gaps.
I did have 3 speeds setup, however I didn’t have enough time to implement. The game, by default is running at the top speed.

Awesome :D, glad you enjoyed it!

The only big issue I had was the character freezing up animations when executing multiple of them at once which wasn’t great. Some more sound added could have also been nice, but I guess I have to learn the lesson of deadlines and time-scheduling a bit better.

As far as I know, Procedural generation is just random generation that has to follow a set of rules/an algorithm. This game is a super, super basic, and the code is basically:

i thought that procedural means, you have got a set of data that in combination with algorithms is used to choose the objects in a level or world instead of being random. the game no mans skies is an example for this kind of procedural generation. whenever you fly to a planet it will look like it has looked like the day before. but i have checked wickipedia and i think that procedural can be a combination of both, given and random data.

There is deterministic generation and random generation. Both are procedural.

Deterministic is when you get the same results for the same input. For example, in no-mans-sky, I imagine the input is galactic coordinates, and the generated planet will always be the same.

Random is when you pick a random number and use that, so placing enemies in a game like this will, 99% of the time, use a form of random generation, maybe with rules and restrictions to prevent weird things from happening.

Interestingly, in CaveX16, I use a combination. I use a seed and non-random “pseudorandom” number generator. A pseudorandom number generator can be seeded so that it always follows the same sequence of ‘random’ numbers. For example, if I have a random number generator that picks an int between 0 and 9, I may decide to use the digits of pi. They’re pretty random. And the seed is the starting offset.
So in CaveX16, I can chose to set the seed for a map, and then compare, exactly (because it will generate the exact same map), the changes in the algorithmic generation. (ie does changing the threshold from 0.2 to 0.8 actually make the difference I thought it did).
You don’t notice this when playing it though, because I have it, by default use … a pseudorandom number as the seed.
If I wanted to make maps for CaveX16 really massive, I’d only generate the area around the player, and seed a perlin noise for the terrain generation. The seed would be the world position, and voila, you have an infinite, non-repeating terrain.

Congratulation, that you created a game during a one week challenge, which is really fun to play. That is something very rare. Also it seems very complete with a very nice intro and game over sequence. Together with lot of different obstacles and some fx it is a well rounded game.