Polishing the Dog House! Woofice Chair’s Juice and Polish!

Polishing the Dog House! Woofice Chair’s Juice and Polish! Post Banner

Whenever we participate in a game jam, one of the core aspects people always compliment us on is on polish. With the release of Woofice Chair! those compliments came back around and we are very proud of receiving them again!

But what is this dark magical art that people call polish? And what about juice? While both are regarded as something to highlight in jam games, we believe polish is deeply connected with gameplay. Polish not only helps give a game a more complete-feel, but also helps making gameplay more satisfying to the player!

In our previous Ludum Dare entries, we always tried to force polish. This was done by adding in menus, pause screens and tweening as much as possible. While those helped the games feel more like a complete package, in hindsight, we feel the time spent on those could have applied more to the gameplay itself. With our latest entry, all of that focus with polish was put into the core game!

Through this development insight, I’d like to go over some tricks that we used in Woofice Chair! to make the gameplay feel extra good. While polish varies from game to game, there are common tricks that can be applied in all games! I hope some of these work as reference for what you can do with your own game’s polish!

Cameras! Screenshake! Freeze Frames! 🎥

In any article or video that you see about juice, camera smoothing and screenshaking are always mentioned! Being the window of the player into the game, it’s one of the easiest things to manipulate to help represent something is happening and add extra satisfaction to an action in it.

With Woofice Chair! we decided to experiment using the Cinemachine package from Unity to help facilitate camera actions. However, any of these ideas are applicable on their own using the default cameras in whatever game engine you’re using!

Camera Smoothing!

One of the first tricks we applied with Woofice Chair! was making the camera’s movement smoothed-out. Having the camera be constantly snapped to the player works, but doesn’t translate the concept of acceleration properly! And our game is all about that!

Using Cinemachine, we can add a bit of lookahead and smoothing when following the camera’s target. This makes it so the camera has some delay in its movement before catching-up with the player, improving the sense of acceleration. You can also achieve this same effect by code by using a Lerp.

Screenshaking!

Another major trick with cameras is screenshaking, used when there’s a ‘violent’ motion in-game. In Woofice Chair!, we use screenshaking whenever something causes the dog’s chair to suddenly lose speed. These include knocking into walls and obstacles or being hit by an enemy. 

Implementing screenshake is not an arduous task either. You create a function that changes the camera’s X and Y position randomly relative to the player over some frames. Then you can just call that function whenever an action benefits from screenshaking! Cinemachine already comes with a set of Noise properties that achieve the same effect and can be controlled by code. 

Something to note is that, with our non-game-jam releases, we make sure to make screenshake togglable in the settings. Even when balanced to not be too distracting, screenshake can cause nausea to some, and a toggle to turn it off is a nice accessibility inclusion.

Freeze-Frames!

Another method we employ with the camera are freeze-frames. Freeze-frames completely pause the game for a few frames to bring extra impact to an action. In Woofice Chair!, when you knock-out an enemy, the game will pause for a few frames, enhancing the satisfaction of doing a knock-out. It also gives you time to see the knocked-out sprite of an enemy before it’s flung off-stage.

You should use Freeze Frames sparingly! In our game, we added a short cooldown after each set of freeze-frames before they can happen again (less than half a second). This is to make sure if you defeat enemies in quick succession, it feels like a deliberate effect. Repeating the effect too often or making it too long can make it seem like the game has performance issues.

There are many more tricks when it comes to camera work, including screen flashing, zooming the camera in and out depending on the situation, and more!

Giving Players Feedback! ✨

While developing Woofice Chair!, we wanted to make sure all actions that the player takes felt tight and responsive. Controlling the chair should feel satisfying and hitting the enemies even more so! While the camera techniques go a long way, there are more ways to give the player feedback from their actions!

By using a combination of assorted effects, shaders and animations, you can make otherwise static instances and effects come to life!

Input Feedback!

One of the simplest ways we give feedback to the player is by displaying a sprite over the office chair whenever the player presses space to accelerate. This sprite shows some speed lines with animation that imply the player is rotating the chair. By giving a player a visual indication of their inputs, you gratify them with immediate confirmation!

Not only do you get the speed lines, but the rotation animation of the chair also loops faster with the acceleration. We also added Trail Renders to the wheels of the chair that increase their distance the faster the player is going. These, together with dust particles that appear whenever the player does a sharp-turns, give extra satisfaction to the player controlling it.

