Dumpy 
& Bumpy
(c) 2022 Programancer
Published by Screenwave Media

Please view in-game credits for full list of credits

Thank you YellowAfterlife - execute_shell_simple.dll (https://yellowafterlife.itch.io/gamemaker-execute-shell-simple)
Thank you Eishiya - LanaPixel.ttf licensed under OFL (https://opengameart.org/content/lanapixel-localization-friendly-pixel-font)

-Change Log-
2.0.4.0 - "BYOG-Bring Your Own Gamepad" Update
Note: A majority of this update is exclusive to the PC versions of the game, however the QOL/Non-GamePad improvements will be used as a base for all console going forward.

This update is focused on adding more gamepad options to the player, opening up the doors for DirectInput devices. As a result, a lot of changes are in menus and extra functionality! There are also some QOL/clarity changes for multiplayer.

New Menus/Screens:
	-A new "DirectInput Mapping" menu has been added, along with a mapping screen for any controller that's not XInput (xbox)
		-The purpose of this menu is to match a DirectInput gamepad's buttons as closely as you can to an XInput gamepad
	-The "Button Mapping" menu has been renamed to "Action Mapping", because you're mapping actions to buttons, and I didn't want the player to confuse it with the DirectInput Mapping screen
	-A new "Choose Players" menu appears when you hit start, allowing you to add Player 2 and configure gamepads before starting the game
		-You can also jump directly to the DirectInput Mapping menu from this screen to configure controllers, or go to Battle Mode

New Functionality/Feature Changes:
	-Plugging in a gamepad will now show a prompt telling you that a gamepad was connected. It also shows you if it's recognized or not, and if it's not it tells you it needs to be configured before use
	-Using a gamepad or keyboard to start the game now determines the starting input device for Player 1, making the option that was in the Options menu previously obsolete
	-Player 2 can be added any time in the overworld by pressing a button on a connected and configured gamepad
	-The widget to assign a controller after pressing start on a gamepad has been obsoleted because of the new Gamepad options and nonstandardization that comes with that. There are now more opportunities to add a 2nd player instead
	-To improve compatibility for configuring DirectInput gamepads, the right analog stick now functions the same as the 4 face buttons. This is because some gamepads use an Axis for their face buttons. (You can leave either one unmapped in the DirectInput Mapping menu to not utilize the dual functionality)
	-A new Attract Mode will play if you idle on the "Press Start" screen
	-The input system has been significantly modified because of the inclusion of DirectInput. The player would never notice the changes, but I felt I should mention it here!

Existing Menu Changes:
	-New options were added/changed from the Options screen
		-Override Button Graphics allows you to change the XInput gamepad's icons. This is useful if the player is using an XInput emulator for PS4/Switch controllers
		-"Animate BG" option has been changed to "Motion Effects", and now toggles the scrolling backgrounds and screenshake effects. Before it only turned off World 3's BG animation
		-Options have been rearranged slightly for better organization
		-The "Start Input" option has been removed, as it has become redundant
	-The Controls screen appears regardless of if the option is toggled. The option had been removed a few updates back, but was never reset to "on" for pre-update players
	-The Battle Mode buttons are now always available, even if P2 is not connected, because it now allows you to add a 2nd player by pressing any button on a connected gamepad
	-The Languages menu now has "Choose Language" as the title
		-Similarly the option in the menu now has a proper description

Bugfixes/QOL Improvements:
	-Input Icons have been redesigned to be much more readable
	-Disconnecting a player from the overworld now properly removes the player, instead of doubling their death animation when you exit the menu
	-Battle Mode now properly ends the match if a player's gamepad is disconnected. Before it would just kill the player in repeat until their stock was expired
	-In Battle Mode, if you down your opponent and stand on their spawn point, your opponent will spawn at your spawn point instead. This prevents spawning inside one another
	-Fixed a cheese that unlocks an achievement under the incorrect conditions. It's one of the hidden ones, so I'm not going to reveal which one!
	-It was discovered that you can walk through spike sliders after they crash into a wall during their cooldown. This is staying in, because nobody accidentally discovers this and it's a pretty legit strat. Just thought I'd mention it here.

Level Changes:
	-2-7 has been adjusted for difficulty.	
	
2.0.3.4 - "Going Global!" & Console Update
Note: While this is largely console focused, there are some changes that affect all versions

Performance/Behind the scenes:	
	-Project converted to GMS 2.3x
	-Save format has been changed. They are no longer encrypted. On first run for this version, the old save file is opened and saved as the new format, so you won't lose your progress.
	This will allow you to upload your saves, and even edit them if you're crafty. Just be on your best behavior!	
	-Important to note that your pre 2.0.3.4 save file wasn't deleted during the upgrade process. Just copied and converted. If for some reason the save doesn't transfer (you run this version and there's no level progress), read the last section of this changelog.
	
	The following changes have been made to allow the game to maintain 60fps on slower devices
	
	-Optimized tile rendering, using simpler/faster rendering functions to display basic square tiles
	-Optimized ice rendering
	-Optimized torch rendering, and replaced fire particles with an animated sprite for slower devices
	
UI:
	Most of this has to do with the string externalization/localization system I implemented in the previous update, 
	however it's important to note that it was never officially "launched" as a feature until this update.
	
	-An Autosave disclaimer has been added to the start of the game
	-Fixed an issue where the OPTIONS header in the overworld wasn't pulling from the language file
	-Added support for LanaPixel fonts, and subsequently added support for most languages, including Chinese, Japanese, and Korean
	-Along with the above, I've effectively rewritten the way text displays to allow for non-Latin based text
	-Localizations have been added to the game for a number of regions, available in the menu
	-Extra logo graphics made to reflect the game's title in other regions.
	-With localizations, a lot of special considerations and exceptions needed to be made to support the LanaPixel font
	-Changed the color of the objective text when you lose from red to more of a maroon

Steam:
	-F12 now works to take screenshots. I was unaware this wasn't handled directly through the API and required additional code to make happen. It's been fixed!

Game:
	Gameplay has remained largely the same, however there are a few things to note!

	-Added a HUB WORLD that becomes available after you complete the game, allowing you to quick warp to worlds you've completed
	-Along with the HUB WORLD, additional green portals have been placed in each world to allow you to return to the hub after you complete the game
	-The credits screen has been remade to support more information, and to allow header strings to be localized. Also some flare!

Porting (Console Versions Only):
	I can't go into details on every specific thing here, however the game has been made "Console Ready"
	(and that's honestly a lot of work. I appreciate Screenwave Media's support through this process!)

	-Menus adjusted to remove things that aren't available for consoles (exit button, resolution settings, etc)
	-Buttons used for menu navigation are ALWAYS the same, regardless of how buttons are mapped, preventing a potential user-created softlock
	-New "Add/Remove 2nd Player" buttons added to some menus
	-Performance improvements listed in the "Performance" section of this changelog are largely console focused, but worth its own section
	-Language settings will autodetect on first run on applicable consoles

Progress Editor:
	If you've become stuck on a puzzle and you absolutely cannot beat it or for some reason progress didn't transfer in the update, a progress editor has been included with the build.

	A few things to keep in mind before you use the progress editor:
	-Use at your own risk. We are not responsible for your save files being corrupted or lost using the editor! Use it as a last-resort situation.
	-If you need to locate your Dumpy & Bumpy save file, open Explorer and paste %localappdata%/DumpyAndBumpy/ in the path bar. Save is 2dumpysave.dsav
	-When saving your edited file, a backup is automatically generated. This copies the currently opened save, and is located in %localappdata%/DumpyAndBumpySaveEditor/
	-Your "completion time" will be set to 9 minutes for levels you change
	-This does not prevent you from getting achievements. Keep in mind that setting an entire world to complete will award you the world completion achievement.
	-This only works with saves made with version 2.0.3.4+, and will not work with previous versions. Run Dumpy & Bumpy 2.0.3.4 once to automatically convert your save files to the new format. 
	-If you're absolutely sure you wish to edit your save and understand it's not the intended method of progressing, and that most of the joy of the game is the rewarding feeling of completing a puzzle after many tries when it finally clicks or cheesing it with a friend, and you intend to go back and try to complete the skipped level later, then you can find the level editor in datafiles\436865617473\dsav.zip. Extract all files and go to town!


2.0.3.3 - "Spit-Shine Update"
-A partnership with Screenwave Media is now reflected in new splash screens
-The resolution of the game has been fixed to be 16:9 (instead of 16:9.6, which was a dumb oversight from early on in development)
-As a result of the above change, a number of UI elements have been adjusted.
-Spike sliders no longer start moving on the first frame of detecting the player- instead they shake for 12 frames before moving, allowing you to walk past them within a 16px gap. This was done because they were triggering on 4-6 despite attempting the level as intended. They were not supposed to slam toward you if you enter a portal in their path. Adding a delay fixes this.
-Along with the spike slider change, a bug where they could teleport through a portal when they're not moving has been fixed.
-"PAR" times have been relabeled to "PRO". They were never meant to be an indication of how quickly you should beat it casually, but rather how quickly you should be able to beat it if you're familiar with the puzzle and skilled in the mechanics.
-Pro time for 8-5 has been increased by 1 second (as it would be impossible unchanged with the slider's functioning differently)
-The timer for levels no longer starts as soon as the level starts. Instead it waits for the player to make an action first. I had intended on adding a pause feature inside of levels, however structurally the game isn't set up for that- it would require a pretty in-depth rewrite of every motion based action and a lot of testing after each change (SORRY). This is a happy medium, and it kind of suits the game well!
-A spicy tip has been added to 2-6 mentioning that the timer won't start until you move
-A spicy tip has been added to 2-9 mentioning that Spike Sliders can start on redirect arrows.
-Level 1-10 and 4-6 have been renamed to better reflect the solution.	
-Player 2 has full menu control. They can also now restart or go back to the overworld from levels. Sincerest apologies if this annoys some older siblings.
-Along with menu control, Player 2 can now select levels from the overworld.
-World maps have been adjusted/cleaned up, and in some cases additional animation and polish. Lots more flare.
-World 3 has been completely remade, as it was far from my favorite.
-Level 1-8 has been adjusted to be less boring for two players. While not every level is going to be super engaging for multiplayer, it wasn't a good first impression as it was.
-Fonts have been expanded to support additional languages. 
-Strings have all been externalized to allow for easier localization.
-Fixed an issue where the description bar in the multiplayer menu didn't move off screen when starting a battle.
-Removed the 2nd Spike Slider from 4-10.
-Spaced out the runway for the spike slider in 4-10.
-Analog input has been added. The left analog stick just acts as a second D-Pad.
-An issue with ghosts not properly seeking a new target after their original one is defeated has been fixed. They now seek out the other player once their original target has been ghosted.
-In line with the above fix, ghosts no longer seek the coordinate where their target was picked up by another player. Instead they'll seek out the player that picked them up.
-Teleporting into a world (world 1 to world 2 for example) would originally show you the label of the return portal, which was confusing, because the first thing you're greeted with is a World name, and then the return portal label above showing the previous world's name. To fix this, I've made the portal you start on when arriving in a world not show a label until all players have left the portal and subsequently walked on it again.
-Due to the overwhelming urge to make Dumpy & Bumpy talk to one another when playing Co-Op with the attack button, puzzles with the "No Bites" objective will no longer automatically fail when you bite. Instead the bite no longer does damage
-Fixed a bug where a spawning player in vs mode would only destroy one block obscuring their spawner instead of all of them.
-Fixed a small quirk where the player's momentum after selecting a level while sliding on ice would carry over after leaving/winning the selected level. Only applies to World 7.
-Fixed a major bug where a player could use another player to clip through a wall, and then proceed to destroy the wall by picking them up.
-As a result of the above change, pushing players has been refined. Pushing no longer affects momentum, and instead is a nudge. The visuals are also less shaky.
-Tiles that bounce out of bounds will no longer bounce back and forth infinitely. Instead they will expode if they try to bounce out of bounds more than once.
-Credits have been updated to reflect Screenwave Media, and display positions have been adjusted slightly to be more centered.

2.0.2.1
-Fixed a bug where certain sounds would still play full volume regardless of the sound volume settings

2.0.2
-Improved the controls. The button to pick up a block is now also the throw button, instead of the attack button.
-New option to remap the controls, replacing the Patreon/Ko-Fi/Itch links that appeared when not running through Steam.
-Press F1 at any point to reset key/button assignments.
-Similar to charging an attack, carrying an object now shows a small crosshair showing where it will land when you throw it, preventing some precision annoyance that shouldn't exist.
-Fixed an oversight in thrown block behavior. Normally, if a block lands on another block, it checks to the sides and behind to see if it's on the edge, and it'll land snuggled up to the block it landed on. It didn't do this going forward originally, and instead jumped ahead a full tile, leaving a gap between the block it bounced off of and where it settled. It no longer does this, and now lands snuggled up.
-Some elements of the options menu weren't moving off screen when transitioning to view the controls splash. This has been corrected.
-You can now unassign a controller/remove a player by pressing Select on the controller in the Overworld Menu while highlighting the controller assignment option. This button is always select, regardless of controller mapping as it refers to a controller that's unassigned, similar to how the escape button will always open the overworld menu (as a backup allowing you to assign/unassign a controller)
-Pressing ESC will close the game on the title screen.
-Changed "Press (enter/start) to Begin" on the title screen to "Press (Any Key/Button) to Begin"
-Added an option to turn off background animation. This only really applies to World 3, which has animated waves that may cause motion sickness.
-Removed a function I made for testing purposes that I accidentally left in, allowing you to skip puzzles without completing them.

2.0.1
-Steam integration
-Fixed bug where fullscreen settings wouldn't save but scaling would
-Idle spike sliders will destroy blocks that land on them instead of sitting on top of them until active.
-Tweaked 1-10 to make the intended mechanic more clear
-Removed links in menu when Steam is running for Steam compliance

2.0.0
-Complete overhaul
-7 new music tracks
-30 new levels
-4 new level themes
-4 new multiplayer levels
-Overworld system implemented
-Added Trophies
-Added "Par Time" to levels for players to beat
-Physics changes
-Tips added to certain levels
-Main Menu changed
-More Options, including turning on/off Spicy Tips, and setting controller priority (P1 is keyboard by default)

1.1.0
-Updated level selection menu
-Fixed issue where the Battle Mode button would allow you to hold the input to keep going back and forth between menus

1.0.0
-Release Build
-Additional polish all over to make it nice and shiny for release

0.9.3
-Release Candidate
-Added Multiplayer VS mode and polished level transitions
-Fixed bug allowing you to walk through bombs when they first explode without damage
-Fixed bug where multiple room transition objects were active at one time

0.9.2
-Players can now lift and throw one another
-Fixed bug where charge attack indicator doesn't disappear

0.9.1
-Changed Spike Slider seek method, solving an issue of them not functioning properly with 2 players
-Changed Teleporter collision box to be slightly wider and taller

0.9.0
-Changed Spike Slider seek width from 1px from center to 6px from center
-Changed puzzle 45 to work with Spike Slider seek width