Log In  
Follow
ultrabrite
Follow

This template enables mouse pointer locking thanks to the JavaScript Pointer Lock API & Pico-8's GPIO system.
The mouse pointer will get locked inside the pico-8 frame, while still providing movement deltas from your mouse.
Now you can do a proper Marble Madness or Quake remake!

here's a demo cart (also included in the zip below):

Cart #fotubigibu-0 | 2020-05-05 | Code ▽ | Embed ▽ | No License
5

Of course it doesn't work as advertised here on the bbs, nor within the pico-8 binary. You'll get stuck when the pointer quits the frame.

  1. unzip ubmlock.zip in your template dir ({application data}/pico-8/plates or something)
  2. load the cart in pico (fotubigibu until I figure out how to change its name. I kinda like it though):
    load #fotubigibu-0
  3. export as html, using the above template:
    export mlockdemo.html -p ubmlock
  4. have a taste of freedom!

The mouse handling code is in the first tab:

mouse.lockable : true when the cart is run from the proper html template, false otherwise
mouse.locked : true when the mouse is actually locked within the web browser, false otherwise
(for instance you might want to pause and print a message for the user to click back)
mouse.dx, mouse.dy : mouse deltas!
mouse.x, mouse.y : mouse coordinates, still updated and available for your menus even when the mouse is locked

note that you'll need to call mouse:update() every frame to... update the stuff above!
also the mouse buttons and wheel are not handled here, but still available through the usual stat()

when not lockable there's a fallback to standard mouse input while still trying to provide deltas, for dev purpose, with the result you can see above.

Free to use and modify, no attribution required, have fun!

P#75853 2020-05-05 17:21

they're clamped to color 15 it seems.
not a big deal, but maybe it's an easy fix?

P#75852 2020-05-05 15:21

this happened to me a couple of times in the last few days, and just now: I left pico-8 running (not a cart, console prompt) and found it completely irresponsive after something like two hours...

windows 10, pc didn't go to sleep (I usually manually Win+L, but not those times)
edit: 0.2.0d - missed an update ;)

P#75800 2020-05-04 19:26 ( Edited 2020-05-04 19:30)

Cart #bowobah-0 | 2019-09-18 | Code ▽ | Embed ▽ | No License
8

Wandering carelessly through space you get swallowed by b'Ah, the semi-sentient semi-cybernetic semi-grumpy semi-planetoid! Now fight your way to its other end (there's one)!

Still in need of some polish here and there but (hope)fully playable, so here it is!

(edit) moved from w.i.p. to cartridges after all. some update still coming up later on...

P#67874 2019-09-18 22:57 ( Edited 2019-12-22 12:49)

just a very old very unfinished project, not playable but small and hopefully readable.
free to use and modify or take from, make something awesome and have fun!

Cart #pong3d-0 | 2019-08-23 | Code ▽ | Embed ▽ | No License

P#66882 2019-08-23 12:24

standard version (export from 0.1.11g):
https://www.lexaloffle.com/bbs/files/13845/crt_template.zip

unzip crt.html to {application data}/pico-8/plates
then
EXPORT GAME.HTML -P CRT

alternate version (see here):
https://www.lexaloffle.com/bbs/files/13845/ubcrt_template.zip

Feel free to use & modify, no attribution required.

Have fun!

P#62468 2019-03-03 21:47 ( Edited 2019-04-25 11:32)

Cart #55065 | 2018-08-13 | Code ▽ | Embed ▽ | License: CC4-BY-NC-SA
1

Connect the pipes!
There's an auto-connect feature to help you (most of the time). It can be disabled through the pause menu.
Reset the cart to replay a game (sorry!)

Early but old wip, I don't think I'll have time to work on it for a while so here it is, instead of gathering dust all alone.

P#55066 2018-08-13 10:39 ( Edited 2018-08-15 08:13)

Cart #54769 | 2018-08-06 | Code ▽ | Embed ▽ | No License
1

