Version 2.4

From Viki
Jump to navigation Jump to search
VVVVVV 2.4 title screen.png
Release date10 January 2024
Latest release2.4.1 (13 February 2024)
Minimum SDL versionSDL 2.24.0
Shipped SDL versionSDL 2.28.5
Preceded by2.3

Version 2.4 was a major update to VVVVVV, starting development on 31 August 2021. It was released on 10 January 2024. Its main focus was localizing the game and adding support for 21 languages.



An example of a controller button glyph, added in the update.
  • A "- Press (MAP BUTTON) to skip -" prompt was added to the credits and ending picture if the player beat the game previously (it was always already possible to always skip the credits and ending picture no matter what).
  • Button glyphs were added, and all on-screen prompts relating to controls learned to automatically switch out which button glyph to show based on the active device.
  • The time trial selection screen was redesigned and learned to display centiseconds if available.
  • The game learned to display text notifying the player when they have enabled invincibility mode, glitchrunner mode, Flip Mode, or slowdown when loading in to gameplay.

Custom Levels

  • The ability to use transparent colors was added to text().
  • A feature was added to support custom text box colors in the text command (and the new setactivitycolour command). Text box colors are stored in the <TextboxColours> XML tag in the level file, and each entry looks like the following: <colour name="name" r="255" g="255" b="255"/>
  • A feature was added to support changing and glitchy room names, like in The Final Level from the main game. Special room names are stored in the <SpecialRoomnames> XML tag in the level file, which looks like the following:
        <static x="0" y="0" flag="2">This shows if flag 2 is on!</static>
        <glitch x="0" y="0" flag="1">
            <text>On the Waterfront</text>
            <text>On the Vaterfront</text>
        <transform x="1" y="0" loop="0" flag="1">
            <text>Television Newsveel</text>
            <text>Television Newsvel</text>
            <text>vvvvvvsvovvNe svel</text>
            <text>vhv vvv'vvovv vevl</text>
            <text>vhv V v'Cvovv vewv</text>
            <text>vhe 9 v'Cvovv vewv</text>
            <text>vhe 9 v'Cvovv Newv</text>
            <text>The 9 O'Cvovk Newv</text>
            <text>The 9 O'Clock News</text>
  • Terminal editor entities gained the ability to not light up on touch if their p2 is 1 or greater.
  • Terminal editor entities gained the feature to not spawn an activity zone if the script they point to doesn't exist.


  • Tile drawing was made interpolated, so any tiles that might have been missed due to the cursor moving too quickly are no longer missed.
  • Sideline hints were added to show spikes and horizontal gravity lines in adjacent rooms.
  • A fill bucket modifier was added, accessible by holding down F.
  • The ability to change the platform speed of a room (without needing external tools) was added, by using CTRL+, and CTRL+..


  • destroy(moving) and destroy(disappear) were added.
    • destroy(moving) destroys moving platforms (instead of being bugged and only stopping them and making them invisible, like destroy(platforms)).
    • destroy(disappear) specifically destroys disappearing platforms.
  • setactivitycolour(), setactivityposition(), and setactivitytext were added, allowing users to change the color and text of the next activity zone which appears.
    • The text which setactivitytext uses is the text on the next line.
  • changerespawncolour() was added.
    • This command changes the color the player respawns with upon death.
  • A feature was added where text boxes can now contain up to 26 lines (from the previous limit of 11) if the line amount is suffixed with L, e.g. say(26L).
  • setroomname was added, allowing users to set the room name of a room from scripting.
  • textbuttons was added, to mark that a text box has button codes inside it that need to be parsed.
  • textboxtimer was added, to make a text box fade out automatically after a certain time without needing a delay in the script itself.
  • textimage was added, to set the text image of a text box.
  • textsprite was added, to draw sprites in a text box.


  • WebAssembly is now a supported build target.
  • __unix__ is used to detect Unix-like platforms, meaning many platforms don't need any changes to VVVVVV to work.
  • The following debug statements were added:
    • Values of the xoshiro RNG generator.
    • Achievements being unlocked (even if not already unlocked).
  • The CMake config option -DREMOVE_ABSOLUTE_PATHS was added to remove potentially-sensitive absolute paths from the compiled binary, if supported by the compiler. It was enabled by default.
  • The C-HashMap and SheenBidi libraries were added as dependencies.
  • The game learned to print all failing binary blob checks to console.
  • An in-game debugger was added. When enabled, pressing Y activates the debugger. By default, the debugger is enabled for in-editor playtesting.
    • The command-line option -leveldebugger was added to enable the debugger everywhere.


  • The -addresses command-line argument was added to print the memory addresses of all global classes, for help with getting autosplitters to work.
  • The -version command-line argument was added to print the version number (e.g. "v2.4") and build type (e.g. "[M&P]") of the executable, as well as the hash, date, and branch of the commit it was built from if the executable has that information.
  • The window title will display the branch name the game was built from in brackets, and the branch name will also be displayed on the title screen, if the executable has that information.
  • The game learned to remember the index of the monitor the game window is on, and to open it on that monitor the next time the game was opened.
  • The "credits" button on the main menu was re-added in M&P builds.
  • The game learned to show input method editors (IMEs) in text input fields.
  • The ability to take screenshots at perfect 1x or 2x game resolution was added through the F6 keybind. The screenshots are stored in the screenshots/ folder in the VVVVVV directory.
  • Steam screenshots were made to always be taken at perfect 2x game resolution.



The markers on the minimap were changed to be language-agnostic pictographs instead of letters.
  • Misa Kai's name was moved from the "super" GitHub contributors list to the C++ developers list.
  • All time strings were made more uniform. Centiseconds are now always separated by a period, and the first unit of the timestamp always no longer has a leading zero.
  • Launching the game in Big Picture or on the Steam Deck will now force the game to fullscreen, with windowing options removed from the graphics menu.
  • The game was made to default to integer scaling mode when launched for the first time.
  • The following effects were tempered when screen effects are off:
    • Any color relying on randomness (the random value used will always be the same)
    • Teleporter animations
    • Map cursor flashing
    • Player flashing when dying or respawning
    • The color of gravity lines
  • The slight zoom in the linear filter graphics mode was removed.
  • The minimap legends were changed to rely entirely on visual pictographs instead of letters.
    • To accommodate the new sprites, the margin of the blue flashing rectangle was reduced to 1 pixel for minimap zoom sizes 2x and 1x.

Custom Levels

  • Custom level zips were made more forgiving. They no longer require level names to be the same name as the zip, and can have multiple level files in one zip sharing assets.
  • To avoid complicated localization issues, the "by" text denoting the author/creator of a custom level was replaced with a language-neutral Viridian face.


  • The characters used to indicate the binds for scrolling through tools were changed from < and > to , and . to reflect the fact that those are the actual binds.
  • The selector characters around the names of scripts in the script editor were made to be the same as the selector characters on the title screen.
  • The hotkeys of the editor tools were outlined so they stand out more.
  • Script box and entity bounds placement learned to accept the placement of any corner in any order, no longer being strictly limited to placing the top-left corner followed by the bottom-right corner.
  • Entities were no longer prevented from being placed inside walls.
  • The framerate of the editor was made to be the same as the rest of the game.
  • The scrolling speed of the script list was made faster.
  • It was made no longer possible to remove tiles while holding a non-tile tool.
  • Some tools were renamed to be clearer or to be consistent with other tool names:
    • CheckpointCheckpoints
    • DisappearDisappearing Platforms
    • MovingMoving Platforms
    • Grav LineGravity Lines
    • TerminalTerminals
    • Script BoxScript Boxes
    • Warp TokenWarp Tokens
    • CrewmateCrewmates
  • The editor learned to display a note when the level was completed during in-editor playtesting, to make things clear when they otherwise weren't.
  • Single tile autotiling was added.
  • Backing in Warp Zone tileset was added and places down the alternate solid tile.
  • The game learned to disable the editor if the device does not have a keyboard.


  • When the game is attempting to convert a string to a color (ex. changeplayercolour), it now attempts to treat it like a numerical color ID if the string cannot be converted.
  • The 50-line limit on the amount of lines say/reply can take in was removed.


  • Loading music tracks from separate audio files was added. If neither vvvvvvmusic.vvv nor mmmmmm.vvv exist, the game will load music from the music/ folder.
  • Logging was completely overhauled.
    • Output was made prefixed with [INFO], [WARN], [ERROR], or [DEBUG], including bold and colors (if available).
    • All [WARN] and [ERROR] logs were made to properly go to STDERR, instead of STDOUT.
    • [DEBUG] logs were disabled by default.
  • Command-line options were added to customize logging output:
    • -nooutput disables output entirely.
    • -forcecolor or -forcecolour forces colors to be on.
    • -nocolor or -nocolour forces colors to be off.
    • -debug enables debug logs.
    • -noinfo disables info logs.
    • -nowarn disables warning logs.
    • -noerror disables error logs.
  • Logging and error handling was added for error conditions that previously silently failed, such as being unable to draw to the screen.
  • The command-line option -console was added, for Windows systems only, to spawn a console window that will capture all console output of the game.
  • Output of loading/saving XML files was streamlined and was made to print TinyXML-2's error output in case of an error.
  • The minimum SDL version was upgraded to 2.24.0.
  • The game's audio system was migrated from SDL_mixer to FAudio.
    • This minimizes the number of libraries ("DLLs" on Windows) needed to run the game (in officially shipped builds).
    • Users have reported that the audio quality is no longer crushed when played through certain speakers.
  • Loop point support in music has been extended, mirroring the same changes that were made to SDL_mixer before the game was migrated to FAudio:
    • Tags can now start with LOOP_ or LOOP- instead of LOOP (e.g. LOOP_START instead of just LOOPSTART)
    • Start and end times can now be in the format HH:MM:SS.mmm, instead of just sample counts
  • Upon startup, the game will only create the window after all assets have been successfully loaded (and if using command-line playtesting, after STDIN has been closed). In case of an error (like an invalid playtesting level name provided), then the window won't be created at all.
    • This has enabled Ved, starting from 1.10.0, to "pre-load" the game in the background during the screen to choose the playtesting starting point.
  • The game's rendering was shifted over from being mostly CPU-based to being mostly GPU-based (via SDL's 'render' subsystem), providing a performance boost.
  • PhysFS was updated to 3.2.0.


  • The level folder path in the levels menu was made to be hidden behind a "show level folder path" menu option. The option warns the user they may leak sensitive information if they are streaming.
  • On Windows, the game no longer needs users to install Visual C++ redistributables in order to run it.
  • The default window size if no settings file is present is now 640 by 480 instead of 320 by 240.
  • The minimum size of the window was restricted to 320 by 240.
  • The game learned to not modify the resolution of windowed mode if it was in fullscreen mode.



  • Spikes are no longer considered to be solid by moving platforms and entities if invincibility mode is enabled.
  • A bug was fixed where the post-game teleport animation back to the ship from the map menu could be interrupted in various different ways.
  • A bug was fixed where the player was able to flip in mid-air when loading in to a level if they exited to the menu while standing on a surface (along with other state that persisted).
  • A regression from 2.3 was fixed where beating No Death Mode (and never going to the options menu) would also give you the Flip Mode trophy.
  • A bug was fixed where trophies were saved before unlocking the Master of the Universe trophy, thus potentially not saving the Master of the Universe trophy properly.
  • A bug was fixed where it was possible to play music during No Death Mode's Game Over screen by dying when the music was fading out from one area's music to the next.


The rare glitchy tileset that was fixed.
  • While nearly unnoticeable to the naked eye, the colors used by the Time Trial trophies in the Secret Lab were mistakenly using BGR format instead of RGB, which was fixed.
  • A rare chance where a glitchy tileset would be drawn during finalstretch was fixed.
  • The name of the author of Vertex Vortex was updated.
  • A bug was fixed where Vitellary would look left for only one frame multiple times during the cutscene in "Do as I Say...".
  • A bug was fixed where the trinket collection text boxes would stay up if the player warped to the ship while they were up.
  • A bug was fixed where in transparent text boxes the outlines of previous lines could overlap the text on their next lines.
  • A bug was fixed where platforms and enemies could be colored gray in the main game if the player had loaded a custom level with gray rooms.
  • A regression from 2.3 was fixed where silencing music wouldn't stop a queued track, so the very beginning of A New Dimension wasn't silent when it should have been.
  • A bug was fixed where the player would "zip" when transforming into and out of VVVVVV-Man (visible during the Secret Lab cutscene with screen effects off).
  • A regression from 2.3 was fixed where if a room transition was triggered right as the game exited to menu, the music played wouldn't be Presenting VVVVVV.
  • A bug was fixed where the clock sprite (and technically the trinket sprite) on the Game Saved quicksave screen were upside-down in Flip Mode.
  • A bug was fixed where a track that was resumed would not be resumed if unfocusing the window and refocusing it (and audio unfocus pause was enabled).
  • A typo was fixed where "he'd be a a big help" had an extra "a" in the phrase.
  • The visual clashes between the in-game timer and the Gravitron "Survive for 60 seconds!" text and "[Press {button} to return to editor]" text were fixed.
  • Text box graphics (e.g. Level/Game Complete, crewmates) were made to smoothly fade in and out with the rest of their containing text box.
  • A bug was fixed where pressing Escape in the Game Complete, Time Trial complete, Game Over, or No Death Mode complete menus would leave the title screen in silence instead of playing the title screen music.

Custom Levels

  • A regression from 2.3 was fixed where levelstats.vvv could copy-paste all its entries over and over if you selected the "play a level" option multiple times and then went and completed a level.
    • The game learned to delete duplicate level stat entries upon loading them.
  • A bug was fixed where using STDIN playtesting (e.g. playtesting a level within Ved) and then completing it would write a special/stdin.vvvvvv entry to the levelstats.vvv file.
  • A bug was fixed where the map screen could be brought up during in-editor playtesting if the player pressed ENTER on a terminal while dying and had the interact key set to ENTER.
  • The minimap displayed on the gamemode(teleporter) screen was changed to use the custom level minimap if applicable.
  • Trinkets that exist out of bounds were made to no longer be drawn on the minimap.
  • A regression from 2.3 was fixed where music tracks in custom music files whose headers had sizes going past the end of the file were not being played. One such track was in Summer Spooktacular.
  • An oversight was fixed where rolling credits in a custom level would delete the main game quicksave file.
  • A bug was fixed where the game would play music at the start of command-line playtesting in certain cases when unwanted, including when the user specified -playmusic -1.


  • A bug was fixed with the way the script list scrolled when the selection moved past the bottom of the screen.
  • A bug was fixed with gravity lines whose lengths were not divisible by 8 pixels were being improperly rendered.
  • All oversights were fixed where it was possible to lose unsaved level changes in the editor by triggering certain gamestates (e.g. gamestate 82, completing a time trial, and gamestate 1015, that just forcefully quits to the menu).
  • A bug was fixed where shrinking the map size could leave the user in a room outside of the map.
  • A bug was fixed where the W and S keys were not usable for navigation inside the editor menus.
  • An oversight was fixed where it was possible to type pipes in the script names of terminals and script boxes, which would lead to issues after saving and reloading the level.


  • Script names containing spaces or capitals were made possible to be jumped to via iftrinkets() or similar. To prevent disruption to existing levels, the implementation attempts to load the processed name first (with spaces removed and capitals lowercased) before attempting to load the literal name.


  • Duplicate player entities were made to have the same momentum as the true player entity.
  • The workaround used to make the VSync toggle work was fixed, making it more reliable on some systems that might have had problems with it previously.
  • The game now checks that VVVVVV.png is loaded and decoded properly before dereferencing, fixing a potential source of crashes.
  • A bug was fixed where a bogus "level not found" warning was printed to console when loading command-line playtesting if the level in question was in a zip file.


  • The game learned to not explicitly write unlock.vvv/settings.vvv if it hadn't attempted to load them yet, preventing overwriting perfectly good save data. Previously, this was handled implicitly and was still theoretically possible in a number of cases involving the game aborting upon startup.
  • A bug was fixed where on Wayland, if the game launched in fullscreen mode and stretch mode, the screen wouldn't be properly stretched.
  • A regression from 2.3 was fixed where the controller button bound to menu/back couldn't be rebound to any other action from in-game.
  • A bug was fixed where the player would be unable to skip credits and the ending picture if they didn't release the map button before they played.
  • A bug was fixed where the controller could be made unusable by unbinding the 'flip' action or binding a button to both 'flip' and 'menu'.
  • The game learned to display a message box if it could not initialize the filesystem on startup.
  • An oversight was fixed where if the player unlocked No Death Mode (which can only be done at the completion of a time trial), they would have to back out of several menus before seeing the menu that notifies them that they have unlocked No Death Mode.



  • Due to the switch to FAudio, support for every audio file format that SDL_mixer supported except for WAV and OGG was removed.

Custom Levels

  • assets were removed due to disuse.


  • Right-click emulation (via pressing Ctrl+Left Click), which never worked properly, was removed.


  • Save file migration from 2.0 data to 2.2 data was removed.
  • The UTF8-CPP library was removed. The game learned to handle Unicode support on its own.


This version received a localization overhaul, adding support for the following 21 languages:

  • Arabic by Eternal Dream Arabization (Montassar and Seif)
  • Catalan by Eduard Ereza Martínez
  • Chinese (Simplified) by 谜之声
  • Chinese (Traditional) by 谜之声 and craft
  • Dutch by Dav999
  • Esperanto by Reese Rivers
  • French by Words of Magic
  • German by Thomas Faust
  • Irish by Úna-Minh Kavanagh, Seaghán Ó Modhráin, and Davis Sandefur
  • Italian by A. Dellepiane, M. Scarabelli, L. Bertolucci, and F. Bortolotti
  • Japanese by Nicalis translators and KabanFriends
  • Korean by Bada Im and Hyungseok Cho
  • Polish by Kuba Kallus
  • Portuguese (Brazilian) by Lucas Araujo and Thiago Araujo
  • Portuguese (European) by Locsmiths
  • Russian by TheMysticSword
  • Silesian by Kuba Kallus
  • Spanish by Felipe Mercader and Sara Marín
  • Turkish by Engin İlkiz
  • Ukrainian by Olya Sushytska
  • Welsh by Morgan Roberts

All languages have translated sprites as well (which do not affect gameplay, and can be turned off in speedrunner settings).

A language menu select appears on first launch if you've never selected a language before. This menu is also accessible from the options menu.

The language screen that was added.

Each language is stored in a folder named after its two-letter code (e.g. en for English) in a new lang/ folder. Each folder contains the following:

  • meta.xml: Contains information about the translation.
  • strings.xml: Contains general strings for the interface and some parts of the game.
  • strings_plural.xml: Contains strings with plural forms.
  • numbers.xml: Contains all numbers from 0 to 100 written out in word form.
  • cutscenes.xml: Contains nearly all cutscenes that appear in the main game.
  • roomnames.xml: Contains nearly all room names that appear in the main game.
  • roomnames_special.xml: Contains special names, such as area names and glitch names.

Support has also been added for different fonts, such as CJK fonts (Chinese/Japanese/Korean) in the fonts/ directory. Custom level creators can set the font for their level in level options, and any room text entity placed with the level font set to an RTL font will gain the property of being RTL (p1 being set to 1).

The following command-line arguments were added relating to localization:

  • -langdir sets the language directory to the given directory.
  • -fontsdir sets the fonts directory to the given directory.
  • -translator enables the translator menu if not already enabled (see below).

The following gamestates were added, all used in the translator 'explore game' mode:

  • 3090: Returns to the main menu.
  • 3091: Waits 60 frames before proceeding to the next state.
  • 3092: Returns to the main menu.

The following script commands (both internal and simplified) were added:

  • iflang: Jump to script if the current game language is a certain language.
  • loadtext: In custom levels, load the given language.
  • setfont: In custom levels, set the font to the given font.
  • setrtl: In custom levels, turn the font being RTL (right-to-left) either on or off.
  • textcase: Set the text case for the following text box.

Translator menu

The translator options menu that was added.

A menu for translator authors and translation maintenance was added. The translator menu only appears on the main menu and is accessible if any of the following are true:

  • The -translator command-line argument is used.
  • The lang/ folder is not next to, the game is running somewhere inside a folder named desktop_version/, and a lang/ folder is found inside desktop_version/. This usually corresponds with running the game from a source code environment (e.g. doing development work).
  • ALWAYS_SHOW_TRANSLATOR_MENU is defined during compilation.

The menu also contains the following options:

  • A menu to sync language files with any new added English strings.
  • Room name translator mode (see below).
  • Previews of every text box in every cutscene, as well as every menu.
  • Check (roughly) if any string overflows a limit.
  • Open the language folder.
  • Statistics counting any untranslated strings.

Room name translator mode

Room name translator mode in action.

Room name translator mode is accessible from the translator menu. It enables viewing and editing room names and room name explanations while in-game.

  • Pressing I toggles invincibility. If enabled during a time trial, the time trial is sabotaged by adding an hour to the time and adding 100 deaths.
  • Pressing Tab switches between playing and editing.
  • In editing mode, pressing E/Enter edits the room name or explanation.
  • Ctrl+E switches to explanation mode.
  • F1 shows the help.

There is also a separate 'explore game' menu that lets the user quickly travel to any of the following areas:

  • Space Station 1
  • Laboratory
  • The Tower
  • Space Station 2
  • The Warp Zone
  • Intermission 1
  • Intermission 2
  • The Final Level

Beating the area returns the player to the menu.

Version 2.4.1

This was the first subversion of 2.4, released on 13 February 2024.


  • Text box overlay fading was reverted.
  • Support for GameCube glyphs was added.
  • The level debugger string [Press {button} to toggle gameplay] was split into [Press {button} to freeze gameplay] and [Press {button} to unfreeze gameplay].
  • A potential crash was fixed if the game attempted to translate a text box of at least three lines or more that started with two blank lines.
  • A regression was fixed from 2.4.0 where attempting to increment the gamestate using glitchrunner mode after warping to the ship with a trinket text box open would softlock the game.
  • The restriction on setfont and setrtl delaying if a text box is currently fading out was removed.
  • setfont gained a second parameter, which if specified to all, immediately updates the font of every text box on screen.
  • FAudio was updated to 24.02.
  • A one-pixel gap was added between each line in a text box in the main game.
  • It was made possible to switch languages with a text box onscreen.
  • A debug keybind (active only when the translator menu is active) to cycle languages was added, CTRL+F8 (forwards) and CTRL+SHIFT+F8 (backwards).
  • A bug was fixed where switching Flip Mode wouldn't update certain text boxes that changed depending on Flip Mode, namely, the Intermission 1 instructions.
  • A bug was fixed where switching the active input device wouldn't update the "Press ACTION to continue" text boxes to swap between controller and keyboard prompts.
  • Scaling modes were reimplemented manually, fixing a bug where running the game in libTAS would ignore the window resolution always result in a 320x240 window unless it was running in stretch mode.
  • A bug was fixed where the "resize to nearest" graphics option could resize the window to be larger than the screen resolution of the monitor.
  • Support for Windows XP has been restored.


The updated language screen.
  • Because new languages have been added in this version, the language screen may be shown again once on the first run of 2.4.1.
  • Some last-minute 2.4 strings have been translated to Arabic, Dutch, Esperanto, Japanese, Brazilian Portuguese, and Spanish (all variants). These strings were all fairly low-priority, and most of them had proxy strings as placeholders (e.g. an in-game "Invincibility mode enabled" warning would show as "Invincibility" instead).

Language-specific notes

  • Arabic
    • Various updates have been made to strings.
    • "Wordy" numbers for 21-100 were added.
    • A mistake was fixed where some translations could show "[n_crew?]" in places including the number of deaths on the Game Complete screen, and the number of trinkets on the No Death Mode completion/fail screen.
  • Chinese (Simplified & Traditional)
    • Gaps were added to the "YES" ("是") sprite.
    • The sprites for "LIES" ("谎言") and "TRUTH" ("真相") were modified to be easier to recognize.
    • The Chinese font (made by Indienova) was replaced and split into two fonts, one for Simplified Chinese and one for Traditional Chinese.
      • font_sc is the Simplified Chinese font and is based off of Fusion Pixel.
      • font_tc is the Traditional Chinese font and is based off of Fusion Pixel and Ark Pixel.
  • Dutch
    • The capitalization of the translation of "No Death Mode" ("One life mode") was made consistent with the capitalization of the translation of the number "One".
  • Esperanto
    • A mistake was fixed where the button in Violet's dialogue (ENTER or the controller button bound to "map") was not properly filled in and said "[button?]" instead.
  • Irish
    • A mistake was fixed where the translations of all "Congratulations!" text boxes (finding a trinket, crewmate, or the Secret Lab) were all on one line.
  • Japanese
    • A mistake was fixed where the number "Twelve" was translated as "23".
    • A mistake was fixed where Nicalis was credited as "Nicalis. Inc" instead of "Nicalis, Inc.".
    • The translation for Down Under was improved.
    • A typo was fixed in the translation for bilinear filtering.
  • Brazilian Portuguese
    • The translation was proofread and updated by Ivan Lopes and Lucas Nunes.
  • European Portuguese
    • A mistake was fixed where "mostrar" was miscopied as "monstrar".
  • Russian
    • A mistake was fixed where the translation for Pushing Onwards in the editor was using the translation for Potential for Anything.
    • Russian translations were added to the jukebox activity zone prompts.
  • Silesian
    • A mistake was fixed where the translations for the text boxes for rescuing a lost crewmate and finding the Secret Lab only translated the first line (that being "Congratulations!").
  • Argentine Spanish
    • The translation was added. It was done by LocQuest and Guido Di Carlo.
  • Latin American Spanish
    • The translation was added. It was done by LocQuest and Guido Di Carlo.
  • Ukrainian
    • The en-dashes used in the translations for placing warp tokens in the editor were replaced with standard ASCII dashes, since en-dashes were not in the font.
  • Welsh
    • A mistake was fixed where the translation of the jukebox information terminal was all on one line.
    • A mistake was fixed where the translations of all "Congratulations!" text boxes (finding a trinket, crewmate, or the Secret Lab) were all on one line.
    • A mistake was fixed where spaces in the script editor title were missing around the asterisks.


  • Misa Kai streamed her review of the localization pull requests on Twitch.
  • On 27 November 2023, a beta based on intermediate commits of 2.4 was released as a public beta on Steam.[1]


  1. Terry Cavanagh (27 November 2023), VVVVVV Localisation Beta, Cohost, archived from the original on 10 January 2024, retrieved 27 November 2023