Introduction

In school, we had the opportunity to sign up for a trip to Malaga. If you decided to go, you could work on your games and various other assignments there. When I heard about this, I was immediately enthusiastic, and I signed up right away. Unfortunately, only two people from my class could go, so it was very exciting to see if I would be selected. And when I received the news that I was going along with a good friend of mine, I was really super happy!

Malaga Game jam:

Building with buckets

Introduction:

Part of the trip to Malaga was participating in the Malaga Game Jam, which is part of the Global Game Jam. I was in a group with another student Justin van Diggelen who was also on the trip, so it was just the two of us and no artist. The theme of the game jam was "Roots," and we had two days (48 hours) to build a game around that theme.

In this video you can take a look at the final product we created, and we ended up calling the game Waveline.

The making of Waveline:

The idea of the game is that you are attached to a garden hose, which is the root of our game. You have to complete various mini challenges to obtain extra hose length so that you can ultimately save the world. We didn't have an artist on our team, so we mainly had to rely on ready-made assets. Fortunately, we had received a nice asset pack from school in the past, and we used it for the project.

In this project, I primarily worked on making the garden hose spray water and perform mini challenges. I achieved this by inheriting a script.


public class WaterInteractable : MonoBehaviour
{
	  /// <summary>
	  /// Gets called when water touches the base object with the script WaterContainer.
	  /// </summary>
	  /// <param name="fillAmount">The amount of water you receive when the function is called</param>
	  public virtual void InteractWater(float fillAmount)
	  {

	  }
}
								

The first snippet defines a class `WaterInteractable` with a method `InteractWater(float fillAmount)` for handling water interactions in the game.

The second snippet is an override of the `InteractWater` method, adding water to a container in the game, respecting a maximum fill limit.


public override void InteractWater(float fillAmount)
{
	  if (_currentFill < _maxFill)
	  {
		  _currentFill += fillAmount;
	  }
}
						  

Here you can see that I use the function "InteractWater" to fill a bucket. This is convenient because I can call the same code when something needs to happen with the water.

Building with buckets

So, I designed the bucket for the first challenge in a way that allows me to use it for all the other mini-challenges as well.

Pickups:

I was responsible for creating the pickups that extend your garden hose, which was relatively straightforward because my teammate had designed the garden hose code to be easily adaptable.


private void Update()
{
	  RaycastHit hit;
	  Debug.DrawRay(_cam.transform.position, _cam.transform.forward * _maxDistance);
	  if (Physics.Raycast(_cam.transform.position, _cam.transform.forward, out hit, _maxDistance, _layerMask))
	  {
		  if (hit.collider.CompareTag("ExtraRopePickup"))
		  {
			  _pipePlacer.MaximumDistance += _ropeToGive;
			  Instantiate(_particleConfetti, hit.collider.transform.position, hit.collider.transform.rotation);
			  Destroy(hit.collider.gameObject);
		  }
	  }
}
						  

In the code snippet, I cast a ray from the center of the camera and check for collisions with objects tagged as "ExtraRopePickup." When you aim at a pickup, extra rope is added automatically, and a particle system appears to indicate that you've collected it. Afterward, the pickup is removed, allowing you to continue exploring and completing mini-challenges.

Main Menu

I also created the in-game menu, complete with button explanations and instructions on how to play.

Malaga:

I have some photos here of things I experienced in Malaga and things I found interesting.

View from the hotel

Beach

Boulevard

I'm very happy that I went on the trip, and I learned a lot from the city and also from game development.

Discover Waveline