UP | HOME

Procrastination, UXN Music and Chat Wells

kyleperik.com

Should have written this 2 weeks ago according to my new blog schedule I committed to for the rest of this year, but better late than never! I'm breaking this post up into two, as it got a little long.

I'm ashamed to admit I've been procastinating hard on my catjam submission. I've taken for granted that I finished 80% of what I wanted by the time in a month, so classically, like the hare in "tortoise in the hare" I started running all over the place and have burned myself out a little.

I decided I wanted to add music to the game. I looked around a bit for tools that would let me generate music in a simple compatible format for the uxn vm to feasibly hold onto and playback, and didn't really find anything.

So I decided the next reasonable step would be to make my own tracker.

Turned out maybe it was actually possible, but not really reasonable given the time investment I already had set aside for the gamejam. I want this tracker to be a somewhat polished music creation tool, and I want to be able to release it for others in the uxn community to use… but I also need to make music for it and embed that into my game. Those goals do overlap a little but not as much as I thought originally.

So sadly I don't have much to share, besides I'm working on polishing up the tracker, and making a track for my game.

There is some good news though! An friend of mine who happens to be an artist agreed to help me hone in a theme and make splash page art, I know he's going to help make it look pretty sick.

I will share an update on that when we get there.

Chat wells

Also in the meantime while messing around with hypermedia, I built Chat Wells, a unorthodox chat room where you can share a single message to those around you in a randomly laid out bulletin board. Kind of a weird idea I had, it gave me the perfect opportunity to give htmx a try.

chatwells.png

It took just a half hour to throw together the first version, it felt incredibly simple in comparison to my typical approach (a vue js frontend)

And as it scaled a bit and I added new features, it was very easy to slot things in as needed, the entire application is written in just over 400 LoC.

I still want to fix the layout, it's kind of hard too make snippets of text that are randomly strewn about flow together coherently.

For now I just shoehorned in a helper that separates any messages on the y-axis if they are too close together. But sometimes wrapping will occur, especially on small devices, which still causes some pretty bad overlap.

What I'm thinking I'll do is force via css lines to not wrap, and ensure they don't exceed a certain width, then if possible I can write a helper which handles both x and y collision, to try to guarentee zero collisions.

We'll see if I get to it… if you have any ideas, you can go to Chat Wells and leave a message, I should see it.

I also added likes! If you like a message, in addition to incrementing their like counter, it will move your message closer to theirs. The idea is to try to provide some agency to users to form little clusters or "chat wells" where they can talk.

The original idea was that the space is non-euclidean, and will expand and contract based on how many users are in a certain area. So if it's pretty crowded, the space expands, making it look "smaller on the inside", and any pockets of users that happen to cluster up can breathe. If instead, there aren't too many people around you, you can still see further to the neighboring chat wells to see what people are talking about.

I did implement something like that, but not exactly. I simply expand or contract your field of view based on how many messages are around you. So every user should see around 10 messages.