Log In  

Hello Pico-8'ers!

I've been wanting to be able to make a game in which you explore a large game world that is bigger than the available map space in Pico-8 for some time now but I can't see an easy way of doing this. I've seen people using bits of the sprite space but I'm still not sure how they achieve this.

I'd like to be able to have a giant game world similar in size to that of 'Duck Duck on the Loose'

If anyone knows of ways to do this i'd love to here your ideas!

P#39770 2017-04-19 05:07 ( Edited 2017-04-19 15:53)


you can save your map data to strings and load the data to an array.
Then draw the map by your own, or stream it to map memory while scrolling.
You probably need to compress your data.

Don't know how big the map in 'Duck Duck on the Loose' is, but you can reach 70-100 screens by storing your map in compressed strings.

Ultimately, it depends on the compression rate, how big the world can be.

P#39771 2017-04-19 06:02 ( Edited 2017-04-19 10:05)

I see, thanks for the reply! I'll have to try copying the map data and see what I can do with it.

P#39775 2017-04-19 09:04 ( Edited 2017-04-19 13:04)

Hey PixelCod!

First off, I believe Duck Duck's map is actually completely stored in the regular map space, except that each tiles is rendered as a 32x32 square. But I don't think that's what you want.

Storing your map in a string or simply in an array strikes me as the right way to go about this. If I were you, I'd store my map in compressed chunks of 8x8 tiles disposed in a bigger grid of maybe 32x32 chunks. (that'd be a total of 256x256 tiles on your map)
Then, in game, I would decompress the chunks that are colliding with the screen space, to the map, using mset.

About the actual loading of the map, you could either generate the map with code or design your map on Pico-8 and copy-paste-parse the map data, or do a mix of both by sampling map data. (that last option is probably the one you want)

I hope that helps! :)

P#39779 2017-04-19 10:23 ( Edited 2017-04-19 14:23)

Hi there!

At the moment I'm experimenting with the poke(0x5f2c, 3) cheat. It basically reduces the screen size to about 60x60 pixels meaning everything is magnified. The sprites therefore are much larger and the map will feel bigger. I'm working on a game like Google Maps to showcase how the Map can be made larger (Taking Link's Awakening as an example, the game's map was incredibly tiny but the devs used simple tricks to make it seem massive!) The amount of detail that you can put into your sprites will take a hit but hopefully this can give you the results you're looking for!

P#39781 2017-04-19 11:53 ( Edited 2017-04-19 15:53)

Hi @PixelCod:

You are certainly welcome to try out a mapper program I wrote sometime back that lets you write and access maps up to 128x128, well really it's configurable to any size.


Hold down the 🅾️ key to skip the silly logo. Instructions are included in the link.

If there is a need I can certainly rewrite this using modern Pico-8 commands and design.

P#106920 2022-02-14 20:48

My game uses the full range of possible integers (-32768 to 32767) to create a star field that is 65536 x 65536 pixels in size (that's 512 x 512 screens), and creates about 60 planet surfaces that are 32768 pixels wide, each. So at about 20x256 screens per planet surface, for 60 planets, and the star map, that makes a total of 569344 total screens of space to explore. And it creates that amount of unique, persistent maps for each new game started. I do this with procedural generation. This obviously won't work if you want something like a platformer or a pre-designed rpg world or something.

What you could do is have each pixel or group of pixels on the map represent a larger sprite and have the code interpret that. Instead of displaying the map, the interpreted information of what the map represents would be displayed. I understand some people store map data as long strings and parse it, then interpret characters as sprites.

P#108081 2022-03-05 06:10 ( Edited 2022-03-05 06:11)

[Please log in to post a comment]