- Yup was a game I spent years and years working on. It went through several code reworks and art style changes.
- I'd given up on it sometime in 2023, but I came back to it after graduating because I felt bad.
- A nice game engine I'd created was sitting right in front of me, and I didn't make a finished project with it.
- This revision wasn't to remake anything, but to finish the game with the tools I had.
- I made it simpler, removed a lot of the extra junk that was there, and fleshed it out.
- I am proud of what I created, and the people I showed it to had genuine fun playing it and came back multiple times.
- OKAY so this game was way too polished for me to drop
- But I'm noticing there was a lot more, or moreso less I could have done.
- For one, the main character assets should not change as that makes the game cluttered and confusing
- There should only be one bullet asset
- There shouldn't be worlds, only randomly generated levels that slowly get more chaotic as time goes on.
- Remove the "skins" and make the enemies only have one basic skin
- Enemy A: Nope A
- Enemy B: Nope B
- Enemy C: Nope C
- Surf-Guy: clone of Enemy A
- Yippee: Special
- Sandwich: Special
- Computer: Special
- Laser-Eye: Special
- Jellyfish: Special
- Remove the tutorial
- There will be less clutter, so they'll learn the complicated stuff themselves
- Remove the end results
- Remove the demo code from Play State, and remove uses of it from the Title Screen
- It's extra bloat that isn't needed, and if it is it could be an inhereted class, not integrated
- Simplify the Game Over, and title screen
- Remove the changing bullets (they can change, but they're not supposed to normally)
- Make a new campaign/world just called "arcade"
- There is only one enemy
- New enemies get added every 5 levels
- Each new enemy class has a randomly-assigned formation pattern that does not change for the entire game
- this pulls from a random list of all the start patterns
- World BG/FG will change every 5 levels
- Special events that do graphical changes for the funsies
- Sounds.
- A shop that sells upgrades
- Triple Shot
- Homing Missile
- Extra damage
I will have one week to do this (Tue 19th to Tue 26th)
- Okay so I did get a lot done
- Enemies are gradually unlocked as time goes on
- The backgrounds and such change as time goes on as well
- There is now a shop, and a buttload of upgrades you can use your points to purchase
- A lot of the previous code is now unused, and needs to be replaced.
- So now I am going to be extending this period by another week, because college keeps getting in the way of what I want to do.
- Difficulty scaling properly
- Enemy attack speed goes up GREATLY during the first 10 or so levels, and then slows down to be more gradual afterwards
- For each difficulty level an enemy class passes, they gain 1 health. Newly introduced enemies always have 1 health.
- Probably add healthbars to this?
- Bosses
- This will probably just be one boss with slight changes.
- For each world ("difficulty level") you've gone through, the boss becomes more powerful
- extra attack
- more health
- different idle state
- Note that the formation handles bosses as just another enemy in the formation.
- It checks if the enemy dies, and then updates for a new formation
- OPTIMIZE WHAT WAS ALREADY THERE
- Adding the GameOver/highscore state back.
- The old one was too complicated and convoluted.
- It just flashes the game over screen, and if you got a high score it prompts you to type your name.
- Optimize the title screen
- I made emblems.
- Emblems should be used, not some crappy dictionary thing.
- Not gonna lie it looks bad but thats intentional
- FIX THE UI BORDER
- THIS ONE IS ALSO LAME
- IT SHOULD JUST BE PASSED THE PLAYER CLASS AND DRAW IMAGES AND MAKE EMBLEMS
- Change the images too
- actually this is just going to become a menu sprite like the other ones
- Re-add the advance state back, just as a transition so you know more things are going to be added
- Add a graphic that plays at the start of each level, just a little thing that says "LEVEL x" or "BOSS LEVEL"
- Adding the GameOver/highscore state back.
- Difficulty scaling properly
- OKAY so college is getting in the way way too much
- 2 entire days I could have been working on this game were dedicated to studying for finals
- I have a new checklist
- CHANGE THE FLOOR ASSET
- There is no longer a floor, just a platform under you that follows you, so you're technically on a ship in space
- This stays at the bottom of the player.bar[1] position, and follows your rect.centerx value to seem like it's always catching you
- UPDATE THE WAY THAT MENU ASSETS BEHAVE
- All of the menu assets behave the same, so I can just iterate through what gets drawn by a list
- So reference all the menu assets in a dictionary and iterate [for x in x, if x.active then draw and do inputs]
- make it so playstate has an "activate queue" so multiple items aren't activated simultaneously
- playstate.activate_queue = {}
- playstate.activate("gameplay")
- then it repeatedly checks to see if said item de-activates, and then activates the next (after .popping)
- give the menu assets a parent class since a lot of them inherit the same values
- [NEVERMIND] give menu assets a .visible bool value, so multiple items can be drawn to the screen at the same time
- All of the menu assets behave the same, so I can just iterate through what gets drawn by a list
- ADD BOSSES
- check bosses.py for pseudocode
- CHANGE THE FLOOR ASSET
- College is over. I can work on bosses properly now.
- Bosses have been added.
- Making the title screen into a menu so multiple things can be added and worked with.
- This ends Tuesday.
- Condense the code down, specifically what's in Menu
- Redo ALL sound effects
- Shoot
- Jump
- Land
- Crouch
- Uncrouch
- Hurt (done)
- Death (done)
- Switch Weapon (done)
- Enemy A bounce
- Enemy B jump
- Enemy * Shoot
- Enemy Computer Shoot
- Enemy Jellyfish Zap
- Enemy Sammich Swoosh
- Enemy Yippee... Yippee.
- Enemy Yippee Death
- Enemy Lumen Laser
- Menu Select
- Menu Confirm
- Menu Back
- Menu Denied (done)
- Shop Buy (done)
- Shop Denied (done)
- Boss Explosion
- Boss Shoot
- Boss Shot Woosh Sound
- Boss Birthing Noise
- Make the Lumen laser look less bad
- Finish the HighScore Menu
- Finish the About Menu
- World data no longer exists
- The gameplay assets only have lists of unlocked enemies/BGs/start patterns
- This is handled through a class filled with static methods known as Info
- I got rid of a majority of the "states" and replaced them with "MENU" assets
- These "menu" assets are pygame.sprite.Sprite(s) that handle everything themselves and leave the play state to just hold them
- Doing this, the amount of needed states has been dropped down to just Title and Play.
- advance, gameover, gameplay, lore, options, pause, and shop are all menu assets, handled entirely through playstate
- There are multiple bosses, but they all pull from one Boss class
- They all behave the same, but pull different attacks from a greater pool of global attacks
- This is to add artificial content to the game to make it feel like there's more than there really is.
- All of the attacks and states are performed within classes thhat handle all of the values themselves without pestering the boss's attributes too much.
- Because of this, there are now like 16 bosses each with sets of moves.
- While the Menu Queue was a smart idea, it seemed to introduce some new bugs that relate to the GamePlay state's init starting a game sesh.
- I need to figure out how to fix that, because currently the gameplay state and it's creations will start immediately when the game begins.
- I figured it out. I just made it so the gameplay state can't make windows when it's not active.
- I moved the title state to a menu now, so everything is in Play State. Lol.
- Removed levels and a bunch of other files
- Made a file that contains a "sprite" class which is just pygame.sprite.Sprite with some added values
- Removed loadlist for images, anims, and audio.
- I moved every file into respective folders so they can be categorized during imports, and made into an executable easier
- Fixed the bug where PlayState doesn't restart after a game over
- Fixed the way music plays with an "AutoSong" class
- The game is just about done now in terms of content, background workings, nerfs, buffs, etc!
- There is enough music to keep the game working perfectly and sounding unique.
- I am overall very happy about this.
- Changed the Triple Shot to work more like a Shotgun
- Changed the Wide Shot to work like a huge damageable wall
- Balanced the prices
- Fix the shop so duplicate items don't show up
- Fix the boss instakill glitch
- Add some warnings to bosses
- Add more buffs to the bullets
- [NEVERMIND] Add... gulp... a controls screen.
- Honestly mostly everything has been edited and modified in some way so it is technically mine.
- However I do have this list of assets used, although most aren't used anymore. "Harsh 8-Bit Explosion" - ImATaco "Explosion" - Kutejnikov "8bit_explosion_4.wav" - Soundholder "explosion_asteroid.wav" - runningmind "explosion1.wav" - alphatrooper18
- All of these have their names changed and I don't know what goes to what
- There are also this list of sounds I pulled off VoiceMod, which I don't think are copyrighted. "hi.wav" - Roblox: Work At a Pizza Place "bye.wav" - Roblox: Work At a Pizza Place "angry.wav" - Roblox: Work At a Pizza Place "boing0.wav" - Sonic the Hedgehog 1 "gravitycoil.wav" - Roblox: ??? "rizz.wav" - No idea. Some TV show from the early 2000s and repurposed in an old Vine. "siren.wav" - Also no idea. Also from Vine. "tada.wav" - Windows 95. Don't sue me please. "waah.wav" - Tied to the Yippee video somehow. "yippee.wav" - That video of the german kid that I don't think is copyrighted. "getout.wav" - Some GTA car show clip. "ford.wav" - The Ford startup sound when a door is open "dialup.wav" - The AOL dialup noises (not copyrighted)