Log In  
Follow
TheTomster
Follow

Cart #ufo_santa-2 | 2019-12-01 | Code ▽ | Embed ▽ | License: CC4-BY-NC-SA
12

Santa has to send presents to more people than ever... thankfully he's got a UFO to help him get around faster. But these flying candies keep getting in the way! Throw gifts at the candies to pop them and collect coins. You can spend coins to buy upgrades and blast even more candies! Will you make it to the ultimate upgrade??

For an extra challenge, try completing a run without letting any candies escape through the top of the screen!

Game Controls:

up / down / left / right: movement
Z / C / (O): drop presents

Shop Controls:

left / right: select item
Z / C / (O): buy item
X / V / (X): skip buying an item (save up those coins for next time!)

About the PICO-8 Advent Calendar

This winter another group of PICO-8 elves has worked hard to release a shiny new toy each day until the 25th of December. Check out the PICO-8 Advent Calendar 2019 every day for a new surprise! https://www.lexaloffle.com/bbs/?tid=36076

There's even more festive fun waiting on last year's calendar! https://www.lexaloffle.com/bbs/?tid=32388

Happy Holidays!

Candies:

Classic Peppermint
[16x16]

This is the most common candy seen in the skies of UFO Earth. After an incident at Confection Production Facility 97, thousands of peppermints were launched into low earth orbit. Santa's UFO is tough enough to ram these without taking any damage, and a few solid hits with a gift will shatter these mints into dust.

UPDATE: Dec 2 2199 - Extremely large mints have been spotted on radar in the upper mesosphere. Be on guard and throw as many gifts as you can at these large mints. --Rolf, North Pole Recon Unit

Spearmint Swirl
[16x16]

The Council of Commercial Confectioners attempted to remedy the CPF-97 disaster by launching denser spearmints into orbit to break up the peppermints. The plan backfired. Spearmints and peppermints happily coexist in the upper atmosphere, and now the dense spearmints provide a more challenging obstacle for pilots.

Wintermint Freeze
[16x16]

Occasionally orbital mints get pulled into arctic storm systems. Most of these mints get pulled out of orbit and crash land in Upper New Canada, but occasionally they are launched back into orbit and become another obstacle for UFO pilots to navigate around. These mints are transformed by the ice and hail, and take on a refreshing wintergreen flavor. Try destroying these mints for a cool blast of refreshment.

[REDACTED]
[16x16]

NOTE: Santa, I found this file on the New Canadian Intelligence Force's network. Not much info here, but you might encounter these on your route. --Ernesto, North Pole SIGINT

First discovered in [REDACTED], flying in airspace above
[REDACTED]. Appear to be composed of [REDACTED]. Extremely
dense, tests have shown they can only be shattered by
[REDACTED].
P#70439 2019-12-01 07:44

Cart #42556 | 2017-07-17 | Code ▽ | Embed ▽ | License: CC4-BY-NC-SA
8

Arcade wizard game made in 48 hours for GMTK Jam.

Press Z to jump, X to shoot magic missile. Down+Z to drop through platforms.

Smash all the gems with your magic to advance to the next level. When you shoot the missile, you're left vulnerable, so be careful! See how far you can get and set the high score.

P#42557 2017-07-16 21:17 ( Edited 2017-07-21 03:19)

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

A small apple farming sim.

Tab turns on the TV. Once the TV is on, arrow keys move, X displays the inventory, and Z uses the current item.

Tools:

Magnifying Glass
[3x3]

Examines the square you are facing. Brings up a full screen detailed view of whatever is in front of you. Useful for checking on your trees.

Apple Basket
[3x3]

Holds all of your apples. The red number on screen when your inventory is open is the count of how many apples are in your basket. Pressing "use" while this is selected will either plant an apple in tilled soil, or harvest apples from a grown tree.

Watering Can
[3x3]

Young seedlings need to be watered to grow. Pressing "use" while this is selected will sprinkle water on the square in front of you.

Hoe
[3x3]

Tills soil. Pressing "use" will till the square in front of you.

v0.9:


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

P#36393 2017-01-22 17:13 ( Edited 2017-01-28 05:28)

Cart #34996 | 2017-01-05 | Code ▽ | Embed ▽ | License: CC4-BY-NC-SA
6

Someone over in Discord asked about some entity drawing code in Hug Arena, so I took a look a stab at explaining it. I realized the code in Hug Arena is similar to a technique I've used quite a bit, so I put together a small example cartridge demonstrating the technique.

The sample is commented code that demonstrates how to draw two types of objects that update the same way each frame, but draw differently.

In "Remains of El Dorado" I used this for most objects drawn in the game, you can check out that cartridge to see how this works on a larger scale.

P#34997 2017-01-05 14:26 ( Edited 2017-01-10 19:40)

Explore the lost city. Find the amulet.

The Remains of El Dorado is a roguelike game for PICO-8. You're seeking The Amulet of the Sun which will bring you great fame and fortune... if you survive.

Press C to charge a shot, press a direction while charged to shoot. Press X to enter the potion menu. Select a potion by pressing left and right, and press C to confirm. Aim your throw with the direction keys, and press C to throw the potion. Careful! Potions will explode on contact with a wall.

Remains is turn based. When you're in a tough situation don't forget to slow down and think about all of your options. Don't die with a potion in your pocket!

Potions

Potions are thrown around like grenades! On impact they will affect everything standing in the square they hit plus the 8 squares surrounding it.

Healing potions heal you if you're in the explosion. Enemies are unaffected. They also put out fires in the blast zone.
Fire potions are useful for attacking groups of enemies. They don't put out fires. The fire ants are immune to fire potions.
Ice potions are slightly harder to find than fire potions, but work on all types of enemies and put out fires.

Enemies

Three types of enemies inhabit the dungeon and will defend their turf.

Enjoy!

P#31992 2016-10-29 00:20 ( Edited 2017-07-05 18:39)

P#29641 2016-09-28 23:38 ( Edited 2016-10-19 15:40)

Cart #28719 | 2016-09-18 | Code ▽ | Embed ▽ | No License
9

For the game I'm working on I built a super tiny tweening system for making it easier to move things around. This cart demonstrates a few different easing functions that plug into the system.

Tweening is a way of moving an object from point A to B. You specify where you want the object to go, and how long you want it to take to get there, and the tweening system takes care of the motion. I find it super useful for making games, especially for adding little bits of polish to your game. It's easier to just say "move the ball to x=104 in 60 frames" than it would be to calclate the required speed every time. You can also use an easing function to tell how it should get there, allowing it to accelerate slowly or bounce or spring back.

Tweens have four parameters: the property we want to update, the value we want to end up with, the length of time we want it to take to reach the target value, and the easing function. We'll store those values in a table, and each frame we'll look at each entry in the table and update the target property as needed.

The tween function begins tweening a property:

function tween(target, property, destination, duration, func)
  local tween_info = {
    target = target,
    property = property,
    base_value = target[property],
    change = destination - target[property],
    duration = duration,
    elapsed = 0,
    func = func
  }
  add(tweens, tween_info)
end

Each frame, we loop through that list and update everything. The update function removes any tweens that have reached their duration. Other than tracking this timing information, the tween_update function leaves most of the work to the selected easing function.

function tween_update()
  for t in all(tweens) do
    if t.elapsed > t.duration then
      t.target[t.property] = t.base_value + t.change
      del(tweens, t)
    else
      t.elapsed += 1
      t.target[t.property] = t.func(
          t.elapsed,
          t.base_value,
          t.change,
          t.duration)
    end
  end
end

So the easing functions are the ones that actually move our stuff… how do they work? Well the simplest easing function is linear, which is really no “easing” at all. It just moves the object from a to b at a constant speed. Here's what it looks like:

function linear(elapsed, base_value, change, duration)
  return change * (elapsed / duration) + base_value
end

So far in my game I've only needed one other easing function, In/Out Quadratic. This simulates acceleration and deceleration. It looks like this:

function in_out_quad(t,b,c,d)
  t/=d/2
  if (t<1) return c/2*t*t+b
  t-=1
  return -c/2*(t*(t-2)-1)+b
end

The cart also has a bouncy tween function that is super useful for menus and other UI.

The great thing is that by plugging in different easing functions you can reuse the same simple framework to accomplish many different effects. And tweening doesn't just have to affect movement. You can tween sizes, rotations, color… any numeric value you want to change over time.

P#28720 2016-09-18 00:40 ( Edited 2016-09-18 07:14)

Follow Lexaloffle:        
Generated 2019-12-11 16:51 | 0.098s | 2097k | Q:99