I'm a software & computing apprentice, string picker, engine wrangler and atmosphere oscillator hailing from the forlorn lands of Central & Eastern Europe.
Another few days of #uxn programming, another demo emerges, about textual ship navigation!
The ship is located at 0,0,0 initially. The client focuses on it, and sends it the string "go 12a 34c 56e". The machine takes roughly 1.5k-2k instructions to parse it, and takes off. While en route, it receives the string "halt", stops, and receives the first string again soon after.
It took 3-4 days to implement the control logic in uxn. It seemed like a slow process, but kinda fun too.
Flying #uxn ships with controllers just became possible in my engine!
The client cross-maps the keyb. and contr. inputs, so you can emulate the latter with the former, and vice versa. The input deltas are aggregated and sent to the server, which pushes it to the event buffer of the cpu (which ran @100Hz).
In the demo, I switch to controller mode from normal (NOR -> CON on the input prompt), and raise my x/y coordinates with the left stick, and finally my z coordinate with the right trigger.
Small steps and giant leaps!
Here's a demo of ship navigation, configured purely through lua and #uxn.
How it works: the ship's cpu writes the coordinates 0700, 0700, 0700 into e8, ea, ec. Finally, it writes the navigation command's ID onto the host device's "write byte".
Some lua code translates the host device contents to the nav module's memory. The lua code on the left interprets those as target coordinates, and accelerates the ship towards them, reverse thrusting on approach.
Time to put this #uxn emulator under some stress.
Here are some early results. Each emulated machine is running at 10 ticks/sec x 1000 instr/tick, or 10kHz. The server is emulating 10k machines. Every machine is running a rom that prints the fibonacci numbers that fit into a short, empties its stack, then starts again. Compiled with -O2 optimizations.
That means a single core could emulate 100MIPS under 50% load.
Console input/output to/from an #uxn machine running on a server!
The server is running at 8 ticks/sec, and is executing a single instruction each tick. The machine is running the assembly of the uxntal file visible on the top left.
The commands executed by the client are the following.
load echo (load the world state in echo.json)
*0 (run the machine with ID 0)
>0 (focus the session on the machine)
~0 input (feed input on console)
First experiments in giving console input to an uxn machine. Below are the results of running the following commands.
aship (add ship)
|0 $echo.rom (flash echo.rom onto ship 0)
*0 (unset halt/brk flags)
>0 uxn (feed input string)
Events are stored in a circular buffer storing the device+port write location and the written data each in one byte.
Finally, it seems that serializing an #uxn machine to/from JSON is mostly working.
Below is the result of running the following commands on the server I'm developing:
aship (add a ship with an uxn component)
flash 0 $fib.rom (load the rom onto the entity with the 0th ID)
save <your-file> (serialize the ECS)
Anyone have some insight to offer about chapters 3+ of The Dawn of Everything? While it's interesting & the prose is masterful, they take a relative eternity to make their point, and I also am a slow reader. I'm tempted to skip ahead to the last chapter, curbing my completionism for once, and move on to something else.
It works! I still have a hard time getting over how cool this feels.
The server (lower-right) runs on a raspberry pi, while the clients above it are running on my desktop, chattering away.
Also, watching the blinkenlights on the ethernet port while wondering what flows through it is endlessly entertaining.
I was wondering about the energy-intensivity of using an already existing, power-hungry PC to run a server vs. buying a new rpi4.
The old CPU is only about twice as powerful, and draws 95W under full load. Assuming the pi (& accessories) has an embodied energy similar to a smartphone (more accurate figure would be welcome), ~1GJ/280kWh, the existing pc pulling 75W under a light load, and the raspberry pulling 7W under full load, it seems that the break-even point is 170 days of full operation.
A while ago, when configuring my system, I made this little weather status display, using bitmap characters as icons. It's trifling, but makes it feel like my machine is rooted in the world somehow, like it's situated in a wider place, beyond my room. Sometimes it malfunctions because the servicing website is down, but that just adds analog charm to it.
Someone around here recommended Kentucky Route Zero recently, and I finally decided to see it for myself. I'm only starting act III, but it already seems like something oft-encountered yet secret, mundane yet mysterious. Thank you. I'm knocked down hard right now, and it gave me something interesting to sink my teeth into while I'm convalescing.
Probably the most sublime game soundtrack I've ever heard.
The high sun burns through your skin, the low moon chills you to the bone.
Revel in the marvels of the universe. We are a collective of forward-thinking individuals who strive to better ourselves and our surroundings through constant creation. We express ourselves through music, art, games, and writing. We also put great value in play. A warm welcome to any like-minded people who feel these ideals resonate with them.