Brainspace by loveapplegames
Brainspace is a neural network design game, where you have to create neural networks to solve classification problems. You can create your own Tensorflow based deep learning system with just drag&drop! This probably needs a huge manual if you are not familiar with neural networks or matrix calculus. Below is the simplest one-layer solution to single-item problems.

The problems involve classifying items and series of items into one of two classes, depending on particular properties of each item or series. Items have properties, like color, shape, and hatching. These are fed into the network, with each property coded into three numbers, for example red=[1,0,0], green=[0,1,0], blue=[0,0,1]. In this way, each item is coded into a feature vector. Multiple items are coded as a matrix where each row is a feature vector.
For multiple-item problems, you will need a reshape node that flattens the series of feature vectors into one big vector that can be fed into a linear layer, which can then process all information in parallel into a single output. For more difficult problems, add extra intermediate layers with multiple output features and response functions in-between. Adding more features allow the layer to express multiple aspects of the input that can be used by subsequent layers. If training plateaus, you can try adding more features in the intermediate layers.
If you feed a series directly into a linear layer, it will process each item in the series independently, and output a set of features for each. This enables feature extraction of each single item, which can be a useful preprocessing step.
A more advanced trick in a multilayer network is to use bypassing: feed outputs from early layers directly into the final layer(s) so that they have access to information in the early stage of processing. For this you will need the concatenate node, which can concatenate results from multiple outputs into one.
What about the theme?? Originally I wanted the player to be given a limited number of neurons to solve each problem, but I didn't get round to that.
I had only 2 days to make this, so it's a little buggy. There is a known problem where the system just hangs and will no longer train. I think this happens only when changing something during training. Also, the nodes and screen will only update when the input is connected to the output. I used BaklavaJS for the graph editing, and I was happy I could do non-sequential neural nets in it. It saved me a lot of time, but I ran into some limitations. It's not well documented, and load and save functionality appear broken. I hope to fix that in a postcompo version.
Spoiler alert: here's a network that solves the last problem. Actually it can be simplified and still converge to 100%, but I was showing off branching and merging here :smile: Note that it is also possible to create one neural network that solves all problems.

| HTML5 + source | http://tmtg.nl/ludumdare/ld54/ |
| Original URL | https://ldjam.com/events/ludum-dare/54/brainspace |
Ratings
| Overall | 317th | 3.019⭐ | 29🧑⚖️ |
| Fun | 350th | 2.426⭐ | 29🧑⚖️ |
| Innovation | 108th | 3.714⭐ | 30🧑⚖️ |
| Theme | 354th | 2.071⭐ | 30🧑⚖️ |
| Graphics | 325th | 2.643⭐ | 30🧑⚖️ |
| Mood | 333th | 2.304⭐ | 25🧑⚖️ |
| Given | 18🗳️ | 25🗨️ |
I do want to come back to it later and try to understand the underlying maths a little more, though; I think with maybe a little more in the way of supporting examples this could be a very useful teaching tool?
What's there works well and feels smooth to use (and I've written enough node-based editors to know how annoying it can be), so good work; Hopefully some other players can make it further than I did!
I did manage to pass level 1 with a little help though ;)
If it's really a game? I don't know. But did I have fun playing around with it? Definitely. So, well done! Especially considering you only had two days for that.
I'm confused. Is this a bug? Seems like some shapes are both good and bad?
@jason-shapiro I was thinking of visualising the network in a postcompo version, both the shapes of the involved tensors as well as the values.
Here's my attempt at level 4. It didn't work at all, but I don't know how to tweak it. I must have missed something in how I should set these up 
It'd be nice to have some more visual understanding of what's going on, though, since I'm often in a situation where I've come up with a wrong answer but have no clue _why_ it's wrong. Maybe some numbers or shaded cells or something so I can see what the weights are or what data looks like when it passes through the nodes.
Some other ideas:
- I think there should be a "response function" dropdown on the "layer" node rather than just a "response function" node, since I'm almost always going to add one after each layer.
- Maybe an option to manually set NN weights? I'm often desperate to know whether what I've built is just training poorly or if it's not capable of representing the solution at all, and I think a way to input my own weights would help with that.
Also: Since it's possible to create an exhaustive list of test cases for some of these challenges, it'd be interesting to see what would happen if you threw _literally everything_ into the training data and tried to make a neural network that's 100% correct.