TODEPOND PONDCAST: Lazy Machine
Added 2023-09-01 17:53:02 +0000 UTCUnderstandably, it's time for another weekly episode... of the...
🐸 TODEPOND PONDCAST 🐸
What's new this week?

Machine
I got a new machine for video editing and rendering and stuff! I've been setting it up and moving stuff across.
This first section is intentionally left short to balance out the next section.

Lazy
This week I've been speeding up Arroost (an engine I'm working on).
Here's how:
🐌 Lazy memory
Arroost is made up of wires. Pulses travel through those wires, until they get to the end. But sometimes, there isn't an end. Sometimes they loop around forever and ever and ever.
We can't let a pulse get stuck in that loop!
To prevent this, it remembers each wire that it goes through. Or more accurately, it remembers a description of each wire. If it comes across a wire with a description that it remembers, it halts.
This can be slow! Every time it moves, it has to ask, "Excuse me, wire. Do you have brown hair, green eyes, a blue t-shirt, a black cap, a navy rucksack, black socks, blue shoes, white shorts" and so on.
Imagine how it feels to be a wire with blonde hair. As soon as you hear the words "brown hair", you know that your answer will be "no". But you have to wait to listen to the whole description.
This is what Arroost was doing. It was taking a long time because it was trying to check every single trait. Now it asks just one question at a time, so it's a lot quicker.
"Do you have brown hair? No? Oh, ok. Sorry for bothering you."
🐌 Lazy movement
In Arroost, objects can move around. This effect is achieved through the POWERS OF ANIMATION.
It works like this: If something is supposed to be moving, it changes position a tiny bit every time your screen refreshes. This creates a visual illusion, making the object appear to move across your screen.
To get this to work, Arroost lets each object know when the screen refreshes.
"Hello, object. Just to let you know, the screen just refreshed, so you might need to move."
"Ok thanks. I'll move along a tiny bit."
"Hello again, object. The screen just refreshed again."
"Ok thank you, but I've actually stopped moving now because of friction. So I don't need to move right now."
"Hello, object! The screen just refreshed yet again."
"Ok thanks, but I'm still not moving so I-"
"Hello again, object! The screen just refreshed!"
"Yes I thought it might. However I'm not actually-"
"HELLO OBJECT. The screen just refreshed."
"Ok ok ok, but I-"
"Hello, object. The screen just-"
"STOP! I don't need to know every time the screen refreshes. These chats are wasting my time. Just leave me alone, and I'll tell you when I start moving again."
"Oh... ok... sorry for bothering you..."
And that's a rough re-enactment of the problem and how it was fixed.
🐌 Lazy existence
"If a tree falls in a forest and no one is around to hear it, does it make a sound?"
In Arroost, the answer used to be "yes". It tried to display all objects. Even the off-screen ones. This was a massive waste of time! Nobody can see them!
So now, it culls off-screen objects. We don't waste time on 'em anymore.
🐌 Lazy connecting
When something happens, it can make other things happen. This is basic cause-and-effect. The real world has it, and do does Arroost.
When an object moves in Arroost, it might 'connect' to another object (if it gets close enough).
Unfortunately, it was too slow at figuring out what it might connect to. There is a lot I could do to speed this up. But for now, I've just made it not bother until it's finished moving.
Surprisingly, I actually like the aesthetic of how this feels. It means you can throw objects 'through' other objects.
__________
With all of these speed-boosts, Arroost seems fast enough now. It can handle more cells than I'll need in *this* video. Let's goooooooooooooooo!
Hey reader or listener, thank you so much for supporting me and my stuff. And welcome to all the new people this week! I'm ever grateful. I hope you have a great week! 🐸
Days since tode fell asleep: 239
Days since bot went missing: 204