SIBYL
-a mini horror game-
SUPER SPECIAL THANKS TO MBoffin (Dylan Bennett) for map collision stuff.
WARNING
This game has some scary images and pixelated blood and gore, viewer digression is advised.
This game also has flashing images, which can bother those who have sensitivity to such things.
CONTROLS
ARROW KEYS - move character
[X] (keyboard X) - accept/close menu
[O] (keyboard Z) - pull up menu/statistics - this also pauses the game
PREMISE
This game is a tiny little survival horror game made with PICO-8. The goal was to see if I could make something creepy in such a restrictive environment.
This cart shows what I think is a bug with the garbage collector interacting with weakrefs. Nothing should be drawn, yet sprite zero is shown. I'm not entirely sure how to show code here? I'm new!
Here are the steps:
Create a table with weakref values.
Add a value to that table.
Pass that table to a function.
The function uses a LOCAL variable to iterate over ALL() values of the table.
Return
The LOCAL variable holds a reference to the last member of the table. The LOCAL variable doesn't appear to get correctly garbage collected, and so neither does the last table member.
Weirdly, if I run stat(0) inside the function with the iterator, all is well. If I run it outside the function, nothing works.
You are a ship collector with questionable methods of obtainment.
Collect the 100 unique ships! Embarrass the police when they try to catch you!
🅾️
Primary weapon (hold to shoot and charge Secondary)
Secondary weapon (release and press)
Repair (mash!)
❎
Tertiary weapon
Press ❎ in hangar to see upcoming enemies.
Features:
- 2 player co-op!
- 100 unique ships!
- 10 different weapon systems!
- Progressive difficulty!
- Particle effects!
- Embarrass the police without real world implications!
Change log:
You are trapped alone in a forest, and must find a source of warmth...
Oh, and you're also blind.
Directions
- So... what do I do again?
Use the arrow keys to move. Please avoid running into walls.
- Wait! But I can't see the walls!
Use X + an arrow key to check in a particular direction for walls.
- Okay, but where am I going?
Press Z to check the temperature.
- "Warmer" means you're getting closer.
- "Colder" means you're getting further.
- "..." means that it's the same distance away as the last time you checked, or that you haven't moved since last checking.
- Closer to what?
The exit, which will allow you to select a power-up, then take you to the next level.
- Pfft, this is going to be easy.
Keep an eye on the meter towards the bottom. When it runs out, you freeze to death.
- oh. . .
Tips
Tiles are "remembered" (become visible) as you traverse the level (or check things or run into stuff). However, they also fade from memory over time.
As you get closer to the exit, "embers" will become visible to help guide you.
Remember to eat some stew between levels, whenever possible. You might not last too long if you don't...
And finally
I had this weird idea in my head for a while, of some sort of dungeon crawler where the player would only be able to see tiles that they had visited recently. So I decided to create it. It took me a little under a week to finish this, though it isn't really a dungeon crawler anymore.
This is my first complete PICO-8 game. Hopefully it's fun. Enjoy!
--J. M. Potionwiz
Once Upon a late night dreary, I logged in weak and weary, Over many a quaint of forgotten Splore...
I searched up "Horror" and it said "Nevermore"
Old poetry aside, Anyone know any Pico-8 horror games? Seeing as it's Halloween and I've come up short, and HALLOWEEN of all times. If any have good releases, please post them here for the next thrill seeker like me.
I'll start:
v1.1
Here is a Text system that I've been working on! Any type of feedback or criticism is welcome!
~~ PROS ~~
- Dynamic Name Tab
- Simply Formatted
- Light Weight
~~ CONS ~~
- Manually add a new line using '\n'
~~ UPDATE CHANGELOG ~~
1.1 - Dynamic name now works with special icons (Thanks @RealShadowCaster)
1.0 - Initial release
Speed, skill, luck...high scores
This is a high score companion cart to Steel Hunter. Navigate the minefield to collect as many pickups as you can within 2-minutes, or see how fast you can complete levels as they get more challenging.
- 2 modes of play
- 3 difficulty settings
- High score tables
Controls
Arrows / D-Pad = Move submarine
Gamepad recommended. Controller mappings may vary.
Modes of play
-
Challenge mode - You get 2 minutes to collect as many pickups as you can. You get bonus points for lasting the entire time and for each extra sub you have.
- Survival mode - Collect all the pickups as quickly as possible to advance to the next level. Bonus points are relative to speed.
Difficulty settings
- Easy: Screen wrapping. No oxygen meter. Only grid minefield.
- Normal: Screen wrapping. Oxygen meter. Grid and maze minefields.
- Hard: No wrapping. Oxygen meter. Only maze minefields.
Collect high scores
High score tables for each mode and each difficulty. Challenge yourself or challenge your friends to get your name etched into history.
Behind the game
I found myself treating the first level of Steel Hunter as a speed challenge, not unlike the original "Sea Chase" game I used for inspiration. That along with some suggestions from the community brings you Steel Hunter: Evasion Tactics!
For more sea battles and a boss fight,
Feature Overview
Buttons input
getbtns()
updates the extended button(key) input state.
- This must be done in the
_update()
function. - Required
poke(0x5f2d,1)
- button values:
- btrg: returns true only for frames where a key was entered.
- butrg: returns true only for frames where a key was released.
- btns: returns true whenever the key is pressed.
- btnc: returns the count while the key is held.[number]
- _key: typed characters.[string]
- _ent: enter key typed.
- _del: delete/backspace key typed.
- modifier keys values:
- _ctr: ctrl/command key pressed.
- _alt: alt/opt key pressed.
- _sft: shift(left) key pressed.
I'd like to make some associative tables e.g. table={x=7,y=90,z=40}
but I want to save tokens by using a string because I'm going to have a lot of them, and make a function that returns a table based on whatever is in the string.
So something like:
string1="x=7,y=90,z=40" string2="empty=100, dinner=casserole, transport=horse, weight=150" table1=assoc_table(string1) table2=assoc_table(string2) ?table1.z -- 40 ?table2.transport -- horse |
how do I go about this? split
wont work. what does my function assoc_table(str)
look like?
Hey! I need help with my first platformer game, goddess of the wind.
The collision isn't working as I hoped, and the reason is either im doing it completely wrong, or the collision box is too small.
Heres the code for the collision:
if btn(0) then
p.dx-=.2
end
if btn(1) then
p.dx+=.2
end
if p.dx<0 and not fget(mget((p.x-1)\8,(p.y+3)\8),0) or p.dx<0
and not fget(mget((p.x-1)\8,(p.y+4)\8),0) or p.dx>0
and not fget(mget((p.x+8)\8,(p.y+3)\8),0) or p.dx>0
and not fget(mget((p.x+8)\8,(p.y+4)\8),0) then
p.x+=p.dx
end
if p.dy<0 and not fget(mget((p.x+3)\8,(p.y)\8),0) or p.dy<0
and not fget(mget((p.x+4)\8,(p.y)\8),0) or p.dy>0
and not fget(mget((p.x+3)\8,(p.y+9)\8),0) or p.dy>0
and not fget(mget((p.x+4)\8,(p.y+9)\8),0) then
p.y+=p.dy
end
If you have any ideas or better ways to write the code, please tell me. Thanks!