Log In  
[back to top]

[ :: Read More :: ]

Cart #42207 | 2017-07-05 | Code ▽ | Embed ▽ | License: CC4-BY-NC-SA
10


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 ( Edited 2017-07-05 22:23)

[ :: Read More :: ]

Cart #42148 | 2017-07-02 | Code ▽ | Embed ▽ | License: CC4-BY-NC-SA
12

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 ( Edited 2017-07-04 23:03)

[ :: Read More :: ]



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:

axiom="a"

rules={}
rules["a"]={"b{c}b","c{b}c"}
rules["b"]={"a{a.}","a(bb.)"}
rules["c"]={"(ab.)","(b)"}

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 ( Edited 2017-07-03 22:15)

[ :: Read More :: ]

Cart #40228 | 2017-05-06 | Code ▽ | Embed ▽ | License: CC4-BY-NC-SA
16

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 ( Edited 2017-05-06 02:12)

[ :: Read More :: ]

Cart #39671 | 2017-04-14 | Code ▽ | Embed ▽ | License: CC4-BY-NC-SA
5

First real test-case for a 3D prop editor I've been making for Pico8.

There's no interaction in this demo - it's just four cars that drive around the screen. They also don't do any collision detection or avoidance, so they just drive through each other sometimes.

The point of the tool is that it lets you create and edit simple 3D props for use in Pico8 games. The editor is made in Pico8 so you can get a live preview with the same renderer that gets used in-game (crucial for lo-fi rendering!). The other reason that the editor is made in Pico8 was because it seemed like a funny thing to do.

If you clicked the link to the gif above, you may have noticed a familiar face - the tool can import triangle meshes, so that clip is showing a render of Suzanne (the test-monkey from Blender).

The workflow for making the cars goes like this:

  1. Make a car mesh in blender

  2. Run the mesh through a Unity utility I made that converts the model into a different coordinate space and exports a serialized mesh

  3. Add tires in the Prop Editor and tune up colors+triangles

  4. Export to console, paste the model into another cartridge (which contains the renderer) as a giant string

There's still room for improvement, but I'm at the point where I'd need to start optimizing out a bunch of tokens to add any more stuff to the editor. The renderer on its own is about 1700 tokens, so I think there's a reasonable amount of space left (>6000 tokens) for it to be used in a releasable game. Also, while each model is only one token, a really complex model (by lo-fi standards) can end up being a few thousand characters...

...but the serialization format is completely uncompressed right now - particularly, it includes every serialized variable name as plaintext (instead of just using a fixed order to infer the meanings of different numbers). This would cut the character-count down by a whole lot - like 50% smaller, or something.

Will likely release the editor on the BBS, though it's worth noting that for it to really be useful, you need to run it in the standalone Pico8, because you have to start it from the command line in order to export your models.

And for it to be fully-activated, you'd also want to be able to convert other meshes into the special serialization format. It's fun to make 3D stuff in this pico8 tool, but it's really not appropriate for making triangle meshes from scratch (no extrusion, edge loops, etc), so it's best to just do that elsewhere and import it into the tool for extra additions and final tuning. If you're a Unity user, I'd be happy to share my converter project with you. If you're not a Unity user but you do have some other 3D-model-scripting capability, I can explain how the middle-man works (that part is pretty simple)

Not exactly sure what it'll be, but I'm gonna make some type of cool shit with this thing!

P#39672 2017-04-14 19:35 ( Edited 2017-04-15 16:17)

[ :: Read More :: ]

Cart #36390 | 2017-01-22 | Code ▽ | Embed ▽ | License: CC4-BY-NC-SA
4

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 ( Edited 2017-01-22 22:08)

[ :: Read More :: ]

Cart #drop_7_professional-0 | 2022-08-28 | Code ▽ | Embed ▽ | No License
9

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!

INSTRUCTIONS:

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 have five disks labeled "4" in a row, nothing will happen - the disk-numbers need to match the exact-length of the group!

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, which can then be cleared normally.

After a few drops, a row of unlabeled disks will rise from the bottom of the screen. Check the counter on the left side of the screen to see how many drops you have left until this happens.

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.2:

Added support for keyboard/controller inputs - also scoring, and some new sound effects.


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 ( Edited 2022-08-28 16:07)

[ :: Read More :: ]

Cart #32141 | 2016-11-01 | Code ▽ | Embed ▽ | License: CC4-BY-NC-SA
5

Cart #32054 | 2016-10-30 | Code ▽ | Embed ▽ | License: CC4-BY-NC-SA
5

Simple "Space Invaders" clone with some wacky special effects.

