This is a prototype, I wanted to test various things I learned.
v0.3 : updated rail scrolling and start message, added help screen and log
v0.2 : graphics for cabin panel, engine sound
v0.1 : initial prototype release
Development is now over, I will not update it as the things I wanted to do are beyond my capabilities.
Check the ultimate Pico Train Sim by Powersaurus here : https://powersaurus.itch.io/cab-ride
I feel like I've learned enough to try my hands at doing a simple shump game, like I imagined when I first saw Pico-8.
Any input on controls or better ways do stuff would be greatly appreciated by this novice right here.
Thanks for taking a look.
--future plans--
Add another boss type.
Give bosses unique weapons.
Adding more enemies.
Adding power-ups.
Different flying and shot patterns for enemies.
-----1Jan2021-----
Fixed score add from defeating boss.
Boss gets more health depending on your score.
Changed how the player and player shooting handled.
-----30Dec2020 Update-----
added two new enemy sprites
added a boss, let me know if it needs to be tuned up or down in difficulty.
Arrow keys to move around, X to place a grass tile. Just a quick and dirty implementation of tile bitmasking.
Basic process is:
- Create table same width/height as map, store what kind of tile is here (empty,grass,water,etc)
- When you hit the X key, assign the corresponding index in the table to 1
- Run a function to update the map accordingly
- Show map and cursor
The autotile function checks the cardinal directions for neighboring tiles of the same type using the table, then returns a value 0-15 depending on what came back. Then we pull from another table filled with sprite indexes to figure out what should go on the map.
I used this article to figure out the best way to go about this: https://gamedevelopment.tutsplus.com/tutorials/how-to-use-tile-bitmasking-to-auto-tile-your-level-layouts--cms-25673
Pico8 implementation of the boardgame "Shōbu" by Manolis Vranas and Jamie Sajdak.
OVERVIEW
In Shōbu, the play area is divided into four boards. The goal of the game is to push all of your opponent's pieces off of any one of the four boards.
The two boards on your side of the play area are known as your HOME BOARDS.
YOUR TURN
On your turn, you must make two moves: first, a PASSIVE move, and then an ACTIVE move.
PASSIVE MOVE
For your PASSIVE move, you may only select a piece from one of your HOME BOARDS.
- You may move this piece up to 2 spaces in any direction.
- During your PASSIVE move, you may NOT push any other pieces.
ACTIVE MOVE
Press when u sad
(based on this tweet from a friend) https://twitter.com/Dream_Beam_/status/1344036827431391232
(Also I know that it is unoptimized so after a while the particles will lag the cart)
My buds and I took it upon our selves to try a pseudo-gamejam between ourselves to learn pico8. We decided on a theme of recreation. I recreated (sort of) captain skyhawk from the good old nes days of my childhood.
arrows to move, z to shoot, x to change speed.
Tips:
- You can go fast, but for your first few tries, just get used to the game.
- You can't crash into the left/right walls, you can hold left and right no problem.
- If you hold shoot, you will shoot automatically.
- The fire rate goes up after every boss.
- The goal is surviving, you don't need to kill everything.
- Points:
- 1*level per short distance
- 10 per enemy kill
- 50 per boss node killed
My first PICO-8 game: SMOL LANDER!
Started as the Lander tutorial from 'Game Development on PICO-8' and I kept hacking on it. Added some thruster animations, meteors, and a 'safety rating' scoring system.
Adding some particle animations next, and I'm thinking a way to 'gain rank' and ramp up the difficulty by adding more tasks. No title page yet. :(
Arrows for up, left, and right thrusters.
(x) to start the next arrival (if you crash or succeed).
(o) to restart entirely (clears your score).
EDIT: New version uploaded!
Apologies if I've broken protocol for uploading updated versions. :)
I made this game for my nephews since I couldn't visit these holidays and play with them. It's work in progress and there are some things I want to polish (the most important is that, while it's supposed to start easy and become harder, difficulty grows too fast; level 8 is already quite challenging for kids, and 10 is, I think, impossible :D), but they're already enjoying it since christmas day. The texts are in Spanish but the game is simple enough. You have to get fish with your net, bring it to your helper who has a bucket that can hold up to 3 fish. Then you have to bring your helper to one of the water sections to "rescue" the fish. You need to rescue at least 5 fish in a minute to advance to the next level.
After a can of toxic waste is dumped into a river, fish used to make cat food turns normally cute and cuddly cats into menacing decaying creatures! Cat Zombies! Now they are terrorizing the city and it’s up to our hero - Doodle, a brave little ball of yarn - to save the day.
Gameplay
In Yarn you control the character by using just the X button. Avoid the traps, collect the stars and stomp on the zombie cats to complete each level. This version of the game is a demake of an iOS game created by a couple friends of mine.
Check out the complete Yarn game for iOS at https://is.gd/yarngame
Settings
Transparency - In the pause menu you can turn on an experimental transparency feature. Transparency is achieved by flickering some sprites on and off between frames. This works well in some environments and not so well in others. It is disabled by default.
Not really fun, but I'm uploading to see.
Anyone have any idea how handling should work for a track of approximately this width.
No collision detection.
x to accelerate.
Sprite rotation using a function supplied by @freds72
I'm at a loss trying to decipher some code to better my understanding of core principles. Using the fantastic Advanced Micro Platformer by @mhughson as a subject of study I was reading into how the engine detects horizontal collision for the player. It does this through a collide_side function
function collide_side(self) local offset=self.w/3 for i=-(self.w/3),(self.w/3),2 do --if self.dx>0 then if fget(mget((self.x+(offset))/8,(self.y+i)/8),0) then self.dx=0 self.x=(flr(((self.x+(offset))/8))*8)-(offset) return true end --elseif self.dx<0 then if fget(mget((self.x-(offset))/8,(self.y+i)/8),0) then self.dx=0 self.x=(flr((self.x-(offset))/8)*8)+8+(offset) return true end -- end end --didn't hit a solid tile. return false end |
So I'm trying to make sense of this, and I can't seem to parse it in a way that makes sense. Breaking it down it assigns a local value offset to 2.66 roughly, because self.w is 8. And then it runs a for loop beginning at -2.66 through 2.66, with a "stride" of 2? So it counts up from -2.66 to 2.66 in increments of 2, and adds the current i to the y value? I assume this is checking for collision along the y axis of the sprite from top to bottom, but I cannot figure why it seems to check the y coord + -2.66, -.66, etc. So I assume I am misunderstanding something big.
And then it sets dx to 0, and then sets the player x to what I assume is the start of the wall tile. But I can't see where it accounts for player acceleration to adjust the end value, or how it compensates to avoid a "clip" into the wall.
I'm at my wits end trying to decipher this and further my understanding of how this math works. I've resorted to pen and paper drawing out different runs through this function, and it just seems like magic.
I'm wondering if anyone can help me, or otherwise direct me towards something to help me with these fundamentals. Happy Holidays!
Edit: Figured I'd link to the cart itself as well:
This is a preview of pico boulder dash.
(Not by Nizart, they just shared the cart on lexaloffle)
This game is under construction, hence it's posted under "work in progress".
However, the tutorial levels are already kind of playable.
Update 1
Now there are the first 6 levels of the classic boulder dash game included.
Update 2
I added a bunch of extra levels. Some of them a quite challenging.
Critical feedback is welcome!
-Made by Michael Karneim-