Hi there,

allow me to give you an impression of my current project: **Patterna**, a logic puzzle game inspired by HexCells. Each level of the game consists of a network of nodes (a *graph*). It is your job to figure out which of these nodes are part of the *pattern* and which are not. To help you achieve this goal, each node may carry information that uses reachability, distance, or color to constrain which nodes are pattern nodes. Correctly classifying a node may reveal new information which in turn will help to solve the puzzle.

**Features:**

- 50+ Hand Made Levels
- Procedurally generated levels: Infinite replayability, with many options!
- No guessing needed: All levels provably have a unique solution
- Play on hex grids, grids, and other kinds of graphs
- Lots of options, including configurable colors and scaling for all major game elements
- Extensive gameplay statistics
- LevelEditor: Create your own sequence of levels to challenge your friends
- Modding support: With a bit of programming knowledge, you can write your own random level generators
- Optional scoring system

**Please consider voting on the game's Steam Greenlight page. You can download a demo version of the game here on IndieDB or at Itch.io. It includes the tutorial and three more difficult premade levels.**

**How to play the game:**

Each level of the game consists of *nodes*. Each node is in one of three states: *Good, bad*, or unknown. Think *Minesweeper*: Good nodes are clear, bad nodes contain mines, unknown nodes are still to be classified.

**Good nodes (**

*pattern nodes*)**Bad nodes (**

*non-pattern nodes*)**Unknown nodes**

The goal is to classify all unknown nodes and reveal the *pattern* (hence the name).

**Nodes Form a Graph**

The nodes are not isolated from each other, but form a network (a *graph*):

Here are a four nodes. The grey lines are connections (*edges*) between the nodes. This allows us to talk about the distance of nodes between each other, and about reachability: A node is reachable from another node if there is a sequence of connections that leads from one node to another. The smallest such number of connections defines their distance.

**Information on Nodes**

There are three different kinds of information that help the player to classify nodes:

**Radius Information**

Radius information specifies how many of the unknown nodes reachable in a given number of steps from the node with the information are part of the pattern (that is, are pattern nodes). For example, this node shows two blue rings, which means it refers to all nodes reachable from that node in at most 2 steps, and has a white two on it, which means that of the unknown nodes it is referring to, 2 are in the pattern.

**Color Information**

Color information tells you how many unknown nodes of a given color are in the pattern. Note that unknown nodes have color orbs that light up if the node is in the region associated to that specific color. In this case, the green three tells you that of the unknown nodes with a green light, exactly 3 are part of the pattern.

**Component Information**

Component information tells you how many nodes this node still needs to connect to: A node is connected to this node if it is reachable from this node, with the restriction that your path may only use pattern nodes. Connected nodes form *components*. Here are two examples:

The two nodes with an 8 are connected to each other. The node to the right is not currently known to be connected to them, but might be: There are nine more nodes in its component, so its component has 10 nodes in total. This is also true for the nodes on the left: There are eight more nodes in their component, so their component also has size 10. Thus the two groups could in theory belong to the same component.

The situation is different here: The top node has a nine on it, the bottom node a one. This means that their components have size 10 and 2, respectively, so they cannot connect. The implication here is then that the node right between them *must not* be a pattern node. More subtly, there is more that can be derived from the above situation: Focusing on the node with the number one on it, we know that there *has* to be exactly one other pattern node connected to it. Since it is not the node above it, it has to be one of the two other nodes (to the left or to the bottom of it). Both of these nodes share a common neighbor (the bottom left node), so no matter which of them actually is the pattern node, the bottom left node must not be a pattern node, since otherwise the component size of the node with the 1 on it would be at least 3.

At any time, the game will also give you the total number of pattern nodes that are still unknown, so this is another source of information.

**Directed Edges**

I have skipped over two more advanced features: Directed edges and a variant of radius information (I'll leave the latter out for now). Directed edges can only be used in one direction and have little arrows on them:

Here you can see how directed edges can interact with component information: The top left node has a component of size 6 (five plus itself), and the lower right has a component of size 5 (four plus itself), but the top right node can still be a pattern node: The edge between the top row nodes can only be used left-to-right, so it the lower right node cannot reach the upper left node.

That's it for today, and I think I have covered most of the important concepts. Next time, I might talk about the random level generator, or maybe something else entirely. Thanks for reading!