Log In  

BBS > Community Superblog
All | Following | GIFs | Off-site

Small cart that features simple encryption/decryption methods.

Cart #encryption-0 | 2023-08-09 | Code ▽ | Embed ▽ | License: CC4-BY-NC-SA
1



Scytale is kinda broken, sorry!

1
0 comments


Cart #cat_coma-0 | 2023-08-09 | Code ▽ | Embed ▽ | No License
3


A game me and my friend made in 1 hour for laughs.

  • Comb this kitty and hear him Purr.
  • Shake off your comb if it gets too hairy!
  • Play as long as you like. He generates infinite fur c:
3
1 comment


Cart #knutil_amid-1 | 2023-08-09 | Code ▽ | Embed ▽ | No License
2

Feature Overview

AMID() Returns the median of a given positive and negative number.

  • It is used in controlling the camera and parameters that can swing either + or -.
  • This function consumes 10 Token.
x,y=0,0
w,h=16,8 -- range of movement(*2+1)
while 1 do
	cls(12)
	camera(-64,-64)

	rectfill(w,h,-w,-h,0)

	?'⬆️⬇️⬅️➡️ key to move',-60,-60

	x+=tonum(btn(1))-tonum(btn(0))
	x=amid(w,x)

	y+=tonum(btn(3))-tonum(btn(2))
	y=amid(h,y)

	pset(x,y,8)
	?x..' '..y,-w,h+1,7
	flip()
end

This function will be included in the next version(0.14.0) of KNUTIL library.
If you want to determine that two values are within range, consider INRNG().

[ Continue Reading.. ]

2
0 comments


Cart #crategirl-0 | 2023-08-08 | Code ▽ | Embed ▽ | License: CC4-BY-NC-SA
5


Push crates into water to walk across them.
Have fun ✌️

5
2 comments


Cart #knutil_htd-0 | 2023-08-08 | Code ▽ | Embed ▽ | No License

Feature Overview

HTD() Split a continuous string of hexadecimal numbers into a table.

  • the number of supported delimited bits is 4,8,12,16 bits (1~4 nibbles).
  • characters that cannot be converted to numbers are ignored.
    • the result of the api's tonum('0x'..v) of the api.
  • depending on the delimiter, a missing last character will result in a lower digit by the number of missing characters.
  • This function consumes 30 Token.
local a=htd('12a30f',1) -- a={1,2,10,3,0,15}
local b=htd('12a30f',3) -- b={297,783}

Perhaps consider BUNPACK() if you want to separate NUMBER every few bits.

[ Continue Reading.. ]

2 comments


Cart #kudojowipa-0 | 2023-08-08 | Code ▽ | Embed ▽ | License: CC4-BY-NC-SA
4

I'm new to PICO-8 here folks but absolutely hooked! I'm having a problem with my player shaking during movement as well as getting caught on my flagged sprites that the player collides with. I know some basics and have compiled this code by watching tutorials and scanning forums for code snippets but I think I am mixing some things that don't play well. I am really going for a smooth player movement vibe so I just added some acceleration rather than an abrupt "p.x+=1" movement style. It doesn't appear to show in my GIF but the player shakes violently during gameplay. Any ideas as to what could be causing this would be greatly appreciated!

4
5 comments


Cart #zofohewebe-1 | 2023-08-07 | Code ▽ | Embed ▽ | No License
1

1
1 comment


ToriEngine - ECS Metroidvania Engine

Cart #toriengine-0 | 2023-08-07 | Code ▽ | Embed ▽ | License: CC4-BY-NC-SA
4

I'm building an Entity-Component-System engine-thing to make platforming metroidvania games like Cave Story on Pico-8. I was initially building it for a Jam game, Tori Tower, but the engine fell out of scope x.x

I have run into some issues as I was building the code, and I'd really appreciate if anyone would like to help me here and there ^^

I'll start by explaining how the engine works, so it all becomes easier to digest later:

Architecture

An ECS (Entity-Component-System) is an architecture for games in which the World State is populated by Entities, which are simply containers (tables) who store values. These values are called Components, and each entity has its own set of components, which its own values assigned.

Entities hold no functions. The logic is handled by Systems, which are functions that make changes in the World State every frame. A system does so by filtering out the entities in the world who have components relevant to the system, and executes the function upon each entity selected.

Example: Moving system
A moving system moves every entity that is movable each frame.

So, the system _move will filter out the world table, so that it only selects the entities who have the move and pos component. Those components look a bit like this:

entity_that_moves={

pos = {x=30,y=64} --position component

move = {vel_x=1,vel_y=0,max_vel_x=3,max_vel_y=2,acc_x=1, acc_y=3, friction=0.8} --movement component
}

