Week 53: Voxels and Compression

Whoops, another slow week. Mostly because of personal stuff. I’m working on getting things going again!

The main events of this week were: last week/year’s recap, this week’s Doodle Insights, some Pico-8 voxels in first-person-view and a Pico-8 sprite-sheet compressor!

Take a look at this Pico-8 doodle!

voxelfps

Let’s start with this! You can actually see the progression toward this fps voxel forest in this Twitter thread, and it’s still going! The reason it’s still going is that I’d like to make a game out of it!

Obviously, this had to be optimized a lot and yes it performs much better than my previous voxel iterations. Many optimization tricks were used but they’re mostly about not accessing tables more than necessary and planning rendering values ahead of the voxel rendering loops. Just today I managed to implement a tiled map, using some more optimization tricks.

PICO-8_2

My main problem now is that I don’t know what the gameplay should be. I need something that won’t require too much CPU but also that doesn’t need any more buttons because all the buttons are already used for movement. (I like strafing) Or maybe there could be button combinaisons or just tiles to be stepped on, I really don’t know but I need to figure it out.

It’s been really interesting so far though, with some cool-looking mistakes too! I generally don’t like working with 3D because all the maths and design get instantly much more complex but it’s been a long time since I last had to face that. It makes for a good challenge!

PICO-8_168 (2)

I should be able to finish this small project this week. It will be uploaded to the Pico-8 BBS!

 

PICO-8_176 (2)

Something else I made was a sprite-sheet compressor! This is actually pretty simple and works well enough, even though it could be better at its job. The idea is to put the whole sprite-sheet into a string, shorter than just the raw pixel-data as characters.

The way it works is that it reads the sprite-sheet line by line and records chains of pixels of the same color, putting just the length of the chain and the color in the string. That algorithm is actually pretty bad at compressing complex sprite-sheets filled with detailed sprites, but it is very good at compressing sprite-sheets with large spaces of the same color like maps or cinematic frames. (or voxel data)

It could be made more efficient by applying a second compression algorithm on the string afterwards. But that would make the decompression slower, whereas it’s actually pretty fast as it is currently. Maybe I’ll do it anyway at some point.

PICO-8_171 (2)
I made this at some point too

About One Room Dungeon! It is currently on hold but maybe not for long? Maybe I’ll take what I’ve done on it so far and make something else with it. I’m still thinking of how I should organize to make this kind of bigger project work.

But also, there are two jams that are interesting to me this week! The BitsyJam because I really want to try out Bitsy and the Adventure Jam because I really want to try out Liquidreams‘s SCUMM-8 Pico-8 framework! It seems Bitsy is good for making things in just a few hours and I’m not really looking to do something super complex with SCUMM-8, so maybe I’ll be able to do both of these jams! (that’d be nice)

 

Well that’s it for this week! Still got stuff done even if I wish it was more!

Next week I’m working on the voxel fps thing and gamejams! I will also be writing the third and last Doodle Insights about sprite-sheet reading/writing! And there should be Pico-8 Doodles!

Have a nice week!

TRASEVOL_DOG

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s

Blog at WordPress.com.

Up ↑

%d bloggers like this: