- Aug 30, 2024
- 9
- 8
Hi there! Recently, I participated in the NSFW MiniJam and really enjoyed the experience. Because of this, I decided to create a devlog where I can share the entire initial development process of my game, discuss the challenges I encountered along the way, and how I managed to solve them. Additionally, I'll explain how I created each minigame in RenPy, in case anyone is interested in adding similar features to their own game. Overall, this devlog is meant for developers and players who might find it interesting, so I'll divide it into sections. I'm still a bit new to this, but I'm really excited about it! x’D
What is BeastBound?
First, let me give a brief overview of the game (which you can try for free on itch.io). BeastBound is a game where you must manage your daily energy to experiment with monsters (including any kind of mythical or magical creatures). During the day, you can visit the shop to purchase various items, such as upgrades for certain minigames, toys for experimentation, and items needed for capturing certain monsters. You can also capture monsters on commission for the agency, earning money and reputation in return. Alternatively, you can spend personal time with the monsters to gain affection, unlocking new features.
Due to the 9-day time limit of the game jam (and the fact that I ended up submitting the game a few days late), I was only able to include one monster for experimentation, Sadako, and 6 monsters available for commission capture. Later, I added some additional content in subsequent versions.
What’s Been Updated?
BeastBound has received two updates. In the first update (1.01), there were only two changes: the music by Stevia Sphere was replaced with music from Pixabay (I felt this type of music was a better fit), and a money counter was added in the shop, which is quite useful for avoiding blind purchases.
In the second update (1.02), more significant changes were made. A bug was fixed that prevented you from retrying the neko girl's minigame if you failed once, an Android version was added, the labyrinth was updated for the PC version, and an image and video gallery was added to the game. I’ll discuss the challenges of creating an Android version later.
Minigame 1: Clicking
This minigame is used in the capture of Sadako and the succubus commission. It’s simple: you click, and your enemy’s energy decreases. I used a RenPy "button" that decreases the "energy" variable each time it’s clicked. As you can see, it’s the simplest of all the minigames.
Minigame 2: Moving a Bar to the Right Spot
This minigame is used in the capture of Sadako and the vampire commission. It was a bit more complex to create than the others. The minigame involves moving a slider to a position where it will reduce the vampire's energy. The slider affects a variable, and the game checks every 0.1 seconds if the slider is within a specific range to decrease the vampire's energy. Every 5 seconds, another timer randomly changes the values that define the correct range. Here’s a rough idea of the code:
Minigame 3: Mouse Labyrinth
This was the last minigame I made, but it’s not as complex as it might initially seem. It’s used in the capture of the pharaoh’s spirit and involves guiding your mouse through a labyrinth without touching the walls to win. The setup is simple: two imagebuttons with “focus_mask True” and “hovered” properties. The first ensures that only non-transparent parts of the imagebutton react, while the second triggers an action when the mouse hovers over it. The minigame includes three images: a background for the labyrinth, an imagebutton for the walls (which sends you to a defeat screen if touched), and an imagebutton for the goal (which leads to a victory screen).
In update 1.02, the labyrinth was made slightly more challenging, and question marks were added. If you touch these question marks, a variable is triggered, and at the victory screen, you are rewarded randomly based on how many you collected.
Minigame 4: Find the Haunted Furniture
This minigame is straightforward. Each time you play, a variable randomly determines which piece of furniture is haunted (e.g., if the variable equals 2, the bathtub is haunted; if it’s 4, the sink is haunted, and so on). The game checks which furniture is haunted and places an imagebutton there that leads to the victory screen, while the others lead to a defeat screen.
Minigame 5: Slow Clicking
This is similar to the first minigame, but with a slight twist. Now, when you click, the neko girl’s energy decreases, but a “rudeness” meter increases. The meter gradually decreases over time. If it maxes out, you lose. Again, a timer checks every 0.1 seconds to decrease the rudeness variable and ensure that no variable reaches its maximum or minimum.
There’s no section for the sixth minigame because it’s purely dialogue-based. I wanted to highlight RenPy’s strengths and give players some choices that determine the minigame’s outcome. It’s quite simple.
Problem 1: Translation
Translation was the biggest issue that took up most of my time. I write my games in Spanish first because it’s my native language and it’s easier for me to write a story that way. Plus, it bothers me when games are available in every language except Spanish ;-;
I used ChatGPT 4 for the translations. Even though I used an AI, I still had to ensure everything was correct, so I spent more time playing in English than in Spanish. The problem I encountered, and haven’t solved yet (if anyone has a solution, I’d appreciate it), is that RenPy doesn’t provide direct translation for screens unless you put the screens in the script that says “screens.” The problem is that I’m too stubborn and like to organize things my way... So, yes, I spent at least an hour or two manually searching for the lines to translate in the different screens. Since the game is almost entirely based on screens, you can imagine the amount of work this required. In future updates, I’ll likely place the screens in the proper script to avoid this hassle.
Problem 2: The Game’s Interface
Initially, I wanted to create a very visual game full of buttons and such, but then I remembered how bad I am at drawing. On top of that, I had never created an interface for a game before, so I decided to give up on that idea. Essentially, the entire interface consists of text buttons based on RenPy’s default GUI. Fortunately, I managed to create a decent main menu where you can choose whether to go to the shop, go on a capture mission, or experiment by clicking on the various pieces of furniture in the room. It’s nothing fancy, but I’m pleased with the result. This was achieved in Koikatsu by taking screenshots with a transparent background. I first created the entire scene and then hid all the furniture except one to capture the transparent screenshot.
Problem 3: The Game’s Identity
The game is short, of course, but I’m not entirely sure what genre it belongs to. While you have to manage your energy and money daily, there’s also a part that involves minigames, coexisting with dialogues. I suppose the game’s identity will develop further with each update, but for now, I’m not sure what genre to attribute to the game or what the overall goal is beyond having fun. Since it was made in RenPy and has a slight narrative component, which isn’t fully fleshed out yet but will be updated, I decided to label it as a “Visual Novel.” But is it really a visual novel? I mean, it doesn’t have an ending, and the choices don’t lead you down different paths, just to winning the minigames... This is a problem I haven’t figured out how to resolve yet.
Problem 4: The Android Port
From the beginning, I wanted to create an Android version. Before I had a good computer for gaming, I played a lot of games on my phone (I also had a PlayStation, but let’s be honest, the game selection is more limited than on a PC). So, I understand that many people can only play games on a mobile device, which made this a priority for me. I encountered three main problems: the labyrinth minigame, the interface, and the dialogues.
First, the labyrinth minigame doesn’t make sense on mobile devices since there’s no mouse to navigate the labyrinth, completely breaking the minigame’s logic. I had to completely redesign the game for mobile devices. The game detects if you’re playing on a mobile device or
another platform and changes the minigame accordingly. Now, the minigame involves navigating the labyrinth through a series of choices, allowing you to move to question marks to gain extra items or risk losing. Occasionally, a condition appears that you must meet, or it changes the labyrinth’s rules.
The interface often didn’t fit on mobile screens, so I had to make it smaller or split it into two in some cases. This is an issue because now I have to test the game on mobile devices every time I update it to ensure all the buttons are in the right place, although from now on, I’ll design everything with Android in mind as well.
The dialogue problem is minor. In many instances, you’re told to right-click or do similar actions, which need to be adapted for mobile controls.
Fortunately, RenPy makes it relatively easy to port your game to mobile devices, but designing a game for mobile does limit your possibilities.
Future Plans for BeastBound
The plan is fairly obvious: add more monsters to capture, expand the story, and include more monsters to experiment with. In the next update, I’d like to add events that trigger when you reach certain milestones, such as a certain level of reputation or affection with a monster. I also have some ideas I’m excited about for the future, but I’ll keep them as a surprise for now.
Unfortunately (or fortunately), I’m starting another year of university, so I’ll have less time to update the game. Still, I’m really looking forward to dedicating some time to updating it whenever I can.
I just hope you enjoy the game and have some fun with it. If you have any suggestions or anything you’d like to mention about the game, feel free to leave a comment. Thanks so much for reading all of this!
P.S. I hope my explanations were clear because I’m not the best at that XD
What is BeastBound?
First, let me give a brief overview of the game (which you can try for free on itch.io). BeastBound is a game where you must manage your daily energy to experiment with monsters (including any kind of mythical or magical creatures). During the day, you can visit the shop to purchase various items, such as upgrades for certain minigames, toys for experimentation, and items needed for capturing certain monsters. You can also capture monsters on commission for the agency, earning money and reputation in return. Alternatively, you can spend personal time with the monsters to gain affection, unlocking new features.
Due to the 9-day time limit of the game jam (and the fact that I ended up submitting the game a few days late), I was only able to include one monster for experimentation, Sadako, and 6 monsters available for commission capture. Later, I added some additional content in subsequent versions.
What’s Been Updated?
BeastBound has received two updates. In the first update (1.01), there were only two changes: the music by Stevia Sphere was replaced with music from Pixabay (I felt this type of music was a better fit), and a money counter was added in the shop, which is quite useful for avoiding blind purchases.
In the second update (1.02), more significant changes were made. A bug was fixed that prevented you from retrying the neko girl's minigame if you failed once, an Android version was added, the labyrinth was updated for the PC version, and an image and video gallery was added to the game. I’ll discuss the challenges of creating an Android version later.
Minigame 1: Clicking
This minigame is used in the capture of Sadako and the succubus commission. It’s simple: you click, and your enemy’s energy decreases. I used a RenPy "button" that decreases the "energy" variable each time it’s clicked. As you can see, it’s the simplest of all the minigames.
Minigame 2: Moving a Bar to the Right Spot
This minigame is used in the capture of Sadako and the vampire commission. It was a bit more complex to create than the others. The minigame involves moving a slider to a position where it will reduce the vampire's energy. The slider affects a variable, and the game checks every 0.1 seconds if the slider is within a specific range to decrease the vampire's energy. Every 5 seconds, another timer randomly changes the values that define the correct range. Here’s a rough idea of the code:
Python:
screen juego2():
frame xalign 0.9 yalign 0.1 xsize 1000:
vbox:
text "Slide the bar to the point where it drains [enemy]'s energy."
bar value VariableValue("sinc", 100) style "slider" xalign 0.5 xsize 990
# Timer to drain energy if sinc is in the correct range
timer 0.1 repeat True action If(sinc >= sinc_baja and sinc <= sinc_alta, SetVariable("vida", vida - mj2))
# Timer to update sinc_baja and sinc_alta every 10 seconds
timer 5.0 repeat True action [SetVariable("sinc_baja", renpy.random.randint(1, 90)), SetVariable("sinc_alta", sinc_baja + 10)]
This was the last minigame I made, but it’s not as complex as it might initially seem. It’s used in the capture of the pharaoh’s spirit and involves guiding your mouse through a labyrinth without touching the walls to win. The setup is simple: two imagebuttons with “focus_mask True” and “hovered” properties. The first ensures that only non-transparent parts of the imagebutton react, while the second triggers an action when the mouse hovers over it. The minigame includes three images: a background for the labyrinth, an imagebutton for the walls (which sends you to a defeat screen if touched), and an imagebutton for the goal (which leads to a victory screen).
In update 1.02, the labyrinth was made slightly more challenging, and question marks were added. If you touch these question marks, a variable is triggered, and at the victory screen, you are rewarded randomly based on how many you collected.
Minigame 4: Find the Haunted Furniture
This minigame is straightforward. Each time you play, a variable randomly determines which piece of furniture is haunted (e.g., if the variable equals 2, the bathtub is haunted; if it’s 4, the sink is haunted, and so on). The game checks which furniture is haunted and places an imagebutton there that leads to the victory screen, while the others lead to a defeat screen.
Minigame 5: Slow Clicking
This is similar to the first minigame, but with a slight twist. Now, when you click, the neko girl’s energy decreases, but a “rudeness” meter increases. The meter gradually decreases over time. If it maxes out, you lose. Again, a timer checks every 0.1 seconds to decrease the rudeness variable and ensure that no variable reaches its maximum or minimum.
There’s no section for the sixth minigame because it’s purely dialogue-based. I wanted to highlight RenPy’s strengths and give players some choices that determine the minigame’s outcome. It’s quite simple.
Problem 1: Translation
Translation was the biggest issue that took up most of my time. I write my games in Spanish first because it’s my native language and it’s easier for me to write a story that way. Plus, it bothers me when games are available in every language except Spanish ;-;
I used ChatGPT 4 for the translations. Even though I used an AI, I still had to ensure everything was correct, so I spent more time playing in English than in Spanish. The problem I encountered, and haven’t solved yet (if anyone has a solution, I’d appreciate it), is that RenPy doesn’t provide direct translation for screens unless you put the screens in the script that says “screens.” The problem is that I’m too stubborn and like to organize things my way... So, yes, I spent at least an hour or two manually searching for the lines to translate in the different screens. Since the game is almost entirely based on screens, you can imagine the amount of work this required. In future updates, I’ll likely place the screens in the proper script to avoid this hassle.
Problem 2: The Game’s Interface
Initially, I wanted to create a very visual game full of buttons and such, but then I remembered how bad I am at drawing. On top of that, I had never created an interface for a game before, so I decided to give up on that idea. Essentially, the entire interface consists of text buttons based on RenPy’s default GUI. Fortunately, I managed to create a decent main menu where you can choose whether to go to the shop, go on a capture mission, or experiment by clicking on the various pieces of furniture in the room. It’s nothing fancy, but I’m pleased with the result. This was achieved in Koikatsu by taking screenshots with a transparent background. I first created the entire scene and then hid all the furniture except one to capture the transparent screenshot.
Problem 3: The Game’s Identity
The game is short, of course, but I’m not entirely sure what genre it belongs to. While you have to manage your energy and money daily, there’s also a part that involves minigames, coexisting with dialogues. I suppose the game’s identity will develop further with each update, but for now, I’m not sure what genre to attribute to the game or what the overall goal is beyond having fun. Since it was made in RenPy and has a slight narrative component, which isn’t fully fleshed out yet but will be updated, I decided to label it as a “Visual Novel.” But is it really a visual novel? I mean, it doesn’t have an ending, and the choices don’t lead you down different paths, just to winning the minigames... This is a problem I haven’t figured out how to resolve yet.
Problem 4: The Android Port
From the beginning, I wanted to create an Android version. Before I had a good computer for gaming, I played a lot of games on my phone (I also had a PlayStation, but let’s be honest, the game selection is more limited than on a PC). So, I understand that many people can only play games on a mobile device, which made this a priority for me. I encountered three main problems: the labyrinth minigame, the interface, and the dialogues.
First, the labyrinth minigame doesn’t make sense on mobile devices since there’s no mouse to navigate the labyrinth, completely breaking the minigame’s logic. I had to completely redesign the game for mobile devices. The game detects if you’re playing on a mobile device or
another platform and changes the minigame accordingly. Now, the minigame involves navigating the labyrinth through a series of choices, allowing you to move to question marks to gain extra items or risk losing. Occasionally, a condition appears that you must meet, or it changes the labyrinth’s rules.
The interface often didn’t fit on mobile screens, so I had to make it smaller or split it into two in some cases. This is an issue because now I have to test the game on mobile devices every time I update it to ensure all the buttons are in the right place, although from now on, I’ll design everything with Android in mind as well.
The dialogue problem is minor. In many instances, you’re told to right-click or do similar actions, which need to be adapted for mobile controls.
Fortunately, RenPy makes it relatively easy to port your game to mobile devices, but designing a game for mobile does limit your possibilities.
Future Plans for BeastBound
The plan is fairly obvious: add more monsters to capture, expand the story, and include more monsters to experiment with. In the next update, I’d like to add events that trigger when you reach certain milestones, such as a certain level of reputation or affection with a monster. I also have some ideas I’m excited about for the future, but I’ll keep them as a surprise for now.
Unfortunately (or fortunately), I’m starting another year of university, so I’ll have less time to update the game. Still, I’m really looking forward to dedicating some time to updating it whenever I can.
I just hope you enjoy the game and have some fun with it. If you have any suggestions or anything you’d like to mention about the game, feel free to leave a comment. Thanks so much for reading all of this!
P.S. I hope my explanations were clear because I’m not the best at that XD