By mix-matching types of sprites, particles and other features that your game engine has, you can improve the satisfaction of the player doing their inputs! And that applies to the UI too, with buttons changing colours and sizes when hovered or clicked over! Make sure the player really likes pressing those keys and buttons!

Flashing!

We made it so certain objects would flash here and there to call quick attention to them! Sharp changes in sprite colours and tints are an easy way to give feedback to the player that an action has been performed.

These are done when there’s a successful hit against an enemy, or whenever the player gets hit! In Woofice Chair! we use sprite flashing when the player hits a buff-animal, causing them to flash white for a few frames, confirming a hit. If the player gets hit, its sprite flashes a bit between opaque and transparent indicating that they can’t speed-up.

It’s important to note though, If you’re going to flash the whole screen, consider that it can actually cause discomfort to players. If you must add them, use them sparingly or even consider adding accessibility options to disable said feature!

Depending on your engine, these flashing effects can be straightforward to setup! For example, in Unity, if you’re using a render pipeline, you can set up a shader graph shader for different types of tinting effects. In our case, we followed the tutorial by Code Monkeys to replicate the shader that we use! We also mix these effects up with some AnimationCurve and Gradient to setup the rest of the effect.

Outlines and Tweenings!

When an enemy is defeated in our game, they’ll drop a weapon or a score biscuit of various types and shapes. For these, we use a white outline to denote their status as a pick-up. With this outline, these pick-ups stick out from the background, and also from both player and enemy.

By pairing the outline with a bouncing, positive tweening animation, these pick-ups immediately attract the attention of the player. They’re always there for whenever the player feels like swapping weapons and to remind them to pick-up biscuits!

Animations, as mentioned previously, are one of the easiest ways to add juice to a game! Through the animation systems for each engine, or through a dedicated tweening library, it’s easy to go an extra mile and add a bit of tweening to some more static elements! Make sure those pick-ups really stand out!

Sound Design goes a long way! 📢

For this Ludum Dare, we chose to use FMod as an audio middleware! If you’re unaware of FMod, it is a special audio engine that uses an external studio editor to setup audio events, and plugs it on top of both Unity, Unreal or direct-code integrations.

The benefit of using a middleware, compared to the built-in audio engine, is that you have more control over several audio aspects of the game! With FMod, you can use parameters to dynamically tweak aspects of the game’s audio work in a more flexible way, allowing for more audio polish. If you’re going to use an audio middleware like this during a game jam, you’ll most definitely need a dedicated audio team member!

One thing to note though is, if you want to use FMod in your game jam games, you need to make them non-commercial (including donationware)! If you want to get revenue from your game, you’ll have to register your game on their portal, with max of one game a year for free.

Dynamic Music!

If there’s one thing with audio that’s always been a hot-topic and an aspect players appreciate immensely, it’s dynamic audio! Dynamic audio works by either crossfading tracks, or adding in instrument layers depending on the actions that the player is doing in-game. It creates an engagement loop, where the player wants to keep a combo or an action going to get a more satisfying beat! 👏

For Woofice Chair! , we tied the rotation speed of the chair to assorted layers of instruments that make up our main music track. The faster the player is spinning, the more happy and instrumental the track gets. The moment you get into lower speeds, or crash the chair, the music lowers until silence. Also, there are ambient sounds to really sell-in on that park atmosphere.

Remember that dynamic audio needs to be thought ahead of time, and settled in with the audio team member as soon as possible! If a music composition is planned ahead of time to have layering instruments, its easier to break it into dynamic pieces!

Sound Variation!

Another audio aspect we are particularly proud of is the weapon hit sounds! In fact, we could argue some like the meat-bone sound very… juicy! Terrible puns aside, the weapons sounds have been one of the aspects people have praised the most regarding the sound design of the game!

We broke the repetitiveness of weapon hit sounds by having a different sound for each weapon. A newspaper doesn’t sound the same as a blunt bat! And to go one step further, each weapon also has three to five sound variations paired with small pitch variations! That way we assure they always sound new when you first hear them!

By using slight variations in sound, even if they’re just pitches, you can make them feel a lot less repetitive! While we used FMod to set this randomness up, you can use a script together with an Audio Source. From there, you randomly change the pitch and pick a sound to play whenever you want varied sounds!

