Rolling Ball Game

Original First Post:

I’ve added gravity walls. When you enter the box associated with it, the pawn’s gravity gets disabled and the wall is forcing its own “gravity” onto it. This is super easy and fun to toy around with, and I definitely want to expand on this mechanic.

Those tiles! :eek: Very nice job.

Thank you :slight_smile:

They’re just a really rough concept, and I think I can expand on them way more!

Lol i didnt think those tiles were anything special, till you landed on them, then I was like yeah thats cool, awesome job, can’t wait to see what you do with them.

So I’ve improved the gravity wall a little bit. I think the next logical step would be to create smooth curves, but that’ll have to wait until after I’ve slept.

Would love to see how you did the gravity walls… might solve a problem I’m having. No pressure :stuck_out_tongue:

I love the tiles, looks really awesome!

Nice mechanics, already looks fun to play, keep us updated !

Its design is very good, and great interaction with elements of the scenario. congratulations.

I have some small doubts:
1 - You are only using Blueprint, or doing this using C + +?
2 - Could you explain a bit how you did the gravitywall (as the ball can only use gravity that space near the wall).
3 - also explain a little about the process, to make the floor boards join, when the ball is close by (I like this effect, very good).

But if you can not explain, all right.
Again congratulations for the great project, I’m waiting for new updates.

I’m really glad you like it!

I am exclusively using Blueprints since I don’t want to install VS2013. I am waiting for the editor to officially come to linux so I can hopefully use gcc.

I gave each wall segment a box component. Initially, I used the onOverlapBegin/End events to detect the pawn entering the gravity field. I disabled the gravity for the pawn while it was inside the box and passed it a gravity vector, aswell as a forward vector for camera alignment purposes.
This turned out to not work out with overlapping fields, so I switched to a different method. Now, when a pawn is inside the box, the box will add a gravity and forward vector to an array belonging to the pawn. On every tick, the pawn then checks whether is array has any contents. If it does, gravity will be disabled and the gravity vector is used for apply a force to the ball. The gravity vector (and the forward vector) is calculated as the average of all the vectors in the array, which results in a little smoother transitions (although I’m not yet entirely satisfied with this solution).

The inner workings of them are really unspectacular: I just check the distance from the actor to the pawn, and if it’s below a certain threshold, I use a lerp to smoothly interpolate from a time-randomized offset to the aligned position. Then I just aligned the tiles in the editor (in the editor I see the aligned position), and that’s really all. It took me less than 10 minutes from idea to completion.

I’ve made a quick level to demonstrate how the features might be used ingame. This clearly still needs a lot of work.

I’ve added multiplayer support to the game. I am from now on going to implement multiplayer to every feature, so I don’t have to rewrite the entire game at a later date :stuck_out_tongue:

I’ve added a proper twisting gravity wall (although I’m lacking a twisted floor asset) instead of creating them out of tiny little segments:

Also a tubular segment:

This is awesome stuff dude, you should write a tutorial. There isn’t much on here about manipulating gravity and what not.

Hi DrLuke,

I too would be very interested in seeing more of what you come up with with gravity. Great work so far!

I’m super glad you all like it! It keeps me motivated to keep working for hours on end, most of the time spent with getting more familiar with the UE4 architecture.
Today I did some needed work on the camera. The player can now rotate it at will. Also, when you enter the gravity pad, previously the camera’s axis system would snap to that of the pad, but now you keep looking the same direction when you enter them. This prevents disrupting transitions where the camera rotates by 180 degrees when you enter a pad.

I’ve also added a checkpoint system I forgot to demonstrate in the video. It allows me to track player progress aswell as defines a respawn position should the ball fall off the edge.
I’ve also implemented a rudimentary savegame system that tells me if the player already completed a level or not, but this obviously has to be fleshed out much further.

This is awesome! I’m doing something similar but with a 1st person perspective.

I’ve decided to quickly hack together a twisted floor model to better utilize my gravity wall with changing gravity direction. I think I need an artist, lol.

Also you can see the respawn system working.

You can never have too many rolling ball games. The gravity changing makes this one really interesting!