| "After Miracle, Techno, and Shinobi, Alex has found yet another world to adventure in, and it wasn't easy! Cramming yourself into a world which only exists inside an 8192 token limit is no mean feat! But that's no problem for Alex's mean fist!" |

After I don't know how many months, this is finally "finished", bang on the token limit (that part was easy and fun), but staying under the compression limit was a literal impossibility, and I had to run it through PicoTool to get it under. For that reason, I've made the un-garbled code available in a Google doc at this link. But that is exactly at the token limit! No room for edits... so I've also provided this version, which gives you a bit of breathing room if you want to experiment, it's missing some tweaks that the final game has, which are bug fixes and extra minor features like the level intro.

Hello! Er... this is the first game i've ever made with Pico-8, so please forgive all the bugs you'll find in this little game.
This is my little homage to one of the games I used to play in my arcades back in the early eighties when I was a kid... a game with a trackball, many missiles and the almost impossible task to avoid a thermonuclear world war for as long as possible.
Yes, I know... that's not exactly a very cheerful theme, but it's also not worse than your average "zombie apocalypse" theme that you can find in many games today ;-)
THE STORY
In this game the final war that will annihilate the human race has just started. Your name is Dave Theurer, and unfortunately you're not a superhero. You can't stop all the missiles and you can't keep your loved ones and your city safe forever; but if you're brave and lucky enough you might be able to allow your fellow citizens to see the lights of another day.
Till the next night of bombings.
MOVEMENTS
Use your mouse or the directional keys to move the gun target. Push the Z button or click the left mouse button to shoot a single rocket, Keep pressed the X button or keep clicking the right mouse button for rapid fire.
Shoot the enemy missiles and avoid them falling on the buildings. When your last building falls, it's game over.

Hi all,
I bought Pico-8 awhile back (version 0.1.98) and recently tried to run a cartridge which told me 'Future Version please upgrade'. However, when I log into my Pico-8 account it says no products are registered to my account!
I don't think I bought it via Humble Bundle as it doesn't show in my HB account.
So basically, do I need to upgrade ...and how?
tobo

hey so i have started making a rogue like and i started with dungeon generation, i am doing this by using Binary Space Partitioning(BSP) but when i go to process my binary tree it only takes the left route and not the right! it appears that the right route is always nil and i cant figure out why and i hope you guys can figure it out.
All help is appreciated!
-- d&!d
-- by anton wolfarth
state = 1
player = {}
-- player.[up,down,left,right] = {still, anim1, anim2}
player.down = {1,2,3}
player.up = {8,9,10}
player.left = {4,5,4}
player.right = {6,7,6}
rooms = {}
err = ""
gold = 0
function aabb(x1,y1,w1,x2,y2,w2)
return
end
function _init()
end
function _update()
if(state == 1)then
generatemap()
state = 2
end
if(state == 2)then
end
end
function drawrooms(room)
print(room.x .. ", " .. room.y .. ". " .. room.width .. ", " .. room.height)
--rect(room.x, room.y, room.x+room.width, room.y, room.y+room.height, 2)
end
function _draw()
cls()
foreach(rooms, drawrooms)
print(err)
print(#rooms)
end
-->8
-- map generation
function generatemap()
-- parent, left, right, depth, x,y,w,h
tree = {parent = nil,
left = nil,
right = nil,
depth = 0,
x = 0,
y = 0,
width = 256,
height = 256
}
makechildren(5, tree)
makerooms(tree)
end
function makechildren(maxdepth,parent)
xy = flr(rnd(2))
box1 = {}
box2 = {}
if(xy == 0) then
-- split by x
box1.width = flr(rnd(parent.width / 3)+parent.width / 3)
box2.width = parent.width - box1.width
box1.height = parent.height
box2.height = parent.height
box1.x = parent.x
box2.x = parent.x + box1.width + 1
box1.y = parent.y
box2.y = parent.y
else
-- split by y
box1.height = flr(rnd(parent.height/3)+parent.height/3)
box2.height = parent.height - box1.height
box1.width = parent.width
box2.width = parent.width
box1.y = parent.y
box2.y = parent.y + box1.height + 1
box1.x = parent.x
box2.x = parent.x
end
box1.depth = parent.depth + 1
box2.depth = parent.depth + 1
parent.left = box1
parent.right = box2
box1.parent = parent
box2.parent = parent
if(
box1.depth < maxdepth and
box1.width > 5 and
box1.height > 5
)then
makechildren(maxdepth, box1)
else
parent.left = nil
end
if(
box2.depth < maxdepth and
box2.width > 5 and
box2.height > 5
)then
makechildren(maxdepth, box2)
else
parent.right = nil
end
end
function makerooms(tree)
err = err .. tree.depth .. ", "
if(tree.left != nil)then
makerooms(tree.left)
err = err .. "l"
end
if(tree.right != nil)then
makerooms(tree.right)
err = err .. "r"
end
if(tree.left == nil and tree.right == nil)then
generateroom(tree)
end
end
function generateroom(leaf)
add(rooms, {
x = leaf.x,
y = leaf.y,
width = leaf.width,
height = leaf.height
})
end
|

| Pico8 use 2 functions to update stuff at a regular basis. One _update() function called every 1/30s (or 1/60s since the 0.1.8 version) and one _draw() function that do the same thing. |
That allow, for a project use that use the second as a time unit, to not slow down that unit.
From manual: _draw() is normally called at 30fps, but if it can not complete in time, PICO-8 will attempt to run at 15ps and call _update() twice per visible frame to compensate.
e.g., If I decide to make a sprite move from A to B in exactly 1 second but have a render process slower than 1/30s. I can put the move process in the _update function and the rendering in the _draw() function. The animation will not be smooth but the sprite will move from A to B in exactly 1 second.
This is true if the _update() function do not take more than 1/30s to execute.
This simple separation is only used for that purpose.
For my shmup project (bullet hell/danmaku) project, it's different.
Hello Pico 8 fam,
Been working on a game that is something of a Final Fantasy clone and I am trying to implement different rooms for the player to enter. I am stumped with how to get this going and was wondering if there were any good resources available for me to dig into.
I need a blank slate each time I enter a room.

This game was made in a week with the purpose of distributing it to try to get as many plays as possible. We're currently in the phase where we're collecting plays, so your visit is much appreciated!
It's also on itch.io! https://t.co/l3ExIHaRuI
Alas, it looks like the old (albeit undocumented) TIME() function has either been broken or deliberately retired, as it now always returns 0.
No doubt coinciding with the addition of the cool new clock features of v0.1.11c, which are very cool.
Sadly, this means there are a few tweetjams/carts that no longer function :o(
(using TIME() was a sneaky way of getting a linear number change with few characters!)
*pores a bottle for our fallen tweetcarts *
#TimeIsDead #LongLiveTheTime

Hi,
I was absolutely ecstatic to see we can now run pico-8 headless. Working on that tiny canvas is really exciting for me to make some twitter bots or something!
The problem is, not really surprisingly, it isn't "truly" headless. That is to say running on a headless OS results in an expected SDL error.
I was wondering if anyone had any tricks to get it running headless. For my processing twitter bot I used... xvfb? That might work in this case but it's a bit of a faff and I was wondering if anyone has had any success using a different path to get headless headless mode.

Hi there,
My copy of pico-8 isn't showing up as registered to my account, so I can't download the update which makes me SUPER sad. Anything I can try doing? I've found my Humble key and tried reentering it but it says it's already claimed (which, I mean, makes sense since I do have a working copy of pico-8).
Any help would be hugely appreciated. I also send an email last week to hey@
Thanks!
daggermoor






13 comments
















