My Idle Cacti – Virtual Pet Jam Submission

A few weeks ago, I entered the Virtual Pet Jam on Itch.io, which required participants to make a virtual pet in just over two weeks. For my submission, I created a fully idle cacti game, where the player must buy cacti, look after them and earn seeds from them. The player can own up to eight cacti, each with increasing price and rewards.

The player can name and customise their cacti, choosing from different eyes, mouths, and accessories individually. Almost all features can be bought for seeds and, much like the cacti, increase in price. The player can look after their cacti by watering them with the watering can and put them to sleep by turning off the main light. The player must keep the cacti’s stats above 25%, otherwise, the cacti will not earn them any seeds.

Every cactus will start at stage 1, and the cactus itself will appear very small. At this stage, the cactus will earn a base amount (this will vary depending on which cactus is purchased; an expensive cactus will have a more expensive base amount). The cactus can progress through four growth stages, with every stage increasing the number of seeds the cactus will produce every minute. The cactus will grow every hour and will remain in its fourth stage after this.

It will take the player many hours to purchase all available cacti plants and their eyes, mouths, and accessories. Once a cactus reaches 10 hours old, the player can upgrade them and increase their legacy points. This starts the cactus back at the first growth stage but will multiply the number of seeds the plant earns at every stage by the legacy amount. This means that initially, the player’s earnings will decrease. But, after waiting a few hours for their plant to grow, their earnings will increase dramatically.

Here is a video of the gameplay mechanics:

The game is published on Itch.io and can be played here!

There are many mechanics and features within the game that I have never programmed before, and it was a fun experience learning new things and being able to implement them into my game. These include…

Making The Game Idle

For me, this was the biggest achievement in the development process of the game. As someone who has always played idle games, both on mobile and PC, I was very interested in how I would go about creating my own idle game. After trying to search online for a tutorial and finding nothing, I decided to map out the logic and try it for myself.

I quickly realised that it would make the most sense to compare the time the game is closed to the time the game is next opened. To do this, I googled how to get the current real-time in Unreal Engine 4, which turned out to be incredibly easy and can be instantly obtained by using the “Now” node. I set a new Date-Time variable in the save game object to record the time the game is closed, this will be set to the current time every time the player saves the game. When the player opens the game once again, I subtracted the recorded time from the current time (current time – recorded time = difference). From here, I had to work out how many seeds the player would make in this time period and how low the cacti’s stats would be.

The Endless Memory Game

Originally, I did not have this idea in mind to add to the game. However, when I started to create the game, I was watching different videos on YouTube and one I watched featured a memory game. I decided to implement this as a mini-game as an opportunity to earn more seeds for the player. To create this mini-game, I programmed a custom event that will randomly select from the four buttons and light up the selected button for a short period. If the player selects the correct button, it will plus one to the win counter and play the custom event after. If the player selects the wrong button, all variables will be reset and the game will start again.

Changing Screen Resolutions

This is a small detail that really makes a difference to users, as they can choose how they view the game. To do this, I used Matt Aspland’s tutorial on how to change the screen resolution, which was very easy to follow and implement. This is a useful skill to learn and it will be implemented in many future projects.

Changing Master Volume By Slider

This, much like the screen resolutions, was a small feature that makes a huge difference to the user. I followed another one of Matt Aspland’s tutorials about changing the volume with a slider to complete this.

In conclusion, this was another fun project and successful Game Jam! I had a blast creating My Idle Cacti and learning new skills along the way, and I can’t wait for the next Game Jam!

Kacey


Here’s some of my recent posts:

  • Project Pong – The JUICE Project
    Over the summer, I decided to expand my Unity knowledge and specifically focus on making the game look better. To do this, I recreated a very popular and simple game- Pong. However, I added many different effects to make the gameplay more exciting, despite none of the core mechanics changing.
  • Games Engine Creation – Semester 2
    This semester of Games Engine Creation was very different than last semester. Last semester, we had to create a series of different C++ programs to enhance our C++ skills. This semester, we had to put those skills to the test by recreating The Super Mario Bros arcade game using the SDL2 library in Visual Studio.
  • Fundamentals of Game and Graphical System Development – Semester 2
    This semester, for our Fundamentals of Games and Graphical Systems (FOGGS) module, we moved from creating a 2D game to creating a 3D game with OpenGL and FreeGLUT.
  • Rapid Games Prototyping – Semester 2
    For the second semester of my Level 4 Games Programming Degree, I had to create two prototypes for my Rapid Games Prototyping module using C# and Unity. Once again, for both, we were given an initial framework and had to build upon this to create our own unique mechanics.
  • Rapid Games Prototyping – Semester 1
    For the first semester of my Level 4 Games Programming Degree, I had to create two prototypes for my Rapid Games Prototyping module using C# and Unity. For both, we were given an initial framework and had to build upon this to create our own unique mechanics.

1 Comment

Leave a Comment