DEV – angle based collisions & inheritance

This week I’ve mainly worked on rapidly getting a working version of our final idea out. I implemented a new collision checking system. Instead of colliders I’m now using some calculations to compare angles with the player. So the obstacles compare the angle with the player. When the angle is between a certain value you “completed” an objective.

I changed the way we handle obstacles too. I’ve created a base class from which we inherit. The base class itself inherits from monobehaviour.Each inherited object must implement a “GetState()” method. This will either return “FINISHED,FAILED,GOING”. ObstacleInheritance.jpg

I’ve also implemented a very basic bezier spline curve which we can use to sample to position so the Obstacles fly in at a certain curve.


I’ve also implemented a new system of switching shapes. The buttons now remember what shape was your current shape and store it. So when you press the button you will switch your currently used shape with your center shape.

ART – Mood and Reference

The Art style of the game will be gravitating towards a futuristic/SCI-FI sports event. We wanted to have the visuals to complement a fast paced game so the feeling of speed can really come across.


I went and found some good examples that are already out there, and provides a good representation of what art style we’re going for. The fact that it’s SCI-FI greatly compliments the fact that we’re working with shapes that are flying around with thrusters and Mag-locking with other shapes.4180381-portal-2-game

We also wanted a sports feel to add, like a “league” of some kind. Real life sports events are always very colorfull and extravagant, because there is a lot of money attached to it. this is usually visible through sponsor stickers and colors. Most of the time these are very vibrant and present everywhere. maxresdefault (2)

DEV – New mechanics and prototypes

Added a whole new prototype idea (one that we discussed during the meeting.)
The player now consists of a base mesh with several sockets, on these sockets shapes can be attached. The shapes rotate together with the base shape. Every shape can be swiped to a different socket and the base mesh will change. Meshes adapt their rotation to what socket they are on. Designed the user interface for this, on the lefthand side you have a sprite of the player mesh (not rotated) with its four sockets. On the righthandside you have your building blocks. These can be dragged (or with a swipe) to the sockets of the player. If you swipe a mesh on a socket back to one of the three placeholder sockets on the right, the socketmesh detaches from the player again and you can add other parts etc.
Also added the 3 (placeholder ofc) models, made 3 sprites for the UI and programmed an efficient drag and drop system for the UI.


Also added five small iterations on the original idea:
Iteration one: Disables the accelerometer of the phone, we had the feedback that it would be almost impossible to tweak the accelerometer for different phones etc. Rotation is now being handled by taping either the right side of your screen (clockwise) or left side (counter clockwise).

Iteration two: Enables the accelerometer for rotation. Which I smoothed out and tweaked for my own mobile phone. It is a very enjoyable gamemode.

Iteration three: Introduces a small new feature I implemented. You can drag the shape around with your finger. The holes are now being spawned on different heights. Tricky gamemode, hard because of perspective.

Iteration four: Same drag mechanic except for the fact that the x axis is locked. This eliminates the problem of iteration three, the perspective problem is gone. Fun and intuitive to play. Maybe not the hardest gamemode though.

Iteration five: Drag and drop, no locked axisses and rotation (without accelerometer). Very hard on mobile. But also very fun on pc (but that’s not the target platform.)



DEV – Testing out ideas

Prototyping phase

During our feedback we got the feedback that we should have iterated more on our idea. Changing certain aspects of the idea. Iterating with how to use shapes, and so on.

I’ve prototyped some of the ideas this week. In order to proceed to prototyping we first had to find a good solution to a very relevant problem. We needed a good way to detect what shape the player draws on the screen.
So we needed something to easily handles gestures and touch input. I’m not planning to write my own gesture recognition system so I used a unity package called TouchScript. This allows me to quickly add new custom gestures when I need it.
Then for the shape recognition I first stumbled on this library that used point cloud recognition. I searched the asset store and found PDollar Point-Cloud Recognizer
This has helped us a lot for implementing an easy way to add shapes and recognize it.

Below you can find some gifs of different prototypes.
Stacker(most left): Here you have to draw the shape you see as fast as possible to decrease the stack. If you complete 1 stack another one pops up. Keep doing this until you get a couple of shapes wrong

Draw them out(top right): Draw out the parts of a shape you won’t need and keep the ones you want

Pattern drawing(bottom right): The idea is that you have a certain pattern on the panels. you have to draw this pattern so that the door opens and you can proceed to the next door.
This idea is not implemented yet.



After the first feedback session we headed back to the drawingboard. Literally.

We each thought of 5 new prototype idea around our main game. We each drew them out on a whiteboard and presented them to our teammates. Afterwards we selected the best ideas, those ideas are headed into prototyping.

Below are all the different prototypes we came up with, the ones with a red cross, are headed to the prototype fase.brainstorm

DEV – New prototype idea

After each coming up with around 5 new prototype ideas, we selected the best out of those to turn into a protype and test the mechanics.

With this prototype, the main idea is to press the red buttons without making any mistake, and before time runs out.

This prototype is very different from idea visually, but it still is about quickly reacting to a visual trigger.


DEV – Music analysing and spline based meshes

1. Made audio analysing:
– Added a method which calculates on what index in the sampleArray a certain frequency exists (for both hamming and rectangular sampling)
– Added a method that detects when the song’s kick is played (this can be very useful for gameplay implementations)                                                                                                                        – Any song can be loaded in and the information of it is being read and saved nicely. There are a lot of possibilities with this data, I made a 5 second visualisation in this .gif.


2. Spend a lot of time on research to make the tunnel spline based and procedurally generated, so far I have:
– Added the math to:

           – Get points from a bezierspline
           – Get tangents from a bezierspline
           – Get biNormals from a bezierspline
           – Get normals from a bezierspline
           – Get orientation from a bezierspline

– Added sc_OrientedPoints in which the bezier will be converted to. This also contains methods that can convert points from local to world space and vice versa.

– Added sc_ShapeToExtrude which is a class that describes the shape that we will extrude along the spline/path.

          – Made a vertex buffer with information for an 8 sided cilinder
          – Made an index buffer with information for an 8 sided cilinder

– Added sc_UniqueMesh class. This class has to purpose to make sure the user does not unwillingly adapt several meshes at the same time. We do not want to edit a sharedmesh and this is a common problem in unity. So I made this class that checks the owner/id for the gameobjects and handles the meshes according to that information. This class is designed to be inherited from.

– Added sc_SplineMesh class. This class inherits from the sc_UniqueMesh class to benefit from the easy mesh system. This class is where everything comes together. This contains a method that extrudes a 2d shape (sc_ShapeToExtrude) along a path to create a mesh (the end result). This method is still work in progress. I got the math part covered, now the implementation will have to be done soon.