Workpad
September 8th, 2024

Project Updates

Weekly Update

Well, it's been three weeks since my last post here, and as hard as it was to write this update, not writing it would've been harder. So let's just skip the preamble and go straight to the update.

Cyber Burger (That Pico-8 Game)

I'm terrible at being coy, I'll just spill the beens. That game I've been working on is call Cyber Burger. It's based on a DOS game I saw on YouTube, and it seemed like a fun project to try and work on, with some tweaks to the gameplay that I think would make it more forgiving.

In the weeks since my last update, I finished with the prototypes and started working on the game itself. The initial set of art is done and a very simple "Game A" mode has been implemented. In this mode, you are shown a burger you'll need to make in your basket. You do so by shooting down the items flying across the screen and catching them in order. When you do, you get a "tip", which basically amounts to points. If you make a mistake, you're given a demerit. There are five rounds in total, and once the round is complete, you move on to the next one, with maybe slightly different items, or different item speeds, etc.

An example play session, with the new graphics.
An example play session, with the new graphics.

I managed to make a HTML version of this which plays through round 1. I gave it to someone at work to play test and the results were… well, they weren't bad but it didn't set the world on fire.

I think I'm okay with that, but I do need to keep working on it. I think one thing that would help is adding sound. And I think it might help me deliver this earlier if I abandoned Mode A and start working on Mode B, which is closer to an arcade style of game that would allow for continuous play. These two things, I'll aim to work on this next week.

Oh, and I'll need to fix the item spawner. Waiting ages for an item you need is no good.

If you're interested in giving it a try, you can do so by following this link (it runs in the browser). Feel free to send any feedback you may have.

UCL

The other thing I've been spending some time on over the last week or so was UCL. I've been using that work tool which has this language quite often recently and I've been running against a number of bugs and areas where quality of life changes could be made. Just small things, such as allowing the foreach command to be called with a proc name instead of requiring a block, much like the map function. Those have been addressed.

But the biggest thing I've been worked on was building out the core library. I added the following functions:

  • The `seq` function, used for generating a sequence of integers. I like how I built this: it's effectively a virtual list — that can be indexed, iterated over, or calculated the length of — but does not take up linear space.
  • Comparator functions, like `eq`, `ne`, `gt`, etc. plus settling on a type system much like Python, where values are strongly type (can't compare ints to strings) but are also dynamic.
  • Arithmetic functions, like `add`, `sub`, etc. which operate on integers, and the `cat` function use to concatenate strings (these functions do try to cohere values to the correct type)
  • Logical functions, like `and`, `map`0, and `map`1.

Along with this, I've started working through the strings package, which would add the various string functions you see, like trimming whitespace, splitting, joining, etc. I've got trimming and converting to upper and lower case, and my goal for next week is to add splitting to and joining from string lists. Once that's done I'll probably put this on the back-burner again so I can finish off Cyber Burger or work on something else.

Just a reminder that there's also a playground for this too, although I apologise for the lack of documentation. I'll need to get onto that as well.