Themed Audio!

Picking the correct sounds for the right project is a very important aspect of audio design! In a rush and without a dedicated audio person you can always settle for the first sounds you find. Although, if you do have the possibility to spend more time researching audio, then the more theme appropriate your sounds are to your game, the more impact the audio will have!

The most notable example is, when you pick up one of the aforementioned pick-ups in the game. When you equip any of the weapons, you’re rewarded with a very satisfying dog bark! Might seem like a minor detail, but since you’re a dog riding a chair, it feels appropriate! Samewise, when you are hit by an enemy, you hear dog whimpers. It’s saddening, so protect the dog at all costs!

Depending on the game that you’re working on, different sounds will be needed for different situations. If you’re doing a game involving puzzles, feedback whenever you interact with the game’s mechanics will feel like extra juice to the player. The same can be said regarding any genre’s game. And there are always multiple ways to go around getting sounds, such as using BFXR for a retro-themed game!

The Dog is in the Details! 🐶

One thing that we’ve realized as we’ve participated in game jams, is that a lot of the small details together make the most impact. While the polish techniques mentioned over the past techniques make an impact, these are the things that really give that warm feeling of “having paid attention to detail”!

Executable Icons!

One thing that is immediately noticeable before you even boot up the game is the executable icon. If you’re using a game engine like Unity, swapping the executable icon is a matter of assigning it an asset in the build settings.

While most leave it as the default during game jams, it’s pleasant to see changed up during a jam! If you build a set of folders for rating like our team does, it can be a very easy way for people to identify your game! Plus, it’s likely the first thing they’ll see of your game, so make that first impression count!

Pick on any asset you’ve done for the game, assign the sprite, and you’re already sticking out from the crowd!

Cursors!

Another small detail that hits home for players and is always a pleasant surprise is having a custom cursor! If your game uses the mouse for the menus as the main input then it’s nice to have something that turns that boring default cursor into something more thematic! In the case of Woofice Chair! It’s a clear as day dog paw, complete with a comfy pointing finger!

There are different ways to implement cursor images depending on the engine that you’re using and your preferred methodology. Engines like Unity also allow you to specify a hardware cursor, where a texture pretty much replaces the default OS cursor while still running at the screen refresh rate. 

However, if you want more control, you can make a software cursor. That way, the cursor will be an image in-game and updates at the refresh rate of the game. The benefit of a software cursor is that you have more control over it. For example, you can make it any size you’d like, rather than be restricted to 64×64.

The Game Page!

And finally you can also polish your actual game page! Yes, the place that you upload your game to! While previous advice aims at in-game content, the game page also helps you make a very good first impression on the player! Since this article is meant for game jam games, we’re not talking about Steam pages or any commercial pages, but rather Itch.io’s!

If you’ve only uploaded a few jam games to Itch.io until this time, chances are that the default page editor will be enough! Change a few fonts, give it a nice background, and even spice the description with a few custom header images! Ta-da! You have a nice looking page!

If you want to go an extra mile, you can contact itch.io staff to have CSS customization enabled. This essentially unlocks any web customization rule that you’d like to use freely with Itch.io’s existing layout! You can change individual header fonts, add hovers, custom cursors, etc. and really strive to make an impact! We advise that you stick to the customization guide, to assure that you don’t break other features of the page while at it.

Finally, while Ludum Dare doesn’t allow much for customization within the site, you can still use some tricks you’ve used for the itch.io page here! For Woofice Chair!, we used paw-print separators to divide different sections about the game. We also used the same custom headers we made for the itch.io page, and put them to use there! You can also add some section-cap GIFs between sections to really attract people to your game too!

The game page can also be worked on past the submission hour of the jam! You always have the chance to come back and polish it up with new screenshots or touch-ups!

Wrapping it up with a shine! 🎉

And that’s a wrap up! Hopefully this development insight has given you ideas about how you can add some polish and juice to your game. All of these came from the way we did them in Woofice Chair! Their implementation always varies from the type of project, theme and controls!

One thing is clear though, is that there are a ton of different ways to go about doing it! While it might be hard to find the time to fit this sort of detail into a project during the time-frame of a game jam, they really go a long way striking an extra smile on players and jammers faces! If you ever find the time in-between tasks to add that lil’bit of extra polish and juice, I dare say go for it!

