Here is the game 'Dragon's Playground' made for Tom Hall's #RNDGAME2020. I had so much fun coding this, it was good to work under the requirements of a game jam, it really tested my programming ability--working to a deadline. Anyway, great fun, Dragon's Playground is a top-down, free-roaming shoot'em-up where you control Azron, scourge of the realms. You must incinerate the realm, defeat wizards, elves and knights to assert true dominance over the kingdom.
There are still a few lingering bugs that I would like to fix, but I am happy to share this game as part of a game jam, my first. Great fun!
Controls:
X - Breathe fire
Z - Charge breath
v1.0 - Jam version
v1.1 - Added a fillp effect to make smoke less overwhelming, fixed a bug that ended game prematurely after first game was over.
This is my code snippet for 8-dir movement in PICO-8. There are some in BBS like this but I think I have something to add here because:
1 - It doesn't move faster when going diagonals;
2 - It can move at speeds below 1 pixel/frame (sub-pixel movement);
3 - And most importantly: IT DOESN'T HAVE ANY ANNOYING JITTERING (the staircase effect)!!!
Feel free to scrutinize my code and give me any constructive tips. I am still getting started with PICO-8 and Lua.
On a distant planet, a woman has found herself separated from her crew. Their fate unknown, she seeks a way back to the spacecraft that brought them here, but there's a strange obelisk here, and hoards of viscous creatures...
Fight huge crowds of monsters to push a path forward in this retro-style arcade shooter!
Here's my entry for RNDGame Jam 2020! I'm happy with how this turned out -- it's pretty much the first game I've ever really "finished" in any capacity. Maybe I'll do more with it, but for now I hope you enjoy it!
btnp seems to completely stop working iff _update60 is used instead of the normal _update
to reproduce:
- run the program below
- press Esc
- type some sort of statement (for some reason the bug only occurs if you type something before typing resume) e.g. ?"hello"
- type resume
- push or hold down the button (O)
expected: "pushed" will appear onscreen
actual: "pushed" no longer appears onscreen
function _update60() pushed = btnp(4) end function _draw() cls() if pushed then print("pushed", 52, 60, 8) end end |
I'm sure this is probably an easy answer, but why do these work differently, where co_anim1 resets to nil after completion, but co_anim2 does not?
function _init() co_anim1=cocreate(animate) co_anim2=cocreate(animate) end function _draw() cls() --first method if (co_anim1 and costatus(co_anim1)!="dead") then coresume(co_anim1) else co_anim1=nil end --second method, same as first, --but sent to a function to do --the work. resume(co_anim2) print("co_anim1:",0,0,5) print(co_anim1,36,0,7) if (co_anim1) print(costatus(co_anim1),75,0,7) print("co_anim2:",0,6,5) print(co_anim2,36,6,7) if (co_anim1) print(costatus(co_anim1),75,6,7) end function resume(co) if (co and costatus(co)!="dead") then coresume(co) else co=nil end end function animate() local a=rnd() for i=1,40 do circ(64+cos(a)*i,64+sin(a)*i,4,7) yield() end end |
This code results in this behavior:
In the code editor, add a new tab with the first line being a comment line containing only puny caps and spaces, then add a second comment line with regular text. Hover over the tab, the title preview shows the second comment instead of the first. Bug doesn’t happen if the title mixes cases ("--UI helpers" is ok).
“Picosolo” is best thought of as a puzzle game with a climbing theme. The objective is to reach the top of a 24 m high rock face.
You do so by moving your hands and feet to find suitable holds. Your limbs are controlled using the arrow keys. You cycle through them by pressing the “Z” key (the selected hand or foot is highlighted by a pulsing icon).
The most important rule to remember is that when you press the “Z” key, you need to have at least two good holds (indicated by a bright green “+” on the corresponding hand or foot). If you have only one, you fall and the game ends.
Other than this, there are some constraints about where your limbs can be positioned (relative to your body). In summary, your left hand must always be above and/or to the left of your centre of gravity (roughly located at the waist of the on-screen character). Your right foot must be below and to the right etc. You also cannot cross arms or legs, so only one hand can be directly above your head and one foot directly underneath you. Obviously, limbs have a limited reach: they can neither extend beyond 4 “cells” of your body, nor be less than two “cells” from your waist. The game will only allow you to move your hands and feet to valid locations, so the best and easiest way to “get a feel” for this is to play it!
What up fishes!
So, I'm new to Pico (mostly a Unity/C# person) and I've been getting my bearings this last week. I was looking into ways to get more game content out of fewer sprites. The most obvious way seemed to be using the same sprites but changing the colour palette. I did some searching and found a few posts where this came up but the only answer I found was to use pal() which unless I'm missing something, changes the screen palette, which affects every instance of that colour onscreen.
So, below is the solution I landed on. Is there a better way to do this? If so, pls halp.
(I've changed some variable names for clarity, I don't normally label things like this)
--Define a 2D array of colour indexes. C1 is the colour we're swapping, C2 is what we're --swapping it to. SecondarySpritePalette={ {c1=14,c2=11}, {c1=2,c2=3}, {c1=10,c2=1}, {c1=4,c2=5}, {c1=15,c2=4} } --Draw sprite on screen using custom sprite drawing function that takes in the above array. DrawSprite(SpriteID, XPos, YPos, PaletteArray) function DrawSprite(n, x, y, c) --Get position of sprite within the spritesheet. local ycell=(flr(n/16)) local xcell=(n-(16*ycell)) --Loop through each pixel in the sprite. for lx=0,7 do for ly=0,7 do --Get the current pixel colour. col=sget((xcell*8)+lx,(ycell*8)+ly) --Loop through each colour in the palette array for i in pairs(c) do --If the current pixel matches C1, swap it for C2 and break --out of this loop. if col==c[i].c1 then [ [size=16][color=#ffaabb] [ Continue Reading.. ] [/color][/size] ](/bbs/?pid=77125#p) |
My entry for #rndgame2020 - MORTAL CARDS (Mooooooortal Caaaaaaards!)
With more powerful characters, more secret moves, more depth, more control and the most advanced pico-digitized graphics around – this card game is worth fighting for!
Mortal Cards challenges you with the ultimate card playing experience…
On a secluded island, six elite fighters have gathered to test their deadly skills.
Each competes with a deck of 15 cards, 5 cards each round, as they battle each other and finally, the 4-armed mutant warrior Goro.
Featuring a digitized graphics, multi-layered backdrops and a pulse-pounding soundtrack.
For the most realistic chop-em-up challenge yet, it’s Mortal Cards. The competition will bow in submission.
HOW TO PLAY:
- Check opponent's next card and react accordingly
- Select with left and right arrow, confirm with "Z" Key (Circle button on pico 8)
- Same moves will cancel each other
- Special moves are un-blockable, some will inflict reduced damage when blocked and others will be parried completely
- Discover all the moves interaction
- If health reaches 0 before all card in a hand are used, you can finish with a Fatality!
Hello, new friends! I discovered Pico-8 a few weeks ago and this is my first post in here!
I'm currently trying to create a framework to manage game state for some future creation, and am hoping to get some feedback on what I've put together so far. Any insight would be greatly appreciated; I'm a web developer and consider myself reasonably proficient in PHP/JS, but this is my first Pico-8 project/first video game/first time working with Lua/first time writing my own FSM ever, so I'm feeling very unsure of myself! I'm looking over it and asking myself questions like; have I over-complicated this? Does the game/level hierarchy make sense? Is it DRY enough? Is there a better way!? etc, etc!
The state hierarchy of the cart looks like this:
App |_Title Menu State |_Config Menu State |_Game State |_Init |_Running | |_Level State | |_Start | |_Running | |_End |_Over |
So, the first state the app is in is the Title Menu state, where you can either start the game or enter the Config Menu (for picking levels to start on or some other arbitrary config). From either of those, you can enter the Game State. Once we're in the Game State, it initializes, then begins running through the Level States (which just run 3s timers for demo purposes). Each level gets a Start state for saying 'ready, go' or whatever, a Running state for actually playing the game, and an End state for congratulating the player for completing the level or something.
I'm surprised I haven't noticed this before today.
If I have my tabs set to two spaces, and then I cursor up or down across lines with varying numbers of tabs indenting them, the cursor column will shift left or right depending on the number of tabs at the start of the line. See this example gif for a demonstration:
Edit: as I discovered below, this also happens with double-wide glyphs:
The editor should be trying to maintain a virtual on-screen column, not an in-document column.
Yo @zep,
Instead of just turning the corner performance/stats graph on and off, maybe cycle through off, current size, and something closer to the full screen?
This could allow showing twice as much history on the graph, as well as showing a finer resolution of time within each tick. Right now we're only seeing 1-2 seconds (depending on _update/_update60) and the vertical resolution is very limited.
The large view might also accommodate more information that's not currently in the corner view. I'm not sure what information to choose—I'm just throwing the idea out there for you to think about.
Whatcha think?
Pico Driller
Welcome to Picotown, a city like any other until big blocks started to pop out of the earth right into the middle of the city! The picopeople need you: Pico Driller!
Falling blocks that could squish you anytime? Small capsules of air underground? Ever-present danger? Prepare to drill your way and save the day!
CONTROLS
- Arrow keys to move and navigate menus.
- X/Z to drill in current direction.
HOW TO PLAY
- Drill as deep as you can, but don't get crushed!
- Air consumption increases the deeper you go, make sure to refill in time!
- X-blocks take 5 drills to destroy AND 20% of your air. Beware!
CREDITS
A PICO-8 demake of the NAMCO classic!
Hello!
I am currently making a platformer and i have managed to program my own particle effects like wind and smoke (though they are probably far from optimised). Though i have been stumped with jumping. I would like to use pget() to get the colour of the tile below you so when you jump, little pieces of the same colour will fly up and then land in all directions. I would appreciate some help or perhaps some sample code for me to study. Thanks!
So I'm really knew to game development and coding as a whole, so I'm still learning basics. I'm trying to figure out how to code a basic jump function. I got it to run but, I'll let you see. Go ahead and boot up the cart if you haven't already. It may take a while for you to notice what's wrong, as it's very subtle, but I trust you'll be able to work it out.
So I got the basic idea for the state code from Urbanmonk's post in this thread
I also referenced begginer's demo and game states-simple from the edu toolset. I tried googling them but nothing showed up. But those were more just learning basic concepts than anything else. IDK why that happens when you start it up. Try pausing and unpausing it also. IDK if the pause button will do it, but if you press escape inside PICO-8 you'll see it happen again. I'm really confused guys. I wouldn't have been surprised if the code was so broke it didn't run but I didn't even consider this happening as a possibility. Like really please I need to know why this even occurred lmao