I'm in
Yet another first timer for Ludum Dare. Seems to be quite a lot of us...
Yet another first timer for Ludum Dare. Seems to be quite a lot of us...
https://www.youtube.com/watch?v=S1r_ecO4PLM
Seriously though, I'm almost done. Gonna do some finishing touches and tweaks with the few remaining hours before I call it a day...

Might as well stop staring at the screen doing nothing and hit the publish button. I have to go sleep soon anyway.
Here we go:


So, two days went pretty darn fast and my game is now finished. Or at least as finished as it will be. Didn't even run into any major problems this time. The end product is a simple and short platformer with additional (hopefully) neat mechanic sprinkled in. If you have nothing better to do, please give it a go ;)
And hey, starting tomorrow, I'll have a full four weeks off work so I'll have plenty of time to test out all your creations. Yay!
I hope feedback friends makes a comeback this time also (or better filtering on this site). I'm getting saddened by clicking on promising looking games just to find out that they're for windows only.
I have finally now finished and published the enhanced and extended version of my LD39 game.

The base idea of the game remains the same as it was before but I've fixed a lot of issues and added loads of new content. Please let me know if you decide to try it and find some bugs or other issues with it. I'm still developing it solo and even my friends seem to be too lazy to give it a proper testing.
Now I can actually start mentally preparing myself for LD40...
Ah, the day after Ludum Dare! Got some well deserved rest and now finally ready to start playing and rating what everyone else has cooked up.
*Here is what I made: *

Still pretty happy with what I managed to get done. It's kind of a match three game where the only way to interact with the board is through some matrix addition/multiplication. To anyone not familiar with matrices, these operations are by no means complicated (basically third grade maths) but there is quite a lot to do on multiplication at least.
And you're up against an AI who can calculate all the possible moves in a blink of an eye. The way I handled the difficulty curve was I start it by picking up options completely randomly. And as the difficulty ramps up, the opponent gets higher and higher chance of actually starting to run the calculations.
:point_right: https://ldjam.com/events/ludum-dare/40/tic-tac-matrix
Also, good luck to anyone still working on their jam game.
May your code be bug free and [INSERT SIMILAR ARTSY METAPHOR]!

Just for giggles, I decided to do an Android build of my game. So now you guys can hone your matrix maths skills while pooping!
You can find a link to it in the entry page. Obviously since it is not in from official store, the device will freak out and be like "omg, what are you doing trying to install some unknown apps" but will also tell you the instructions how to allow that.
So I finally decided to do an addition to my generic face animation script that I use on every single game jam game. I've had this addition in mind for quite some while now but never really sacrificed the time to do it during an actual jam.
The addition is what I call derpiness variable for blinking and it adds a slight randomized delay to each eye blink timing.

Which do you prefer?
So I finally did something useful that I've been planning for ages. Will make the life on future game jams so much more :ok_hand:
I've had this AudioManager for a while that takes in all the audio clips and then with one line of code I can play a sound effect with some pitch variation at specified position. For each sound effect, I usually use around 2-4 different clips with different volume balance for each so tinkering with them has been a pain because the process of change code, build, find the sound source, test, rinse and repeat until good.