Discord Banner

On behalf of our team at Whales And Games, if you ever want to talk about game development or the ways you do polish your own games, you can hang out with us at our Discord server!

We hope that you had a fantastic time during this Ludum Dare! While we still don’t know if we will be around to participate next time, we certainly look forward to! See you next time and cheers! 🐳

Working as a pack! Woofice Chair’s teamwork!

Working as a pack! Woofice Chair's teamwork!

Welcome to my pep talk, fellow jammers. I’m Moski, Whales And Games’ lead artist and I made the artwork for our team’s park protecting game Woofice Chair! 

For this Ludum Dare, we assembled a team of four. Two programmers, from Portugal and Brazil, an audio composer currently in the UK, and me, the graphics artist, from Mexico. For three days, we poured our hearts, soul and sweat into making what started as an inside joke about dogs and office chairs into an actual game. That meant, for me, three days of constant work and arm pressure!

Woffice Chair Tittle Screen

But I’ve got a confession to make regarding how I made art for the game. I did not touch the game until a day after it was finished and submitted. Yet, I worked with the team fluidly, like a well oiled and battle-tested machine. This comes as a result of a long time of mutual understanding, following certain guidelines and experience.

I want to make this quick, simple and digestible, so let’s quickly go through some things that have helped my team iterate and implement things fast enough. Whatever your role is in the team, this may be of use to you, and it can help pack and polish as much as possible during a jam!

Woofice Chair Gameplay Screenshot

Teamwork boils down to Communication! 💬

If you’re in a team, you need active communication between each other. It may sound obvious, but you may want to take a moment to think if you’re in the same channel as your teammates! Talk about when to cooperate and when to coordinate!

Our team is all over the world and are busy or sleeping at different times, meaning we need to know what everyone needs from each other as early as possible. Sure, you’ll talk about what the game will be about during the first hours, but the artist’s interpretation of the assets can be very different from the programmer’s plans.

Teamwork for coming up with a Concept Title in Affinity Photo

It’s important, then, to only start actually working in the production of the game when there’s a proper agreement of what’s actually being done. Otherwise, you can spend a lot of time making assets or concepts that won’t get used or don’t match the rest of the team’s vision.

Our team tends to make very quick ugly doodles to demonstrate what we’re brainstorming. This tends to include perspective, mock up of characters, gameplay screens, mechanics, and so on. These help immediately establish a vision across the team and which leads to my next point.

Early Concept Sketches for Woofice Chair

Total trust! Delegate and have faith! 🐕

Once everyone is on the same page, stay communicated, and share files around as they’re needed. In my role as the artist, my first assets tend to be placeholders for the bare minimum necessary that would allow the programmers to experiment with mechanics and playing area of the game. Simultaneously, they give me feedback on the things that are needed, like the resolution of the assets, the camera size of the area I’ll be drawing, and so on!

Early Mock-Up Area for Woofice Chair

But when this inevitably happens and people need to go to work or bed, those that are still available should still have the tools necessary to continue working. Once we had the basic assets, I had the opportunity to work on more dogs, more weapons, more enemies, make changes to the map and even make some UI with little to no input from the other members. Since drawing was my sole role, it meant three days of doing just that.

However, remember that you’re working with a team. Mind other people’s needs and skills, and adjust accordingly. Preferably, make some rules and protocols!

Park Rules in Clip Studio Paint

Some mild organization goes a long way in teamwork! 🗃️

There’s really very little time to work with during a Ludum Dare. You should use the opportunity to develop your skills and learn methodologies! With some agreements about file names, adjusting assets to constant sizes and organization, you can save on time that would otherwise be used in tweaking, fixing and finding files!

Squirrel enemy in Clip Studio Paint

Our team was able to easily add the assets into the game and tweak them without issues because of our consistency and methodologies. Most files were properly named, organized and sent in batches. All the sprite sheets of the same category had the same size for the panels and canvas. We knew what UI assets we’d need since we’ve done this before. We’ve found out that we can do a lot more when we have basic discipline.

This discipline is learned with time and practice! As you participate in more jams, you’ll find better ways to organize your archives, make folders, share them with your group, and adapt to whichever project is pursued. Talk constantly with your team, learn what works and what doesn’t, and you’ll soon find out that you’re doing plenty of the tasks without even thinking about them!

