Devlog #11 - Why Are You Yellin' At Me?
Hi, everyone! This Devlog is another sort of technical one, where I'll be explaining how the interjection/shout animation works. But if that isn't your cup of tea, don't worry- there's also some more information about the in-development fourth case, too!
When it Comes Time to Yell...
The Shout animations are a really fun part of developing One Thousand Acts of Decency, for me. They tend to be pretty dynamic compared to a lot of the moment-to-moment gameplay, and they allow the characters to interrupt one another, making for a more intense-feeling debate. Ace Attorney and Danganronpa (two of the biggest inspirations for OTAoD) both have somewhat similar elements, and I felt like those visual elements had a lot of potential to be turned into something new and (hopefully) exciting.
If you've read my previous Devlog, you'll know what I mean when I say that these can be spawned in with the script,
<shout=x>
where x is the index of the character whose shout animation should be played. As an example, let's take a look at how Jerry's animation (index 5) comes together.
Here's the sprite for Jerry's shout animation- a square image cropped at the bottom right. The sprite is used in such a way in-game where you can't ever see that the drawing is "cut off" on the bottom and right edges. All the character sprites use the same resolution, though the scope of them varies (for instance, Rosello's shout sprite has his torso and arm visible, whereas Jerry and Chive's are more 'zoomed in' on their face.)

These three Components are the key for the shout animations- the Animator, the Audio Source, and the Destroy After Time script I wrote. The Animator handles the actual animation (of course,) and I'll get into that later. The Audio Source is similarly straightforward- it plays the character's interject/shout sound as soon as the shout prefab spawns in. The Destroy After Time script does exactly what you'd expect- it wats for a predetermined time (in this case, five seconds,) and then despawns itself. Since the animation and sound will be finished playing within five seconds, you won't notice the moment it's removed from the game world.
Now, the cool, scrolling background. This one uses Sprite Masks to make it work. Basically, a Sprite Mask tells a Sprite Renderer to only draw the pixels that correspond with where the mask is drawn. (You can also do the opposite, but that's not relevant here.) Anyway, this scrolling, tiled pattern is used for the animation in conjunction with the mask to get a really cool scrolling effect in a triangular shape.


Drawn next are a few more things- two black lines on either edge of the orange background, and the character sprite.
Next, the text is added. This depends on the character, but I usually try to keep them short and punchy while remaining true to the essence of the character. This is also where I occasionally get to work some wordplay in, such as a certain epicurean saying "you'll eat those words," or in this case, a mortician yelling "you're dead wrong!"
The text is animated in a way that I think looks pretty cool. As the text remains on screen, the character spacing (as in, the gap between the end of one letter and the start of the next) increases. This is actually a super simple operation that can be controlled through Unity's TextMeshPro's characterSpacing attribute. And it can be modified by the Animator's animation too, which is very useful. Here's the character spacing effect isolated.

Now, the final part is the animation itself. As you can see below, the animation begins the animation in the bottom-right corner of the screen (that box with the blue circles at the corner? In the gif below, they correspond with the edges of the screen at a 16:9 ratio.) From there, the triangle moves to the top left corner, with the character slowly moving inward and the text flying in from the bottom left and fading out.
The scrolling background is handled in a separate script, which is why it isn't visible in Unity's animation preview. The reason for this is that I wanted to have the background loop infinitely based on a provided width value (in case I wanted to experiment with different background,) which can't really be done with the animation component.
And finally, we have the shout animation! Perfect for when some pesky deer is trying to debunk your claims with his silly little clues.
Chive's four shout animations use the same animation and everything, actually. All that needed to be done is for the horizontal scale of the game object to negative one. The text had to have its own scale adjusted to negative one as well, as otherwise, it'd be backwards. The background color for Chive is the same image too, but with a blue tint. Because blue and orange make green, I guess.
The Lost Film, Golden Giant

While it isn't what initially drove Chive and Oscar to the Sundown Theater, the unveiling of a once-lost film becomes a key part of the ensuing murder investigation. Golden Giant, a movie all the way from Japan, had been lost for the past sixty years. Somehow, it made its way to the Sundown Theater of Cleveland, Ohio, of all places. As for how it got there... No one really knows- an anonymous donor gifted it to the theater's lost media collection as an act of preservation, shrouding the sudden rediscovery of the film in mystery. Nevertheless, the manager of the theater was more than happy to put it on display (along with the production material and props that were donated) for free in the name of good P.R.
Golden Giant follows the story of a ragtag group of teenagers who enlist the help of a legendary golem to defend their city from a deity known only as Orous. Director Okawa Matsuo drew inspiration from his time as an anthropologist, modeling Orous after a real mythological figure, one that's been hotly contested in archaeological circles. Supposedly, this god is reincarnated every sixty years, though everyone knows it's just a legend, right? Even as the circumstances behind the present day murder get stranger and stranger, Chive is certain that a mortal has to be responsible- anything else would be foolish to even consider, wouldn't it?
Those white posters? They're going to have actual designs in the final release, and I can't wait for you all to see what I have planned for those!
Anyway, that's all for now! I hope you enjoyed reading, and I hope you're as excited for case 4 as I am! Additionally, this topic was voted on by members of the One Thousand Acts of Decency Discord server! if you want to get more updates about my VN, as well as get to vote on the next Devlog topic, click on the link below and join!
Get One Thousand Acts of Decency
One Thousand Acts of Decency
Trapped in a Dome with eight hours to catch a killer
Status | In development |
Author | domedev |
Genre | Visual Novel, Puzzle |
Tags | 3D, Crime, Furry, Mystery, Text based, Unity |
Languages | English |
More posts
- Devlog #12 - All About Rosello8 days ago
- Devlog #10 - How OTAOD Parses its Script89 days ago
- Devlog #9 - Now With a 10x Seating Capacity!Feb 17, 2025
- Devlog #8 - The Curious Case of Case FourFeb 02, 2025
- Celebrating One Year of One Thousand Acts of Decency!Jan 17, 2025
- Case 3 and One Thousand Acts of Decency Mobile are Here!Dec 28, 2024
- Devlog #7 - The Home Stretch + A Big AnnouncementDec 17, 2024
- Devlog #6 - Case Three ProgressNov 19, 2024
Leave a comment
Log in with itch.io to leave a comment.