"MakeKodu" - on-device programming experiment

Hi all. This is a little experiment in onboard programming / visual programming. It takes inspiration from Kodu Game Lab and TileCode. MakeKodu is an onboard game development
environment where you can add little characters to a canvas world and give them behaviors to execute using a visual rule-like programming language.

There is no in-game help yet, so here are some basics:

  • Edit mode: You start in “edit mode”. Here you can add characters to your world and program them. Move the cursor around with the dpad. Press A to bring up a character placement menu. Press A on a character to open the character menu.
  • Play mode: The “play” button will switch to play mode and your characters will start to execute their code.
  • Toggling modes: In play mode, the play button switches to a stop button. Clicking that will take you back to edit mode. But sometimes that’s impossible because your code has control of the dpad input. In this case, you can also press the physical menu button to toggle modes.
  • New world: The “new” button in the upper left will start a new world.
  • Programming: The MakeKodu programming language is very simple. It uses a “when this happens, do that” paradigm. For example: WHEN See Apple DO Move toward. These are called rules. More detail:
    • Each character can have multiple rules, even multiple pages of rules, but only one page will be the active at a time.
    • You can change the active page using the switch page action. For example: WHEN Bump Tree DO Switch page - page 2
  • More programming: You can make a rule more specific by adding filters and modifiers: WHEN See Apple nearby DO Move toward quickly. In many cases, filters and modifiers are additive. nearby nearby nearby would mean “very very nearby”.

Advanced topics

  • Timers: A rule’s WHEN condition can trigger on a timer. It defaults to once per second, but also has some filters to let you control the frequency, they’re called long and short. long adds one second, and short divides the computed value at that point by 2. So, WHEN Timer long long short long would expand to Timer (((1 + 1 + 1) / 2) + 1) = 3 / 2 + 1 = 2.5 seconds.
  • Rule Conditions: By default, each rule will execute whenever its WHEN condition evaluates to “true”, but different trigger conditions can be set:
    • Inverted: “when false”
    • Edge triggered: “when becomes true”, “when becomes false”.
    • Access these options from the rule’s handle. There’s also a menu there to insert and delete a rule.

Screenshots

World editing

Programming

I’d love to see what people create in MakeKodu. There’s no built-in way to share games yet. Hoping to make that possible one day.

4 Likes

I like the ideas behind both Kodu and TileCode, MakeKodu sounds even more interesting! Keep up the great work!
I want to give it a try, but the link does not seem to work properly currently, the edit link does not seem to load any code. Will you please check or share some example code?

1 Like

Thanks @jun9! What do you see when you open this link? https://eanders-ms.github.io/makekodu/. What device/browser are you using? I’d like to try to repro it.

This is great! I would love it if you could change a Kodu’s color to differentiate them. Also, if I do an “On A pressed” event, it happens as soon as I press the play button. Can you fix this? One way to fix it is to put a wait for about 20 ms.

1 Like

Thanks for the bug report @GameGod! I published a fix. Ya, it would be nice to be able to change a character’s color. The palette is so limited, and the sprites have two-tone shading that isn’t possible for all main colors. Maybe they could fly a little flag of a color you can set in code.

My bad, I thought editing game happens in MakeCode editor, it works now in Chrome on Windows 10 device. I guess last time importing from GitHub failed somehow. Never mind.