Kanban on GitHub

I’ve started to use the kanban board on GitHub and it’s pretty useful!

So far I’ve laid out the tasks I need to complete to get the game logic into a better state for my cutesy version of the royal game of UR.

As I come up with new issues with the game that need to be tackled, I put them on the ToDo list on the left.

As I start a task I drag it to the midddle.

When it’s done, it goes to done. Seems simple, right? Well the visual list of tasks helps to motivate me to complete them, and it’s a format I’m familiar with working on at work. Usually an agile swim lane is used in web development circles but that’s pretty similar, with a column for QA added and maybe some others depending on your needs.

I think I’ll keep using this. It’s worth noting that this feature already existed as a part of GitLab. I run my own instances, but I haven’t used that feature up until now.

Gravity / Bead Sort Demo

So I was bored and watching videos, and I discovered these wonderful videos about the sounds of sorting.

I was intrigued by how fast the Gravity sort seemed to be, and others in the comments were as well. It seems to be one of the fastest in the video at about 11 seconds.

Most of the other sorts take 20 seconds or more.

So I wanted to try to implement the sort in C# to see what it can do. The fruits of that labour are here:

https://github.com/eanbowman/GravityBeadSortDemo/

Not as pretty as the colour circle or the other visualizations in the sound of sorting project, but it does the trick.

Maybe some day in the distant future I’ll add visualizations, or you can fork the code and make some for yourself!

The relevant sort code is as follows:

public static void BeadSort(ref int[] data)
	{
		int i, j, max, sum;
		byte[] beads;

		for (i = 1, max = data[0]; i < data.Length; ++i) if (data[i] > max)
			max = data[i];

		beads = new byte[max * data.Length];

		for (i = 0; i < data.Length; ++i)
			for (j = 0; j < data[i]; ++j)
				beads[i * max + j] = 1;

		for (j = 0; j < max; ++j)
		{
			for (sum = i = 0; i < data.Length; ++i)
			{
				sum += beads[i * max + j];
				beads[i * max + j] = 0;
			}

			for (i = data.Length - sum; i < data.Length; ++i)
				beads[i * max + j] = 1;
		}

		for (i = 0; i < data.Length; ++i)
		{
			for (j = 0; j < max && Convert.ToBoolean(beads[i * max + j]); ++j);
			data[i] = j;
		}
	}

Don’t Disable Nav Mesh Agent

So I’ve been working on the game logic to my little Raccoon Run experiment for a few months now in spurts of an hour here or a minute or two there.

I’ve been racking my brain as to why it was not functioning properly.

I made the mistake of building out most of the logic I thought was needed before really testing incrementally.

I couldn’t figure out why my raccoon game pieces were not moving forward after making their initial move.

It turns out that I was disabling the Nav Mesh Agent component on the raccoon game pieces.

This made it impossible for the game pieces to move after their initial move. Turning the component on again does not work, for whatever reason. It must be something to do with how it’s implemented. Regardless, you need to set isStopped to true instead.

Oops!

Live and learn!