SamuKata
Lu Wilson
Lu Wilson

patreon


TODEPOND TIMES: Custom

Look out!

It's another weekly edition of the...

🐸 TODEPOND TIMES 🐸

What's new this week?

Target

This week, I've been doing the same as usual: I've been building Arroost (for the next video).

Arroost is built on top of another engine — my 'nogan' engine. This is possible because the nogan engine allows you to add custom behaviour to it. In some ways, 'Nogan' is a language. Not a language for humans, but a language for computers, like an assembly language, or machine code.

Instead of writing Nogan yourself, it's a good target for another language. As in, you can make another language generate it. (Probably something more approachable). In this case, Arroost is the language for humans. And Arroost just gets packaged down, and converted into Nogan. Arroost is your doorway in.

Similarly, in CellPond, you use a visual language, ColourTode. This just generates some Dragon, a language for computers.

A more mainstream example would be Rust. If you write some Rust for a website, it'll generate some WebAssembly.

Symbols

Why bother with all this? Why not just use one language? Well... The different languages prioritise different things. They can focus on doing one thing really well, instead of doing everything 'just ok'. WebAssembly can focus on being fast and minimal. Rust can focus on being easy to use (although this is up for debate).

Even SandPond does this. You write some human-intended SpaceTode. And this generates some very hard-to-read JavaScript. Although JavaScript is intended for humans, SandPond doesn't use it in that way. The generated JavaScript is messy and confusing, and impossible to understand. That's because it focuses on running quickly. It produces faster JavaScript than you could possibly have the patience or willpower to write manually.

In SpaceTode, you define custom elements like sand, water, fire, and more. And you do this by drawing diagrams made of little symbols. To help you out with this, SandPond gives you a bunch of building-block-symbols to get you started. The SpaceTode language has *nothing* by itself. Instead, SandPond provides what we might call a standard library.

It's a similar situation with Nogan and Arroost. Nogan has *nothing*. But it does have ways of extending it. SandPond has symbols. What does Nogan have?

Welllll....

Cells, Pulses and Operations

There are three building blocks in a nogan — cells, pulses and operations. Let's find out what each one is.

A cell does nothing. It just sits there. But it can have information inside it. For example, cells are probably useful to you if you give them a name or a type, so that you remember what sort of thing they are. But you don't need to give them anything. The default cell is a 'dummy cell'. It's like a cell that you've forgotten to set up with your own thing. It's a dummy.

A pulse moves along wires, from cell-to-cell. Different types of pulse can behave in different ways. But the default pulse, a 'raw pulse', just travels forever, through wires, and cells. You can edit the raw pulse's behaviour, so that it changes into a different type of pulse when it goes through certain types of cell. For example... you could say... if the raw pulse goes through a custom DESTRUCTION cell, it changes into a DESTRUCTION pulse. Or you could say... if it reaches a STOP cell, it could STOP.

An operation is a message that a pulse can send to the engine — to make it *do something*. By default, there's just a 'ping operation', that just sends a 'hello' message to the engine. It doesn't do anything else. You could create your own custom operation that changes the environment in some way. Maybe you could make a DESTRUCTION operation that DESTROYS EVERYTHING. Or maybe you could make a DESTRUCTION operation that DESTROYS ONE THING IN PARTICULAR (and you'd need to send the name of what you want to destroy).

So yeah, that's it. Building on a nogan is all about making custom cells, pulses, and operations. And it's coming along... 👀

Thank you reader, for reading through all of this, and being a part of this journey. I am so grateful for all of your support and patience. And I hope you're enjoying the ride. Wherever you are in the world this week, I hope you have a good one 🐸

Days since tode fell asleep: 210
Days since bot went missing: 175


More Creators