Rise Above | Xbox One

Rise Above
Xbox One

Hi!


This is  Rise Above, my first finished Unity project! Hooray! Please, download it, play it and come back here full of feedback for me. I'd love to hear what you have to say!

For the ones that are interested, I will write down here everything that comes to mind about this project. All the things that worked and all that definitely didn't. So here it goes.

How to Play 

 First of all, I want to make sure everybody knows the controls. I tried to make it very intuitive to play, but it doesn't hurt type the controls here.

Left & Right Movement -> Arrows

Jump -> Up Arrow

Run -> Left Shift

Change Characters -> Q and E Keys 

(You're not supposed to change characters anytime you want, but I left it there so you could see how it works)

What I Learned From Rise Above

It took me roughly two months to finish Rise Above. It started as a simple 2D platformer from a famous Unity Udemy course ( Complete C# Unity Developer 2D: Learn to Code Making Games), so I learned the basics. You know, simple physics, animation, tilemaps. The rest (level design, enemies, adding music and other characters, transitions, sound effects) I did completely by myself. 

Disclaimer: Of course, the art and music and basically everything else are not mine, but all of them I found for free on the internet. See credits below. They aren't as detailed as they should be and I'm sorry for that. Next time, I'll make sure to take a note of everything I download.

I had never tried to finish a game before, so you can imagine how hard this was for me. In two months, I did really basic stuff. I imagined one thing,  but the game ended up a lot simpler than I wanted it to be. I knew it wasn't easy to finish a game, but wow. There may be an issue with my workflow, I don't know. Maybe I tried to make everything perfect and ended up losing too much time. It's hard to tell. That's the problem doing things on your own. You don't have feedback. I'm sure there are much more efficient ways I could tackle the problems.

Physics

Know I understand why making a game takes years. I don't know how much time I spent tweaking gravity, collision and materials, but I know it was a lot. The main character (I'll call him Owlet) kept sliding down slopes and glitching through walls. And if it wasn't enough, I had a problem with the double jump mechanic I added. I used a grounded flag, but then Owlet could jump as much as it wanted when touching a wall. This problem would have a simple solution (place the wall in another layer) if I had payed attention to the layer layout before adding the double jump. For some reason I can't remember right now, changing the layers introduced a lot of other bugs. I know, my fault. Learned my lesson.

Animation

Another problem was the animation. 

It was really hard to merge all the animations together while trying not to break the other working features. Switching rapidly between idle, climbing and running states always would produce some kind of weird animation glitch. I know it is a coding issue, but I admit I don't know how I would do it differently. Maybe another script just for animation? I don't know if that would work, because I need to know the player state to change to the according animation. How to make a character switch between, I don't know, 10 different animations seamlessly? And more importantly, in an efficient way? How do games like Celeste or Blasphemous do it?

Another thing was (and I think it was my fault too) I ended up coding the animation triggers and the player physics all in the same script. I'll be careful next time.

Finding Assets

This one was a surprise for me. You can't really make a game without any assets, so when I needed some, I went online. I found it really difficult to find good ones. But maybe my tastes are strange and they're actually fine.

Conclusion

Making a game is really hard, especially when you are learning it as you go. But I loved doing it. And, to be honest, I think it's a pretty solid game mechanically speaking. If you see the video I posted on YouTube playing it, you can see it loops properly, has a win state, a lose state, and the bugs are much more related to polish, which is something I didn't do much because it was taking a lot of time.

I'm really proud of it. 

Credits

I want to say thanks to all the amazing artists that I got all the assets from! You're all amazing.  I am so sorry if I forgot someone! My intention was just to use the assets in Unity so I could learn how it works.

Tilemap - Magic Cliffs Environment by ansimuz

https://ansimuz.itch.io/magic-cliffs-environment

Enemies & Ladders - Abstract Platformer Pack

https://www.kenney.nl/assets/abstract-platformer

Characters -  Free Game Assets

https://free-game-assets.itch.io/free-tiny-hero-sprites-pixel-art

Music  - Free Music Archive (FMA) & Open Game Art 

https://freemusicarchive.org/genre/Chiptune

Juhani Junkala - https://opengameart.org/content/5-chiptunes-action

Extra: Feedback I Received

I just had the idea of responding to the feedback I received. 

The following are from Pedro, huge friend of mine. Thanks for playing it, man!

Overall, he liked it a lot. He said he liked the music, the graphics and (more importantly in this case) the controls. There were a couple of things he thinks could be better, though. 

1. The delay between changing characters should be zero

It's true. It would be a lot more fun if you could change players whenever you liked (midair, for example). I would definitely do this if I had more time. It would add unmeasurable variety and complexity to the game. As Pedro says: 

"Then you could mix up in play style, run mega fast with the purple one and change to the high jumping one, taking advantage of inertia and stuff"

He wonders if it would be hard to make. And the answer is no. I wouldn't be hard to do it.  I just didn't stop to think about how I would make it instantaneous.

You see, in Rise Above I implemented an array of players where I stored all of them as different Game Objects. Each one of the three were separate objects waiting to be called in. You start in index 1. If you press Q, you go to index 0, where, if I remember correctly, Dyno (the blue one) is stored. Owlet (the white one) is disabled, Dyno receives the position of Owlet and then is enabled for the player to control it.

In my opinion, the way I implemented the character change would word too if the delay was zero. I just don't know if it would break other things in the game, or what would happen if I mashed all the buttons at once. I need to try this later.

He also said  it would be better if the game had a different key for each character, for example 1 for Owlet, 2 for Dyno and 3 for Pink. Or made the Q/E implementation in a circular way, so you wouldn't have to hit the keys twice to change to the character you want/need. I thought about this too. It's a great idea. Actually, don't know why I didn't do it. It would be really simple to make.

2. A menu explaining what you can do to the game should be made

You mean something like this,  right? With the controls and everything else.

Yes, it should. I just didn't have the time. User Interface is hard to make. It takes time to make it look pretty and useful and intuitive at the same time.