V0.4 Production has started!


Hey dear indie games enjoyer,
Today we have a big announcment to make!
Our game entered in its production phase, it is now time to realize the game as we want to be and to end up with a stunning final product.
Starting this production phase, we restarted all our work from zero, of course we used the informations that we collected during prototyping phase, but we are remaking everything to have the cleanest and bugless product as possible.

Lighting and athmosphere :

Added another directional light in the scene to fix the issue of shadows being lighter on the sides and darker on top. Made the sun darker. Imported building meshes and trim texture to test out in lighting.


Materials : 
Added gradient in shader graph. The gradient has 2 adjustable variables: the position and the spread amount.
Adding the gradient in the shader itself will make it possible to have no gradients in the texture images.


Models :
Made a model for the pressure plate, the model exist of two pieces one for the plate and one for the bottem. When standing on the plate it goes down by 0.5cm on the y axis. This will be used to make our puzzles.

Made a model for the spike trap, the model exist of two pieces one for the spikes and one for the bottom. When standing on the spikes they will extract and go up by 45 cm on the y axis. This will be used to make our puzzles.


Made a model for the movable box, this model will be used to make our puzzles by having to puch it around in the level.


Made a model for the movable platform, this model will be used to go up and down or left to right and will be a part of the puzzle.



Made a model for the button, this model exist of two pieces one for the button and one for the bottom, the button will move by 1 cm when pressed. We will use this model for our puzzles it can be pressed but will also be able to be shot by the fans blades.


Made a model for the bridge, this model will be used to connect our building it also works with engines making it able to move. This model will be part of our puzzles.


Made a model for the rotating wheel, This model exist of the parts one for the top that can rotate and one for the bottom that will be static.

This wheel will be able to turn when the wind character blows it and this will effect the puzzles of our game.




Modeled 2 buildings and unwrapped onto trim texture.

The pivot point is set on the very top of the building, this way the mesh can be placed according to where the player will walk (the player walks on rooftops).



Concept art:

Worked on making interesting character designs for the players and enemy.

The enemy is a lightbulb that siphons energy from the players, making his light glow. This was so so much fun to design! There aren't many constraints, so the character could be of any shape (there's even a shark one among the concepts).

The battery's design is quite straightforward, but figuring out how he would glide was tricky. A jetpack seemed most fitting for this type of character. Since the battery's design is pretty much set, it was easy to make a quick 3d blockout. It was especially important to figure out if the jetpack designs translated to 3d. 

The fan character is the most challenging to design. There are so many mechanics already set in stone that have to be taken into account. The most difficult part was figuring out how the body is attached to the goddamn fan. The fact that the face is facing (haha) the same way as the fan limits the design quite a lot. There just isn't enough space to fit everything!! Hopefully, this will all be figured out soon.












Setup of the Project:
The project with the right folder structure i made the project in HDRP and set the base setting of the game. I added almost all the packages that we need for our project.

Input System:
I worked on input so i added a Input action and then added 2 seperate Action maps 1 for the battery player the other for the fan, i added all the controls that are going to be in the game and made significant upgrades to it from the prototype. Also made a PlayerManager so that when a character joins the game with a new controller it joins as the other prefab aka the fan

Camera:
Made it so that the camera automaticly pics the center of the 2 characters and follows them in a target group and put that target group in the cinemachine.

Battery movement :
Made the movement script fot the battery player so now it can move and jump around it also rotates in the way it is looking.


Fan Bullet behaviour :

Starting the actual implementation of the game forced us to think how to develop the game as a team from a totally different point of view that we had during the prototyipng phase. As a team of two devs, we should absolutely avoid to work on the same implementation at the same time. And, to avoid later bugs, we should avoid developping an element that depends of another implementation that still has to be done.

Making the fan bullet behaviour seems not to be the current priority on the project, but since it depends of nothing to work correctly, it was a good element to work on while the base of the game dev structure was being made.

After the prototypes, I discovered that I had to focus on the following point with this bullet system :

- The platform was sometimes skewed when it was attached to a surface, I had to investigate why and how to solve the problem. Actually, this bug occurs when the platforms tries to attached to a surface of game object with a size different than (1,1,1). The simple solution for that is to make an empty game object of size (1,1,1) and that has a box collider with the size of the wall. Inside of this empty object, we add the wall mesh, that acts as visuals and have no collision.

-The platform wasn't always located at the exact position of the collision of the bullet against the wall, and we found no way to orient the platform depending of the rotation of the surface it hits. I discovered that, in Unity, you can access to the exact position of the collision and to the normal of the surface that was hit during a collision with the following lines of codes :

```c#

Vector3 collisionPosition = collision.GetContact(contactIndex).point;

Vector3 collisionNormal = collision.GetContact(contactIndex).normal;

```

this is an elegant way to make the attach works exactly as we wanted with no calculations which means less chance of having a bug somewhere.

-When the player was on the platform, it wasn't following the platform movement:

To solve this problem, I implemented the following system : I created a thin trigger box on the top of the platform. When the player (or any other entity) enters this zone, it becomes a child of the platform, and then follows its movement. When the same entity leaves the platform, it is not a child of it anymore.


Fan player movement :

One of the most important part of our gameplay is the movement of the fan character, so, it is especially important to spend enough time and attention to it to make it as smooth as possible and pleasant to use for the player. Also, the fan should be heavier than the battery player. It is important that its movement give a feeling of heaviness. We focused on the following aspects of its movement :

- Rotation :

The character should rotate to aim certain directions, we decided to use the right-thumbstick to aim, since this input give an angle value. When the user use the thumbstick, it gives an angle value that becomes the target of the rotation, and the character will start to rotate to that position.

To keep a smooth rotation in the game we also decided not to determine this rotation by a specifc speed, but by a time of rotation. In short, it doesn't matter if the character have to rotate 10° or 170°, it wil do it in the same time. The rotation stops when thumbstick is released.

This rotation system has the following advantages : it allows to the player fast changes of direction on large angles, it allows the player to be more precise when aiming a precise point.

- Movement :

When the character is pressing the blowing input, it will move in its back direaction. The hardest part of making this movement was to give the character an heavy/floaty movement. Finally, we solved this by using forces that are applied on the character.

We also decided on some drag values so the player doesn't stop instantly when stop blowing, which make it a bit harder to control, but really rewarding if the player manage to do it well, the character takes a certain time to accelerate, but it can reach high speeds.


- Base Movement:

We also gave the ability to the fan to move in a more usual way with the left thumbstick, this movement is really slow, and is just there, so the player doesn't becomes too weak when out of energy. The most difficult with this movement was to make the transition between both movements smooth. To achieve that, we decided that the this basic movement is not possible if the character has at least a certain velocity.




We started to go more in depth into game dev explanation, we hope you enjoyed it.
See you for the next devlog !

Files

BlowIt-v0.4.zip 44 MB
Mar 28, 2024

Get Blow It !

Leave a comment

Log in with itch.io to leave a comment.