Grid of Assets in Clip Studio Paint

Working multiple times with the same team has its merits! 👷‍♂️

There are merits to learning to adapt to different teams. Experimenting is always a good thing! But knowing the people you’re working with is also a fantastic experience and can go long ways! This goes beyond getting along, having fun or synergy. Actually knowing how others work already helps a lot with avoiding common team-struggles, and helps push the project even further. 

Whalechan and Polite in Woofice Chair

For example, I know what my team is looking for when they need animations, or when they need particles, elements for UI, the project resolution, and many more. In the same vein, they know the kind of assets I can make, how I can deliver them, how to ask me for tweaks in small mistakes and the like. I didn’t need to play the game to see if my assets would work because I know what to send them to experiment with. In bigger projects, I may need to have a direct input on how things are being used, but on jam games, this connection with the team works great!

But one may think, a bigger team should be able to make a bigger project, right? Well, not necessarily.

Woofice Chair Logo in Clip Studio Paint

Too-many-cooks syndrome! 🍳

Our team of four has done wonders. I’ve even experimented with another short team at one point and had a great time! But the one time I joined a larger team, things didn’t go so well.

Communication is very important in teamwork, but it’s more difficult to manage on larger teams! I thought that a big number of programmers with plenty of artists would result in a lot of artwork being made and implemented. However, there were clashing styles, mixed ideas and people went missing for long periods. 

I’d recommend being practical and sticking to a smaller team for jam games! While a big group can make a lot more content independently, when put together, there can be a lot of miscommunication, overlapping and it becomes harder to control scope. To some, working with bigger teams may be fantastic, but I would suggest sticking to smaller ones for your first few jams!

Fun Weapons in Clip Studio Paint

Wrapping this post up! 💪

This was likely the jam where I had the best balance of quality and quantity of assets, and it was only possible because of fantastic teamwork, mild organization and methodologies!

Woofice Chair Screenshot

I believe that these things I’ve mentioned before can do wonders to you regardless of your role in the team. Not everyone needs to be doing everything and constantly supervising at all times. There may be moments when “all hands-on deck” may be necessary, but constantly needing everyone’s input will reduce everyone’s independence!

While this post was more about team experience rather than my usual actual art insight, I’ve posted in the past about artwork design before! Consider giving them a look!

Join our Discord!

Now that it’s all said and done, in behalf of my team, Whales And Games, I would like to invite you to hang out with us at our Discord server! Come share your game, your experiences, and maybe prepare for the spookiest time of the year! Cheers! 🐳

Loop, spin and bark on Woofice Chair!

Come and loop with man’s best friends! Whales and Games introduces you to the magnificent Woofice Chair!

Welcome to Goodboi Park! A dog haven so good that it’ll make the best friend of man bark for the park! In fact, it’s so good that it even attracts the wrong audience. I swear, those body-builders really are a pain in the tail.

But the park is not without its defenders! Hoop, Lupe and Carl are up to the challenge! And since Goodboi Park so happens to be next to an office chair disposal, they’re not without mighty chariots!

So pick a pal, get on the chair, and spin faster than a dog can chase its tail! Throw your very buff enemies for a loop!

Our team had a great time making this game happen. As we always like to do during Ludum Dare season, Woofice Chair! is playable in Windows/Mac/Linux and Web, so you can pretty much play it anyway! Make sure to take it for a spin!

For those of you that participated in Ludum Dare, and would like to leave a comment or rate the game, you can check our game’s page there as well!

If you wanna hang out, chat or share your games, be sure to give our Discord server a visit! Cheers! 🐳


The city is in dire need of saving!

The city is in dire need of saving! Our entry’s first screenshot sports this city’s brandest new handsome and brightest hero ready to save those in dire need! I wonder if there’s anyway we can come to monetize this man… 

This is only some very early animation and system progress for our Ludum Dare entry. Just like it was the case with Jazzy Beats, there’s still a lot we need to get down before you can fully grasp how “Sacrifices must be made” makes into the theme of this game, but we promise we won’t keep it a secret much longer! ?

Want a place to chill-out while working on your entry? We’d love to see some of the progress of your own games over at our team’s Discord server!