Log In  

Cart [#44285#] | Copy | Code | 2017-09-17 | Link

I made an animated self-portrait!

Some of it is rendered with drawing functions (the head shape, eyeballs, "ear beams" on the glasses, cheek-lines, etc), and other stuff done with sprites (frames of glasses, eyelids, most of the hair).

Had a lot of fun making this - I recommend making one of yourself, or of someone else!

I also added a fullscreen trail effect for some extra pizzazz, because it's an easy addition. Here's the code for that part, in case you want to use it in your own stuff - note that this will only allow you to "fade to black" over time, but you could modify it a bit to make it fade to a different color. It's...probably very difficult to control what colors it moves through as it approaches your target color, though, since it's abusing the two-pixels-per-byte format that pico8 uses for its screen buffer (which is also why it produces vertical stripes).

for i=1,1100 do

    local x=flr(rnd(64))
    local y=flr(rnd(128))
    local m=8192*3
P#44286 2017-09-17 17:55


Cart [#42900#] | Copy | Code | 2017-07-29 | Link

A barebones implementation of the FABRIK algorithm ("Forward And Backward Reaching IK"). Move the mouse around to control the IK target point.

I think there's something kind of cute and coincidental about the way that it actually sorta looks like fabric.

FABRIK is a clever trick that's surprisingly straightforward to implement, and it gives some really natural and performant results. The general principle is that instead of doing gradient descent or other fancy math for IK, you just imagine that your IK chain is a string (for 2D strings, imagine that they're resting on a table, and you're viewing from above).

At each tick, you perform two loops through the chain: First, you "pull the string" by the end point to the target position (and some amount of the rest of the string will get pulled along with it). After you've done this, you do the same thing, but this time, you pull the root of the string to the anchor point. (If the IK chain is a person's arm, then the anchor point is the shoulder.)

The source code also includes a 2D-distance check that tries to avoid number-overflow (by sacrificing some precision) when you give it a large enough vector. Might not be tuned perfectly (I really just guessed about the "safe range"), but maybe some motivated party can math out a more rigorous version of the function!

P#42901 2017-07-29 19:09


Cart [#42360#] | Copy | Code | 2017-07-10 | Link

A weird animated image generator, based on the screensaver "Electric Sheep" (except way less powerful).


Press Z to generate a new flame.

Press S to save the current flame.

Press X to view saved flames.

When viewing saved flames, press Up/Down to move the cursor between saved flames.

When viewing saved flames, press F to select/deselect a flame.

When viewing saved flames, press Z to load the selected flame (instead of generating a new one).

If you have flames selected and you close the saved-flame-view (by pressing X), then any new flames that are generated will be bred from the flames that you've selected (as parents).

For example: If you select one flame, close the selector, and generate new ones, they will all at least vaguely resemble the one that you selected. If you select more than one parent and generate new ones, then the new ones will inherit traits from all selected parents (plus some randomized mutations).

Post me your prettiest children in the comments!

P#42361 2017-07-10 21:42


Cart [#42207#] | Copy | Code | 2017-07-05 | Link

A non-interactive view of a scene. It's roughly based on something I saw a few days ago, which reminded me of Virginia.

Some features:

  • Infinite random props
  • "Immediate mode" rendering - no spawning/deleting/pooling props
  • Smooth LOD on tree leaves (more leaves on nearby trees)

Source code is commented, but the least-intuitive part of it (infinitely looping random objects) isn't really explained in there, because it would be a huge comment. Instead, here we go:

First, think of the casino signs with a ring of lights around them. When they light up one at a time in sequence, it can appear like a "single light" is "moving around" the sign, even though it's really different lights which are blinking at choreographed times. Our trees in this demo work similarly, but we can also move the positions of the lights separately from changing their states. Also, instead of on-or-off, each tree is given a persistent random seed.

Other than that, it's all pretty normal, I think?

P#42208 2017-07-05 15:09


Cart [#42148#] | Copy | Code | 2017-07-02 | Link

Just a little image generator. Generates buildings, a moon, some stars, and a reflective body of water. Nothing particularly fancy going on here; the code is probably relatively self-explanatory

P#42147 2017-07-02 14:32


Cart [#42122#] | Copy | Code | 2017-07-01 | Link

I learned about L-systems the other day, so here's my first shot at making one. It generates a plant whenever you hit the main action button.

L-System Parameters:



Constants are any characters that don't appear as a rule index - all rules for a given variable have an equal chance of being chosen. The generator runs five iterations for each plant.

A means "go forward," B and C mean "turn and go forward," {} and () mean "start a new branch and turn afterward," and . means "draw a circle."

All animation comes from the rendering portion - the L-system only runs to initially create the plant.

P#42123 2017-07-01 13:41


Cart [#40228#] | Copy | Code | 2017-05-05 | Link

Just a simple little 2D-rotation example.

The function takes a 2D position (X,Y) and rotates it by ANGLE. CX,CY represents the center/pivot point.

The lines of code in the middle are the rotation matrix:

local rotx=cosa*x-sina*y
local roty=sina*x+cosa*y

This rotates a point around the origin. Before and after doing so, we offset our position by our center coordinate - this lets us rotate around any arbitrary pivot point.

For bonus points: When you're rotating lots of objects by the same angle (like a camera rotating, or a complex prop rotating), you can re-use your SINA and COSA values.

P#40230 2017-05-05 22:07


Cart [#36390#] | Copy | Code | 2017-01-22 | Link

Protect your rebbitts from the angry magician!

We made this for Global Game Jam 2017, at the Omaha, Nebraska site.

Eli Piilonen (Code/Design)
David Carney (Art/Audio)

(Instructions are in-game)

P#36365 2017-01-22 16:05


Cart [#35829#] | Copy | Code | 2017-01-15 | Link

Cart [#35825#] | Copy | Code | 2017-01-15 | Link

Cart [#35818#] | Copy | Code | 2017-01-15 | Link

Cart [#35705#] | Copy | Code | 2017-01-14 | Link

This is a port of my favorite mobile game, which was originally designed by Area/Code Entertainment. Zynga acquired the original version, and they promptly ruined the minimalist experience with a bunch of abrasive and irritating hooks. On top of that, all of the clones I've found have been kind of janky.

Pico8 to the rescue! I'm trying to make the very best totally-free version of Drop7. Your feedback would be greatly appreciated!


Click to drop disks.

A disk is destroyed if its number is equal to the size of the group that contains it. A "group" is a horizontal row or vertical column of adjacent disks (like Connect-4, except with no diagonals).

For example: If you have five disks in a row along the bottom of the screen, any of those disks with a "5" label will be destroyed. Vertical columns of disks work, too.

If you destroy a numbered disk while it's touching an unlabeled disk, then the unlabeled disk will take damage. If you damage an unlabeled disk twice, it will change into a random numbered disk.

After every tenth disk you drop, a row of unlabled disks will rise from the bottom of the screen.

If any disk ends up above the top of the gameplay grid, then you lose. Click anywhere to return to the main menu.

Version 1.1.1:

(Hopefully) fixed a bug causing an error when you run the game for the first time. If you get an error on first launch, try refreshing the page...and then please leave a comment saying that the bug isn't fixed yet.

Version 1.1:

Added three difficulty modes.

Version 1.0:

Lots more polish compared to the alpha version - Drop-5 and Drop-10 modes, a main menu, scene transitions, a palette selection screen, and more!

Experimenting with a feature that restricts certain unfair number spawns when an unlabeled disk pops inside a large cluster. Might make the game too easy, but then it seems like a feature that could be used for easy/training modes.

Alpha version:

A basic Drop7 clone. Will be adding extra features and such over time.

P#35706 2017-01-14 20:01


Cart [#32029#] | Copy | Code | 2016-10-29 | Link

Cart [#31931#] | Copy | Code | 2016-10-27 | Link

Cart [#31884#] | Copy | Code | 2016-10-26 | Link

Cart [#31868#] | Copy | Code | 2016-10-26 | Link

Cart [#31817#] | Copy | Code | 2016-10-26 | Link

Submit a high score screenshot in the comments to get your time and username included in the level select screen!

Version 1.0

  1. Two new levels
  2. Scene transitions
  3. Added titles for levels
  4. "Congrats" and "return to menu" messages after victory
  5. Little menu updates

Don't think I'm making any more changes to the game for a while (unless you submit a high score, in which case I'll put your time/username in the level selection screen)

Version 0.4

Various changes:

  1. Two songs and mowing sfx by David Carney/DVGMusic (we're long-time collaborators!)
  2. Two new levels
  3. Main menu renders thumbnails of level layouts
  4. Basic pause menu options (restart level + return to menu)

Feel free to post a high score image for any level in the comments - I'll put your score/username in the level selector.

Version 0.3
No gameplay changes this time, but I added a faux-3D stick figure dude to push the mower around. I like him. He's got little nubs for feet, and he sways around with the movement controls a bit.

(Also I removed that "dark pixel" thing from the spray particles, to save some performance.)

Version 0.2
Small update. Better update soon.

  1. Main menu with world record shoutout
  2. Grass is now green/yellow instead of orange/pink
  3. Round starts with the player at the bottom, timer doesn't start until you move
  4. Nicer spray particles (dark pixel added below particle position, in certain cases)
  5. Changed the title

Version 0.1
I saw "Advanced Mower Simul8or" by deKay and remembered that I've been vaguely interested in making a little lawn-mowing game for a while now. There are aspects of lawn-mowing that I think are weirdly satisfying, and I wanna capture some of those things. Pico8 feels like the perfect place for this type of stuff.

You play as Mowerman, who is a lawn mower. Mow every pixel of the lawn. There's no fancy victory announcement or startup countdown yet, but your timer locks in when you're done.

P#31819 2016-10-26 09:11

:: More
About | Contact | Updates | Terms of Use
Follow Lexaloffle:        
Generated 2017-11-18 21:26 | 0.517s | 2097k | Q:163