Roguelike - 10 lines
I'v just bumped into Jakub Debski's 10 liner roguelike for the Atari 800 Turbo Basic XL and I knew that I had to port it to Pico-8. So here it is!
Update
An extended version can be accessed (here)[https://www.lexaloffle.com/bbs/?tid=52046]
Pico-8 port
It's a faithful port of the original Turbo Basic XL version. So it's 10 liner too, but I had to made some modifications:
- the original playfield was 20x20, I had to reduce it to 16x20 because I wanted to use wide characters in the Pico-8 version.
- I'm using Pico-8 builtin glyphs instead of numbers for the monsters and for the collectables because - you know - I wanted to use the wide characters.
Hello,
I'm been trying to play around with raycasting and I hit lots of problems with the maths so tried copying some code from cast.p8. it kinda works but I'm clearly making some silly mistake when I try to render the image to screen. I'm taking the length of each ray (from left to right, one for each x-axis column), and calculating the height of the wall it hits by just dividing an arbitrary number by the ray length.
Then for each column I'm drawing a line which has the y-value being half the height of the screen + and - half the height of the wall.
In my head this makes sense, but when I render it out the walls look fine, but I'm getting tons of noise above and below the walls.
What is this
This is just a simple tech demo. I was curious to see how recognisable an RGB image would be if it were mapped to the screen in the same way LED TVs/monitors draw colors with RGB.
Since each fake pixel is 33px - this gives a grand usable screen space of 4242px!!!!!
I went looking for 42*42 picture to experiment with and found this one (which I selected as it was the only one I could find that wasn't a person)
42px version:
Game I made for a game jam at work. Theme is 'Delay the Inevitable'.
If controls are difficult, try focusing on keeping the airplane parallel to the ground.
Was fun making this, especially with my son cheering me on.
The underlying physics still needs work - I think that was what gave me the hardest time.
If I had more time I'd devote it to making actual music (not that I know how), fixing the physics (also don't know how), and building out the level so it's more interesting (sort of know how).
Thanks for giving it a shot.
I've been tinkering with PICO-8 for a week now and put together this simplistic old-school driving game.
Susan Butcher's Iditarod '83 is a fictional game that didn't exist, as part of a larger narrative. My posts at https://yoyodyne.games/ will all be in kayfabe but I figure I'll use this space as a sort of development blog.
What I learned
- I hate Lua's 1-indexed arrays.
- Accidentally calling
music
inside the draw loop instead of emits a static tone (presumably as the music tries to play over and over?). - I love the system overall, but couldn't handle the editor. I edit in
vim
/vscode
with vim mode all day and could not get the hang of using the editor. Still working on a better workflow.
夢では、よく会う人がいて、よくいく町があり、よく死ぬ場所がある。そして朝起きる。それの繰り返し。
(このゲームはまだ制作中でベータ版の投稿になります)
In dreams, there are people you often meet, towns you often visit, and places you often die. and get up in the morning repetition of it.
It has not been translated yet, and there is only a Japanese version.
Release Notes
v0.2(2023/05/24) add BGM
v0.1(2023/01/30) I created a prototype through LSDJam.
I'd like to share my first pico8 game !
It's a mix of pacman, shoot em up and binding of isaac maybe :P
You can play the story mode coop or versus mode in multiplayer.
The goal is to get to the green en doors at the top of the maze that moves down pretty fast and not get crushed at the bottom of the screen.
I'd be happy to hear your comments,
Thanks !
This function creates simple extensible 'types' with a few additional (potentially) handy properties. If you find it useful, help yourself to it. Credit appreciated but not required.
You use it like this:
-- a 2d point object point = new_type('x y') -- argument names separated by spaces p = point(1, 2) print(p.x) -- prints 1 print(p.y) -- prints 2 |
As for the handy properties, the first is that the object's data is stored both by key and as an array. Which means you can access the properties using the dot notation, numerical indexes, or even unpacking the object, all of which can come in handy in different situations.
Text game!!
read this for context:
Update 2.0!!!
changelog:
added more blocks and geometry to play around with.
made the air lifty thing easier to see.
added some spikes
made it harder to fall out of the world
fixed collision being terrible
revised code
Bug fixes:
fixed left/right collision for all objects
fixed jumping on spikes
fixed momentum being terrible
fixed top collison sometimes eating jump inputs
fixed top collision sometimes not existing
fixed visual bug where player would be in the ground
made blocks and players and other objects easier to see/differentiate against other objects
Info/credits:
this is a pico 8 "game" made without the sprite sheet or sprite, draw, fill, map, or any graphical tool outside of just the basic print()
command! every asset in the game is a built-in text character! all code was made by me, which explains how messy it is, and was written in about 1 week.
this is really meant as a demo/proof of concept thing and more for learning purposes. since everything and more can be drawn as a simple text char, and most data is made up of basic math, this cart has a really low file size, and can be used to save space for sprites, tokens, map data... really anything that can be represented by a simple text character!
if you need any more info, or want to know how to implement these concepts into your own projects, just click "view code", or download the cart and boot it. dont worry if you are new to pico-8, because the whole program is heavily commented out, with even an entire tab dedicated to explanations/credits!
i hope everyone finds this cart as cool and interesting as i did! have fun creating!
...Oh yeah! almost forgot! controls are arrow keys to move and X to jump! have fun!!
vv OLD VERSION vv
based off 'PICO-8 0.2.5', section 'Variable Width P8SCII Fonts', i changed the #font_snippet
to the full default PICO-8 font:
i find this #font_template
more useful than @zep's original #font_snippet
because it has All P8SCII characters
This is my first PICO-8 game. I thought I would remake a Nintendo GameBoy game I made, which I was planning on redoing anyway, as I was not happy with the interrupt handlers.
However, I am glad I bought the PICO-8 license, as this has been a fantastic experience.
The source code for the project is available at https://github.com/gcoulby/domination-p8
Instructions
The goal of the game is to have the most cards.
You play a card by moving the cursor in your hand with ⬅️➡️ and pressing 🅾️ to select a card.
Select an available slot on the board and press 🅾️ to play it.
Cards can be won by placing your card adjacent to an opponent's card.
Arrow keys to move, x to shoot, z to use ultimate (meter at top left next to star). Hitbox is the pink square in the middle of the ship. Blast your way through 4 unique areas with over 4 power-ups and 8 challenging enemies including a final boss.
A small shmup based loosely off of the tutorial from amazing Krystman from Lazy Devs. Looking forward to (maybe) making another one now that the advance tutorial is out :)
Music credit to "neon" by lucatron and "Dimensional Gate" by Gruber.
Additional math formulas for rotation and other things from TheRoboZ and some other forum posts (sorry I forgot to save them)
Hi, I love pico8 and have the official version, I managed to do a small workshop at work to make other people as excited as I am developing games. I have build some steps and would like to let the other people make a small game in pico-8
As I have a lot of example code/sprites to copy and paste ( and hopefully sprites to ), I noticed somewhat flaky behaviour. First time copy paste seems to work, after that no more. pico8-edu pastes the old content, and I can't copy new content.
I have tried safari, chrome and firefox.. I'm on a macbook. Are there other windows/linux people who also have this bug on the edu version?
On reddit someone else posted the same issue.. https://www.reddit.com/r/pico8/comments/118azhk/copy_and_paste_not_working/
Hope this could be fixed since you run very quickly into this problem
kind regards, a pico8 fan
I'm not sure how much it makes sense but sometimes when I'm sploring or even just working on my own projects I take gif captures and screenshots and I want them saved to my desktop, But I don't want them to stay there for forever I want to decide if I move them to my folder or not where I store them but a problem that comes up is since it's like cartName_0, cartName_1 if that already exists then my OS prompts me to replace or not and if not then it renames it to .." copy" which is annoying... (I know I can move the directory but I want to view them first.)
Is there anyway you could add a config.txt option to instead of naming it in sequence give it a random character ID at the end or something? (cartName_021a4, cartName_5v30o maybe? ...) it doesn't have to be too long just would be nice for my really niche gif capturing and stuff ;p
Thanks for reading
Knuckle Dice v1.3
Knuckle Dice is an attempt to recreate Knuckle Bones from Cult of the Lamb. This is my first programming project ever so there's no AI yet - it's two player only to begin with.
In the future I will try to add:
- CPU AI (DONE)
- I want to experiment with perfect information. In other words, remove the randomness and tell the player exactly what the opponent is about to play.
Controls
- z to start/restart
- x to play a dice
Rules/Game Logic
- Maximum 3 dice in one column
- Playing a die in a column that matches dice in the opposing player's column removes all instances of that dice
- When nine dice are played by either player the game ends
Scoring
- You receive points equivalent to the die played multiplied by the number of instances of that dice. (e.g a 5 played twice in one column will give you twenty points - 2*(5+5)
- The player with the most points wins
v1.1 Updates
- Changed GFX to more of a 1bit style
v1.3 Updates
- Now it's a single player game with some rudimentary AI for P2
A quick experimental pixel based platformer. I was inspired by some interesting ascii / 8 bit retro art and thought it would make an interesting game. This is purposefully simple, 2 screens, strange behaviors, and no explanation! The thinking is for the player to figure out the rules (and bend them) of the weird looking 'world' and experiment to figure it out. It does track time, collectibles, and deaths.
I don't think I quite captured the artistic merit of its source inspiration, ended up looking a little more like a platformer level than I wanted, but it was fun trying!
Checkout the original art that led me to create this here: https://twitter.com/LootBndt
Good luck!
- Fixed v0.2 showing v0.3 for some reason
v0.3
- Made the function CURSOR()-dependable
I got an idea to make this from this post: https://www.lexaloffle.com/bbs/?tid=51903 (I probably didn't understand what did they mean though)
This library is still in development.
Old versions:
I'm having issues with this code, everytime I run it i just get this
runtime error line 34 tab 3
if collide_map(player,"down",0) then
attempt to call global "collide_map" (a nil value)
here's my code:
--external functions-- function dns(sp) spr(sp.sp,sp.x,sp.y,sp.w/8,sp.h/8,sp.flp) end function player_update() --physics player.dy+=gravity player.dx*=friction --running if btn(⬅️) then player.dx-=player.acc player.running=true player.flp=true end if btn(➡️) then player.dx+=player.acc player.running=true end --jumping if btnp(🅾️) and player.landed then player.dy-=boost player.landed=false end --collision on y axis if player.dy>0 then player.falling=true player.landed=false player.jumping=false if collide_map(player,"down",0) then player.landed=true player.falling=false player.dy=0 player.y-=(player.y+player.h)%8 end elseif player.dy<0 then player.jumping=true if collide_map(player,"up",0) then player.dy=0 end end --collision on x axis if player.dx<0 then if collide_map(player,"left",0) then player.dx=0 end elseif player.dx>0 then if collide_map(player,"right",0) then player.dx=0 end end player.x+=player.dx player.y+=player.dy end --function player_animate() --end |
here's just the section its calling out:
collide_map(player,"down",0) then
player.landed=true
player.falling=false
player.dy=0
player.y-=(player.y+player.h)%8
can anyone help me out with this