Log In  


I'm working on a Minecraft (2d) clone. I have world generation pretty much complete, but I need to have a way to store said generation. I know that using printh() lets you write to files, but I want to read the contents from an external file like new_world.dat or something similar.



You can use serial streams:

pico8 -run cart.p8 -i path/to/data

pico8 -run cart.p8 < path/to/data

see https://www.lexaloffle.com/dl/docs/pico-8_manual.html#SERIAL


pi-geoncraft?


@merwok, this is something I do not understand, not even with the help provided. I suspect I am not alone.

Could you please show simple working P8 sourcecode example of this ? I think this would be instrumental to most.

Thanks !


MrAwesome, merwok pointer is good for local development but going to force users drag&dropping files to run game.

To save game data, you may use cstore() or reload() - see manual - to distribute data packaged with the game.


Create this cart in PICO-8 and save it as mycart.p8:

cls()
repeat
 size = serial(0x804,0x4300,0x1000)
 for i=0,size do
  print(chr(peek(0x4300+i)).."\0")
 end
until(size == 0)

In a text editor, create a file named limerick.txt:

the limerick packs laughs
    anatomical
into space that is quite
    economical.
  but the good ones i've seen
  so seldom are clean
and the clean ones so seldom
    are comical.

Start PICO-8 from the host operating system's command line, running mycart.p8 and pouring in limerick.txt as standard input:

pico8 < limerick.txt -run mycart.p8

As mentioned, this only works from the developer kit, and is not available in an exported cart or a cart uploaded to the BBS.


I rewrote the wiki page on serial(). Someone check my work, I made a couple of guesses.


@dddaaannn that looks like it'll work, but quick question, does the term 'exported cart' include ones that are exported as an application or just the web files?


It includes exported binaries as well as exported web. The file and stream access is not really intended for games, they’re more for tools. Drag and drop works in exported versions, with size limits, though that’s only an input, not an output.

In general, PICO-8 games aren’t able to persist large quantities of data to disk as part of gameplay. I only described the serial() example to elaborate merwok’s mention. If you’re willing to limit your game to being playable only in the “dev kit” PICO-8 app, you might be able to use some of these features.



[Please log in to post a comment]