A bit more than a year ago, work on FEZ 1.12 officially started.
The goal of this large update to the Windows PC/Mac/Linux version of FEZ was the following :
Cut dependencies to OpenTK, the platform framework used by FEZ on Windows. I have had problems with it from the start, from sound card detection issues to windowing problems, to VSync and fullscreen issues… I wanted to give SDL 2.0 a shot, to see if it fares better.
Have more efficient music streaming. PC + Mac versions of FEZ used a C# Ogg Vorbis decoder called NVorbis, which seemed like a good idea because it would run on all platforms. I also wrote the streaming code that uses NVorbis and OpenAL, and it made its way into the main MonoGame repository! But it’s also very slow, resource-intensive and heavy on disk access. So I wanted to look into a better solution that wouldn’t break music playback in areas like puzzle rooms and the industrial world.
Have a single codebase for all PC + Mac versions of FEZ. As it stood with 1.11, there was a slightly modified codebase for Mac and Linux that ran on a weird hybrid of MonoGame and what would become FNA, called MG-SDL2. The PC version ran on my fork of MonoGame ~3.0 which I did not do a great job of keeping up to date with upstream changes, because when I did it usually broke in mysterious ways. This is not great for maintenance, and centralizing everything on a clean FNA back-end, with as little platform-specific code as I could, seemed like a good idea.
Make it the Last Update. Since I shipped FEZ 1.11 I had little intention of making additional fixes or features to the game because I simply don’t have the time with a kid and a fulltime job… and working on FEZ is getting old after 9 years. So I did want to address problems that people have with the game, but I don’t want to do it for the rest of my life. I had spent enough time away from the game that I was somewhat enthusiastic about coming back to it, especially if it’s at my pace, and that it’s my last time doing so.
So I didn’t announce anything, I didn’t announce a date, and I slowly chipped away at making this humongous update to FEZ. It’s been in beta-testing with an army of fans, speedrunners and friends since late January 2016 and over 120 bugs have been reported and fixed.
Below is the full change log for the patch. If you want to read more about what went into it, you can read more about it here.
- Switched to FNA/SDL2 from MonoGame, which removes dependencies to OpenTK, and should result in better compatibility - Switched to libvorbisfile (instead of NVorbis) for music decoding, which results in better CPU performance of music decoding - Music files are precached in RAM instead of streamed from HDD, to avoid disk thrashing which caused cuts and skips - Game controller remapping has been rehauled and consolidated, now uniquely using SDL2's GameController API - Native support for any refresh rate, and lower CPU usage when using V-Sync, thereby removing the need for related launch options - Fully smooth rendering for any refresh rate, by using a mixture of variable timestep (for the camera and some entities) and fixed timestep interpolation (for Gomez) - Scale mode options (full aspect, pixel-perfect or supersampling from nearest multiple of 720p) - No more letterboxing or pillarboxing (black bars), unless omitting them would cause an aspect ratio mismatch for the screen/internal resolution combo
Minor Features
- Map previews in save menu - Speedrun mode (--gotta-gomez-fast) - OpenGL calls are now done on a single thread to avoid driver-specific issues and crashes during loading - Added support for hardware geometry instancing for better rendering performance - Button icons match PS3 and PS4 controller face buttons when connected - Added PS4 light bar support for Linux - VSync, lighting, Steamworks support, single-threaded mode, controller deadzone and no-pause-on-lost-focus can be customized from in-game menu instead of launch options - Clouds fade during rotations in industrial world instead of popping in/out - Gomez walks to NPCs when talking to them instead of warping at their position - Talk animation for NPCs does not restart on successive dialogue lines - Some scenes of the 32-cube end cutscene have received minor polishing touches - Alt+Enter toggles fullscreen - MSAA (multisample anti-aliasing) is tentatively supported, but hidden behind the --msaa-option launch option (because it generates some artifacts and blurriness in-game) - Logger creates a new file for each run of the game, archives day-old (or more) logs to a zip file and cleans up month-old logs - Change to view rotation limits : there's a limit to how fast you can rotate after 2 successive rotations, but you don't have to wait until the last rotation is completely finished
Bug Fixes
- Scripting fixes in 3D village to avoid a possible soft-lock - Fix to handling of the waterfall code entry, which should be a lot more consistent now - Fixes to the behavior of grabbing corner ledges, which prevents Gomez from clipping out of interior rooms - Finishing the game with all cubes found unlocks all abilities - Geezer will stand at the right spot in the 2D village no matter how fast you find him - Glow-bit planes fade out on secret passage doors instead of Gomez clipping through them - Zoom-through-the-sky level transitions with water are a bit less jarring - "Solved puzzle" jingle no longer cuts off in the crypt level - Fixed boiler room double-trigger of the secret resolved sound effect, and the camera becoming unconstrained - Fixed wall village floating planes, NPCs and art objects - Fixed that quick pause-unpause stopped music - Fixed secret passage doors checking for input in the pause menu - Fixed velocity lingering on as you attach to ladders, which made you attach too high on them - Fixed that vines made Gomez hug walls while moving (climbing) - Fixed issues with "impassable vines" where Gomez would clamp to them while trying to jump through vines - Fixed the DOT dialogue soft-lock when getting the achievement cube in Gomez's house - Fixed single-frame ground alignment vs. camera follow issue when landing and rotating at the same time - Ladder and vine grab behavior is now smoother, no more timer that prevented jump-grab-jump movement chains - Fixed activation of small warpgates, where it would falsely trigger when collecting 8 cube-bits nearby - Fixed one-frame disappearance of vertically looping levels when rotating - Changed how NPC rotation is handled so that they can never moonwalk - Fix to collision tiles for windmill level - Fixed culling issue with rotating level elements that caused disappearing vines - Fixed issues with yaw-rotating spinblocks and ledge-grab actions - Block puzzles no longer auto-solve themselves after changing save slots - Security question and unfold puzzles will detect the solution without having to rotate one more time - Removed check to collect cubes while in a warp gate transition to prevent cube duplication - Fixed that DOT speech doesn't lock the player when she speaks right as you come from a pan-down "continue game" transition - Nullified horizontal velocity when starting the "lower to straight ledge" action so you can't slide to the side and hold to thin air - Fixed Gomez alignment when coming out of the sewer pipe - Fixed the achievement (or map QR) anti-cube from short-circuiting level scripts that spawn and detect collection of anti-cubes based on input codes - Fixed boiler room out-of-bounds - Fixed issue with vibrating moving platforms and spawn points which made Gomez fall sometimes in the weightswitch puzzle room - Slowed down thumbstick movement in world map - Fixed areas where Gomez could fall forever in looping level - Removed explosive block that would reappear after reentering mine level - Fix for visual issue in industrial city star layers - Fix for crash in world map on Iris Pro GPUs - Water-level-changing sound now triggers on the first rotation of a water-raising/lowering valve - Allow stereoscopy on all saves if one save has it - Fix for ghosts objects (e.g. duplicated moving platforms) when closing the map and after rotations - Fixes to visual clarity in QUANTUM level (cleaner radius around Gomez) - Fixed puzzle skip for the tombstone puzzle and the 4-side puzzle - Fixed chest anticube duplication exploit - Fixed water height inconsistencies - Removed floating invisible block in QUANTUM level - Fixed camera unlocking issue in zu school - Fixed spacing around numbers in french localization text - Fixed water first-person transition glitches - Disabled achievement option if overlay is disabled - Fixed possible soft-lock when changing to first-person view in front of a tombstone, valve or timeswitch - Desktop display resolution used on first run instead of imposing 720p - Sound muted when "pause on lost focus" option is on, and focus is lost - Fixed alignment of Gomez's sprite when jumping with a bomb - Fix for falling through platforms in background mode - Grabbing to push crates no longer allowed when in background mode, since it causes weird visual issues - Fixed clipping through bombs in background mode - Entering "tunnels" by pressing up in a tunnel opening can no longer be triggered when Gomez is in background mode - Fixed a bug on respawn where the player would be appear to float in mid-air after rotating - Gomez's Z position is now more stable/predictable when he is sandwiched between two walls - Fixed situtations where Gomez would end up in the background after being adjusted to a ground position when rotating while overlapping a wall in an alcove (that's a mouthful) - Fixed situations where Gomez could wrap around ledges that weren't visible from the camera - Fixed respawn glitch that occured when last safe position was a ledge grab, and could cause Gomez to warp behind objects
Known Issues
- Some Intel integrated GPU/drivers have an issue maintaining 60fps when VSync is enabled and might fall back to 30fps after moving from one area to another. The workaround is to disable VSync, or try updating to a newer driver (see : https://github.com/renaudbedard/fez-1.12-issues/issues/113 ) - Since the game now uses SDL 2.0's DESKTOP_FULLSCREEN mode, there is no exclusive fullscreen mode supported and the game always assumes a presentation buffer that matches the screen's native resolution. This means that screenshots and video capture will use the screen's native resolution, whichever internal resolution the game is set to with video settings. (this is more of a "heads-up" than an issue since it will not be addressed) - PS3 controller not natively supported under Windows, unless you use 3rd party drivers and then you're on your own
A bit more than a year ago, work on FEZ 1.12 officially started.
The goal of this large update to the Windows PC/Mac/Linux version of FEZ was the following :
Cut dependencies to OpenTK, the platform framework used by FEZ on Windows. I have had problems with it from the start, from sound card detection issues to windowing problems, to VSync and fullscreen issues… I wanted to give SDL 2.0 a shot, to see if it fares better.
Have more efficient music streaming. PC + Mac versions of FEZ used a C# Ogg Vorbis decoder called NVorbis, which seemed like a good idea because it would run on all platforms. I also wrote the streaming code that uses NVorbis and OpenAL, and it made its way into the main MonoGame repository! But it’s also very slow, resource-intensive and heavy on disk access. So I wanted to look into a better solution that wouldn’t break music playback in areas like puzzle rooms and the industrial world.
Have a single codebase for all PC + Mac versions of FEZ. As it stood with 1.11, there was a slightly modified codebase for Mac and Linux that ran on a weird hybrid of MonoGame and what would become FNA, called MG-SDL2. The PC version ran on my fork of MonoGame ~3.0 which I did not do a great job of keeping up to date with upstream changes, because when I did it usually broke in mysterious ways. This is not great for maintenance, and centralizing everything on a clean FNA back-end, with as little platform-specific code as I could, seemed like a good idea.
Make it the Last Update. Since I shipped FEZ 1.11 I had little intention of making additional fixes or features to the game because I simply don’t have the time with a kid and a fulltime job… and working on FEZ is getting old after 9 years. So I did want to address problems that people have with the game, but I don’t want to do it for the rest of my life. I had spent enough time away from the game that I was somewhat enthusiastic about coming back to it, especially if it’s at my pace, and that it’s my last time doing so.
So I didn’t announce anything, I didn’t announce a date, and I slowly chipped away at making this humongous update to FEZ. It’s been in beta-testing with an army of fans, speedrunners and friends since late January 2016 and over 120 bugs have been reported and fixed.
Below is the full change log for the patch. If you want to read more about what went into it, you can read more about it here.
- Switched to FNA/SDL2 from MonoGame, which removes dependencies to OpenTK, and should result in better compatibility - Switched to libvorbisfile (instead of NVorbis) for music decoding, which results in better CPU performance of music decoding - Music files are precached in RAM instead of streamed from HDD, to avoid disk thrashing which caused cuts and skips - Game controller remapping has been rehauled and consolidated, now uniquely using SDL2's GameController API - Native support for any refresh rate, and lower CPU usage when using V-Sync, thereby removing the need for related launch options - Fully smooth rendering for any refresh rate, by using a mixture of variable timestep (for the camera and some entities) and fixed timestep interpolation (for Gomez) - Scale mode options (full aspect, pixel-perfect or supersampling from nearest multiple of 720p) - No more letterboxing or pillarboxing (black bars), unless omitting them would cause an aspect ratio mismatch for the screen/internal resolution combo
Minor Features
- Map previews in save menu - Speedrun mode (--gotta-gomez-fast) - OpenGL calls are now done on a single thread to avoid driver-specific issues and crashes during loading - Added support for hardware geometry instancing for better rendering performance - Button icons match PS3 and PS4 controller face buttons when connected - Added PS4 light bar support for Linux - VSync, lighting, Steamworks support, single-threaded mode, controller deadzone and no-pause-on-lost-focus can be customized from in-game menu instead of launch options - Clouds fade during rotations in industrial world instead of popping in/out - Gomez walks to NPCs when talking to them instead of warping at their position - Talk animation for NPCs does not restart on successive dialogue lines - Some scenes of the 32-cube end cutscene have received minor polishing touches - Alt+Enter toggles fullscreen - MSAA (multisample anti-aliasing) is tentatively supported, but hidden behind the --msaa-option launch option (because it generates some artifacts and blurriness in-game) - Logger creates a new file for each run of the game, archives day-old (or more) logs to a zip file and cleans up month-old logs - Change to view rotation limits : there's a limit to how fast you can rotate after 2 successive rotations, but you don't have to wait until the last rotation is completely finished
Bug Fixes
- Scripting fixes in 3D village to avoid a possible soft-lock - Fix to handling of the waterfall code entry, which should be a lot more consistent now - Fixes to the behavior of grabbing corner ledges, which prevents Gomez from clipping out of interior rooms - Finishing the game with all cubes found unlocks all abilities - Geezer will stand at the right spot in the 2D village no matter how fast you find him - Glow-bit planes fade out on secret passage doors instead of Gomez clipping through them - Zoom-through-the-sky level transitions with water are a bit less jarring - "Solved puzzle" jingle no longer cuts off in the crypt level - Fixed boiler room double-trigger of the secret resolved sound effect, and the camera becoming unconstrained - Fixed wall village floating planes, NPCs and art objects - Fixed that quick pause-unpause stopped music - Fixed secret passage doors checking for input in the pause menu - Fixed velocity lingering on as you attach to ladders, which made you attach too high on them - Fixed that vines made Gomez hug walls while moving (climbing) - Fixed issues with "impassable vines" where Gomez would clamp to them while trying to jump through vines - Fixed the DOT dialogue soft-lock when getting the achievement cube in Gomez's house - Fixed single-frame ground alignment vs. camera follow issue when landing and rotating at the same time - Ladder and vine grab behavior is now smoother, no more timer that prevented jump-grab-jump movement chains - Fixed activation of small warpgates, where it would falsely trigger when collecting 8 cube-bits nearby - Fixed one-frame disappearance of vertically looping levels when rotating - Changed how NPC rotation is handled so that they can never moonwalk - Fix to collision tiles for windmill level - Fixed culling issue with rotating level elements that caused disappearing vines - Fixed issues with yaw-rotating spinblocks and ledge-grab actions - Block puzzles no longer auto-solve themselves after changing save slots - Security question and unfold puzzles will detect the solution without having to rotate one more time - Removed check to collect cubes while in a warp gate transition to prevent cube duplication - Fixed that DOT speech doesn't lock the player when she speaks right as you come from a pan-down "continue game" transition - Nullified horizontal velocity when starting the "lower to straight ledge" action so you can't slide to the side and hold to thin air - Fixed Gomez alignment when coming out of the sewer pipe - Fixed the achievement (or map QR) anti-cube from short-circuiting level scripts that spawn and detect collection of anti-cubes based on input codes - Fixed boiler room out-of-bounds - Fixed issue with vibrating moving platforms and spawn points which made Gomez fall sometimes in the weightswitch puzzle room - Slowed down thumbstick movement in world map - Fixed areas where Gomez could fall forever in looping level - Removed explosive block that would reappear after reentering mine level - Fix for visual issue in industrial city star layers - Fix for crash in world map on Iris Pro GPUs - Water-level-changing sound now triggers on the first rotation of a water-raising/lowering valve - Allow stereoscopy on all saves if one save has it - Fix for ghosts objects (e.g. duplicated moving platforms) when closing the map and after rotations - Fixes to visual clarity in QUANTUM level (cleaner radius around Gomez) - Fixed puzzle skip for the tombstone puzzle and the 4-side puzzle - Fixed chest anticube duplication exploit - Fixed water height inconsistencies - Removed floating invisible block in QUANTUM level - Fixed camera unlocking issue in zu school - Fixed spacing around numbers in french localization text - Fixed water first-person transition glitches - Disabled achievement option if overlay is disabled - Fixed possible soft-lock when changing to first-person view in front of a tombstone, valve or timeswitch - Desktop display resolution used on first run instead of imposing 720p - Sound muted when "pause on lost focus" option is on, and focus is lost - Fixed alignment of Gomez's sprite when jumping with a bomb - Fix for falling through platforms in background mode - Grabbing to push crates no longer allowed when in background mode, since it causes weird visual issues - Fixed clipping through bombs in background mode - Entering "tunnels" by pressing up in a tunnel opening can no longer be triggered when Gomez is in background mode - Fixed a bug on respawn where the player would be appear to float in mid-air after rotating - Gomez's Z position is now more stable/predictable when he is sandwiched between two walls - Fixed situtations where Gomez would end up in the background after being adjusted to a ground position when rotating while overlapping a wall in an alcove (that's a mouthful) - Fixed situations where Gomez could wrap around ledges that weren't visible from the camera - Fixed respawn glitch that occured when last safe position was a ledge grab, and could cause Gomez to warp behind objects
Known Issues
- Some Intel integrated GPU/drivers have an issue maintaining 60fps when VSync is enabled and might fall back to 30fps after moving from one area to another. The workaround is to disable VSync, or try updating to a newer driver (see : https://github.com/renaudbedard/fez-1.12-issues/issues/113 ) - Since the game now uses SDL 2.0's DESKTOP_FULLSCREEN mode, there is no exclusive fullscreen mode supported and the game always assumes a presentation buffer that matches the screen's native resolution. This means that screenshots and video capture will use the screen's native resolution, whichever internal resolution the game is set to with video settings. (this is more of a "heads-up" than an issue since it will not be addressed) - PS3 controller not natively supported under Windows, unless you use 3rd party drivers and then you're on your own
We've been updating the Braid executable on Steam recently and will continue to do so in the near future. We're not adding anything to the game or changing the gameplay in any way; the updates are just about fixing problems running the game for people whose operating system / driver / hardware config is causing problems.
The biggest things we've done are:
* Add a launcher in Windows which will help you set options easily. If you have a mysterious crash, you might try running in windowed mode, for example.
* Enabled Steam's crash reporting, which will help us see what kinds of problems are out there in the world and how widespread they are. (This feature of Steam did not exist when Braid was launched).
It appears that some people are still having crashes even after the update. Usually these crashes are related to graphics drivers, so we always encourage people to try updating their drivers. Apart from that we'll be looking at the newly-instituted error reports and seeing what we can improve.
We've been updating the Braid executable on Steam recently and will continue to do so in the near future. We're not adding anything to the game or changing the gameplay in any way; the updates are just about fixing problems running the game for people whose operating system / driver / hardware config is causing problems.
The biggest things we've done are:
* Add a launcher in Windows which will help you set options easily. If you have a mysterious crash, you might try running in windowed mode, for example.
* Enabled Steam's crash reporting, which will help us see what kinds of problems are out there in the world and how widespread they are. (This feature of Steam did not exist when Braid was launched).
It appears that some people are still having crashes even after the update. Usually these crashes are related to graphics drivers, so we always encourage people to try updating their drivers. Apart from that we'll be looking at the newly-instituted error reports and seeing what we can improve.
Right on time (sort of) for the Summer Sale, here's a juicy update for FEZ. The Windows version is the first to update, Ethan is working on the Mac and Linux updates as I type this; shouldn't take more than a day.
Without further ado, here's the changelog :
Screen will no longer pillarbox, only letterbox, whichever resolution is chosen. This enables arbitrarily wide resolutions (multi-monitor)
Added borderless fullscreen toggle in video settings menu (workaround for AMD flickering bug)
Added power saving mode (-ps), also accessible through Launch Options dialog. This mode may make the game run at a slightly lower framerate than your hardware is capable, but significantly reduces CPU usage, which makes it preferrable on laptops or hardware susceptible to thermal throttling
Fixed rare case where waterfall would never open
Added fix for old savefiles with the telescope double-item spawn glitch
Sound effect volume now affects map navigation sound effects
Added additionalDeadzone entry to settings file, and made gamepad thumbstick deadzone wider by default
Separated X and Y look invert based on player feedback (old option affects both on first run)
Removed OptimusFix from Steam launch script, since it caused more problems than it fixed
Merged in new version of music streaming library which should lead to better performance
Music streaming CPU usage fix applied to Mac and Linux versions as well
Garbage-textured blocks no longer rendered in perspective view
Fixed credits entries
Clock tower level has more permissive fall damage
Traversing levels downwards with flying cheat is easier
Fixed bright edges on some 3D art objects
Fixed minor collision issues
The "power saving" mode is not enabled by default, it's a Launch Option, though I highly recommend you try it out. You may drop a frame or two, but in combination with V-Sync, I think it's the nicest way to play the game right now.
It's not a small patch; let me know in the GetSatisfaction support forum if something broke. It's been tested pretty thoroughly though.
Right on time (sort of) for the Summer Sale, here's a juicy update for FEZ. The Windows version is the first to update, Ethan is working on the Mac and Linux updates as I type this; shouldn't take more than a day.
Without further ado, here's the changelog :
Screen will no longer pillarbox, only letterbox, whichever resolution is chosen. This enables arbitrarily wide resolutions (multi-monitor)
Added borderless fullscreen toggle in video settings menu (workaround for AMD flickering bug)
Added power saving mode (-ps), also accessible through Launch Options dialog. This mode may make the game run at a slightly lower framerate than your hardware is capable, but significantly reduces CPU usage, which makes it preferrable on laptops or hardware susceptible to thermal throttling
Fixed rare case where waterfall would never open
Added fix for old savefiles with the telescope double-item spawn glitch
Sound effect volume now affects map navigation sound effects
Added additionalDeadzone entry to settings file, and made gamepad thumbstick deadzone wider by default
Separated X and Y look invert based on player feedback (old option affects both on first run)
Removed OptimusFix from Steam launch script, since it caused more problems than it fixed
Merged in new version of music streaming library which should lead to better performance
Music streaming CPU usage fix applied to Mac and Linux versions as well
Garbage-textured blocks no longer rendered in perspective view
Fixed credits entries
Clock tower level has more permissive fall damage
Traversing levels downwards with flying cheat is easier
Fixed bright edges on some 3D art objects
Fixed minor collision issues
The "power saving" mode is not enabled by default, it's a Launch Option, though I highly recommend you try it out. You may drop a frame or two, but in combination with V-Sync, I think it's the nicest way to play the game right now.
It's not a small patch; let me know in the GetSatisfaction support forum if something broke. It's been tested pretty thoroughly though.