Let me tell you, I am actually excited for this game, or at least working with Unreal’s blueprints.
At first, I was worried when I looked at Unreal’s C++ side, and while I could take the time to figure it out, the blueprints system is packaged so nicely. Plus, even though you can use it without having coding knowledge, coding knowledge makes the entire system make much more sense than trying to learn it from scratch.
But enough of that, more importantly is the prototype. First off, Painting Game (as we have so affectionately labeled it as of now) is a first person puzzle game wherein you as a character are trapped in a Gothic/Victorian mansion, and aside from the mansions strange use of locked doors and gates (which prevent easy access throughout the mansion), there are an abundance of paintings scattered around.
You also have the convenient ability to dive into paintings and from a 2.5 dimensional sidescrolling perspective, can navigate through them to travel to surrounding paintings, such that you have the ability to get around those pesky gates and locked doors. Eventually, you’ll even be able to travel through walls using this painting network.
So I had to develop the ability to a) move paintings around, b) dive into paintings (which was the bulk of the work, and c) travel between paintings.
Moving paintings was the beginning, and after I had finished, I had this to give to my team:
Which was pretty basic, but only the start (to be fair everything in a prototype is basic, but you gotta have fun with it).
I messed with line casting and impact normals to get the paintings in the proper positions they were supposed to be in.
The big part came when I wanted to dive into paintings. I realized I had to create a mini-me and give it a different control scheme, which wasn’t actually that bad. The part that caused me a while of trouble (incoming trigonometry), was getting the mini-me to move left/right in the proper direction I wanted based on the rotation and normal of the painting. I won’t go super deep into the math, but there were some conditionals and a lot of taking the rotation around Z (up/down axis) and converting it into a useful sin/cos unit circle type values so “moving right” was always the players right, despite right not being the same as it was previously.
Then I had to let players travel between paintings, and for that I decided on a simple node system (which turned out to work with an advancement we chose later on), wherein each painting knows what paintings are around it, and hitting a given panel of each panel will take you to the next one (e.g. Hitting the right panel of a painting will travel you to the painting to its right, fairly straightforward).
This works with a hook system we’ll implement later, where painting hooks will always be static, and while paintings may move, the hooks will not, so the hooks will always know who their neighbors are, and we’ll be able to access two paintings information by asking their hooks to contact each other.
To wrap up, here’s a slightly more comprehensive version of what I was able to get done by the end of the week (and it’s not too bad if I say so myself):
More to come next week!