Game Engine: The recently implemented randomised uZone refresh mechanic for uDynamic objects (crate regeneration) has been lowered from 33% to a 20% chance of triggering.
Game Engine: The replay button for Horde gameEnd screens will now reload the same stage (even if the Horde mode inception request was for a random stage). Replays of Campaign modes will still redraw a new random order of stages to progress through.
SmartBonk: Upgrade to v1.6! Details as follows:
Mobs now take an additional 40% bonus damage when bonked from behind; the float damage modifier is now allowed to exceed 1 to accomodate this.
Mobs now also take an additional 20% damage when bonked from the front and the entire SmartBonk HitBox fully collides with the Mobs vertical span; all 3 mobs currently available are an identical height to the SmartBonk Hitbox, so if you are standing level with them and there is no obfuscation, you will get the bonus.
It's worth noting here that Mobs have no positional/directional bonuses against Cheems, but Experience II and III mobs do receive a base damage increase: iHit += ((iHit / 2) * iExp). They also get an attack bonus when they are in a frenzied state.
There is now a 33% chance a bonk will knock a carried uDyn from a Mobs possession.
New properties for all entities processed with SmartBonk: iObfuscate and bRagdoll.
iObfuscate: An entity set as '0' will allow the propogation of damage along all horizontal axis' the entity occupies, while '2' will prevent all. A setting of '1' is a hybrid specifically for uMobs; it allows propagation dependant on xCheems.iStrikeMax.
bRagdoll: Entities set 'true' will respond to strikes with ragdoll physics, while set 'false' will leave them unaffected by physics.
It should be noted that some entities, such as uBlocks, aren't incorporated into the Collision System to use bRagdoll physics, in which case values for such entities are merely used by SmartBonk to appropriately handle such Entities.
uBlocks, uMobs, uDynamics, uItems, uShopGoods are now all processed with SmartBonk (uShelves do not currently require any processing as they are indestructable, and can be passed through horizontally unhindered anyway).
uBlocks, uDynamics (only type 'containers') are set iObfuscate '2', while uShopGoods, uItems, uDynamics (only type 'Lighting') are set iObfuscate '0'. As previously stated, uMobs are set to '1'.
I decided to allow damage to propogate through Lighting in particular because of the Candlesticks in 'The Old Castle' stage: while iObfuscate is set '2', they completely prevent all damage from passing through them, but the visible perception while playing suggests they are 'part of the background'. So although they respond to strikes (bRagdoll 'true'), it harms gameplay were they allowed to obfuscate damage.
In comination with the aforementioned changes, SmartBonk can now analyse a Bonk across many 'layers', the number of which is determined by the xCheems.iStrikeMax property.
[To detail in textual form how it works will take a while and as of writing this, I don't have good time, but a diagram at a minimum will be produced - soon/later/eventually!]
Input: Further unification and clean-up of the input system.
Audio: The SFX files for crate damage and destruction have been lowered in volume to try and bring them inline with all other SFX.
Audio/Input: It's now possible to alter the Music and SFX levels via Keyboard command while interfacing with the Game Preloader (this helps resolve a bug more than anything, I may eventually add UI buttons too though).
Bug Fix [Debug/CD; Critical]: A change to how lost entities are handled would always result in a total game crash (failure to correctly reference the uGameInstance for both StageData and iParallax resulted in X-coordinate data nulling).
Bug Fix [Debug; Critical]: A debug keyboard mapping was accidently left active in the stable build which if activated while a game mode was active would result in a total game crash.
Bug Fix [Input; Critical]: Using volume keys on the Game Preloader would cause it to crash (Audio commands were being sent to xGameCore. Additionally, uEvent processing wasn't implemented in xGD_Loader to support related uEvent UI animations).
Bug Fix [Input]: Changes to the way keyboard events are handled caused Global keys (which are currently the exclusive preserve of Audio control keys) to fail triggering when navigating menu screens if they were remapped to System keys A-Z or 1-5.
Behaviourally, System keys will now take priority over Global keys. i.e. If you remap any of the Audio keys to one that is also specified as a shortcut on a current navigation screen, the UI command will trigger while the Audio command will not.
Bug Fix [UI]: The v22.214.171.124 xInput modifications made it possible to trigger the Options menu when the Pause menu was already active.
Bug Fix [UI (v126.96.36.199)]: The UI bug involving SceneEnd not displaying correctly has been fixed.
Bug Fix [UI/TSC]: The ItemToggle touch control button was failing to show and hide as appropriate.
Bug Fix [Audio]: The xAudio.uMusic_UID override was not being set null when resigning from a campaign.
Bug Fix [Mobs]: Mobs will no longer attempt to throw uDynamics at Cheems if his health is zero.
Known Issue: Some Collision Detection work has resulted in uDynamics frequently moving in peculiar ways in at least 1 narrow case; Crates being knocked about in front of Candlesticks. It's not game breaking, so it can wait to be fixed.
Beta v188.8.131.52 / 2022.07.04 18:00 UTC+1
WWW/Mobile: BattleBonk is Progressive Web App (PWA) compliant; supported mobiles devices and desktop computers/laptops with compliant browsers can install BattleBonk as a fullscreen, offline operable application.
WWW/Cache: LocalStorage has been implemented as a means to store User data across sessions, the following data is currently saved:
Touch Screen Control size/positions/graphical configuration.
Audio Music and SFX volume.
Webby data (When the game is installed, and at every BattleBonk launch, fetch attempts for Webby page data are made and, if successful, are cached for offline use).
Webby: A brand new HTML interface has been added, which combines the old corner page panels (Game Controls, Game Config etc) and Game Credits (preivously available in-game), with access to new content, such as a Game Guide, and other site information previously accessible only via the main site.
Webby/Game Config: A new option called 'Object reduction' has been added, which currently serves to ensure that 1 crate fragment is spawned everytime a crate is broken.
This option may help on mobile devices or older computers which can slow-down during gameplay; struggling to cycle through the larger object arrays, requiring computation of additional collision operations.
Webby/Game Config: A new option called 'Stage scroll clamp' which allows desktop players to choose whether stage-scrolling can continue beyond the stage-defined parallax limits. This feature is enabled by default (and recommended) for mobile players.
Input: Extensive touch control and general input development, coupled with further optimisation of the various input systems; xKeyboard (formerly 'xInput'), xTouch and xMouse input systems share a new common xInput system.
Input: Touch Screen Controls (TSC) Features plus Guide:
Note: TSC Configuration can be visited at any time in-game by visiting the Quit screen.
The TSC Configuration process involves 3 Stages: Viewport configuration, TSC layout (Button positioning and scale), then finally TSC Presentation (graphics/text/button-pad transparency settings, and visibility states for graphics/text).
Viewport Configuration /1: Fully zoom out by pinching your device screen, then use the supplied Viewport modifier (Zoom) buttons to match the height of the game screen to the height of the device screen.
Viewport Configuration /2: Warning! Proceeding on from this screen will lock the viewport, if you create a hyper-zoomed view and press 'Finish', you can be permanently locked into an unusable viewport size. The only solution I know of to remedy this is to uninstall then reinstall the BattleBonk PWA to clear the cached settings.
TSC Layout /1: Click and drag the buttons to a position that is most comfortable to play with; press the "Lock & Test" button at any time to trial the control layout in the supplied stage simulation.
TSC Layout /2: Their are no restrictions on the layout of the buttons; over-lapping buttons and buttons positioned partially off-screen are acceptable. Buttons are currently hard-coded in their Z-order, so when buttons are over-lapped, one of them will always take precendent over the other.
TSC Layout /3: Buttons coloured cyan are fully displayed with no issue. White buttons cannot be independantly moved, and are slaves to a master button (which only appears during TSC Layout). Purple means two or more buttons are over-lapping. Yellow means the button is detected as being partially off-screen.
Presentation /1: The "Display Graphic" and "Display Text" buttons each toggle through 3 states. Each state will either: allows all buttons to have their UI element displayed, only the smaller buttons to have their UI elements displayed, or no display at all.
Presentation /2: The alpha buttons control the degree of transparency for either: the button graphics, button text or button pad (the white square delineating the pressable area of the button).
Presentation /3: The Reset button has two features:
If you have never completed TSC Configuration before, the button can only reset the Presentation to factory settings.
If you have previously completed TSC Config (and thus have stored settings), pressing Reset will restore your currently saved settings, and pressing a second time (without altering any other settings inbetween) will result in a total factory reset of the Presentation data, with your saved Presentation settings being overwritten.
Game Engine: The GameState properties and associated functions have been moved to uGameData ('uGD', formerly xGameData), with xGameCore receiving an array for storing the uGD's; as a result, BattleBonk can support multiple 'universes', each featuring multiple 'worlds'.
Gameplay: With new purposes incentivising a player to utilise 'Stage Continuation' Interval time (collecting items/coins, smashing boxes for loot), this Interval will now also cause the Wave Timer to keep running (Note: the Wave timer still has no impact on any other metrics such as points earned).
Gameplay: Crates may now respawn at the beginning of new waves under certain conditions:
1) It's not the first wave of the stage.
2) Less than 50 crates exist in the stage.
3) A random 33% chance yields successful.
Less crates will spawn than that of the initial Stage load generation. The crate regeneration is intended to benefit players of Horde mode, but may trigger in Campaign modes as well.
UI: Selecting 'Horde' mode from the Menu now opens up a new Stage selection screen; players are no longer forced onto a randomly selected stage.
UI: The Credits screen has been removed from within the game and reinserted into Webby.
UI: The UI now only displays Keyboard shortcuts for Keyboard users.
UI: Desktop users can access Keyboard Remapping from the Main menu, whilst Mobile users have access to TSC Config.
UI: The 'Quit' screen is officially renamed to 'Options'; offering the TSC Config for Mobile users only, and access to Webby and Audio volume buttons for both Desktop and Mobile users.
UI: Confirmation dialogs are now served when attempting to Resign or Quit from the Options screen, and also when requesting a Factory Reset of controls on the KeyConfig screen.
UI: A timer measuring the overall duration of the Campaign has been added below the Wave Timer.
Stage: With the TSC covering much of the game screen for Mobile users, Stages will not clamp the scrolling of the parallax upon reaching the Stagefold edges for Mobile players (optional for desktop players), but rather continue scrolling so movement/combat at the screen edges retain visibility (the area off-stage is painted black).
CD/uDynamic: Crates now take more damage when falling onto blocks, will now also take damage when moving/flying (horizontally) and striking against a block (damage taken in both instances is proportional to it's speed), and can now also take minor damage when being thrown at Cheems.
CD/uDynamic: Crate fragments (but not unbroken crates) will now always be destroyed (removed from the game) if they're thrown at Cheems and connect with a damaging impact.
CD/uDynamic: Crate fragments now also share the same damage vulnerabilities as unbroken Crates (as detailed above), and can now also be bonked/destroyed.
uDynamic: uDynamics of all types are now held by Mobs 'behind them' rather than 'in front', and also slightly forward of their position.
Debug: Due to a bug involving items sometimes falling through floors, and given 'The Old Castle' stage has a 'roof' at the top of it's stage design; items that are now lost off the stage will no longer spawn in from above, but rather now be respawned in at the current Stage's defined spawn coordinates (which are normally used to position Cheems on new stage loads).
Bug Fix [Parallax]: When entering the Shop with Stage Scroll Clamping set to false (a default for mobile users), Cheems would appear far beyond the correct Parallax limit, and would only correct itself once the uEvent uGI.IRQ was completed, and uGI.phys() could resume.
Bug Fix [Parallax]: When entering the Shop with Stage Scroll Clamping set to false, everytime the shop was refreshed after having been previously entered, uShopGood entities could spawn in the wrong place as Parallax was unaccounted for.
Bug Fix [Collision (v184.108.40.206)]: Potential collisions during StageFolding were never catered for in the v220.127.116.11 Collision System overhaul (the existing stages at that time didn't require it, and so was overlooked), but have now been properly integrated.
Bug Fix [uBlocks]: Conditional logic errors in uBlocks would result in regular platforms being flagged as indestructable if their 'r' property was positioned at the edge of the stage.
Bug Fix [Graphics]: Blocks of the 'platform' subtype which are smaller than 20 pixels on either side no longer have glitched 'damage' graphics; now their entire internal colour will gradually turn white as damage is accrued.
Bug Fix [Mob]: Mobs will no longer attempt to fall through shelves when they are stunned.
Bug Fix [Audio]: If cheems dies and the player exits back to the main screen during a plyrDeath event, the _audio music override property wasn't reset, resulting in death music playing on the main menu.
Bug Fix [Gameplay]: If the shop was entered within the last 3 seconds of a LevelEnd interval (whilst _gi transitional uEvents are processing), it was possible to interrupt and cancel the UI fade-out. To resolve this issue the Shop will now close 5 seconds prior to Stages switching.
Bug Fix [Input]: Certain circumstances would result in UI Buttons not highlighting orange when moused over.
Known Issue [PWA; Mobile]: Their are ways to place PWA in a circumstance where the Viewport is zoomed in and there is no way to zoom back out again as PreventDefaults are enabled for Touch events on the canvas' (requiring a restart of the PWA to resolve the issue); this issue will be monitored going forward, but ultimately may not be preventable.
Known Issue [TSC; Mobile]: Some combinations of the Bonk, Jump and/or Sprint touch screen buttons fail to execute button-to-button snapping.
Known Issue [CD; Mobile]: Sometimes dropping items can result in them falling through the platform Cheems is standing on. An attempted fix for this issue has been implemented.
Known Issue [CD; Mobile]: An bug has been observed where a dropped uDynamic (crate container) by a Mob resulted in only a partial entity decoupling, resulting in a glitched state; preventing Crate physics from fully engaging. An attempted fix for this issue has been implemented.
Known Issue [UI]: A bug has been observed where Resigning from a campaign within the Shop stage results in an glitched game state; the SceneEnd UI doesn't generate, making it impossible to exit back to the Menu.
Beta v18.104.22.168 / 2022.05.06 11:18 UTC+1
Input: An early version of touch screen controls has been implemented; it's deployed within the same BattleBonk script but should only appear if your screen has support for touch control.
- With such a variety of 'hybrid' devices these days, the GameLoader will feature an override option in the near future, giving the User a chance to override the method of input.
Special Content: The Birthday theme has been removed.
Beta v22.214.171.124 / 2022.05.04 11:21 UTC+1
Events: Removed the defunct '_evgi' code, while _evgd is simply renamed _events.
Bug Fix: There was an error in uEvent GameState-Delay request/handling which caused the Main Menu to fail executing its own standard uEvents, when specifically returning from a GameEnd gamestate.
Beta v126.96.36.199 / 2022.05.03 11:48 UTC+1
Special Content: Happy 1st Birthday, DogeBonk! For a limited time only:
- Celebratory animation on the main menu, with congratulatory messaging and even some rising balloons.
- Cheems is wearing a birthday hat, awww.
- Cheems also has a party horn: press 'B' to blow the horn to make a noise, and not only that, regain +5 health too!
- We love DogeBonk, have a fun day everyone~
Beta v188.8.131.52 / 2022.05.02 23:07 UTC+1
Balancing: Mobs were a bit too keen to throw uDyn entities upon establishing LoS with Cheems, the chance is now 1% per frame (statistically speaking, this nerf is only an increase from 1 to 2 seconds, it may change again).
Bug Fix: Script-wide string replacement activity in the v184.108.40.206 development cycle resulted in all references to 'DogeBonk' being changed to 'CheemsBonk'.
Bug Fix: Mobs were coded to 'throw' any held uDynamic entity upon death rather than 'drop' them.
Beta v220.127.116.11 / 2022.05.01 20:02 UTC+1
Bug Fix: Two of the stages were disabled during game testing and accidently left disabled; rendered undetectable by the game engine.
Bug Fix: 'Beneath the Surface' didn't have properly configured areas for spawning crates. It also received a quick decor pass where several background panels were added.
Beta v18.104.22.168 / 2022.05.01 18:44 UTC+1
Game Script: Implemented code obfuscation (see Blog for detail).
Game Engine: Introduced 'Game Instances'; forking relevant properties and nested functions of xGameData into a new uGameInstance, the latter stored in xGameData.ar_gi array (current Stage referenced by _gi).
Game Engine: All entity phys() and update() processing are now interruptable; the new uEvent (evGameInstance-evIRQ) toggles _gi.bIRQ during GameInstance transitions to prevent Mobs from hitting the player whilst frozen.
Game Engine: Introduced a new 'uDynamic' entity and added a uGameInstance uDynamic array to support it; the uDynamic object poached the Lighting code section of uDecor and will serve as a ragdoll/destructible/'dumb' physics entity (uDecor will provide stationary, decorative elements, and interactive elements like shop doorways).
Game Preloader: The game preloader no longer autoplays the game, and requires user interaction to launch to the main menu.
- When the autoplay was present, the main menu could load without user interaction. This resulted in broken promises surrounding audio playback (a browser mechanism to, among other things, prevent annoying adverts playing nuisance audio). Until I properly resolve this, BattleBonk will require user interactivity before proceeding past the game preloader.
Events: Expanded the events system by adding optional GameState and GameInstance specific restrictions during processing, and added many additional functions for uEvent creation and management (including templates in xEventGD.set_GS() and set_GI() for major transitions).
Gameplay: Cheems now has a sprint mechanic and a seperate stamina bar to govern its usage; sprint can be activated with the default key 'Shift'. Loss of stamina adversely affects the Bonk meter recharge rate; significant stamina loss completely stops the bonk meter from recharging.
Gameplay: The BonkWave can now be toggled between enabled and disabled states (as a result, it no longer has unlimited usage in the Shop where BonkWave's will now be consumed).
- The BonkWave buff tile will always remain visible to indicate its availability, but the BonkWave graphics on Cheems bat will disappear to indicate a disabled state.
Gameplay: The amount of DOBO lost upon death has been nerfed to a random percentage spanning 10-to-20%, reduced from the previous fixed 25% penalty.
Gameplay: Due to the new way stages/instances are handled, there is only 3 levels now available for all campaign modes (this reflects the total of 3 stage designs).
Audio: Added 1 new music track to associate with the new world stage 'Warehouse'.
Audio: Added 36 new sound effects, addressing the lack of audible feedback for many actions and events, and also to cater to some new content in this patch (e.g. Crates and HPI items).
Interface: The Main Menu now loads with a uGameInstance; Cheems drops in from above and executes a simple 'animation' via a new uEvent (note: he cannot be controlled).
Interface: When a new inventory slot is selected, a text description is now briefly fielded underneath the inventory selector boxes.
Interface: When the Music or SFX volume is changed, a visual indicator is now briefly fielded near the top right corner.
Interface: Screen-fade transitions occur at various key moments to prevent sudden/disorienting gameplay/visual changes.
Interface: Improvements to UI management; introduction of xUI.ModifyContainer() for easier UI object group repositioning and alpha fading; this also significantly cleaned up frame-to-frame UI processing.
Interface: Viewing Wave Data (default key 'Tab') now also functions during Stage Intervals whilst the UI is toggled to hide (default key 'H').
Graphics: The background parallax graphics for Stages has been reworked from it's original rigid hard-code design of 2 layers, to a flexible system accepting float-values; permitting a very fine gradation of layering, producing smoother parallax movement.
Graphics: In addition to a mobs healthbar turning from green to yellow whilst stunned, the usual background red colour will also change to grey (aids visual indication of a stun when mob health is very low).
Graphics: All graphics images used to draw Cheems have now been transferred to _gd.ar_gfx (optimisation; no longer reloads images every frame).
SmartBonk: The old ShopGood bonk-to-buy code has been consolidated into the new SmartBonk system (should a shop design ever come about where Shop Goods sit obfuscated beyond a dividing wall, you could not accidently purchase it by swinging through the wall).
SmartBonk: It's now possible to bonk beyond the stage fold (i.e. you can stand at the edge of the stage and swing 'off screen', and the hitbox area of the Bonk will wrap around to the other side of the stage, making the stage edges less precarious).
SmartBonk: The new uDynamic entity has been incorporated into the SmartBonk system; uDynamic entities will not intefere with damage dealt to mobs if they get in the way.
Combat [New!]: With the introduction of the uDynamic entity and additional Mob AI, a new threat vector has emerged; Flying objects!
- Mobs now have the ability to pick up and carry a single uDynamic entity if they pass by it, and if an unblocked horizontal Line-of-Sight is established between the mob and Cheems, they will likely throw it at you.
- The throws vary in strength; it will always be enough to cause damage, but if the object thrown loses speed by bouncing or sliding, it can slow enough to prevent any damage.
- It is possible to defend against this attack by bonking the crate before it impacts you; it is challenging though. To compensate for this, the damage thrown objects can effect is small, and the availability/discovery rate of items and coins has generally increased.
Combat: Cheems will no longer take damage when touching mobs which are stunned (indeed, I never even attempted to code this previously, so this was not a bug).
Mobs: Further improvements to Mob AI around ladders; re-introduced multiple reactions to being bonked whilst climbing; might fall, might be stunned, might turn around or may simply continue climbing. Even with horizontal movement disabled, mobs can now still benefit from ladder ascent/descent assistance code.
Mobs: There is now a 50% chance of Mobs releasing/dropping some of their DOBO when struck, previously it was guaranteed. Any DOBO that hasn't been dropped from its coin array by the time of killing strike is released in full along with the loot array (you won't miss out on any loot whether you kill them quickly or slowly).
Mobs: The amount of potentially generated coins which can be dropped by mobs has been mildly increased.
Mobs: The randomised duration for a stunned state has been increased to a maximum of 5 seconds; with weighting favouring for 1.5-3 seconds, and unfavourably for 3.5-5 seconds.
Mobs: The amount of coins that Experience II and III mobs can drop as loot has been increased, and the number of small coins in the uMob.ar_coin array (coins ejected when injured) has been increased.
uDynamic [New!]: Container 'crates' that come in 3 variants; small, medium and large.
- With increasing crate size comes increasing health, more bonking to break; they can be damaged via any type of player attack, and ultimately destroyed.
- In their unbroken state, they feature an invisible shelf allowing other entities to stand on them/optionally fall through them, as per usual shelf characteristics.
- Upon destruction, they release a randomly generated number of coins, and the medium and large variants also have a randomised chance for an item, with the large crate featuring the best chance for an item to drop.
- In addition to the released loot, the crates release 2 or 4 additional uDynamic entities (depending on crate size) depicting crate fragments; these are purely decorative ragdoll entities that will persist.
Stage: The Parallax system can now operate with Stages of any width (although still a minimum of 1280 pixels, the size of the Canvas element).
Stage: 'The Old Castle' has received some minor decor adjustments, and also seen several uZone's added to support the random generation of crates.
Stage: A few dividing concrete walls were added to 'Beneath the Surface' to make stage navigation a bit less bland (the stage did not receive the proper level of revision originally intended for this release).
Shop: The cost of the 'Bonk Wave' weapon upgrade, and the 'Extra Life', have had their default prices halved; they are now $1500 and $5000 respectively.
Shop: The signs displaying prices now have a pale green or pale red background colour to indicate affordability.
Items: The way Items are generated randomly for loot has been improved:
- Under the previous system, there was a 0.1% drop rate for an Extra Life, 0.5% for the BonkWave, and should those not have been selected, all other remaining item options were treated with equal weighting.
- The new system features a weighting specified for every item (except for coins which are handled differently); the 'least valuable' items have the highest weight (e.g. 10HP, 10HPI items), and the most desirable have the lowest weight (e.g. 100HPI, BonkWave, Extra Life).
- This means the drop-rate percentage of all items will change whenever any single item's weighting is modified, or whenever a new item is introduced to the game. Going forward, this and future patch notes will generally cease specifying this detail unless significant weighting changes occur.
Items: The projectiles emit by the BonkWave now initialise with a gentle rise, flying with a low arc.
Items: The diameter of the gradient light emit by the BonkWave now reflects the number of uses available (relative to the buff's current cap), and so shrinks in size as the number of uses dwindle.
Items: The Triple Bonk buff has been changed from a 20 second to a 30 second duration.
Items: A new item (plus variants), and many variants for an existing item, have been added:
- 10hp, 60hp, and 100hp variants of the original 30hp Heal have been added.
Item [New!]: A 'Health Point Increase' (aka 'HPI') item has been added, also featured in 10hpi, 30hpi, 60hpi, and 100hpi variants; these use the same item graphic except they are coloured blue.
- The Health Point Increase item range extends Cheems healthbar beyond 100 points, up to a maximum of 300.
- HPI items are consumed and applied instantly.
- Taking damage gradually reduces the healthbar back to 100 max health at a rate half that of the actual damage received (e.g. if Cheems has 150/150 and 10 damage is taken, Cheems will have 140/145; a further 20 damage would result in 120/135).
- When consumed, the maximum health is increased, but Cheems' health will also only increase by the same value (e.g. if Cheems has 80/100 health, and a 60hpi is consumed, he will then have 140/160 -- the player is not granted maximum health).
- Regular HP items can be consumed to recover the remaining health bar up the displayed maximum.
Inputs [New!]: Key: 'V' toggles the BonkWave (if in effect) to enabled and disabled states.
Inputs [New!]: Key: 'Shift' (hold) to make Cheems sprint whilst pressing Left or Right (default keys 'A' and 'D').
Bug Fix [Gameplay]: The calculation of DOBO Earned in LevelEnd metrics was incorrect; it failed to factor in the new DOBO Lost metric introduced in v22.214.171.124.
Bug Fix [Event]: The bug fix asserted in v126.96.36.199 regarding Cheems death animation (uEvent) being unable to complete, was not the source of the problem; a coding oversight led to an unclean divisible-by-20 time integer being passed to the 'Scroll' uEventModule. The previous Math.floor((_gi.iPrlx / 2) * 20) would lead to a faulty 10 millisecond offset when handling a float-based result from the initial division.
Bug Fix [UI]: Band-aid fix for an interface issue involving overlapping buttons; the button with the highest iZ value is now prioritised.
Bug Fix [UI]: The Horde Threat container in the minimalised UI now flips its vertical position (when Cheems enter the top area of the stage).
Bug Fix [UI]: Although drawWarnings() has not been converted to the new UI system, it nevertheless now layers correctly (it no longer overlaps onto the Pause or Quit screens).
Bug Fix [UI]: The performance monitor added in v188.8.131.52 was incorrectly reporting the time required to execute frames by reporting the cumulative time to process multiple frames.
Bug Fix [Stage]: During stage generation the Gap-making procedure was hard-coded to replace platforms with regular ones, which could result in concrete platforms being erroneously transformed.
Bug Fix [Stage]: Similar to the above, when the Shop was generated on concrete platforms, they were not being replaced correctly.
Bug Fix [SmartBonk]: The left and right facing Bonk hitbox areas were slightly different from each other; it was possible to strike approximately 4 pixels farther to the right. It's now 78 pixels in both directions.
Bug Fix [SmartBonk]: Contained a failure to account for blocks of the horizontal orientation in widths greater than 60px, and thus were erroneously dealt more damage than they should receive.
Bug Fix [CD]: The glitch where items could stick to walls appears to be resolved; when new entities were inserted into the stage (like coins emerging from a mob), sometimes the world insertion coordinates for the new entity could result in its hitbox overlapping with nearby blocks, causing them to get jammed instantly.
- A CollisionDetection check has been added to look for any entity-block overlap during CD.Loop_Blocks, and if it is detected, a new EntSave() function is called which looks for the shortest escape distance along both vertical and horizontal axis, and forces the entity into the nearest free space.
Bug Fix [CD]: During a previous optimisation of CollisionDetection, an erroneous set of logical conditions was devised which could cause Mobs to ignore their bMove property and thus continue moving, even when stunned.
Bug Fix [Cheems]: Possible fix for the issue of Cheems getting stuck in a Bonk 'swing' state (sometimes also triggering constant Bonk-related SFX) if Cheems is initialising a Bonk attack at the moment of him being slain.
Bug Fix [Mob]: Exerience 2 and 3 mobs didn't feature a point bonus, which they should of had originally.
Bug Fix [Mob]: Implemented some minor alterations to various logical conditions that appear to be causing a Mob's stunned state to potentially cancel early.
Bug Fix [Mob]: A bug that could leave a Mob stuck floating in the air, typically hovering over the top of Ladders, was due to a setClimb request. Some additional logical checks inside to CollisionDetection.MobHandle(), as well as a sweeping setClimb(null) request while (ar_ldrCD.length == 0 && sClimb != null) should resolve this bug.
Bug Fix [Item]: Since v184.108.40.206, a serious flaw existed in the implementation of Coin value randomisation causing both Coin SubTypes to persist with their initial randomised value for the entire lifetime of the script, and never regenerate a new value. Every 'big' coin picked up now correctly yields a randomised value between 11-30 DOBO (inclusive), and every 'small' coin 1-10 DOBO.
Known Issue: A single mob can sometimes trigger many 'jump' sound effects by charging multiple jump requests in quick succession.
Known Issue: In some cases, exiting a campaign back to the Main menu will result in the Keyboard Config screen's remapping to fail during keyEvent handling (F5 page refresh then remap before playing a campaign until this is resolved).
Known Issue: Sometimes Cheems can trigger the entity_fallen SFX repeatedly upon death.
Known Issue: The collision system can't properly handle collisions between entities and stage blocks during stage-folding (temporarily removed all particularly problematic blocks in the new 'Warehouse' stage as a workaround, until the issue is resolved).
Beta v220.127.116.11 / 2022.03.27 23:06 UTC
Bug Fix: A coding error for the generation of random open/closed Shop times would often result in it failing to self-trigger to back to its opposite state, thus becoming stuck either opened or closed.
Bug Fix: The bonking SFX wasn't triggering at all in the Shop; it now mimics the same way bonking sounds occur on the main stage.
Beta v18.104.22.168 / 2022.03.26 17:56 UTC
Gameplay: [Horde] The WaveEnd interval duration in Horde mode is now 30 seconds, changed from 60 seconds.
Gameplay: [Horde] The generated Mob Cap (the maximum amount of mobs that can be spawned at a given time) is now automatically reduced to match the number of expected Mobs if the former is higher ('a cosmetic fix').
Gameplay: [Horde] Minor alterations to the Wave generation code should prevent boring/unbalanced Wave specifications; now the MobCap will always be at least one sixth of the total number of expected mobs (e.g. 42-47 mobs will raise the MobCap to 6 if it's generated less than that).
SmartBonk: Lighting decor now observes the SmartBonk system (it cannot be bonked through walls).
SmartBonk: The float damage modifier generated by SmartBonk is now also used in uMob xStruck, and uDecor iSpeed/iSpeedMax generation (in their respective entity Struck() functions).
SmartBonk: The float damage modifier is also applied to gravity requests passed to a now revised version of EntRise.
- SmartBonk Example: If 20% of your strike area intersects with a mob, you will deliver (Damage * 0.2), but now also (GravityRise * 0.2) and (KnockBack * 0.2)). Poorly placed hits on mobs now gives them more opportunity to react.
- The height of the bonked entity is factored in: e.g. if you bonk a Chandelier (heigfht: 28px), even though it only fills ~47% of the SmartBonk hitbox, a damage modifier of 1 is produced rather than 0.47 (the calculations round to two decimals).
Movement: Cheems, like other physics enabled entities, now features a gentle bounce when falling with sufficient velocity (it does not intefere with his ability to jump successively).
Mobs: Changed the xStruck stun-lock of Mobs to randomise as 1, 2 or 3 seconds.
Combat: As a penalty for dying, the amount of DOBO the player has collected and saved is slashed by 25%. The quantity lost in this manner is monitored as a seperate uStat metric.
Audio: The SFX for successfully placed bonks on mobs now extends to decor.
Audio: The SFX for missed bonks now plays regardless of whether a valid mob/decor strike was made.
Input: The input system received another revision resulting in significant code consolidation; related functions and global variables have been incorporated into xInput.
Bug Fix: The 'doge_bonk_hit' SFX stopped triggering.
Bug Fix: A debug key was accidently left in which allowed the player to inflict damage on Cheems at any time.
Bug Fix: If the player exited a game whilst the Cheems Death event was processing, the _events array would not be cleared and would lead to errors when a game was relaunched.
Bug Fix: SmartBonk wouldn't calculate the percentage damage modifier correctly for entities which were both not blocks and smaller than the SmartBonk hitbox height of 60 pixels.
Bug Fix: An issue with Mobs passing downwards through secondary ladder gates has (finally) been resolved.
Bug Fix: A possible fix has been applied to a situation where a Mob configured as (bMove = false) could still move, by failing to exhibit gravity-induced collision friction (the problem is suspected to be ar_shGate_Float not receiving a logical check for it's array length in CD.LateralHandle()).
Bug Fix: Conditional logic governing Cheems permission to Jump was flawed. Specifically, should the player key press to Jump and then very soon after request another simultaneous key entry, Cheems recurring auto-jump would fail to call, even while the Jump key was still held (this correlated to, and was made worse by, a lower 'Character repeat delay' setting in the Windows OS Keyboard setting).
Bug Fix: Physics for the uItem entity, and very likely other 'dumb ragdoll' entities, contained a glitch in the handling of CD's iModH calculations, which could result in a constant slow sliding movement due to poor handling of float/decimal values. This appears to be have been introduced by the new Rebound physics in which values are halved and inverted on horizontal collision impacts. Math.floor() has been applied to the final iModH value.
Bug Fix: There was an error in Cheems' momentum-related movement code which caused it to process twice as fast; the same code twice was effectively being triggered.
Bug Fix: The total number of mobs that feature in the Standard Campaign was erroneously stated on the Main Menu as 220; the correct amount is 214.
Bug Fix: The music no longer fades out when a wave is finished in Horde mode.
Bug Fix: The music during Cheems' Death Event would not resume if the Pause or Quit screen was activated followed by a cancellation.
Bug Fix: It appears redundant conditional logic could prevent a Cheems Death event from completing (no contingency was allowed for _gd.iParallax == 0; I believe this is the cause, hopefully fixed).
Bug Fix: The physics recently added to Lighting decor failed to exercise certain collision checks resulting in occasional quirky movement (failing to initiate gravity falls).
Bug Fix: The previous patch notes states a Menu music replay issue was fixed when navigating in-and-out of Credits/KeyConfig screens; this was the case until it was broken once again after another revision of xAudio was performed just prior to the release of the previous update. It's been fixed, again.
Bug Fix: It's no longer possible to glitch Cheems location by holding down the 'Interact' key outside the front door of the shop.
Bug Fix: The speed of mobs, but most noticably with BTC variants, would regularly end up with misconfigured iSpeedMax properties, causing them to move at speeds which are not their defaults.
Known Issue: Throwing Bonk Wave's right up against a wall seems to occasionally strike mobs on the other side despite LoS being totally obfuscated.
Known Issue: There may be an outstanding bug related to the uEvent of Cheems death (the Parallax scrolls, seemingly fully, but then the 3rd and final uEventModule fails to process).
Known Issue: If the UI is switched to the minimal version, the Horde Threat container is not flipping its vertical position.
Known Issue: drawWarnings still needs converting to the new UI so it can be iZ-layered.
Known Issue: If Cheems dies whilst swinging his bat and goes through a death animation event, at respawn his swing will finish processing and usually/always(?) play the relevant SFX.
Beta v22.214.171.124 / 2022.03.22 14:15 UTC
Game Engine: Collision system totally rewritten, resolving several long-standing collision bugs.
Game Engine/WWW: A pre-load screen is now displayed on page load, and will auto-load the game when all media (images and audio) has finished downloading.
Game Input: A keyboard remap tool has been added to the Main Menu, allowing customisation of keys.
- To support this feature, PreventDefault is now configured in Game Settings to the default of enabled.
- F1-F12, Escape, Print Screen, Home and End keys remain unaffected by the PreventDefault setting (i.e. you can still press 'F5' to refresh).
- Note: The 'Tab' key doesn't have an exclusive PreventDefault assigned to it: if you disable PreventDefault you will likely have to remap this key to be able to view Wave Data in-game.
UI: Largely rewritten, converting it to a fully object-based system.
UI: The Decor, Underlay and Overlay arrays have been merged together to form a new UI array.
UI: All painting is now performed utilising a single concatenated array of all graphic containing arrays, with all objects now assigned a Z-level; this change removes any limitation to the ordering/layering of all visual elements.
UI: All items consumed which operate temporally, and not totally consumed instantly, are now listed in the top-right of the screen (in the order of their expiry, then by quantity where applicable).
UI: A basic game performance metric is now featured just below the in-game Timer; it details in milliseconds how long the game requires to execute the current frame (refreshes every 500ms).
UI: The warnings displayed on the left/right edges of the screen (which notify the player of approaching mobs beyond the stage-fold) now remain visible when the screen-scrolls up to 160 pixels away from the edge.
UI: All variations of the SceneEnd screen now display full Campaign stat totals.
UI: The detailed Wave data that was previously displayed in the top left of the screen is now available via key press (and hold) 'Tab'.
UI: A lot of other modifications to the pre-existing text that was displayed (correcting display errors/improved text relevancy).
Gameplay: A new type of platform has been introduced called a Shelf; these platforms have varying specialty collision criteria. These platforms are indestructible.
- Shelf Type 'Air': This shelf can be visible or invisible, and allows entities to pass through them in all directions except from above. From above, only an active key-press request by the player will prompt Cheems to fall through (this is a randomised chance in the case of Mobs).
- Shelf Type 'Gate': This shelf is invisible, it's only observed by Mobs and its function is to enhance their ladder navigation abilities.
Gameplay: A projectile entity has been added to the game.
Gameplay: A basic Event object has been introduced to process new and future game events requiring specialist interventions (e.g. the new automated Parallax scroll upon Cheems' death and the timings involved to execute it).
Gameplay: The Quit screen now features a 'Resign' button (click or key press 'P') allowing players the option to view their accumulated stats when exiting a Campaign or Horde game early.
Gameplay: The 'Insane' campaign has been removed.
Gameplay: The Game Timer now freezes when the player enters the Shop during Game Intervals, but the Wave Timer will continue.
Gameplay: 'Lives' have been added to the Cheems specification; Cheems dying no longer necessarily equates to a Game Over result if the player procures extra life items.
Gameplay: The drop rate of items for mobs in the Beginner campaign has been changed from a 100% drop rate to 50%.
Stage: Cheems spawn location has been modified for the "Beneath the Surface" stage.
Stage: 'The Old Castle' stage has had two regular platforms converted to air shelves.
Movement: Cheems, mobs and items now have simulated momentum, with Cheems experiencing it to a lesser degree to prevent sluggish control.
Movement: The uDecor entity has been incorporated into the Collision system; currently decor of the Lighting type express gravity/lateral physics.
Movement: Items and Decor (where relevant) now have rebound physics; when they strike blocks laterally they will bounce back.
Movement: Items, and to a lesser degree Actors, may now experience minor bouncing when landing after a fall with sufficient downward speed.
Ladders: Significantly overhauled; a minimum of two invisible shelves of a type called a 'gate' are now used with ladders, which serve as entry/exit points for Mob AI. Additional secondary gates can be added to deliniate multiple levels of access.
- Shelves of the 'Gate' type are strictly a supportive mechanism for Mobs; to assist with their navigation of stages -- Cheems, Items and Projectiles do not observe them.
- In addition to the pre-existing AI which aided Mobs in selecting the best vertical climb direction when engaging with Ladders, Mobs now also receive data on the best horizontal direction to exit Ladders from.
- uBlocks now feature an iShelfQty property, which during xStage.StageAmmendments(), is incremented for every secondary gateway shelf detected in its collision area; this is used to further rebalance the randomised chance of Mobs exiting Ladders at different levels of access.
Mobs: Mobs can now spawn with a property called Experience; it implements additional attack damage and health, whilst to compensate, they will drop more coins and potentially more items.
- There is a 1/16 chance a mob can spawn with 'Experience 2', and a 1/32 chance of 'Experience 3'.
- An Experienced mob is identified by the number of yellow rectangles under the left handside of it's overhead healthbar: 1 for Exp2, and 2 for Exp3. None are visible for regular mobs, which are classified as Experience 1.
- There is not an increased chance of 'better items' dropping, but there are better chances for additional items to drop; the best possible result is an Experience 3 mob dropping up to three items, whilst Experience 2 can drop up to two.
- There are currently no controls in place for the spawning quantity of Experienced mobs, it is entirely random how many may appear, if any (with the exception of the Beginner's campaign).
- In the Beginner's campaign only, only SHIB mobs can spawn with increased Experience. All other mobs are locked to Experience 1.
Mobs: Knockback Change: The knockback mobs experience after being struck has been changed; their 'damaged state' will last between 200ms and 1600ms, and will result in either; a total stun lock (unable to move), the ability to move without the frenzy speed bonus, or moving with frenzy.
- The green section of the mob healthbar now turns yellow to indicate if a mob is stunned.
- The strength of the knockback is slightly variable to make mob combat less predictable.
Mobs: When confronting obstacles of the block variety, mobs will now determine a jump height more appropriate for the obstacle's height.
Mobs: Upon death, mobs now persist briefly and experience a randomised degree of stronger knockback.
Mobs: Loot is now predetermined during mob initialisation and dispensed gradually (with some randomness) upon injury, and fully dispensed upon death (prevents coin-farming with low-damage attacks).
Mobs: The likelihood of mobs jumping is increased 8 fold whilst under the effects of a struck state.
Combat: New Bonking mechanics released ('SmartBonk'):
- Mobs are now struck in the order of their nearest vicinity to Cheems.
- Blocks that obstruct all or part of the full vertical span of the bonking direction now reduce the amount of damage done to mobs (if the mob is fully concealed behind a wall, damage will not be dealt).
- Blocks totally concealed by other blocks are no longer affected by bonks, and partial hits on blocks have their damage reduced accordingly.
- Even if your line of sight is unimpeded by blocks, if you only strike a 'mobs feet or head' (because you are partially beneath or above them), calculations are performed to determine the percentage of damage dealt, based on how much of the Bonk strike-area coincides with the mob hit box.
Combat: The bonk-rate meter received a notable revision; it has a different operational response, and visually the bonk-meter drains/recharges more smoothly.
Combat: Items are now dropped on Cheems' death.
Shop: The W&W II Ironsword door graphic has been replaced by an arrangement of background decor; these newly added decor blocks also change colour in sync with the shop sign. An invisible shelf also makes up the top of the doorway.
Shop: Rather than closing during a Wave End or Level End interval, the shop will now open for trade.
Shop: The quantities made available for Shop Goods now lightly scale based on current Wave specification; Waves containing a minimum of 16 mobs receive this bonus, increasing with multiples of 16 (e.g. a wave containing 48 mobs grants a guaranteed +3 additional quantity per shop good, in addition to the randomised maximum of 6).
Shop: There is a random chance for Shop Goods to have discounts or price hikes; -50%, -25%, -10%, +10%, +25%, +50%, with randomised context-appropriate signage to accompany the price changes.
Shop: Two invisible shelf blocks have been added to the upstairs Bar area.
Shop: The two new items included in this update have been added to the random generation of Shop Goods.
Item: 'HealthUp' is renamed 'Health +30hp', 'HealthRegen' is renamed 'Health +50hpt' (50hp temporal), 'BonkUp' is renamed 'Triple Bonk', 'BonkRegen' is renamed 'Bonkalot'.
Item: The Bonkalot item has been revised; Cheems can now swing around twice the speed, with an improved bonk-meter regeneration rate to compensate for the immense drain of the fast swing rate.
Item: The Health +30hp can no longer be accidently consumed when Cheems is at maximum health.
Item: New! 'Extra Life', it grants an additional life should the player fall in battle (Shop RRP: $10000, Drop-rate: 0.1%).
Item: New! 'Bonk Wave', it grants 25 wave-like projectiles to be launched via a swing of Cheems bat (Shop RRP: $3000, Drop-rate: 0.2%).
- It is lightly affected by gravity, and moves at high-speed damaging all mobs it passes through.
- It can damage/destroy destructible blocks.
- Projectiles disintegrate on impact with blocks.
- Every time the Bonk Wave item is consumed, the Upgrade will either be created with 25 Waves available, or if one already exists, 25 Waves are added to the existing one.
- A cap of 100 Bonk Waves is enforced (e.g. consuming the Bonk Wave with 85 Waves already available will only increase the pool by 15).
- The wave itself is composed of 25 individual projectiles(!) so portions of it can strike blocks, and other fragments will continue flying.
Audio: 3 more music tracks have been added to address silent game screens; Pause screen, Game Victory screen, and the Game Over and Game Resign screens.
Audio: The management of music tracks has received moderate revision.
Audio: The management of sound effects has been overhauled; rather than generating new audio objects everytime an SFX is required which were soon after disposed of, a preloaded array of SFX will now handle requests.
Audio: The 'Coin Pick' sound now has 3 pitched varieties, and the 'Mob Jump' sound now has 5.
Audio: Relevant sound effects will now play at different volumes to reflect the distance to its object of origin. The horizontal-axis distance between the object and Cheems is used for the calculation, and stage-folding is accomodated for (i.e. standing at an edge of the stage will yield louder mob sound effects as they approach beyond the stage-fold).
Inputs New: Key (Hold): 'Tab' toggles the visibility of extended data about the current Wave.
Inputs Changed: Music Volume Up:.
Bug Fix: Stage 'The Old Castle' had a duplicated block in its design specification.
Bug Fix: The Game Over screen erroneously stated the current Level and Wave were completed successfully, and also displayed the victory image.
Bug Fix: The Shop timer which automatically toggles its state of accessibility was broken.
Bug Fix: The randomisation of decor placement (such as the Shop entrance) was incorrectly restricted to only spawning on regular blocks, and not concrete blocks. It was also incorrectly restricted from spawning in front of background panels and blocks.
Bug Fix: An issue was observed in the Shop where attempts to buy some items resulted in the wrong item being debited, and the same wrong item popping out.
Bug Fix: Items now no longer float in the air when the block underneath it is destroyed.
Bug Fix: The original implementation of damage knockback could in some cases result in actors 'moonwalking' due to a reliance on specific collision detection conditions that could faulter and fail to trigger; a new timer-based version has been implemented.
Bug Fix: Audio: Fixed issues relating to music fading transitions, and the Main Menu music re-fading whenever exiting Credits or Key Config screens.
Bug Fix: Audio: Fixed potential issues surrounding Music volume changes whilst Music Fades are being processed (for programmatic simplicity, Music Volume keys will not function whilst any fades are being processed).
Known Issue: Mobs sometimes struggle to navigate ladders seemlessly.
Known Issue: The music makes mild glitchy noises when volume is changed during fade in/out's.
Known Issue: The warnings that indicate mobs are getting closer to the stage-fold aren't incorporated into the new UI system, so they overlap every other screen (pause and quit screens included).
Beta v126.96.36.199 / 2022.02.04 21:53 UTC
Stage: When blocks are destroyed, any of the resulting segments designed to be smaller than 20 pixels along either axis are now totally discarded to produce cleaner and clearer destruction mechanics.
Bug Fix: When blocks were destroyed, the replaced versions were bugged; turning invisible and causing collision detection issues.
Developer's Note: The new '$50 Mystery Machine' in the Shop is not yet scripted for player interactivity, so for now it remains purely decorative.
Beta v188.8.131.52 / 2022.01.30 23:27 UTC
General: A significant number of behind-the-scenes changes such as the way game states are managed, including ground work for implementing cutscenes (notably gameState, intervalState and currentStage properties).
Stage: New stage 'The Old Castle' added; with two stages currently available the two will load alternately in all Campaign modes, with the initial stage randomly selected. Horde mode will persist with the same initial randomly selected stage.
Stage: Concrete blocks have been added, with classic platforms and concrete platforms receiving decorative background equivalents.
Stage: Concrete blocks are invulnerable and so do not have a visual damage indicator.
Stage: Some random stage generation features received a passed to improve quantity and placement locations.
- Note: Some features are disabled by default in the new Game Settings panel as some randomly generated blocks can clutter narrow pathways, particularly in 'The Old Castle' stage.
Stage: Different themes added to render stage blocks different colours, and can be toggled by key pressing 'T'.
Decor: New decor added; floor-standing candle sticks, chandeliers, and background walls; all are currently uninteractive and purely decorative.
Mobs: Mobs no longer spawn exactly every 1000ms, but can vary from 1000-3000ms.
Mobs: Mobs will now try to jump when bumping into an obstacle before resorting to turning around (helps with stair climbing).
Shop: The platform the shop randomly generates on is now replaced with concrete.
Shop: Overhauled the look of the shop to bring it more in-line with the style of the stages, but retained some Wizards & Warriors Ironsword art work.
Overlay: Cheems' health bar and bonk meter are relocated to the bottom of the screen whilst the base of Cheems is less than Y-axis 200, to resolve an issue of poor gameplay visibility (when fighting at the top of the screen).
Overlay: Cheems' health bar wasn't flashing at the higher rate properly (when the condition of 10 or less health was met).
Overlay: Significant work to perfect the look of the GameOver, Victory, WaveEnd and LevelEnd overlays, plus new gameplay stats.
Audio: New audio management system.
Audio: 3 pieces of music have been added, for the Menu screen and the two stages (all hail W&WII Ironsword).
Audio: Music fade in/out functionality added.
Audio: A new sound effect plays when starting on a new level.
Audio: Volume controls have been changed (again); Volume up and down keys for both music and sound effects, operating in increments of tenths.
New Inputs: Key: 'H' Toggles the overlay when Waves are completed.
New Inputs: Key: 'T' Toggles the currently loaded stage theme in a persisting sequence.
New Inputs: Keys: 'J' SFX volume up, 'N' SFX volume down, 'K' Music volume up, 'M' Music volume down.
Bug Fix: The SHIB mob wouldn't always die in one strike, as was initially intended.
WWW: There is now a Game Settings panel in the lower left of the browser window featuring some customisation options.
WWW: The Links panel in the top right of the browser window is now automatically closed on page load.
v1.062 / 2022.01.13 21:56 UTC
Stage: Old stage removed, new stage added.
Stage: Random terrain malformation/generation added, processing in the order as follows:
1) Existing horizontal platforms with a width greater than 79 pixels may be broken into two, with a gap inserted between them.
2) Existing vertical platforms with a height greater than 39 may be converted into a stack of 20x20 blocks.
3) Vertical stacks of 20x20 blocks, rising to heights totalling 60, 80 and 100, will be constructed at random.
4) Finally, some pre-defined singular or clumps of blocks will be scattered around the stage.
Cheems: When his health is below 25, he'll receive an overhead health bar to provide an additional indicator to the player of low health.
Mobs: Now have a chance to enter a frenzy upon dealing a strike against Cheems.
Audio: Volume level control has changed, and with new defaults; SFX Volume: 0.75; Music Volume: 0.5; both reduce in 0.25 increments upon key press, and revert to 1.0 (maximum) when set below 0.
Bug Fix: Collision detection was allowing Cheems to ceiling surf if two platforms had a height-gap between them of roughly 60 pixels.
Bug Fix: Collision detection was in some circumstances allowing Cheems to glitch through small gaps when landing from a jump (generally into block clumps formed by debris).
Bug Fix: The music no longer continues playing when quitting the game from within the shop.
v1.061 / 2022.01.03 00:00 UTC
Gameplay: A new Beginners campaign has been introduced; it guarantees a buff drop for every mob killed, and permits a maximum of one BTC mob to spawn at any time.
Gameplay: The Standard, Hard and Insane campaigns received a pass. Insane campaign jumps into the heavy fights sooner; the tiny wave progression at the start has been removed.
Gameplay: Cheems location is no longer reset when a new Level begins.
Terrain Destruction: The block which the Shop door is made on is now invulnerable to attack.
Interface: Added some trim to interface buttons for increased visibility of their boundaries.
Interface: Added detailed campaign information to campaign selection buttons.
Interface: Minor adjustments to various interface elements, mostly Victory and Menu screens.
Items: The drop rate of Coins has received another pass; added a unique drop specification for each mob.
Bug Fix: Cheems and Mob health bars were able to fall below 0 frequently preventing some mechanics from functioning (such as randomly generated buff drops on mob deaths, and death sfx).
Bug Fix: Loose items in the main stage weren't receiving correct parallax directions when the parallax offset was reset to 0 at the end of Levels.
- Note: This still requires a true fix, currently it is conveniently circumvented by the removal of the Cheems location reset.
Bug Fix: Some debug tools were left acessible in the last patch and have been removed.
Bug Fix: Some of the text in the GameState Victory screen was incorrectly configured for a left textAlign.
Bug Fix: Stage-folding introduced a glitch where walking off the right-side of the Shop would result in cheems getting 'stuck' in the platform which forms the counter.
Known Issue: The shop music keeps playing if you quit back the main menu.
WWW: Added some game tips/explainers to the top of the game page.
v1.06 / 2022.01.02 15:58 UTC
Game Mechanic: Stage-scrolling, with basic parallax, has been added.
Game Mechanic: Stage-fold has been added; actors can now walk off the edge of the stage and re-appear on the other side.
- When the screen achieves maximum parallax (scrolling no longer continues), indicators are provided to inform the player how many mobs are behind the stage-fold, the distance of the closest mob, and which direction the closest mob is facing.
Game Mechanic: Platforms are now destructible; platform health is scaled around the platforms longest edge.
- The ends or centre sections can be broken away if the platform's longest side is over 40px, and the centre of Cheems' strike area is appropriately targeted.
Game Mechanic: Ladders are no longer treated like platforms.
- Mobs will jump gaps where ladders exist to avoid falling (and may still choose to begin a climb).
- Cheems will fall when walking across them as well (initate a climb state to walk across them, or jump them).
Cheems: Health bar is now a total of 100 rather than 10.
Cheems: The fall rate has been reduced to 20 pixels per second maximum.
Cheems: Health bar now flashes when health is 25 or less; the flashing interval decreases when health is 10 or less.
Combat: The bonk-meter now also scales a reduced damage dealt per strike (only applies to mobs, not platform destruction).
Items: healthRegen has been modified to regenerate cheems' health by 5 points per second for 10 seconds.
Shop: The Open/Close sign for the shop now turns orange when it has 10 seconds or less remaining before an open/close event triggers.
Shop: Items are no longer cleared out at random in Horde game mode.
ShopGoods: The prices have been changed to help rebalance the value of the in-game DOBO.
Mobs: The jump sound has been modified to be more subtle/less sharp.
Mobs: Spawn-in locations are now randomly generated, and will always be a minimum distance of 240 pixels along both X and Y axis' from Cheems' position/hitbox (excluding stage-folding).
Mobs: Each mob type now has it's own damage strike value.
Mobs: Health bars have been modified to amplify damage detail around Cheems' bonk-rate meter.
Mobs: In a frenzied state, mobs will deal additional damage (iFrenzy * 3, iFrenzy is currently 2 for all mobs).
Mobs: Only small coins will drop on strikes successfully dealt by Cheems, with a chance for big coins only on the death blow.
Performance: All DOM elements are now stored in variables, resulting in an improved framerate.
Bug Fix: Entering the Pause or Quit screen inside the shop would result in an improperly painted background.
Bug Fix: Entering the Quit screen inside the shop followed by a dialog answer of 'No' would result in the stage heavily glitching due to erroneous handling of _g.gs (gameState).
Bug Fix: The bonk-meter feature didn't function at all inside the shop.
Bug Fix: Cheems can now properly jump at the top of ladders, by the player holding the climb-upwards key, and initiating a jump simultaneously.
Known Issue: Items aren't being moved with parallaxGo() calls. lostEntity() should protect items that glitch-fall below the stage area.
New Input: Keys: 'N' mutes and unmutes sound effects.
Changed Input: Campaign Mode selection are keys '1', '2' and '3'. Horde mode is key 'H'.
Enhancement: Introduced a buff entity, and a modular system for inserting, processing and discarding temporal buffs.
Enhancement: Introduced a simple Graphics entity containing an image reference and canvas coordinates; tidying up actor.paint(), and made the coordinates of drawn images accessible to the new buff entity.
WWW: Deployed a new website configuration; domain name now directs to the information page.
v1.05 / 2021.12.22 00:07 UTC
Stage: New Shop Stage introduced; a Doorway to the Shop will randomly generate on the main stage to provide access.
Entity: New shopGood entity introduced to display available Goods (i.e. buffs) in the shop.
Graphics: Two new tiles; tile_ladder, tile_shop.
Graphics: New crypto-themed mob images.
Graphics: When the BonkRegen buff is active, the tip of Cheems' bat has a blue aura.
Graphics: When the HealthRegen buff is active, Cheems has a large green aura.
Graphics: Mobs now have seperate images for eyes; they have regular and enraged eyes, the latter to indicate an active frenzy state.
Graphics: Ladders now auto-generate their ladder graphic.
Graphics: Platforms can now randomly select their colours from predefined themes.
Mobs: Hit boxes have been adjusted to reflect the new graphics.
Mobs: Collision aversion distance has been reduced by 10 pixels.
Mobs: Buffs may now only drop from Mobs (1 in 10 chance) on their death-strike.
Combat: Cheems hit box has been increased in height, and his bonk-strike hit box has been reduced in height.
New Input: Keys: 'F' enters a Shop Doorway. 'M' mutes and unmutes music.
Input Control: The web page hosting the game now calls keyEvent.preventDefault() for most key presses, whilst the following keys are 'Whitelisted': ESC, F1-12, Print Screen, Home and End.
- The Whitelist has been introduced as I received feedback that the game could not be played whilst FireFox's QuickFind is enabled. With the whitelist in place, the user can still go Fullscreen/Page refresh etc, but regular character entry should no longer initiate QuickFinding.
Bug Fix: Some Stage0 _spawnZ coordinates were leading to mobs spawn-glitching into the map, then immedlately falling off the visible canvas (these were always band-aid recaptured and dropped in from the top so it never prevented waves from being finished).
Bug Fix: Mobs could sometimes spawn into the same zone which Cheems inhabited (erroneous while-loop usage in actor(), it should have been do/while).
Bug Fix: Sometimes temporal buffs wouldn't expire until the same subtype of buff was consumed again.
Known Issue: Sometimes mobs moonwalk after taking damage.
v1.041 / 2021.12.13 23:19 UTC
Added Credits screen, accessible via the Main Menu.
Tweak: Cheems cannot pick up dropped items again until 2 seconds have passed.
Legal: Implemented the MIT License to BattleBonk.
v1.04 / 2021.12.12 23:32 UTC
Mobs now test for collisions ahead of their movement path and will likely jump if obstacles or potential falls are detected.
A new Item system and entity has been introduced. DOBO coins and health/bonk-rate buffs have been added.
The items can only but randomly fall from mobs that are struck with a bonk, and can be collected by moving cheems into/colliding with them.
Cheems has an inventory capacity of 3 buff items, which are visible to the right of the health bar. A red square indicates the current selected inventory.
Cheems can drop items, and cannot pick them up again until 1.6 seconds have passed.
Full Items List:
- Coin: small: 2-10 DOBO value.
- Coin: big: 22-30 DOBO value.
- Buff: healthUp (1 green candle): Instant +30% health.
- Buff: healthRegen (3 green candles): 10% health increase every second for 5 seconds.
- Buff: bonkUp (1 blue candle): The number of bonkable mobs with one swing is increased by 2 for 10 seconds.
- Buff: bonkRegen (3 blue candles): Bonk-rate is boosted for 5 seconds, every 8 frames (160ms) see's a bonk-rate replenishment of 2 points.
Cheems' inventory items can be used (consumed) individually at the player's discretion via new keyboard inputs.
The old DOBO counter has been renamed to Points again, with a new DOBO counter measuring the number of DOBO Coins collected.
Cheems no longer gets a free clean bill of health inbetween waves or levels.
A new charge-meter has been added below the player health bar to indicate the status of the Bonking-rate.
Mobs now have an unlikely random chance of jumping a smaller height.
No more than 3 mob jumping sounds are allowed to be playing in any given frame (mitigate the wall-of-noise with large waves).
With the introduction of the BonkUp buff item, the maximum number of strikable mobs with one bonk is 1 by default in all game modes.
New Inputs: Keys: 'E' is use selected Item. 'C' is drop selected Item. '[' and ']' navigate left and right through inventory slots. '1', '2' and '3' directly select inventory slots.
Bug Fix: The Bonking-rate is no longer fully reset on keyUp; it now recharges over time.
Bug Fix: actor.iClimb was not properly implemented resulting in some mobs (normally iMob=1, the slowest) to exit a ladder and then immediately re-enter it.
Bug Fix: _game.igBonkMax (formerly _game.iBonkMax) wasn't configured correctly, which likely permit unlimited mobs to be struck with one swing.
Known Issue: It appears some mobs (and items) can still end up outside the bounds of the permissable gameplay area. Actors and items that suffer this will drop from the top of the gameplay area so to recapture them.
v1.032 / 2021.12.11 21:13 UTC
Bug Fix: The new getTimerString() had multiple issues preventing it from displaying stored gameplay time correctly.
v1.031 / 2021.12.11 18:28 UTC
Bug Fix: The logical checks for a Bonk keyUp were poorly devised, resulting in occasional failures to reset the _bonkDelay when the player very briefly releases the key.
Bug Fix: The pre-wave countdown wasn't displaying in any other scenario besides _game.newGame() due to erroneously added conditional logic in overlay()-if(intermission).
v1.03 / 2021.12.11 17:38 UTC
An 'endless horde' game mode has been introduced.
Quit dialog has been added (Key press 'Q' during gameplay).
Holding down the bonk key will gradually reduce the bonking rate until released.
Improved the in-game timer to display HH:MM:SS.
The time spent playing is now added up across waves and levels, with the total playtime now displayed during intermission, gameVictory and gameOver screens.
The maximum number of bonkable mobs is now 1 in standard campaign, and all other modes is 2.
Bug Fix: On the main menu, the Insane Campaign erroneously suggested a shortcut key, and in fact had no shortcut key bound.
v1.021 / 2021.12.07 22:45 UTC
[Community Request] The old demo campaign has returned as 'insane' mode.
v1.02 / 2021.12.05 16:27 UTC
New 'Standard Campaign' offers a much shorter, fairer and hopefully fun game experience.
The old demo, now known as the revised 'Hard Campaign', should be vastly reduced in temporal length to complete, but still offer a great army of mobs to kill.
Moved some of the top right platforms down 20 pixels to mitigate a cheeky gameplay strategy.
Increased bonking distance.
Up to 3 mobs can now be struck with one bonk attempt.
The point system has been renamed 'DOBO' (real DOBO is not actually earned; disclaimer inserted on game main menu screen).
Cheems now has seperate bat and actor graphics, opening up the avenue for varying weapon visuals/buffed weapons.
Bug Fix: The score/kill totals were not updated properly on the gameOver and gameVictory screens.
WWW: Some buttons aren't working by mouse click (use the keyboard shortcuts displayed in parenthesis as a work-around)
v1.01 / 2021.12.04 16:54 UTC
A unique victory screen has been added and will be presented to the player upon completing Level 10.
Added a potential bug fix for key presses not being reset when a player replays the game after a previous playthrough.