Antti Haavikko

LD 38

I'm in

Yet another first timer for Ludum Dare. Seems to be quite a lot of us...

LD 39

Oh noes, single digit on hours left

Seriously though, I'm almost done. Gonna do some finishing touches and tweaks with the few remaining hours before I call it a day... voodoo-lockdown-cover.gif

Voodoo Lockdown

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:

voodoo-lockdown-ld-cover.png

voodoo-lockdown-v1.gif

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!

Geez

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.

Voodoo Lockdown Enhanced Edition

Howdy!

I have finally now finished and published the enhanced and extended version of my LD39 game.

voodoo-lockdown-ext-cover.gif voodoo-lockdown-cover.gif

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.

Playable or downloadable on my itch.io: Voodoo Lockdown

Now I can actually start mentally preparing myself for LD40...

LD 40

Who's not afraid of maths?

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: * 03-12-2017_21.49.48.jpg

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.

So if you're not afraid of maths and have nothing better to do, please give it a go and lemme know what you think! :hugging:

: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]!

Tic-Tac-Matrix now on Android

ttc-android-short.gif

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.

LD 44

Derpiness slider

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.

face-blinking.gif

Which do you prefer?

My future self will thank me for this

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.

sd.png

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
    }
    );
}

} ```

Ludum Dare 46

Smart Balance and so on

Has something changed about the smart balance calculations? This doesn't seem quite right. Here is a pic of me and my "position neighbour"...

smartbalance.png

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: