New level- Added a reduction-like level where the input needs to be transformed to a different "representation" (chosen by the player) and then converted back
- The game now has 72 levels and 18 languages, which seems to perfectly fit its 6 commands. Of course I'm hoping to ruin that (although it's getting harder...)
Chrome 108 sagaTwo players reported that the HTML5 version on Chrome started eating memory like crazy (gigabytes), ultimately crashing the browser. I couldn't reproduce it with my savefile, so was mostly shooting in the dark. Nothing I did help, and when one of them, having 64GB RAM and 8 cores, reported that they could barely pass the title screen, I jokingly recommended IE 11, where the game runs smoothly at 60Hz and uses only 200-300MB.
It was
obviously that very suggestion that prompted Google, just a few minutes later, to deploy their new version (109) to the player, which fixed all issues.
Gained in the process:
- Memory optimizations to applicative caches - compression (standard/custom/both) and hashing of keys where these were absent, stricter eviction, and a complete overhaul of one cache whose effectiveness had gradually diminished since the game stopped having only one language (4 years ago)
- Ctrl+Shift+D also displaying memory use, rather inconsistently - private bytes on Windows, peak heap space rounded up to the next power of 2 in the HTML5 version, and total heap allocations (without fragmentation) on Linux (using malloc_info, possibly the only glibc function that returns XML...)
- Ctrl+Shift+M (undocumented) - clears most caches, rebuilds font textures (so unused font sizes get deleted), and on Windows and Linux, also returns memory to the OS
- WebGL 1-->2 transition (HTML5 version)
- A change that was done and then reverted (killed FPS of HTML5 version on mobile) - moving from using freshly-allocated (static and smaller) VBO per draw call to allocating one (dynamic and larger) VBO and using it cyclically across all draw calls and all frames
Tablet support in HTML5 versionAn experiment to test whether, without
any changes to the UI, touch input would work well enough as a baseline.
Changes to the HTML5 version:
- Touch support - fix for old SDL2 version that always reported (0, 0) coordinates, and manual handling of buttons that open browser windows/file dialogs
- Fullscreen by default, web/standalone app manifests, and CSS/JS voodoo to encourage mobile browsers to not hide the game with all sorts of top/bottom bars (with partial success; dvh may help in the future)