Binary Tree Jump is a simple game about running, jumping and dodging obstacles but what is fun about it is where you do it. The game puts you on a tree that is falling down and your only objective is to keep jumping on so that you don’t die. As you survive it won’t take long until you realize that the tree is infinite and completely random.
Yes, for the game I used a weird but surprisingly engaging approach to procedural generation that uses the known Binary Tree structure and I ended up liking it.
The tree keeps growing, generating random paths for you to follow in your way up. Some may be simple and some may be extreme and require a lot of precision and timing for you to make that jump.
Controls:
Tilt your device to the left to move to the left. Tilt it to the right to move to the right.
Tap anywhere on the screen to jump.
Double tap quickly to double jump.
The game is now on version 1.1 and the novelty are powerups.
There are three powerups for now. The purple cross will absorb one obstacle hit so that you don’t die from it. The blue cross will save you when you fall down by letting you fly up a bit. The yellow wings will allow you to fly up for a good amount of time.
Nice
Imho fixes:
-need render lines to next ground when they off screen - because now they start render when pass half screen and instantly pop up from nowhere.
-maybe add some power ups to pick them up - stars, funny mosters etc
don’t need to draw them fully from scratch - use google find funny make someting same add colors)
[spoiler] take parts google images and make one own ^^,
its sound weird but come on: you do it for fun, not for making billions dollars on someone art
or harm them
(even with intellectual property law you always have option to find conclusion with they owner)
[/spoiler]
As Icecore said, your monsters (I assume the red dots are monsters) as well as your character (that green square) need a little more depth to them. You don’t need to do anything complicated though; pixel art does the job fine in most games
Same goes for your tree parts: to me, their texture currently makes me think about those old, 3D games with very squary polygonial meshes. The old part is fine, but the fact your game is 2D makes the 3D feel awkward. Perhaps keep the same but show a little more pixels? That would look fine imo.
Oh, and try generating the tree off-screen, instead of in the middle of the screen.
And maybe add a png texture with leaves at the top of it? I don’t have any example right now but I could make one quickly if you’d like me to, to show you.
Hey, thank you guys for your comments.
I wish I could have done this before but I was busy working on my other projects so it was until now that I got a chance to look at Binary Tree Jump.
I worked some hours and this is what I got.
I changed the textures for the obstacles (the red circles) for something that looks better and is more detailed. I also think it fits the theme more.
I also included powerups. For the textures I did draw them myself, just some simple stuff. This powerups include flying, saving you from a collision with an obstacle and saving you from falling down.
When you pick up one you will get highlighted with the color of the powerup.
As I tested the game I found now that possible playtimes were now much longer because of the powerups.
Before this update my best score was 19k. Now I was able to get a score of 45k. I think these kind of games become more entertaining the more you are able to survive so this was a good addition.
As for the tree generation I didn’t change anything for now. The way the game works is that it keeps generating the tree when it detects that you are on top of one of the highest platforms. This is because my game only keeps direct references to the last platforms it generated and to render and check collisions on the ones below it uses a custom version of the binary tree search algorithms that I made for the game.
To change this and make it so the tree can keep generating off screen would require that I change the entire algorithm and that algorithm is pretty much the entire core of the game. A lot of lines of code and a lot of complex lines of code at that. If I ever feel like the way the tree generates is really hurting the experience to a dangerous degree then I will definitely consider doing this but for now I think it will be fine.
Actually, when I tried your game, I was somewhat irritated by that fact.
You mentioned the game would generate new platforms when you are on one of the top branches… I obviously don’t know how your algorithm works, but I believe that means you would only have to change that small fact? Like instead of generating when in the top-5 branches, generate when in the top-20 or so? But that would actually completely depend on your code, so maybe it wouldn’t be that easy… :persecutioncomplex:
It’s fun and all but I personally found it too easy for too long. How does the difficulty rise in-game because I could play for long before it was starting to get difficult.
But still looks promising and I’m keen to see where this project goes. Keep it up man!
Let me begin this post by saying thanks for the feedback.
It took me like two hours but I did it. Now platforms and lines won’t just pop out of nowhere. I must admit that when I was testing my own game I didn’t even see this as an issue. I thought it was just part of the game and I wasn’t too bothered about it but after all, I’m the developer not the player.
I was half right when I said that I would have to change the entire algorithms. I didn’t change it entirely but I completely re-made the function that checks when to keep generating the tree and how to generate it.
Originally the reason that the game waited for the player to step on one of the highest platforms was because at that point the game would take that platform as the new nucleus and keep generating from there. This is because if the tree generated from all platforms to all directions then in about 30 seconds the game would just be playable on a NASA supercomputer. So my game had to choose where to keep generating and it had to choose well.
I changed this to a less accurate (but apparently as functional) way of doing this. Now the game just checks to which platform you are horizontally the closest to and just chooses before hand this platform as the new nucleus so now it can keep generating even before you reach the top. When does it check? Well, this function is triggered every time another function detects that right above the screen there are no more platforms. So whenever the screen moves down, more platforms are generated instantly.
This sounds incredibly obvious. Just generate more platforms. But it was more complicated. Just doing this would lead to the game losing reference to the platforms below and by below I mean about the center of the screen so you would instantly fall down. This happens because there is a limit imposed on how many platforms can be alive at any moment. Being honest, the hard part was making it so just the right platforms are destroyed and created.
Unfortunately the difficulty doesn’t really scale in my game. At least not for now because I saw that the game was hard enough because no matter how much I practiced my own game I would always eventually die, never getting an extreme amount of points. Usually between 5k-20k. However a valid complaint is a valid complaint but fortunately for the fix I did regarding platforms appearing out of nowhere I changed the generation algorithm so that it is way more likely for platforms to be higher. This means that now, in average, the jumps are more difficult to do. Hopefully this also answers the problem of difficulty.
Thanks for your comments and constructive criticism. I love programming and game design so I take these as fun challenges. I just uploaded the version with these fixes (now v1.1.1) so it should be available for download in about an hour.
Edit:
And just to let the people now. I took out the video from both this forum post and the play store page because now with the smoother generation it no longer represents how the game plays or looks. When I get around making a new video I will update the page.
Haha yeah I know that feeling, I think when you’re coding something you might want to first have it operational, then to spend time fixing the details, but then, if you run your code to test its working, you get to a point where you’re not annoyed at all by the details you left for later. When I made the main menu for the game I’m currently working on, I didn’t center the names of the buttons on the said-buttons, because I thought that was a minor feature compared to all that I wanted to add and get working… So I completely forgot about the not-centered buttons and I went to another part of my code without fixing that, and I now have to remember fixing it ;D