Dev Diary: Bugs, Explained!
Hi everyone, Anna here!
Today’s post is about something that represents a lot of our everyday “background” work on Paralives. Let’s talk about a hidden part of the game development iceberg: bugs! 🐛 Note that this Patreon post is for Patrons only so please don’t share it, thank you!
Let me reassure you right away: even if bugs might seem scary, they’re a normal part of the development process, especially at this stage, since we’re making core systems and adding features one by one. When we do our planning, whether it is for a two-weeks sprint or a year's worth of development, we always account for testing and debugging the features we will add during that time. When we add something to the code, even if we carefully think about it ahead (in the form of a design document), it is really hard (or should I say impossible) to have thought of every possible problem in advance and run it bug free the first time.
Bugs can be frustrating. Sometimes, supposed minor bugs take a lot of development time, but they can be satisfying to catch and fix too, like a puzzle! It makes me think a bit about being a physician looking for a diagnosis. Sometimes the symptoms you see are enough to make a diagnosis and start a successful treatment, but sometimes you might not have enough information and need to design the right exams to find the disease. Other times the treatment might actually cause more damage to the patient because of secondary effects and you have to also fix that or find another ! (It’s very common in programming that fixing one bug leads to more bugs…) In any case, the vast majority of our code usually doesn’t get sick, but curing the small portion of the ones who do can take a little while. (The metaphor is now over, sorry about that).
Some of you who are on the Ancient, Legend and Hero Tiers on our Patreon might have already had the chance to see some quite cursed snapshot of bugs or other oddities on our #developer-posts Discord channel. We also shared a few of the ones from our latest Paramaker focused marathon here.
Today, I wanted to share in-depth explanations behind some more bugs we encountered recently, in collaboration with Alex and Jérémie.
Procedural Animation Bug
Marvin sprained his back by flushing the toilets… But he seems better now!
This bug happened while I was testing a procedural adaptation of the “Flush toilet” animation. As you may already know, the slider that enables players to customize their character’s height is quite a challenge animation wise. We need some little help from the code to adjust Alice’s animation for the character to reach the objects or Para they’re interacting with (if you want to know more about that, I wrote about it in my “week with a dev” thread that you can read here).
Marvin proceeding to flush the toilet without any side effects
As procedural adaptations are animation-specific (i.e. the code needed is different on a case-by-case basis, so reaching the flush on a toilet doesn't need the same adaptations as reaching the chair when sitting for example), the right ones have to be loaded every time the character plays a new animation. In that case, the part of the code that made the previous procedural adaptations disappear didn’t work! Before the bug in the first animated GIF above happened, Marvin was actually flushing the toilet, so his hands needed a little help to reach the correct position of the flush since he is taller than our average Para. However, this stayed activated afterwards when I ordered him to walk, but since there was no flush, he tried to reach a position at the origin of the character, on the floor!
Skin Texture Bug
No skin? No problem! (Some problems)
Jérémie here! This bug was due to the way we calculate which skin texture to use on a character based on their fat and muscle sliders - if your Para is very fat or very muscular, their skin will have different lines and details. It was the kind of bug that is easy to pinpoint, but pretty tricky to fix. Because we have a bunch of different skins with specific rules, Étienne actually needed to create a small tool to visualize what texture was visible at specific values of fat/muscle.
The X-Axis is the muscle slider and the Y-Axis is the fat slider, all colors represent the different skin textures that can be used for your characters depending on the fat and muscle slider values. Thanks Étienne!
Using this, we could figure out that certain ranges weren’t covered by any of our skins and we tweaked our data to properly address that issue. There was a little bit of extra code to add, but this was mostly detective work 🕵️
Body Deformation Bug
When the music is so good that your body can’t handle it anymore.
Hi! Alex here to explain this bug. When a character is animated, in this case, playing the dance animation, every bone of its body is placed at a specific position, scale and rotation depending on the current play time of the animation. However, some bones are also moved, scaled or rotated depending on how the player customizes their character in the Paramaker. For instance, when you broaden the shoulders in the Paramaker, the shoulder bones are moved away from the body by a few centimeters:
Changing the shoulder’s width in the Paramaker offsets the shoulder bones.
At any given time, when playing an animation on a character, the animation system sets the position, scale and rotation of every bone but then, the system that changes the size of the different body parts applies an offset, like moving the shoulder bone a bit for instance. But if an animation stops playing for any reason and no other character animation takes it place, the shoulder bone offset will be applied at every moment, accumulating and becoming bigger and bigger. That’s why you can see Sebastian’s shoulder quickly moving away from his body in the bug! A similar thing happens to every other part of the body as well.
The solution to this bug is to make sure that under no circumstances a character should be left without playing an animation. Usually, after the character is done performing an interaction like dancing for instance, we play the standing idle animation so everything goes well!
Of course, before releasing in early access (more info on early access here!), the game will be thoroughly tested so that you players encounter as few bugs as possible when playing the game!
I hope you enjoyed today’s journey into the dark side of programming!
I hope you have a great weekend!
Cheers,
🌞🍹
Anna
Comments (49)
When I code is very hard to predict how it will be my day: Sometimes everything works smoothly, but sometimes nothing works and I takes me one entire day just trying to understand a bug. I imagine how hard is to make a schedule so much time before launching a game or a program with so much more complexity.
the dancing bug was such a jumpscare lol
This was very informative. --- I felt really bad for Marvin <3. --- Not gonna lie, that deformation bug scared the **** out of me the first time looking. XD (Sebastian and Maggie were dancing into beast mode)
I've danced like that in my youth lol. By the way I wish to thank all of you for that beautiful card and signed as well. Other than bills I have not received a letter in ove 30 years. This will be cherished
Marvin's glitch reminded me of the prevalence of "chess arm" in TS2 - my poor Sims would wander around half the day sometimes with one of their arms curled up like they got a cramp from too much chess!
Oh wow I'm super excited to see all the different skin textures in action! 😍
Marvin walking like a noodle literally cracked me up
I know I say it basically in every comment under a Dev Diary post, but... I'm so thankful for how you take the time to explain how the game is made (...and fixed, in this case !).
I literally gasped at the animation of Maggie and Sebastian :O
Once Marvin's bug was explained it was actually pretty cool to see how the animations and para's height affect each other. Obviously it looked ridiculous but it's cool that the reaching animation was technically still working even at an extreme (and while he's walking). (Side note: anyone know how to get gifs to play in the patreon app? Very annoying to have to open in a browser)
Amazing post, I definitely learnt something new today! XD I gotta ask, though... Has there been any bug that caused any jump-scare effect on the team when it happened?? There are some really crazy bugs among the ones you've shared! X'D
The dance bug was as horrifying as it was hilarious!
Agreed!
This update is full of so many wonderful bits and pieces! My favorite has to be how Marvin's hand dangles LOL
Hehe! I rarely see someone walk with their arm like that in real life
Love reading about "behind the scenes"-stuff like this, very interesting and amusing to see some of the bugs. Hopefully it'll also help create some understanding about how tricky your work can be for those unfamiliar with game development. A question out of pure curiosity: do you all test new features after they've been implemented or only the programmers (you don't have a dedicated tester, right?) and do you do this per feature, per [x] features, at the end of a sprint...?
Thank you! After a programmer added a new feature, they have to test it thoroughly but sometimes, something can slip. A lot of people on the team try the new features so we report bugs when we encounter them. Our testing process is not super defined yet but we plan to hire a full time quality assurance specialist when we get a bit closer to the release to catch and fix as many bugs as we can.
I absolutely love seeing everything that goes wrong behind the scenes :) Both for the laughs (the dancing one may be one of my favorite bugs ever) and to see how hard everyone is working to make "simple" interactions happen.
Thank you!
When people complain about the time it takes to develop a game, they often don't take into account things like bugs, or how complex they can get. This was fascinating to read, and I thought my appreciation of the team couldn't get any higher. Awesome job!
Thank you! It's true that a lot of the different aspects of the development are not usually visible to the players and are a lot of work
"he game will be thoroughly tested so that you players encounter as few bugs as possible" Absolutely devastating, I want the most bug ridden horror show possible
Would be fun to have a cheat to activate all kinds of bugs haha!
Reading this was a fun ride. You guys do a lot of work! Thank you for the insight 😊
Thank you :D
Omg the dancing gif made me laugh way harder than I expected. Then reading the reasoning behind it... Wow. Can you imagine your bodily integrity relies on one thing, and its that you keep moving, or else it's all over. Amazing haha
Haha, yes, it's quite something! Reminds me of a movie where a bus had to keep moving at 50mph or more or else a bomb would be triggered (I don't remember the title of that movie)
I might have jumped a little when Sebastian and Maggie exploded, definitely wasn't expecting that! It was hilarious tho!!
One of my favorite bug among all the ones we had since the start of the development!
Fascinating. :-)
Thank you!
Posts about bugs are my favorite, it's sort of like the bloopers of TV shows.
True!
I have nothing to comment besides applauding your hard work. Keep it up guys!
Thank you!!
I have studied one year out of a three year bachelors degree in system development, and have learned to program a bit. I can say that I really enjoyed Anna's metaphor haha. Some bugs I've encountered really rely on such a small amount of code! Have a great weekend :)
Hehe, I really liked Anna's metaphor as well, it really feels like that
Maggie and Sebastian turning into eldritch horrors is absolutely hilarious. Thanks for that. Hope you guys are having a good week.
Hehe, it is! Thank you, have a great week and weekend as well!
What is UseMasculine in relationship with the toilet? Is it a technical term for "Have a Tinkle"? I have questions 😊🤣
Probably "use standing"
Really interesting post. Bonne Saint-Jean! 🎉⚜️
Merci!!
Poor Sebastian and Maggie just exploding xDDDD and hope Marvin's back is okay xDDD
Hehehe :P
How much time is usually spent on bug fixes? Sometimes they can be fun to solve and hilarity ensues, but if there's many it can be too much at times.
I'd say a few hours a week is usually dedicated to bug fixing so not too much!
A post a day early! Is June 24th a Canadian holiday? If so, enjoy the long weekend!
Yes! June 24th is Saint-Jean-Baptiste Day here in Quebec, Canada
