2nd Law by Hawkin
This is my second Ludum Dare! The objective of my game could be clearer, so I wanted to remove a little of the frustration. The main point of the game is to interact with the world. There are a total of five elements that begin interactions!

Within the limits of mortal understanding, there are certain immutable laws. Time marches forward, and the world becomes more disordered. This is the second law.
Cause and effect can be unpredictable. Seemingly small interactions can have rippling consequences. "A butterfly flapping its wings causes a typhoon." Is what we perceive to be stable really so?
"The 2nd Law" is a short, adventure-style game illustrating the principle of cause and effect and unintended consequences. It was made for the Ludum Dare 49 Game Jam in under 3 days by a single developer.
Music was created by me: https://soundcloud.com/scotchtapetracks

Most of the artwork was painted by me as well except for the animated characters, which were obtained from OpenGameArt.org (credits in the Itch.io page). Also, the visuals are a lot crisper in Windows!
Known Issues: * Some users are having issues loading the game in Firefox. I have loaded it in mine, so I'm not sure what the problem is! * I did upload a Windows build of the jam entry just now (hopefully not rule-breaking)! It's available at the bottom of the itch.io page* * Sometimes you have to leave and re-enter the proximity of an object in order to trigger the text / interaction. * SFX plays from pause menu when any key is pressed. * Pause Menu Resume button does not highlight.
Ratings
| Overall | 980th | 3.349⭐ | 45🧑⚖️ |
| Fun | 1357th | 2.767⭐ | 45🧑⚖️ |
| Innovation | 790th | 3.267⭐ | 45🧑⚖️ |
| Theme | 967th | 3.302⭐ | 45🧑⚖️ |
| Graphics | 488th | 3.884⭐ | 45🧑⚖️ |
| Audio | 176th | 3.92⭐ | 46🧑⚖️ |
| Mood | 122th | 4.105⭐ | 45🧑⚖️ |
| Given | 47🗳️ | 72🗨️ |
Thanks for playing!
@shores seeing the work you did for Captain Peggles, I can't help to wonder how beautiful 2nd Law would have looked with your artwork :D
BTW: AWESOME game. Loved the mood, music and art!!!
@destroyertech I just uploaded a windows build, so feel free to give that a try if your Web version did not work!
@big-play-ben Thank you for the kind words! I really enjoy the mood-creation process, which is why I probably lean more heavily into that than other aspects :)
And no, much like in life, we can't completely eliminate entropy :P
In case you're interested, the theme was central to the design of the game (unintended consequences create "unstable" situations), but I agree that it was buried a little deeply. It would have come through more strongly if I had the time to add more items to interact with.
But seriously, this is great. I see how you had to cut down the scope of it a lot but hey, it still ended up pretty well. Your art and music really work for this. Sometimes the collisions are a little weird (I'm one to talk haha), mostly around the house, but apart from that the gameplay is smooth. A measure of entropy was a good idea too, to bring the point home.
I'm curious on your opinion: would highlighting the objects been a bad thing for the experience? It may have made the content more obvious, but also taken away from the "discovery". (There was a way to get full entropy, but never no entropy ;) )
Thanks again for playing!
And that's a great suggestion on the scale! It did cross my mind. I bet you it would have really sold the integration of the player into the world. I'll have to give it a try and see how it looks :)
@playerdeer Thank you, I definitely wanted to do more but I appreciate your kind words.
@figueroass27 @youk I'm glad you noticed the music changes! That was really important to me to achieve.
I get some serious DOS vibes from this one, which I really dig. It's just a nice peaceful experience overall. :slight_smile: I love how the music slightly changes as things get impacted in the world. Would love to see how you expand this if you ever decide to!
Its just a bit short right now but with a few more options and events this can be a nice open ended puzzle game. The collision detection is a bit annoying though.
Anyway im a fan of something a little bit different and the mood is also quite nice
@lerg Thank you!
@essarrgee I'm glad you could enjoy it. There was just the one ending -- I never thought about giving the player multiple routes to the end screen, but to be honest I had to cut scope and was worried about giving the player _any_ end screen that made sense.
Definitely ambitious for a game jam, and I agree it came out a bit short. Thanks again for the review!
Beyond this, an overall much stronger sense of feedback would also have helped a lot. I really couldn't tell what was interactive, where the bounds of the game were, or what the results of my actions would be (except for the rock, which seemed to be the centrepiece of the game). This made me feel less confident that I was having an experience within the intended scope. With more time, I could definitely see this concept developing into something that carries your concept further.
Thanks for the entry, best of luck with future development.
I've read your blog about audio. In most games, there are different tracks that get faded in and out procedurally. Your solution of saving audio time and playing the next clip from that point isn't that great. I've battled with this before so here's my advice: **YOU CANNOT PLAY A CLIP FROM A POINT OF TIME EMIEDIETELY!** If you want to play one after another, you can setup a delay (make sure to use doubles not floats), but in your case it would be easier to just play all clips and simply mute and un mute them when changing scenes. **Even better, have a base track and scene specific melodies that you could fade in and out**. I've implemented that system once in one of my games (I don't exactly remember if it was working or not as I coded way to many Audio Managers in my time) and I hope to also add it to my [tools that I also used in jam](https://github.com/DockFrankenstein/qASIC/blob/main/Assets/qASIC/Audio%20manager/AudioManager.cs). Here's an example (please excuse bad code, I was bad):
```CS
public class AudioController : MonoBehaviour
{
public List<AudioSource> tracks = new List<AudioSource>();
public List<bool> isBusy = new List<bool>();
public int CreateTrack(AudioClip audioClip)
{
AudioSource newSource = gameObject.AddComponent<AudioSource>();
newSource.clip = audioClip;
newSource.loop = true;
isBusy.Add(false);
tracks.Add(newSource);
return tracks.Count - 1;
}
public void Play(int trackIndex)
{
tracks[trackIndex].Play();
}
public void ChangeVolume(int index, float volume)
{
tracks[index].volume = volume;
}
public void ChangeVolumeSlowly(int index, float volume, float lenght)
{
if (!isBusy[index])
{
isBusy[index] = true;
if (volume > tracks[index].volume)
{ StartCoroutine(InscreaseVolume(index, volume, lenght)); }
else if (volume < tracks[index].volume)
{ StartCoroutine(DecreseVolume(index, volume, lenght)); }
else
{ isBusy[index] = false; }
}
}
private IEnumerator DecreseVolume(int index, float volume, float lenght)
{
float currentVolume = tracks[index].volume;
while (currentVolume > volume)
{
isBusy[index] = true;
currentVolume -= Time.deltaTime / lenght;
tracks[index].volume = currentVolume;
yield return null;
}
isBusy[index] = false;
}
private IEnumerator InscreaseVolume(int index, float volume, float lenght)
{
isBusy[index] = true;
float currentVolume = tracks[index].volume;
while (currentVolume < volume)
{
currentVolume += Time.deltaTime / lenght;
tracks[index].volume = currentVolume;
yield return null;
}
isBusy[index] = false;
}
}
```
Anyways, I hope I didn't bore you (I should probably stop writing those big comments) and keep up the good work

## Pause
I don't know if many people realized there was a pause menu since I didn't call it out, and you might be the only person to have found these. When the pause event is triggered, I do a number of things, including setting the time scale and muting audio. Typically I register the player to the OnGamePause event in order to disable any input, but I definitely forgot that piece here -- hence the bug! Clearly there was something not quite working right in this instance.

## Audio
The audio resume was definitely a new idea that I didn't spend much time thinking about, once it seemed to work. Without testing, I think you are probably right that there would be at least a tiny delay if I try to start at the same sample -- maybe I need to advance one? But it would hardly be noticeable, at least I think.
I've played with track layering in-game before (see my LD47 entry if you are curious). In that case, I did what you suggested: started them all at the same time and adjusted the mute when I needed to. That's probably the smartest way to do it for sure!
I've actually started a utility [cache](https://gitlab.com/hawkinberry/unity-utility/) of my own, including an Audio Manager that I drag with me from project to project (rather than re-developing it each time). I like the bits you have in yours, especially the coroutines to change the volume! Thanks for offering it :)
Again, thank you for the input!!
Edit: Oh and by the way, I saw your blog post on qASIC earlier on in the jam!!! I didn't check it out this time, but I want to for next time. You're doing good work!