This isn’t really about my entry specifically or Ludum Dare, but I do use examples from my game. Hopefully this is an appropriate place to post this and manages to be informative! These are just some of the approaches I used to polishing my game (quickly xD). Let me know if you have questions, suggestions, want me to add anything, or disagree with anything I say hehe! Also sorry for how large the pictures are, it resizes them automatically
I haven’t updated the code really, so some of it is still pretty messy , but I cropped out a lot of the irrelevant
code or simplified things for the sake of some of the screenshots. If the screenshot is too small, right click it,
and click ‘open image in new window‘ or ‘open image in new tab’
-- Screen Shake (I didn’t do any screenshake haha) --
But screenshake can make so much difference in a game for real. Just don’t overdo it!
-- Easing --
This section will be have a lot of Unity specific examples, but other game engines usually have similar lerp functions. I’m just going to cover how I used some of these functions in different ways for my LD entry, but there's a lot more functions and even more ways to use them!
Unity has a lot of different ways to transition variables over time. The lerp functions all take 3 values: the Start Value, the Target Value, and the “Interpolant” (I just call it t).
t = 0: returns the Start Value
t = 1: returns the Target Value
t = .6f: returns the value 60% of the way from the Start Value to the End Value
(t will always be clamped between 0 and 1)
If something should be done over time, make sure to multiply your t value by Time.deltaTime to keep it framerate independent (so it doesn’t go faster for someone with a faster computer)
Let’s see some examples!
Mathf.Lerp()


Vector3.Lerp()

Quaternion.Lerp()

Color.Lerp()

Vector3.MoveTowards(current, target, speed)
Unlike the Lerp Functions, MoveTowards takes a speed value instead of a t value. It’s great for moving things towards a target at a constant speed (even if the target is moving!)
I only use MoveTowards() in my entry to move the player!

Animation Curves
Animations curves are great when you want more control or need more complex easing.
You will need to define a variable that will be used for your t value and a public AnimationCurve variable (or you can give it the [SerializeField] attribute and make it private)
Click on the animation curve box in the inspector and click the green line to add and move points.
Animations curves are clamped to the time values you define by default, but you can also set it to “Loop” or “Ping Pong”
I usually just set the time between 0 and 1 anyway and multiply the t value to make the animation faster or slower




-- Life --
Adding anything that moves helps bring life to the atmosphere. In my game, I used particle effects, Beepo bobs his head just vibing AF, Beepo and Meditation tree both blink, and Meditation Tree also follows you with his eyes a little bit. In one entry I saw, there were insects that flew around and birds that would fly away as you got near that I thought was pretty sweet. Don’t forget about character animations!
-- Particles --
I don’t have too much to say about particle effects, but one of my main thoughts is that particles should usually fade out. Either alpha should fade to zero or scale should (of course there’s exceptions!). A side note about color: sometimes blending between two colors can create an undesirable gray color. You can fix this by adding a third color in the middle (show below)


-- Texture --
Depending on the style of game, texture isn't always important, but in games where you are moving in large hallways for example, it can be hard to tell your character is moving if there's no frame of reference. Adding small props or a simple texture even helps a lot with this!
-- Sound --
Audio Ducking
Audio ducking is when some sounds get quieter when more important sounds start playing. A really common example of this is in movies when a character starts talking, the background music gets quiet. I didn’t do any of this in my entry nor have I ever used it haha, but Unity can handle this through their Audio Mixer thing that I also haven’t used. Look into it though if you want to bring your sounds to the next level!
What I Did Instead:
I made more important sounds a little loud and that’s it xD
(if you played my game before May 1st, it didn't really sound good because I moved my audio listener onto my camera near when I submitted and everything became a lot louder, but hopefully its better now! I really struggle with sound)
Put Sounds on stuff!
Sounds give a lot of feedback to the player and make your world more immersive. Here’s some things to ask yourself
when deciding on where to put sounds:
-Did the player press a button? It probably needs a sound
Is something moving? prolly give it a sound honestly(projectiles can often just be the fire and hit sound)
-Did something just interact with something else? ya give that a sound!
-Did a character perform an action?
Vary Repetitive Sounds
If something is going to trigger the same sound often, like footsteps, gunshots, monster growling, make minor variations of that sound. Here’s how I handled sound variations for the jam (it’s honestly pretty bad to do it like this, but it worked for me :P)
I made an array for each sound (even if it wasn’t going to have any variation for simplicity sake) and I would pass the array to the function to randomly pick a variation for me!

-- Gifs showing some stuff I talked about above --
Camera lerping between positions and zoom level, shop UI scales up quickly (but might not be noticeable in the gif)
Bump animation, drumming animation, Beepo head bob and blink
Meditation Tree particle effects scaling out, eye movement + blinking, breaking blocks particle effect, clouds to add some life