...
- Online collections of programming games
- programminggames.org ← Wow, that was a true labor of love.
- Beginner-level
- LightBot - This one looks really well-done.
- CodeMonkey - Less well-done
- COLOBOT - Haven't checked this out yet, graphics aren't great
- Injection
- Untrusted
- Hacking-related games
- Misc
- Advent of Code
- rec'd by Oliver Steele here, who made this very-insightful comment about sleep (not related to the game or programming)
- Manufactoria
- Inspired by Zachtronics' Flash games.
- Was infinifactory based on this?
- Elevator Saga - the elevator programming game
- Jahooma's LogicBox
- Rec'd by a guy in a review of Human Resource Machine on Steam.
- This seems to do a good job of showing how commands can be combined to create new commands.
- NandGame
- rec'd by Samy Kamkar in a tweet
- Screeps
- This one looks cool...
- ...it apparently has some kind of subscription model.
- Advent of Code
Games I have played
7 Billion Humans
- The sequel to Human Resource Machine
Lessons Learned
- ...
Levels and the patterns / processes used to solve them
- You're Hired (cutscene)
- Robots have been able to take over all useful work, but people are complaining that they want work, so they're going to be given busywork. You see an alien hand reach from out-of-frame twice, making me think aliens are behind both the robots and this new jobs plan. Your job is to write the instructions for the humans to follow.
- Welcome, New Employees
- Introduces the step, pickUp, and drop commands.
- Transport Squad
- Introduces you to the idea of repeating commands (in this case, you put two step commands in a row to have the workers step two times).
- Long Distance Delivery
- Introduces you to the jump command, which lets you loop your commands (in this case, looping the step command).
- An Important Decision
- Introduces you to the if/else commands.
- Little Exterminator 1
- Introduces you to the concept of a bug: there's a problem in a pre-existing program and your task is to find it and fix it.
- Collation Station
- This one seems to be the first puzzle where you need a nested if/else statement.
- Introduces you to the comment command.
- Intro to Morale Officers (cutscene)
- Doesn't seem to advance the plot. It's just two robots congratulating you on your progress and explaining how to congratulate a worker (with a kind word and a pat on the butt).
- Dynamic Angles
- Introduces optional size and speed challenges, which you can ask the boss about.
- Emergency Escapades
- Has a four-level-deep nested if/else statement.
- Has you control a person based on the number on a data cube at their location.
- Injection Sites 1
- Unzip
- Injection Sites 2
- Intro to Shredding
- Shred Lines
- Little Exterminator 2
- Content Creators
- Uniquely Disposed
- Content Creators Bug Fix
- Reverse Line
- Big Data
- Number Royale
- Sorting Hall
- Budget Brigade 1
- My First Shredding Memory
- Budget Brigade 2
- Fitness Program (cutscene)
- Neural Pathways
- Biometric Access
- Fill the Floor
- Checkerboard Organization
- Creative Writhing
- Data Backup Day
- Seek and Destroy 1
- Intro to Calc for Art Majors
- Seek and Destroy 2
- Dangerous Spreadsheeting
- Seek and Destroy 3
- Printing Etiquette 1
- Printing Etiquette 2
- Image Decrypter
- Important Email Organization
- Task: A 6x10 area of randomly-numbered data cubes ("emails") numbered 0 through 99 needs to be sorted into shredders numbered 0 through 9, depending on the tens-place of the email.
- You have to deal with how to get the human to know which shredder to drop the cube in. I used a Memory slot to store their number divided by 10 and then just compared the label below them to that result.
- You have to deal with the "pick up nearest data cube" command leading the humans to pick up the labels above the shredders. I dealt with this by having them walk up to the top of the room before looking for their next data cube.
- You have to deal with the humans trying to pick up the label data cubes after they've exhausted all the 'normal' data cubes. I did this by having each human deal with 12 data cubes and then stop (because there are 60 total cubes that need to be shredded).
- Multiplication Table
Factorio
Human Resource Machine
...
- Crashes
- Basic Execution Node
- Registers
- ACC - Stands for 'accumulator'.
- BAK - Stands for 'backup'(?). Only accessible through the SAV and SWP instructions.
- You can't read directly from this register, so you can't add, subtract, or JMP based on this register's value.
- NIL - Reading NIL produces the value zero.
- This is useful if you have a node that accepts an input from another node, and under certain conditions the input from that other node isn't needed, and your node needs to use its ACC register to store something (so you can't do "MOV <DIRECTION>, ACC"). You can just say "MOV <DIRECTION>, NIL" to clear the input from that other node.
- It's also useful to keep your code easy to understand in situations where your node doesn't need to use ACC (so you could just say "MOV <DIRECTION>, ACC"), because it'll be clear that that input was unneeded.
- LEFT, RIGHT, UP DOWN
- ANY - I still haven't used this one.
- LAST - I still haven't used this one.
- Instruction Set
- # Comments
- You can name your program in the segment list by adding a line with two leading hashmarks, like this: "## test"
- <LABEL>:
- NOP - "No operation", it's equivalent to "ADD NIL".
- MOV
- SWP
- SAV
- ADD
- SUB
- NEG - Negate.
- JMP <LABEL>
- JEZ
- JNZ
- JGZ
- JLZ
- JRO <SRC>
- -1 refers to the instruction before the current line.
- 2 skips the next instruction
- ACC will use the value in ACC to determine what line to jump to.
- # Comments
- Registers
- Stack Memory Node
- Attempting to write to a full memory node or trying to read from an empty memory node will result in a block.
- Keyboard shortcuts
- Ctrl + Z - Undo last change
- Ctrl + Y - Redo last change
- Ctrl + X - Cut
- Ctrl + C - Copy
- Ctrl + V - Paste
- Ctrl + Arrow - Navigate to the adjacent execution node
- F1 - View instruction set quick reference
- F5 - Begin running the current program
- F6 - Step or pause the current program
- Breakpoints
- Put an exclamation point (!) at the beginning of a line.
- When you hit a breakpoint, click 'Play' to resume execution. Execution will stop again if the breakpoint is hit again.
- Visualization Module
- The format for out put is 1) the starting X coordinate, 2) the starting Y coordinate, 3) one or more color values, and 4) a terminating negative value (e.g. -1).
- The coordinate system starts at (0,0), which is in the top-left of the display.
- Available colors:
- 0 - Black
- 1 - Dark grey
- 2 - Bright grey
- 3 - White
- 4 - Red
- Resolution - 30 characters wide and 18 characters tall.
- The sandbox is 36 wide and 22 tall.
Levels and the patterns / processes used to solve them
Misc
- Your cycle/node/instruction statistics show your best results across all of your solutions. So, like, if one of your solutions has the best node count, and the other has the best cycle count, both will have those values used for these stats.
...