Platformer World

Platformer World

30 devlogs
19h 35m
•  Ship certified
Created by Kyle B

2D Platformer written in python with pygame-ce.

Timeline

I created a windows executable and GitHub release.

Update attachment

I tried uploading this to pypi so it could be installed for demo with pip, but it doesn't work and I've givien up after an hour - just recorded a demo video. If you do want to try the game, you can still clone the repo and install following the instructions on README.md!

Ship 1

1 payout of shell 379.0 shells

Kyle B

19 days ago

Kyle B Covers 28 devlogs and 18h 22m

Added a couple more things, like giving the shells the particle animation. And WE HAVE A NAME! (It's not the best but I'm not good at naming things). I'm going to ship this now as I think it's decently playable. Wish me luck!

I added some collectable items, that disappear on contact with a cool animation!

Update attachment

I made the pearl bullets despawn after 5 seconds, or if they hit a wall or the player. If they hit the player it prints a message to the console, but will add actual damage later!

Added a shell / clam enemy that fires pearl projectiles. The projectiles have no effect yet and do not despawn!

Update attachment

Created a basic enemy that runs left and right. Also I set up a pyright lsp config file so I can stop typing #pyright: ignore when pyright doesn't like pygame!

Update attachment

Added a chain to the spike ball and fixed the position of it. (Also I switched for VSCode to NeoVim!)

Update attachment

YESS! I fixed the spike ball - turns out I had the closing brackets for the sin and cosine in the wrong place.

Added a spike ball that should spin in a circle around the center point, but it's not working correctly yet - I think I got the trigonometry wrong :(

Added palm trees (some have collision, some are background details) with animations. Also added some background detail sprites for a more lively level.

Added an indicator line to moving saws to show where they move to, and made the ship sprite flip when it changes direction. The game's looking good now!

Added player animations such as a jump animation, idle animation, attack animation and run animation. This is done by having a list of frames and increasing the index each time, while setting self.image to the list at index.

Added more sprites to the game, including some animated sprites such as the flag and the saw!

Added the level textures for all the sprites!

Update attachment

I added a camera that tracks the player (always keeping it in the center). This is done by adding an offset when drawing all the objects.

Update attachment

I added a player sprite and change the original rects for a hitbox instead.

Update attachment

I don't know why SOM thinks I have to do a devlog, as I haven't changed anything since the last one, and when I posted the last one the time since devlog immediately updated to 28 minutes, so here's a picture of my git commits :)

Update attachment

I made the platforms semi collidable, so that you can jump up through them. Also made it so you can drop down through them if you press DOWN or S. This also fixed the issue with the player dropping through the platforms. There is currently an issue where you can stand inside the platforms though. Lastly, the vertical platform can actually push you into the other terrain, which is weird but kind of cool. I'll fix that later.

Update attachment

Added collisions to the moving platforms (but now sometimes the player falls through the vertical one slowly??)

Update attachment

Fixed jumping while standing next to a wall with another timer, and then began to implement moving platforms. I took way too long debugging the placement of the test boxes for this unfortunately, but it's working now!!

Update attachment

Finally got the wall jumps working! I'm using a timer to block left/right user input for about 300ms after each wall jump!

Update attachment

Honestly I spent the last hour and a bit just de-bugging one thing. After changing some of the collision checks to implement wall jumps (for now it's just wall slides), I somehow butchered the jump so I couldn't jump at all. I thought I'd fixed it but it just caused more problems. Turns out the solution was to call the collision check function BEFORE the jump, so that the y velocity is not reset immediately after jumping.

Update attachment

I added JUMPS!! You can now jump if the character is touching the floor. Next I'll be implementing wall jumps :)!

Update attachment

Added gravity and collisions to the game! The collision checks are separated: first it checks left/right, then up/down.

Update attachment

Added a player that uses inheritance from the sprite class. Added movement to the player that is normalized.

Update attachment

I started over (last time I promise!) so that I could follow a more up-to-date tutorial - this one's by Clear Code. So far I have a basic level (with no collision yet) and a sprite class.

Update attachment

Added physics entity class that accepts the groups for sprite groups, as well as a position for the FRect. Added a test entity to the game to test the init and update function, which currently moves the entity across the screen.

Update attachment

Started the project again so that I can follow a tutorial to start off with and expand after the basics such as the level, player & camera are finished.

Update attachment

Created the window with pygame-ce. Set up the structure for player & main file. Have added left and right movement and got a player sprite (which I'm going to change for something else later) from kenney assets. Next I plan to add a floor for the player. I'll also have to learn how to have a 'camera' to follow the player sprite.

Update attachment