But now I made this editor window to go with it. It lists all the clips in the AudioManager, you can select some of them, tinker with the volume and play them right then and there. And then it spits out the code needed to play the combined effect. Will make designing sound effects so much smoother.
```csharp using System.Collections; using System.Collections.Generic; using UnityEditor; using UnityEngine; using System.Reflection; using System;
public class SoundDesigner : EditorWindow { AudioManager am; Vector2 listScroll; List sounds = new List(); List soundVolumes = new List(); string output;
[MenuItem("Window/SoundDesigner")]
public static void ShowWindow()
{
EditorWindow.GetWindow(typeof(SoundDesigner));
}
public void FindAudioManager()
{
// never do this crap in an actual game
am = GameObject.Find("AudioManager").GetComponent<AudioManager>();
}
void OnGUI()
{
EditorGUILayout.BeginHorizontal();
if (am)
{
listScroll = GUILayout.BeginScrollView(listScroll);
EditorGUILayout.Space();
for (int i = 0; i < am.effects.Length; i++)
{
GUILayout.BeginHorizontal();
GUILayout.Label(am.effects[i].name, EditorStyles.boldLabel, GUILayout.MaxWidth(150.0f));
if(GUILayout.Button("Play", GUILayout.MaxWidth(70.0f)))
{
Play(i);
}
if (GUILayout.Button("Add", GUILayout.MaxWidth(70.0f)))
{
sounds.Add(i);
soundVolumes.Add(1f);
}
GUILayout.EndHorizontal();
}
EditorGUILayout.Space();
GUILayout.EndScrollView();
}
else
{
if (GUILayout.Button("Find AudioManager"))
{
FindAudioManager();
}
}
if (sounds.Count > 0)
{
EditorGUILayout.BeginVertical();
EditorGUILayout.Space();
output = "";
for (int i = 0; i < sounds.Count; i++)
{
var sb = sounds[i];
GUILayout.BeginHorizontal();
GUILayout.Label(am.effects[sounds[i]].name, EditorStyles.boldLabel, GUILayout.MaxWidth(150.0f));
soundVolumes[i] = EditorGUILayout.Slider("", soundVolumes[i], 0f, 2f);
if (GUILayout.Button("Play", GUILayout.MaxWidth(70.0f)))
{
Play(sounds[i]);
}
if (GUILayout.Button("Remove", GUILayout.MaxWidth(70.0f)))
{
sounds.RemoveAt(i);
soundVolumes.RemoveAt(i);
}
GUILayout.EndHorizontal();
var pars = sounds[i] + ", transform.position, " + soundVolumes[i];
output += "AudioManager.Instance.PlayEffectAt(" + pars + "f);
"; }
EditorGUILayout.Space();
if(EditorApplication.isPlaying)
{
if (GUILayout.Button("Play in play mode", GUILayout.MaxHeight(50f)))
{
for (int i = 0; i < sounds.Count; i++)
{
am.PlayEffectAt(sounds[i], Vector3.zero, soundVolumes[i]);
}
}
}
else
{
if (GUILayout.Button("Play", GUILayout.MaxHeight(50f)))
{
for (int i = 0; i < sounds.Count; i++)
{
Play(sounds[i]);
}
}
}
EditorGUILayout.Space();
GUILayout.TextArea(output, GUILayout.MinHeight(100f));
EditorGUILayout.Space();
if (GUILayout.Button("Clear"))
{
sounds.Clear();
soundVolumes.Clear();
}
EditorGUILayout.EndVertical();
}
EditorGUILayout.BeginHorizontal();
}
void Play(int i)
{
var path = "Assets/Sounds/" + am.effects[i].name + ".wav";
var c = (AudioClip)EditorGUIUtility.Load(path);
PlayClip(c);
}
public static void PlayClip(AudioClip clip)
{
Assembly unityEditorAssembly = typeof(AudioImporter).Assembly;
Type audioUtilClass = unityEditorAssembly.GetType("UnityEditor.AudioUtil");
MethodInfo method = audioUtilClass.GetMethod(
"PlayClip",
BindingFlags.Static | BindingFlags.Public,
null,
new System.Type[] {
typeof(AudioClip)
},
null
);
method.Invoke(
null,
new object[] {
clip
}
);
}
} ```
Has something changed about the smart balance calculations? This doesn't seem quite right. Here is a pic of me and my "position neighbour"...

Also, do all plays of a team count towards the ratings/feedbacks given? If so, isn't that quite unfair since we're competing for the same visibility on the page? Was just wondering since I saw very little compo games on the top of the games list. And over 25% of the games should be compo... :thinking: