Release v1.3.421
AAAAXY » Devlog
Changes since v1.3.393:
- Engine: speed up font loading by about 20%, and add loading screen info.
- Level: also add an EscapeButton pic to Hello World.
- Menu: when quality was adjusted, save settings instantly.
Files
Windows (64-Bit) 32 MB
Version v1.3.421 Apr 03, 2023
Windows (32-Bit) 32 MB
Version v1.3.421 Apr 03, 2023
Linux (64-Bit AppImage) 32 MB
Version v1.3.421 Apr 03, 2023
Linux (64-Bit) 32 MB
Version v1.3.421 Apr 03, 2023
macOS (Intel and Apple M1) 38 MB
Version v1.3.421 Apr 03, 2023
Android (APK) 82 MB
Version v1.3.421 Apr 03, 2023
Get AAAAXY
AAAAXY
A nonlinear 2D puzzle platformer taking place in impossible spaces.
Status | Released |
Author | divVerent |
Genre | Platformer |
Tags | 2D, Exploration, impossible-spaces, non-eucledian, non-euclidean, Non violent, Puzzle-Platformer, Retro, troll, weird |
Languages | Arabic, Belarusian, German, English, Japanese, Latin, Portuguese (Portugal), Portuguese (Brazil), Ukrainian, Chinese (Simplified), Chinese (Traditional) |
Accessibility | Color-blind friendly, High-contrast |
More posts
- Release v1.5.22036 days ago
- Release v1.5.20864 days ago
- Release v1.5.20285 days ago
- Release v1.5.190Aug 27, 2024
- Release v1.5.183Aug 26, 2024
- Release v1.5.173Jul 09, 2024
- Release v1.5.139Jun 03, 2024
- Release v1.5.129May 01, 2024
- Release v1.5.54Apr 08, 2024
- Release v1.5.42Mar 04, 2024
Comments
Log in with itch.io to leave a comment.
WOW!! What have you done to optimize loading at 20 percents? Was it a hard process of searching the new logic, alghoritmes, or just re write some stupid part of code for better?
It was rather boring to be honest.
The font outline effect is done by turning one font into two: one as is (just with wider spacing), and another one where all glyphs are replaced by an expanded form of the same (where every pixel is active when previously any neighbor was active). I then draw the outline first and the regular glyph on top. (Sadly, fonts in Go cannot be colored, or else I could combine both into one render call - an option I still have open, but it seems like I do not need it for framerate)
Previously I had implemented this by returning an Image object where the At() function queried At() for all neighbor pixels.
The new implementation rather computes entire glyphs at once, and queries every source pixel exactly once by performing the operation separably (first horizontal, then vertical “blur”).
The main winning from this was a reduced virtual call overhead (as At() is an interface method). Calling it only once per pixel, and doing all further work on byte array realm, rather than nine times meant less indirection.
The main cost of it was more code.
Note that I had previously already eliminated almost all ingame font rendering and did it at load time into pregenerated images - this avoids complex font rendering operations at render time that previously caused fps drops or lags on low-end systems, which was unnecessary as almost all text in this game is static.