Left/Right to move, Z to fire.

Version 0.2
Did another stream, added some new features:

  • Points system with perfect-wave bonus
  • Permanent high score
  • Infinite waves of baddies (gets progressively harder, to a certain point)
  • Simple starfield background

Version 0.1

Made in about two hours, to practice dev-streaming. You can watch the full process here. There aren't a lot of features, so it shouldn't be too hard to skip around to the part you're interested in. Glitch effect comes in pretty close to the end.

P#32055 2016-10-29 21:54 ( Edited 2016-11-01 23:51)

[ :: Read More :: ]

Cart #32003 | 2016-10-29 | Code ▽ | Embed ▽ | License: CC4-BY-NC-SA

Little thing I made while practicing streaming.

CONTROLS:

Arrows to move

Press upward against a wall to take cover

Double-tap up while in cover to jump/vault

Hold X to aim, move the crosshair with the movement keys, then tap Z to fire

P#32002 2016-10-29 06:09 ( Edited 2016-10-30 05:05)

[ :: Read More :: ]

Cart #mowerman-4 | 2021-05-22 | Code ▽ | Embed ▽ | No License
66

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 ( Edited 2021-05-22 22:39)

[ :: Read More :: ]

Cart #31654 | 2016-10-24 | Code ▽ | Embed ▽ | License: CC4-BY-NC-SA
13

Wanted to see if I could make a post-processing effect to distort previously-drawn screen pixels.

It works, but it's probably too slow to be practical - the much, much cooler thing here is a serendipitous glitch-art effect that happens when the screen isn't cleared between frames. Hit the Z/O key to toggle that.

The distortion effect works like this: It copies the frame buffer into the sprite sheet, then redraws a portion of the screen, pixel by pixel, by reading the sprite sheet - but it modifies the sprite lookup position for each pget() call, so you get the spherical bump when it's done.

Can anybody give me some optimization tips? I feel like there's some kinda trickery out there to make it more powerful (the demo here uses radius=26, but if I put it above 28, it drops to half-fps, at least on my laptop). If you've dealt with lots (thousands) of individual pixel draws per frame, let me know what you learned!

I tried using peek() and poke(), but it seemed like it ended up being slower than pset() for drawing pixels one-at-a-time, since the image data is packed with two pixels per byte - so they had to be separated and joined a bunch of times. Maybe there's some super-lean way to do that, which I didn't think of?

P#31656 2016-10-24 08:25 ( Edited 2016-10-25 19:49)

[ :: Read More :: ]



Version 2.0
Made some changes to make this thing a bit cooler:

  1. Overhauled the cloth sim so it operates in 3D now. It's projected orthographically ("just uh, ignore the z value for rendering," in this case), so there's no parallax - but even so, allowing points to move on the z-axis produces much more believable motion. I'm leaving the old version up for comparison. Particularly, the mostly-intact flags don't hold themselves upright like a rectangle made of jello anymore.

  2. Added basic "quad rendering." It draws two extra pixel-lines to connect pairs of simulation-lines. Makes it seem like the simulation is much higher-density than it actually is - score! (The cloth sim uses 7 rows with 10 particles each). For style, some of the simulation lines are now invisible (like the horizontal lines along unbroken stripe segments, and all the non-star diagonal structure lines)

  3. Added an extra prize when you win. It doesn't tell you in-game, but you can mash the "cancel" button on the victory screen to stress test it. Be careful not to hit the OK button, since that still acts as the reset button, like usual.

Version 1.0

Started messing with pico8 yesterday, and it's enough fun that I've already made three stupid doodads.

This one is, uh, sort of a game. You can win, but it's really just a clickbaity skinner box where you watch a culturally-exploitative cloth sim in various states of disrepair.

The rarest message is "GET OUT OF AMERICA." You have to mess up really bad to get it. I've literally never seen it happen, but I know that it's possible. You have to pass fewer than 40% of the line-spawn-checks (each line has a random chance to either spawn or not-spawn), but the lowest line-spawn-probability you can get for any given flag is 60%. Because of this, getting a sub-40% score is extremely rare. Maybe somebody can figure out just how rare it is.

Didn't upload the first two doodads because they weren't interactive - but here's a gif of each of them instead:

Ocean sunrise:
https://twitter.com/2DArray/status/789699736433401856

Rainy day:
https://twitter.com/2DArray/status/789940695469400064

P#31528 2016-10-23 05:57 ( Edited 2018-04-30 23:04)

Follow Lexaloffle:          
Generated 2024-04-19 18:43:07 | 0.106s | Q:47