This was inspired by a minesweeper puzzle I saw in a paper magazine years ago.

  • tag bombs with (X). once you've tagged 20 cells the board is revealed
  • tag free cells in green with (O) (in easy mode only)
  • the bomb count does not include the cell itself (a '0' cell can contain a bomb)

a future update will most likely feature mouse support.

P#54129 2018-07-12 18:38 ( Edited 2018-08-06 17:19)

Fixes:

Features:

  • pixel-perfect auto-resizing (optional, set autoresize to true in html)
  • minor enhancements (pico8 palette colors, black frame with shadow)
  • play button when autoplay is denied (in compliance with autoplay policy changes in chrome 66)

Tested on:

  • win10 (chrome,opera,firefox, edge(blurry as expected, [email protected]))
  • linux mint (chromium,firefox)
  • macos (safari)
  • itch.io, site & app (min embed size is 516x540, close fit with borders without autoresize)

How to:
unzip ub.html to {application data}/pico-8/plates
and then
> EXPORT FOO.HTML -P UB

minified version:
> EXPORT FOO.HTML -P UBM

Download:
https://www.lexaloffle.com/bbs/files/13845/ub_html_12.zip

Have fun!

(edit) no mobile support for now

...
1.2: power button when autoplay disabled (chrome update may 2018)
1.1c: fixed cursor keys scrolling page within iframe
1.1b: removed CRs, added minified
1.1: fixed select/drag/context menu
1.0: first version

Previous versions:
https://www.lexaloffle.com/bbs/files/13845/ub_html_11c.zip
https://www.lexaloffle.com/bbs/files/13845/ub_html_11b.zip
https://www.lexaloffle.com/bbs/files/13845/ub_html_10.zip

(free to use and modify, no attribution required)

P#50793 2018-03-25 09:21 ( Edited 2018-05-06 22:39)

It seems I'm using these a lot, so here they are:

-----------------
-- table as string
-----------------

function tab2str(t)
    local s="("
    for i,v in pairs(t) do
        if type(i)=="number" then
            s=s.."["..i.."]="
        else
            s=s..i..'='
        end
        if type(v)=="boolean" then 
            s=s..(v and "true" or "false")
        elseif type(v)=="table" then
            s=s..tab2str(v)
        else
            s=s..v
        end
        s=s..','
    end
    s=sub(s,1,#s-1)--remove last comma
    return s..')'
end

----------
-- example
----------

l={1,2,4,5,s=5}
print(tab2str(l))
----------------
-- clone a table
----------------

function clone(t)
    local c={}
    for i,v in pairs(t) do
        c[i]=type(v)=="table" and clone(v) or v
    end
    return c
end
---------------------------------------------------
-- sort a table (insertion sort)
-- cmp(a,b) should return true when a,b are ordered
---------------------------------------------------

function insort(t,cmp)
    for n=2,#t do
        local i=n
        while i>1 and not cmp(t[i-1],t[i]) do
            t[i],t[i-1]=t[i-1],t[i]
            i-=1
        end
    end
end

----------
-- example
----------

function ascending_y(a,b) 
    return a.y<=b.y 
end

t={}
for i=1,5 do 
    add(t,{i=i,y=rnd(10)}) 
    print(i..': '..t[i].i..' '..t[i].y)
end
print("----")
insort(t,ascending_y)
for i=1,#t do 
    print(i..': '..t[i].i..' '..t[i].y)
end
-- note: better version by kittenm4ster, read below
------------------
-- shuffle a table
------------------

function shuffle(t)
    for n=1,#t*2 do -- #t*2 times seems enough
        local a,b=flr(1+rnd(#t)),flr(1+rnd(#t))
        t[a],t[b]=t[b],t[a]
    end
    return t
end

----------
-- example
----------

t={1,2,3,4}
for i=1,#t do 
    print(i..': '..t[i])
end
print("----")
shuffle(t)
for i=1,#t do 
    print(i..': '..t[i])
end
------------------------------
-- random element from a table
------------------------------

function trand(t) return t[flr(1+rnd(#t))] end

----------
-- example
----------

l={1,2,3,4}
print(trand(l))
-- note: a little overkill token-wise, read below (thanks felice!)
-----------------------------------
-- stack (lifo: last in, first out)
-----------------------------------

lifo={
    new = function() return setmetatable({d={}},lifo) end,
    clear = function(m) m.d={} end,
    len = function(m) return #m.d end,
    empty = function(m) return #m.d==0 end,
    push = function(m,v) m.d[#m.d+1]=v end,
    pop = function(m)
        local v=m.d[#m.d]
        m.d[#m.d]=nil
        return v
    end
} lifo.__index=lifo

----------
-- example
----------

stack = lifo.new()
stack:push(10)
stack:push(20)
stack:push(30)
while(not stack:empty()) do
    print(stack:pop())
end

I think some of these would be handy as part of the pico8 api (clone,sort,shuffle...)

feel free to criticize, comment, correct mine, post yours...

P#49081 2018-02-08 08:32 ( Edited 2018-02-09 01:53)

Play a random game from @gabrielcrowe's list of amazing pico8 games (Twitter Moment):

Cart #47721 | 2017-12-28 | Code ▽ | Embed ▽ | No License

BBS Links:

P#47722 2017-12-28 05:19 ( Edited 2017-12-28 11:08)

Cart #47241 | 2017-12-10 | Code ▽ | Embed ▽ | No License

Well, it's that time of the year again!
(Last year's tree, this time with music thanks to gamax32's midi2pico)

P#47478 2017-12-17 14:38 ( Edited 2018-07-13 15:00)

Cart #51581 | 2018-04-13 | Code ▽ | Embed ▽ | No License
5

Did you know you're literally sitting on a vast supply of natural gas?
Thanks to Fracture, Inc. this cornucopia is now within your reach!
It's easy as 1,2,3:

  1. Install a rig from Fracture, Inc. in your garden, your field, your backyard!
  2. Buy the finest fracking chemicals from Fracture, Inc. (only $1 per barrel!)
  3. Start fracking!
  4. ...PROFIT!

So what are you waiting for? Order your personal fracking rig from Fracture, Inc. right now!

In no circumstances shall Fracture, Inc. be liable for any direct damage, indirect damage, incidental damage, consequential damage, or any other damage occurring to, including but not restricted to, family members, pets, cattle, neighboring fauna and flora with pre-existing conditions such as, including but not restricted to, being alive.

...

somewhat extented version: https://spacetruckergames.itch.io/fracture

...


v1.2:

  • went other directions ;)

v1.1:

Cart #49021 | 2018-02-05 | Code ▽ | Embed ▽ | No License
5

  • digging mechanic
  • down button: soft drop with soft lock
  • up button: hard drop with hard lock

v1.0:

Cart #47627 | 2017-12-22 | Code ▽ | Embed ▽ | No License
5

Work in progress!
note:
I made the game quite forgiving, and I just realized it's still playable without even cycling the colors.
maybe I could ditch the cycling altogether? or make it a difficulty option? what do you think?

P#47303 2017-12-11 20:34 ( Edited 2018-04-13 18:25)

Here's a simple one:

Cart #45944 | 2017-11-06 | Code ▽ | Embed ▽ | No License
11

[box=ffeedd]use stat(x), where x is:

80..85  UTC time: year, month, day, hour, minute, second
90..95  Local time[/box]

Go crazy, guys!

P#45923 2017-11-06 09:42 ( Edited 2018-10-12 20:49)

Cart #45594 | 2017-10-29 | Code ▽ | Embed ▽ | No License
5

For some reason the Gates of Hell are wide open in a cemetary nearby! Send the demons back to where they belong by spelling out loud their true name!

A Halloween Guess'Em Up, using Zep's 7500 words dictionary

...

This game should have been released a year ago! I exhumed it this year, hoping I could polish it for good. but it seems I'm falling short once again! I'm not putting it back six feet under though, so here it is, in its (appropriate) semi-zombified state, in time for Halloween!

so, still a work in progress, but fully playable though. mostly the sound effects need some work...

Happy Halloween!

P#45595 2017-10-29 13:24 ( Edited 2017-10-30 00:09)

There's quite a bunch of pico-8 games on arcadeprehacks. they're leeched from here, and modified with "trainer" options. ads all around, no acknowledgment nor links to the original stuff. at least they could add a cracktro!

found the site searching for my "pellet muncher" on google. I lol'd at first. sad thing is, there's 1300+ "plays" there, while I painfully got a hundred "views" on itchio plus gamejolt. well, at least there are people playing my game...

P#45045 2017-10-10 07:29 ( Edited 2018-03-01 23:38)

Cart #45235 | 2017-10-15 | Code ▽ | Embed ▽ | No License
8

here's a wip of another take on my tetramino-making mechanic (T-Factory 1)
hopefully a little more appealing / a little less awkward (?)

P#44614 2017-09-25 21:12 ( Edited 2017-10-17 09:58)

Cart #55000 | 2018-08-12 | Code ▽ | Embed ▽ | No License
50

They stop when you stop! Rush through the maze in Pellet Time!

4 modes:
Super Kid Pellet: Pellet Time with speed & timing progression
Super Hot Pellet: Pellet Time at full speed
Super Mr Pellet: Classic muncher with speed & timing progression
Super Ms Pellet: Speed-hacked classic muncher!

Also playable on itch.io, Game Jolt, Newgrounds, Kongregate
in Glorious Scanline-O-Vision (aka Lame Scanline Overlay) for some reason.

...
v1.2.5: bug fixes and whatnots
v1.2.3: more sensible use of dset/dget for pi+microSD
v1.2.1: fixed Clyde's AI, added blinking hearts.
...

old beta version:


Cart #43818 | 2017-09-01 | Code ▽ | Embed ▽ | No License
50

I started a pac-man clone a long time ago and here's its current state.
I find it fun enough and not that easy. but I might be delusional :)

The generated mazes are not that good, the main menu is a mess, the code is nothing to be proud of, but the graphics could have been worse. well, it's not totally finished yet. Let me know what you think!

P#43819 2017-08-31 20:31 ( Edited 2018-08-13 05:40)

Cart #46281 | 2017-11-14 | Code ▽ | Embed ▽ | No License
29


You've been flushed away in The (Endless) Sewers of d'Oh!
Now try to escape, pathetic paddling!
Hint: You can't! This is an infinite breakanoid! Muahahahaha!

Have fun!

v1.2.1: more sensible use of dset/dget (stalls on Pi+microSD, see here)
v1.2.0: warrior mode, better background, ugly label.

...

Sewers of d'Oh is a prequel to The (Bottomless) Pits of d'Oh! (available on itch.io and gamejolt)

note: SOD is keyboard/gamepad only while POD is mouse/touch only!

P#42655 2017-07-20 13:04 ( Edited 2017-11-14 12:55)

step 1: export a game as html (eg "export game.html" in console)

step 2: edit the html file (eg game.html)
add this inside "canvas{}":

canvas{
    image-rendering: optimizeSpeed;
    ../..
    border: 0px;

    --gray: grayscale(100%);
    --blue: sepia(100%)hue-rotate(180deg)saturate(200%);
    --amber: sepia(100%)saturate(200%);
    --green: sepia(100%)hue-rotate(90deg)saturate(200%);    
    filter:var(--green);
}

set your preferred filter in filter:var()

step 3: profit!

more info on css filters:
https://www.w3schools.com/cssref/css3_pr_filter.asp

P#41509 2017-06-10 11:05 ( Edited 2017-06-10 15:44)

View Older Posts
Follow Lexaloffle:        
Generated 2020-07-09 08:30 | 0.158s | 2097k | Q:196