Filtering out these systems, it'll run the logic for movement:

function(ent)
	ent.move.vel_x=mid(-ent.move.max_vel_x,ent.move.vel_x+ent.move.acc_x,ent.move.max_vel_x)
	ent.move.vel_y= --yadda yadda yadda you get the point
end

With that said, I'll explain how my engine is working.

The Core

The core is simple and compact, and credit goes to @selfsame for creating the system, and @alexr for building upon it:
https://www.lexaloffle.com/bbs/?tid=30039

-- basic
function _has(e, ks)
  for n in all(ks) do
    if e[n]==nil then

[ [size=16][color=#ffaabb] [ Continue Reading.. ] [/color][/size] ](/bbs/?pid=132836#p)
4
0 comments


Cart #knutil_ecpalt-0 | 2023-08-07 | Code ▽ | Embed ▽ | No License

Feature Overview

ECPALT() set transparency from palette table.

  • Transparency is reset at each function execution.
  • If the value of the "color id key" in the palette table is 0, the palette becomes transparent.
  • The palette that was made black by MKPAL() can be used as transparent as it is.
  • The format is redundant due to the specification to match MKPAL().
  • This function consumes 20 Token.
-- Make 6, 7, and 13 transparent.

ecpalt({[6]=0,[7]=0,[13]=0})

spr(1,16,32,2,2)

This function will be included in the next version(0.14.0) of KNUTIL library.

release note

[ Continue Reading.. ]

0 comments


Hello,

Just curious, how many copies has Pico-8 sold? Asking this because, as Pico-8 should have more users than it has. Great app to start game making.

0 comments


Cart #firemageddon-0 | 2023-08-07 | Code ▽ | Embed ▽ | License: CC4-BY-NC-SA
4

Prepare for an exhilarating challenge in Firemageddon! Brace yourself as asteroids rain down from the heavens, threatening to reduce your city to ashes. It's a high-stakes battle where you're the hero, armed with the awesome power of water to extinguish the flames and save the day.

Embrace the thrill of blasting through wave after wave of fiery asteroids, each one a ticking time bomb. Your weapon? Water! Strategically douse the flames and rescue the city from its fiery fate. But that's not all – the adrenaline rush intensifies as you grab the rain powerup or wield the power jet water bottle to supercharge your abilities. Stay sharp, though, because every powerup comes with its own challenge, adding an extra layer of strategy to your firefighting frenzy.

[ Continue Reading.. ]

4
1 comment


Cart #zombieshift-1 | 2023-08-07 | Code ▽ | Embed ▽ | License: CC4-BY-NC-SA
4

Get ready for an adrenaline-pumping adventure in Zombie Shift! Step into the shoes of Rick, an intrepid undertaker on the graveyard night shift. But watch out, because things are about to get spooky. Meet Bob, the jolly but annoyingly hungry zombie, who's hatching plans to assemble his own zombie army!

Navigate the eerie cemetery as Rick, armed with nothing but your trusty spade. It's your mission to outwit Bob and put those newly risen zombies back to rest. Swing your spade with precision to lay them to rest, but remember, timing is key – swing too fast and they might shatter!

But that's not all, the graveyard's challenges are on the rise. As days go by, the cemetery becomes a battleground as waves of mischievous skeletons join Bob's cause. Fear not! With your spade in hand, you can whack those bony foes into pieces, or harness the power of the spade upgrade to launch a decisive long-distance attack.

Stay on your toes when Bob summons his speedy pal, Billy the ghost! This ethereal troublemaker is relentless and swift, but rumor has it that he's got a shocking weakness. Seek out the electrifying powerup to give Billy the shock of his afterlife and keep the chaos in check!

Keep in mind, Bob might be unkillable, but that won't stop you from putting up an epic fight! Use powerups to stun him temporarily while you continue your mission. Duck behind tombstones to escape his clutches, but remember – if he catches you, it's game over!

Get ready to bury yourself in hours of exhilarating gameplay with Zombie Shift. Are you up for the challenge of outwitting Bob, saving the graveyard, and having a blast while doing it? It's time to grab your spade and show these undead who's boss!

[ Continue Reading.. ]

4
2 comments


Cart #dontbepenalizedbeaubordel-0 | 2023-08-07 | Code ▽ | Embed ▽ | License: CC4-BY-NC-SA
2

don't be penalized was created for the Pursuing Pixels Game Jam
https://itch.io/jam/pursuing-pixels-james-jam-game-gam-2/entries

90 seconds to make a max score... enjoy

2
0 comments


Cart #knutil_mkpal-0 | 2023-08-07 | Code ▽ | Embed ▽ | No License

Feature Overview

MKPAL() Create a color swap table for use in PAL().

  • This is useful for creating several color patterns.
  • It is not an error if the number of elements in the swap table does not match.
  • This function consumes 44 Token.
-- Color swap to darken "blue, white, and green".

local p=mkpal({12,7,11},{13,6,3}) -- mkpal('c7b','d63') is also the same.
pal(p)
spr(1,16,32,2,2)

This function will be included in the next version(0.14.0) of KNUTIL library.

release note


v0.1

  • first release
0 comments


I want to automate calling the save @url command so that I can get the https://www.pico-8-edu.com/ url for my cart programmatically.

Ideally I would be able to use a terminal command like
pico8 -export @url
which would output the url to stdout but that is not supported.

I noticed that the url query string matches the binary contents of a tiny rom export.
This would allow me to construct the url myself, but unfortunately
pico8 -export -t mycart.p8.rom
similarly does not work (the -t flag is only supported when exporting from within the PICO-8 console)

Another possibility would be to parse the p8.png file for the compressed cart contents, but I'm not 100% sure that uses the same format as the tiny rom, and I would like to avoid it if possible.

Does anyone know if there is a way to do this?

3 comments


Heyo people!

So, I'm having some trouble getting my head around the timing of everything when it comes to Pico 8, Lua, and I guess programming in general. Something that troubles me is how for loops act when running a game.

Right now, I have a piece of code that displays several circles along a straight line, one circle being created for each pixel of distance between the player sprite and a mouse click location. Here is the code:

if band(mousebtn,1) > 0 then
 ropes={}
	mouseclick=true
end

if mouseclick==true then

	--get last mouse coords
	local lcursx=mousex
	local lcursy=mousey	
	--get last player coords
	local lpx=p.x+8
	local lpy=p.y

	local dist, angle = gettraj(lcursx,lcursy)

	for i=1,flr(dist) do
		local dirx=lpx+cos(angle)*i
		local diry=lpy+sin(angle)*i

		add(ropes, {x=dirx,y=diry})
	end

	mouseclick=false
end

Now, I've been messing around with this for loop for about 3 hours, trying to figure out how to create these 'rope' particles sequentially, one by one, over a specific span of time.

I've tried wrapping it in a timer...

t=time() -- upon button click get time

        for i=1,flr(dist) do
                if time()-t>1 then
		        local dirx=lpx+cos(angle)*i
		        local diry=lpy+sin(angle)*i

		        add(ropes, {x=dirx,y=diry})
                        t=time()
                end
	end

I've also tried wrapping the timer around the add(ropes)... statement alone, doing all sorts of timey wimey stuff that I'm seeing in tutorials and in the forums, and nothing has worked. I wish I could post all of the iterations of failure but that would be very boring.

I've also considered creating each rope particle, and then having them move incrementally towards the mouse location, before freezing the entire table of particles in place. Perhaps that would give me greater control over the 'extending rope' effect.

So, I guess I'm just wondering, how does the for loop really work? Does placing a timer within the loop mean that one second should be passing each time the loop runs? Does the loop finish its full duration before continuing with any code below? And also, if you have any suggestions on how to get these little ropey fellas to spawn based on a timed sequence, please let me know.

-- I feel like I'll be posting a lot here since I'm just starting, apologies if my questions begin to grate.

4 comments


ne on demonei - a demo released at Assembly Summer 2023 – and something of a sequel to snäkätor.

Placed 2nd in the Fantasy Console compo.

Uses the tiniest trifill function by p01 from the Trifill Thunderdome (again!). Minified with picotool.

Runs without problems with v0.2.5g. Might experience some slight flickering and stuttering issues at places if run on a browser.

Cart #ne_on_demonei-0 | 2023-08-06 | Code ▽ | Embed ▽ | No License
29

Here's a video capture:

29
5 comments


Cart #luketm_ricochet_0-0 | 2023-08-06 | Code ▽ | Embed ▽ | License: CC4-BY-NC-SA
1

A twin-stick shooter about hitting robots together for combos. Keyboard highly recommended, requires a mouse. Made for Aardjam #4.

SFED to move
Left Click to fire taser
Right Click to swing bat
Middle Click to dash

1
0 comments


You wake up in a steel bunker, sweat dripping down your face in a futile attempt to cool you. As you heave the cast iron door open and stumble out into the sand, you realise that you are isolated. You are the only human out here.
You are alone.

Cart #alone22-0 | 2023-08-06 | Code ▽ | Embed ▽ | No License
1

This is a smol little game i'm working on, right now there's only a very very basic movement and camera system in place. Leave some feedback on what I should improve, and have fun (if that's possible at this stage)!

1
1 comment






Top    Load More Posts ->