When I post a big update it immediately seems Valve brings out a new Steamworks SDK - and here it is! Steamworks has been updated to v.1.9, and I took the time to roll in a few bug fixes whilst I was at it. Monsters Loot Swag has been updated to v.1.8.0.3 .
Update 26: update v.1.8.0.3
Change: Updated Steamworks SDK to latest version 1.9.
Fix: Machine Gun Special Attack FX was not playing due to wrongly name event.
Fix: Time Stop Special Defend FX was not playing due to wrongly name event.
Fix: Level 7 enemies Spectral Knights now vary skin colour and death emitters.
Fix: Brought back Monster Boss fx alert when about to charge.
Fix: Beta has sfxPlayLists fixed, so explosions and fx have been reduced as they can play audio randomly.
Change: Level 1 Boss "Big Lad" steps now louder.
Change: Herne Deer Monster Distortion is no amalgamated into Herne Deer Monster Invisible.
Change: Smoothed out the cash bar increments when buying swag.
Fix: Most Damage Stat initial check had wrong name.
Fix: Previous Best Attack Stat could have been massively inflated by passing an id number rather than actual damage, if so it will be reset to 0.
Fix: Worst Wound Stat was referencing the wrong variable, but this does not need to be reset for an achievement.
Fix: Lighting Priority value seemed reverse of what code comments declared, level light priority vales have been inverted.
Fix: Dynamic Object based audio had no been updated to asset system and thus was not playing, eg: comedy banana sound.
Fix: Achievement 24 TOURISM GUIDE was firing instead of Achievement 49 MEAT SHIELD. This is now fixed and Achievement 24 will be checked to see if it needs to be revoked. This will only happen once and be stored to cloud.
Fix: PermaDeath was not firing due to changes in build type. You saved level progress is once again in danger!
Change: Swag Module save information has been moved out of core and into the Swag Module directory system.
The Beta now has engine versioning too, this is displayed on the Main Menu screen, and has been updated to devhead merge #1226.
New Game Engine Build, HDR, PBR and More!
Behold the fancy HDR shader effects! Marvel at the Physcially Based Rendering of shiny surfaces!
Monsters Loot Swag has been updated to a new engine version, with a new fangled asset system, fancy HDR and PBR shaders, and more *stuff* - dragging it kicking and screaming into the 21st Century!
The previous version of the game has been retired, and so has the demo which is now out of date.
Amongst this change, there has also been a whole sale raft of fixes and improvements.
Update 25: update to v.1.8.0.1
Change: Beta Build is promoted to Release Build, old default build based on engine version 3 has been retired.
Change: Beta Build is now keeping pace with Open Source game engine development and latest build pull is now noted on Main Menu Screen.
Change: Both Default/Release and Beta Builds now use the same number system for version updates.
Change: Shader Cache now has a new folder as loca/shaderCache
New: Added huge preload group to reduce dynamic networked objects first spawn loading stutter at the cost of 15+ seconds addition level loading time.
Change: Player projectile attacks no longer automatically stagger Bosses.
Fix: Level 6 Boss, The Head Gardener, was failing to physically spawn the model.
Fix: Dive Bomber Special Defend Swag was using the client's ID number for damage, resulting in massively inflated damage such as 26004. Now fixed to 50.
Change: Level 6 player barrier to prevent the player from scaling walls due to impact impusles was too low.
Change: Converted remaining Waveform files to Theora.
Change: Re-imported 257 audio files to update asset references.
Fix: Changed redundant marker class to current in level 2.
Fix: Changed redundant marker class to current in level 4.
Change: Reduced shadowMap needlessly drawing an overly large size, resulting in performance boost of up to 19% on some levels.
Change: Reduced shadow logweight by 10% for crisper shadows in client player's viewport.
Change: Increased shadowMap resolution for higher quality shadows at the cost of ~80mb memory.
Change: Frag Special Attack maximum throw force reduced to 8 from 12, grenades should no longer land far behind a huge group of enemies.
Fix: Fixed the occaissional (but in Level 6 often) SFX Emitter throwing an assert with ghosting whilst toggling when the player was charging/buying swag ... by completely removing the bloody things and replacing them with a client side loopable explosion.
Change: Open Node audio now plays through own SFX emitter.
Change: Pumpkin standard damage up 10% as a reward for being an unlockable character.
Change: Pumpkin heavy damage up 10% as a reward for being an unlockable character.
Change: Pumpkin special evade damage up 10% as a reward for being an unlockable character.
Change: Noxious Gas Special Defend is now a self contained explosion for networking.
Fix: Ban Hammer explosion was not getting position passed.
Fix: Some scheduled explosions had position and decal passed in reverse order.
Change: Shaded Level 6 enemies materials to a shade of their glow colour.
Change: Added a faint glow to all coins and taels.
Change: Made bronze coins darker and more saturated in colour.
Fix: Noxious Gas Special Defend was not playing the fart sound.
Fix: Triple Damage Icon now resets with all other attribute modifier icons.
New: Players not near the exit when it is opened are now informed with a special fx, previously it was just a message.
Change: Loading Screen Title now a slightly smaller font size to avoid edge clipping.
Fix: Achievement UNTOUCHABLE was having a misspelt var passed.
Fix: Achievement UNTOUCHABLE was checking for the wrong level.
New: Steam Stats now record if the UNTOUCHABLE achievement has been mistakenly run and will reset it if need be.
Change: Beta Main Menu Music is now Tōhō-core.
Early Access Update 24 - Net Moves Debugger Bug Hunt
Welcome to Early Access Update 24. The majority of this update is dedicated to the Beta build, but the default branch also gets a bit of love and attention.
First up, changelog.
Fix: Sound FX Memory Stream had a misaligned pointer on reset.
Fix: Level 5 Monster Boss, Lula The Non-Resident Alien, was physically failing to load, and spawned only as an invisible collision box, making hitting her a little difficult.
Fix: Message box for "Game Over" or "World Complete" has been resized better for new text.
Change: Moved level 6 swag spawn positions slightly more down into terrain.
Fix: Added "allowPlayerStep" to node objects incase of rare collision issue related to above change in level 6.
Fix: Momento Mori timer was not displaying countdown due to trying to include minutes, making string too large for display.
Fix: Player clock was not displaying hours played.
Change: Altered font size for clock to better fit.
Change: Altered vertical size and position on clock.
Fix: Fixed corruption in datablock cache called by changing pack/unpack in cpp.
Change: Altered values for default level of detail distances to improve performance.
I had spent a good amount of time using the engine's own network debugging systems, but found that they weren't actually operating as I had expected. Whilst they tracked packets et al, they didn't give me the information which I had hoped for. PacketData disagreements happened when expected, with objects spawning on the server and then being transmited to the now behind client. However the Net Move Checksums would complain everytime there was an object that wasn't initialized at the birth of the server, eg: whenever the player moved the change in position for each object created AFTER the level had loaded would spam the debugger ... which was not terribly useful ... ːsteamfacepalmː
The good news is that packets were not getting dropped, the bad news was I ended up with a gigantic debugging file of limited value. I also ended up introducing an unitialized variable to my local datablock cache object which produced a bug with particle animated bitmaps, and took a good 3 days to hunt down and fix.
Anyhow, Happy New Space Year 2024. ːhappychappyː
Early Access Update 23
Welcome to Early Access Update 23. The majority of this update is dedicated to the Beta build, and getting assets to preload quicker.
When starting the Beta build there was a noticeable pause between the initital splash screen displaying and the startup sequence loading. This was due to material assets preloading in the background. On Steam Deck this would result in a black screen for a few seconds.
>>> Now a new screen displays, informing the player exactly what is happening, whilst the materials preload. I still need to draw up a dedicated background for this, but in the meantime there is a shrugging catgirl.
The other major change - again for the Beta - is the preloading of asset files when the first level has loaded. Previously there was a noticeable lag when a new asset was loaded for the first time, usually when a new monster spawned. After much searching and trial and error I discovered that for some reason decals were taking far longer to appear than expected.
>>> Spawn time of monsters and general dynamic objects should be much faster now.
All this and a few other bug fixes, most of which are detailed below.
Update 23: update to v.1.7.8.0
Change: Client materials now load after initial start up to prevent a blank screen displaying for multiple seconds, especially on Steam Deck.
New: Client materials preload now has it's own GUI screen informing the player of load progress.
Change: Updated DirectX compiler for shaders.
Change: AI Monsters now have preloaded shapes in the level for instancing.
Change: Shapes and animations are pre-registered on the server to remove spawn lag/stuter on first instance.
Change: Relevant decals for FX and monster spawning are now preloaded in the level for instancing.
Change: Material brightness for some decals which do not recieve lighting has been lowered so they are less blinding.
Change: Some dynamic objects have had their material brightness reduced to make them more legible.
Change: Cracked earth decals were not receiving shadows which made them look odd in shadow.
Fix: Single Use Item "Lava" was not using an explosion.
Fix: Single Use Item "Lava" was not creating a decal.
Fix: Single Use Item "Terror Tower" had the wrong decal.
Fix: Single Use Item "Brass Monkey" had the wrong decal.
Merry Christmas - which I am in no way, shape or form ready for, so it's going to be panic stations next week - and a Happy New Year! See you in Space Year 2024.
Hot Fix For Stats and Achievements
Hot fix for 2 stats which might not always fire immediately and 1 achievement which fired when it shouldn't. "TIS BUT A SCRATCH - recieve >1000 damage" was being awarded by mistake, this is now fixed and the achievement will be reset if it was not won fairly.
Early Access Update 21
I was going to save up a few more changes before pushing the next update, however Valve have released a new STEAMWORKS SDK v1.58a ... so here it is!
Change: Steamworks updated to v.1.58a.
Fix: Added missing Angel Cannon model.
Fix: Added missing textures for Angel Cannon.
Fix: Added missing particle texture.
New: Added Angel Cannon model and animation to Special Use Item "Danger Close".
A bigger and meatier update to come soon™.
˓˓ฅ₍˄ุ.͡ ̫.˄ุ₎ฅ˒˒ (apparently that's a cat)
Early Access Update 20
Update 20, version 1.7.7.6 ... there is something sinister about that number that strikes fear into the heart of every Englishman ... fear, fear for the safety of his tea!
But ... anyhow ...
There is a new BETA branch available! A BETA in EARLY ACCESS - just how much testing can 1 dev ask of you? The BETA branch is a whole new game engine ... well, actually it's kinda the same game engine with a whole new system. This system includes a fully function asset system, Physical Based Rendering (that's cool reflections of roughness and metal to normal folks), and HDR!
Want to try out the BETA branch? Go to your game library in Steam and click on Monster Loot Swag, click settings (circled in red) and bring up the drop-down menu, choose preferences and when the new window appears, go to Beta in the sidebar and select the new BETA version. You can opt-out of the BETA in the same way, by choosing default.
Don't want to play the BETA for the new game engine? No problems, the original version is still available.
Q: So why is it a BETA and not just the standard game branch? A: Well because it's taken a fair bit of effort for updating and I need extra testing for various internal linkages that I may have missed, before I can set it to the master/default branch of the game.
Q: Is the default branch still getting updated? A: YES! The default branch is still getting updated whilst I work on bringing the new game engine BETA version up to speed.
In fact, here is the changelog for version 1776 (ouch my tea!).
This version replaces all placeholders of special attacks with their final versions.
Update 20: update to v.1.7.7.6
Fix: Monsters could sometimes collide with player only barriers. Added an extra check in C++ to make sure this never happens under any circumstances.
Fix: Followers could sometimes collide with player only barriers. Totally removed physical zone collision checks from them.
Fix: Prevented unnecessary calls to and from server when opening the Options Screen during play.
Fix: Lag on first opening of Options Screen during play if Options Screen had not previously been initialized.
Change: Video options lists are now populated at the Main Menu Screen on initial start up.
Fix: Stopped Boss Monsters from getting stuck on terrain walls.
Change: Increased Monsters climbing ability for traversing terrain and objects.
Change: Made loot coins and taels bigger.
Change: Monster Boss display stats now allow a small pause before displaying to the player.
Fix: Client now makes multiple attempts to get Monster Boss health from client side ghost incase health bar is not displaying.
Fix: Missing flame/fire texture.
Change: Client call to server for insert coins / buy swag has extra check to see if it has already been bought.
Fix: Stopped attempting to delete objects which did not exist when Swag was spawned.
Fix: Got rid of phantom projectile spawning near player which sometimes happened at low fps. Engine now ticks 3 times before projectile will render (0.094 seconds).
New: Added animated model for Special Use Item: "Angel with an 40mm cannon. Air support on Heaven's behalf."
Change: Added pilot to "Dive Bomber" special defend Swag model.
New: Added Rocketrix model to "Rocketrix Delivery Service" special attack.
Change: Updated audio for "Rocketrix Delivery Service".
New: Special Use Item "Bait Bomb" now has a unique model, a distraction catgirl holding a sign which reads; "Free Kitty".
And here is a quick video of two of the new special use items, Bait Bomb and Angel Cannon ... with a sound problem on the video which I forgot about ... turn up volume high (soz).
https://www.youtube.com/watch?v=ls_efdl7Kic
Next update will mostly focus on fixing the BETA and bringing it into line with the default branch,
How long until EARLY ACCESS ends? I plan to make 3 more levels (total 10), 3 more playable cosplaying catgirl characters (total 8), and have a few more collectables to sort out. At the moment, I am anticipating shipping the final game around May/April 2024.
Ealry Access Update 20
Update 20, version 1.7.7.6 ... there is something sinister about that number that strikes fear into the heart of every Englishman ... fear, fear for the safety of his tea!
But ... anyhow ...
There is a new BETA branch available! A BETA in EARLY ACCESS - just how much testing can 1 dev ask of you? The BETA branch is a whole new game engine ... well, actually it's kinda the same game engine with a whole new system. This system includes a fully function asset system, Physical Based Rendering (that's cool reflections of roughness and metal to normal folks), and HDR!
Want to try out the BETA branch? Go to your game library in Steam and click on Monster Loot Swag, click settings (circled in red) and bring up the drop-down menu, choose preferences and when the new window appears, go to Beta in the sidebar and select the new BETA version. You can opt-out of the BETA in the same way, by choosing default.
Don't want to play the BETA for the new game engine? No problems, the original version is still available.
Q: So why is it a BETA and not just the standard game branch? A: Well because it's taken a fair bit of effort for updating and I need extra testing for various internal linkages that I may have missed, before I can set it to the master/default branch of the game.
Q: Is the default branch still getting updated? A: YES! The default branch is still getting updated whilst I work on bringing the new game engine BETA version up to speed.
In fact, here is the changelog for version 1776 (ouch my tea!).
This version replaces all placeholders of special attacks with their final versions.
Update 20: update to v.1.7.7.6
Fix: Monsters could sometimes collide with player only barriers. Added an extra check in C++ to make sure this never happens under any circumstances.
Fix: Followers could sometimes collide with player only barriers. Totally removed physical zone collision checks from them.
Fix: Prevented unneccessary calls to and from server when opening the Options Screen during play.
Fix: Lag on first opening of Options Screen during play if Options Screen had not previously been initialized.
Change: Video options lists are now populated at the Main Menu Screen on initial start up.
Fix: Stopped Boss Monsters from getting stuck on terrain walls.
Change: Increased Monsters climbing ability for traversing terrain and objects.
Change: Made loot coins and taels bigger.
Change: Monster Boss display stats now allow a small pause before displaying to the player.
Fix: Client now makes multiple attempts to get Monster Boss health from client side ghost incase health bar is not displaying.
Fix: Missing flame/fire texture.
Change: Client call to server for insert coins / buy swag has extra check to see if it has already been bought.
Fix: Stopped attempting to delete objects which did not exist when Swag was spawned.
Fix: Got rid of phantom projectile spawning near player which sometimes happened at low fps. Engine now ticks 3 times before projectile will render (0.094 seconds).
New: Added animated model for Special Use Item: "Angel with an 40mm cannon. Air support on Heaven's behalf."
Change: Added pilot to "Dive Bomber" special defend Swag model.
New: Added Rocketrix model to "Rocketrix Delivery Service" special attack.
Change: Updated audio for "Rocketrix Delivery Service".
New: Special Use Item "Bait Bomb" now has a unique model, a distraction catgirl holding a sign which reads; "Free Kitty".
And here is a quick video of two of the new special use items, Bait Bomb and Angel Cannon ... with a sound problem on the video which I forgot about ... turn up volume high (soz).
https://www.youtube.com/watch?v=ls_efdl7Kic
Next update will mostly focus on fixing the BETA and bringing it into line with the default branch,
How long until EARLY ACCESS ends? I plan to make 3 more levels (total 10), 3 more playable cosplaing catgirl characters (total 8), and have a few more collectables to sort out. At the moment, I am anticipating shipping the final game around May/April 2024.
The Big Bug Hunt: PART 2: Early Access Update 19
Introducing EARLY ACCESS UPDATE 19! The concerted effort to squish annoying bugs into liquidated goo continues!
Highlights of this update, fixed a whole host of gamepad controller issues, concerning, amongst other things Playstation controller glyphs not correctly displaying, added Steam Deck glyphs, hardcoding a dead-zone for Playstation controllers, and got the HOME/GUIDE button to respond correctly.
Note on first run of v.1.7.7.4 any previously customized keymaps will be reset to default. Future customized keymaps will be saved as standard.
Update to v.1.7.7.4
Change: In game Options are now activated on gamepad by START button or equivalent right sided OPTIONS button depending on controller brand.
Fix: HOME/GUIDE button on gamepad controller now activates the Steam Overlay.
Fix: Playstation 4 controller inputs now correctly display.
Fix: For menu navigation, have added minimum input for non-dead zoned input devices (PlayStation controllers) so they can no longer spam input changes when in keyboard and mouse control mode.
Change: Dead zone minimum range is now -0.1 to 0.1 for all controller types, previous Xbox default range -0.08 to 0.08.
Change: Changed some of the Playstation Controller icons/glyphs.
Fix: Left and Right gamepad Stick glyphs were displaying the wrong way around.
New: Added Steam Deck icons/glyphs.
New: Cursor keys Up/Down and Return/Enter keys can now be used to navigate menu lists (and only menu lists, any other button on the UI must be accessed with the mouse if not using a gamepad controller).
New: Added a button on the Main Menu screen for reporting bugs directly to the forums (mouse accessable only).
Change: Reduced scripted checks for insert coins when paying for loot by 75%.
Change: Tripled amount of coins spent when paying for loot.
Change: Reduced console spam for player damage.
Fix: Check for unlocked cosplay on game startup with initial Achievement check.
Fix: Achievement MEAT SHIELD had wrong id.
Fix: Achievement MEAT SHIELD did not send percentage complete updates to the player.
Fix: Achievement MINE SWEEPER now displays percentage of discovered Traps towards fulfilling the Achievement.
Fix: Achievement MARATHON check when all players are dead was misidentifying the client on reset.
Fix: Monsters were not getting their appropriate damage bonus increases if more monsters should spawn but the current maximum number of monsters had aleady arrived.
Fix: Loot cost of resusitating a dead player was wrong.
Fix: Monsters did not successfully check to see if they were swarming a single player in online multiplayer co-op, to see if they should target another player.
Fix: Game Control Object was being referenced with multiple local aliases when a client connected to the server.
Fix: Players and Monsters were not receiving the correct buff when escaping a slowing movement trigger.
Fix: Monsters were being given the incorrect vector to flee from Terror Tower special item.
Fix: Unneccessary checks when deciding whether a player or Monster had entered the exit trigger.
Fix: Monster large area attack was recording the wrong hit vector.
Fix: Monster medium area attack was recording the wrong hit vector.
Fix: Bikaver player character melee attack was using the wrong impulse vector for knockback.
Fix: Bikaver player character special attack was not spawning the required particle effect.
Fix: Bikaver player character special attack was using the wrong impulse vector for knockback.
Fix: Water Hazard player character melee attack was using the wrong impulse vector for knockback.
Fix: Monster laser beams striking Traitor monsters under special attack False Flag events were not spawning the required particle effect in the correct place.
Fix: Monster medium energy beams striking Traitor monsters under special attack False Flag events were not spawning the required particle effect in the correct place.
Fix: Monster miniguns were not reporting their hits on players in the correct place.
Fix: Monster miniguns striking Traitor monsters under special attack False Flag events were not spawning the required particle effect in the correct place.
Fix: Level 4 Monster Boss Elafi The Runner special attack was using the wrong impulse vector for knockback against the player.
Fix: Monster lightning attacks were not reporting their hits on players in the correct place.
Fix: Monster multiguns were not reporting their hits on players in the correct place.
Fix: Monster Super Orbiting Laser attacks was using the wrong impulse vector for knockback against the player.
Change: Tweaked the Swag Radar bitmap to give the distance holder more height.
Change: Made the Swag Radar Distance text font larger.
Change: Updated IDE to latest version of Visual Studio 2022.
Change: Updated to a new version of SDL2.
And that is EARLY ACCESS UPDATE 19. More to come in the future! ːhappychappyː
The Big Bug Hunt: Early Access Update 18
Whilst I port the game to a completely new engine build with such modern delights as Physical Based Rendering (PBR) and a fully fledged asset system, I also continue to update the current game build.
Porting requires me to methodically move and rebuild assets and functions - I could just bung the lot in, in one go, but then then would not get a better understanding of the new engine system. During this process I have hunted down numerous script issues, most of which are due to simple misnaming of local variables. Much of the time this is harmless, but some of the time it could lead to bigger problems. In the end, a whole lot of little bugs can merge into one of big, bad bug - like cheap plastic robot toys for 1980s cartoon made in Far Eastern sweatshops! ːnotsohappychappyː
So here, in order that I found them rather than importance, is the list of bugs squashed in the latest update:
Update to v.1.7.7.1
Fix: Spawned SWAG was calling a collision timeout on a NULL object rather than the player. This may well have been causing a crash for some people.
Fix: NULL object being called at the end of a level should have been the player's client connection ID. This may have prevented some Achievements for being accomplished.
Fix: Tsunami swag attack was not networking in online multiplayer co-op correctly, now it does.
Fix: Vector based raycast damage had an incorrect start point when testing.
Fix: Removed console spam when client first has camera set.
Fix: Player was not updating to first spawn position correctly.
Fix: Light animation has no starting phase.
Fix: Steam Stats for Traps Discovered was being passed from the client when not required.
Fix: Status of Achievement SADDLE BAGS was being passed to the client but not being read by the server.
Fix: Client naming alias was not being used for checking status of Achievement WALLOP.
Fix: Client naming alias was not being used for checking status of Achievement ONE SHOT WONDER.
Fix: Player object was not recording how much total damage they had taken in a level correctly.
Fix: Heal kills were not always updating correctly.
Fix: Achievement MONSTER MASH will now fire.
Fix: Achievement UNTOUCHABLE will now fire.
Fix: Achievement CHEQUERED FLAG will now fire.
Fix: Achievement SUCKER FOR PUNISHMENT will now fire.
Fix: Achievement SLEEP IS FOR THE WEAK will now fire.
Fix: Dead monster cleanup was not always being scheduled correctly.
Fix: Monsters with a special death no longer attempt to spawn a non-existant decal.
Fix: Player was failing to check for noClip status when using specialEvade.
Fix: Player was not receiving full health regeneration bonus on maximum score multiplier during a Momento Mori when they became the God Of Death.
Fix: Noxious Gas special Defend was attempting to cleanup objects which did not exist.
Fix: Spurting jugulars were attempting to avoid colliding with a non-existant object. This reminds me of the old tabletop MERP game when a critical fail fumble led the adventurer to "trip over an unseen, imaginary, deceased turtle". ːhappychappyː
Fix: Player was not correctly storing the new damage bonus after leveling up.
Fix: Crash if level file does not exist and it looks for alternatives.
Fix: Safe Heal reset was missing which player to reset with.
Fix: Issue with resusitating players in online multiplayer co-op due to bad trigger naming.
Fix: False Flag special Attack was not passing the attacking player data to the victim.
Fix: False Flag special Attack was not passing the experience for damage of the victim to the appropriate player.
Fix: Monsters were not turning to stare at the False Flag special Attack victim when False Flag was first set, thus giving the player a brief moment to escape.
Fix: Napalm special Attack was not set to specifically affect Monsters only, could potentially harm other players in online multiplayer co-op.
Fix: Player was failing to check for noClip status when using special Defend Ghost Run.
Fix: Terror Tower special Use Item was giving monsters an incorrect vector to flee.
Fix: Homing Missiles were not being properly attributed to the correct client connection.
Fix: Bomblets from special Use Item Angel Cannon were not causing damage to Monsters.
Fix: Monsters were not getting correct angle for melee attacks.
Fix: Added missing terrain file for level 7.
Fix: Bad location for level 7 terrain file in mission file. When I update to the new game engine, the asset system will stop errors like this happening.
Fix: Added missing forest file for level 7.
Hopefully this will improve both gameplay and stability for those who have suffered crashes.
The next update is likely to be a beta release of the new engine build, and will probably come out later this month.