Etterna 0.67.0 Released

[0.67.0] - 2019-12-16

See the comprehensive changelog in detail here (for people who want to see every little detail, otherwise continue reading (I will admit that I wrote this one retroactively for the most part so some things might be missing))


We changed the installer again. Bet you didn’t see that coming. The changes are small. The installer will no longer name the installation folder Etterna 0.67 and will just use Etterna. This means you should be careful installing stuff as usual. That also means you should allow the uninstaller for the previous version to run as intended. It should only remove things that you did not add yourself. If you modified game files that were already there, however, those will be lost.
Things you would want to backup: specific Assets, specific Noteskins, all of Save. For the more paranoid or advanced users, backup Songs, Screenshots, and Cache.
Keep in mind that it has always been a feature of the game to allow you to load songs from a particular directory outside the game. In /Save/Preferences.ini the option AdditionalSongFolders= will let you give an absolute path to a directory which contains packs. For example, you could set it to AdditionalSongFolders=C:\OldInstallations\Etterna\Songs
In addition to that installer change, the shortcut that used to be shipped with the game is back. And we don’t ask you to put the game into PATH anymore.

The uninstaller may fail for some. If this happens, just make sure your important stuff is backed up and perhaps consider installing into a completely new folder instead. It doesn’t hurt to install in a new folder every time an update is released. Installing in a new folder will ensure that the core parts of the game are up to date.

Anyways here’s 0.67.0. It’s like the previous versions of Etterna but with more features, bugs, and stuttering*

New Features/Updates

  • Player Overall calculation no longer drops the lowest skillset and is an average of all skillsets
  • Translation support for almost all of Til Death & additional internal strings
    • Comprehensive Chinese Translation (by RainFallen)
    • Anyone interested in taking on the task of translating the entire game into their own language of choice, let us know and we can point you in the right direction
  • Gameplay
    • Reorganized internally, bringing many changes and fixes seen below
    • If Score-invalidating Mods are enabled, text shows on the Screen at the start of Gameplay for an additional 2 seconds indicating which Mods will invalidate the score
    • Uncapped FPS gains: somewhere in the hundreds
    • Re-enabled Noteskin access to the Color parameter, but only if Fast Note Rendering is off. This causes a drop in FPS, so check your options
    • Customize Gameplay
      • Supports Beat (5+1k, 7+1k, 10+2k, 14+2k)
      • Supports Dance 3-panel
      • Supports Pump Halfdouble
      • BPM Text can be moved
      • Rate Text can be moved
      • Error Bar Count can be adjusted in Player Options
    • Practice Mode
      • Press Ctrl + O in Select Music to turn it on
        • Can be toggled through Player Options
      • Turns itself off after exiting Gameplay
      • Stats do not accumulate until any button is pressed
      • Chord Density Graph acts as a way to set a Bookmark or a Loop Region
        • Set a Bookmark by Right Clicking the Graph once or pressing InsertCoin
        • Change to a Loop Region by Right Clicking somewhere else or pressing InsertCoin at a new position
        • Change back to a Bookmark by Right Clicking twice in the same spot or doing the same with InsertCoin
        • NoteData is restricted to only the Loop Region if enabled. The music will loop and stats will reset every time the loop starts over
        • Press Backspace to immediately jump to the Bookmark or start of the Loop Region
      • Right Click anywhere outside the Graph to Pause or Unpause the music
        • When paused, the Mouse Scroll Wheel will allow you to scroll through the chart at very fine increments
        • Notice how NoteData will not load anywhere in the chart before your current position, thus allowing you to start a Hold/Roll “in progress”
      • Hold Enter for 1 second to exit Practice and go to Evaluation to view your Offsets & Judgments
      • Press Ctrl + Shift + R to reload the Song from disk
      • Press EffectUp/EffectDown to change the Song rate in increments of 0.05x
    • Replays & View Evaluation
      • Attempting to view a Replay that definitely will not work for known reasons fails with a message
      • Nearly every tested Replay works as intended with high accuracy (see known issues)
      • Replay Snapshots have been introduced which allow quicker seeking in Replays among other things
      • Seeking to any arbitrary point in a Replay should set the stats to what they really are at that point without causing major lag
      • Replays will attempt to use the Mods that the score was set using except for Noteskin. To disable this, find the option for it in Advanced Options
      • Life Graphs & Combo Graphs are set based on the Replay and not the Gameplay
    • Evaluation
      • Offset Plot can be hovered with the mouse to show the Judgments & WifePercent at that exact point in time
        • Disabled if certain invalidating mods are used (Shuffle)
      • Combo Graph & Life Graph will recalculate based on the Judge you change to when you press EffectUp/EffectDown
        • Disabled if certain invalidating mods are used (Shuffle)
      • Title of the Screen should say “Replay Results” if the HighScore wasn’t just now set by the player
      • WifePercent display had an issue where the numbers rounded inconsistently when converting the Judge, but it should be fixed and now consistently be rounded down
  • Select Music
    • Theme Lua had some tiny updates to reduce lag
      • Main noticeable thing about it is that button highlighting is slower
      • Privileged users with scroll wheels that can scroll quickly will lag less
      • You may have gained like 5-200 fps
    • Ctrl + L will act as a Login/Logout hotkey for those people who really hate using a mouse
    • Song Search allows searching by subtitle by entering subtitle=
    • New Theme Option called Instant Search. If disabled, requires you to press Enter to search in Song Search. If you lag a lot when typing in search, this option is for you
    • Chart Leaderboards will show the Offset Plot of a Replay if you Left Click the WifePercent


  • Gameplay
    • Additive Mines is now invalid. This option replaces entire rows of taps with mines
    • Noteskins have access to the Color LuaThreadvariable
      • Basically this lets Noteskins control your snaps arbitrarily
      • FPS cost: 0-700. Turn Fast Note Rendering On to disable this feature
    • Playlists cannot be started if Practice Mode is enabled
    • RestartGameplay can be pressed in Multiplayer
    • Tempo buttons (F9 & F10) require Ctrl to be held in order to use them
  • General
    • Couple Difficulties will load as Doubles
      • They might show up as Edit Difficulties. Report issues with this
    • Removed FailAtEnd
      • FailImmediateContinue does the same thing in a better way, so FailAtEnd does not need to exist
    • Profile won’t save if you didn’t just set a new score
      • This occurs if you watch a Replay or View Evaluation
    • Select will not open the Chat Overlay in Multiplayer if Select is used as a modifier key for something else
      • This occurs if you use Select on / and use it to set half-rates
  • Select Music
    • Chart Leaderboards will not load until the Sample Music starts playing
    • Chart Preview will go invisible when changing Songs to hide our shameful display of hacks that slow everything down
    • Offset Plots loaded on this screen will show the Judge window used to display the lines
      • Custom Windows work for this too
    • Pausing Music is impossible on the Scores and Profile Tabs
      • These tabs have right click functionality that collides with the Pause functionality
    • Plays counter updates consistently and probably correctly
  • Miscellaneous
    • Button Rebinding Screen has had the top 4 rows removed to reduce confusion
      • They were the Main Menu Buttons. If they need to be remapped, consult Keymaps.ini or metrics.ini
    • Differential Reload will show the Transliterated Display Title for a Song if the Preference is enabled (F9)
    • Discord Rich Presence will indicate that you are in Practice or watching a Replay
    • GameplaySyncMachine will try to use the modifiers of the first available Profile


  • Evaluation
    • Life Graph no longer goes cave exploring if you hit a lot of Mines
    • Offset Plots have less random Lua errors
    • Screenshots didn’t work in Multiplayer when using Select
    • Replays caused Mean and Standard Deviation calculation to be wrong
  • Gameplay
    • Replays work pretty good now maybe
    • Blind Modifier should no longer cause taps to utilize quantum tunneling techniques on their way to your receptors
    • Customize Gameplay improvements
      • Moving things at all caused major lag
      • Messagebox should use the proper button name for Lane Cover
    • CB Highlights will not trigger twice if the start Judgment on a Hold/Roll was a CB
    • Changing Rates during Gameplay won’t cause Player Options to revert the rate to 0.5x
    • Fakes are now completely impossible to hit, as they should be
    • Judgment counter sometimes didn’t count Judgments
    • Lua error caused by turning Judgments off
    • Player 2 could hit Mines because we can’t let go of our past. Reminded self not to think about the past and now Player 2 no longer functions in Gameplay (but surely the players will find a way to make it work)
    • Seeking won’t desync Practice and Replays
    • Syncing a DWI file won’t cause the file to back up its contents and pretend it was erased
  • Select Music
    • Banners stopped cropping at some point and instead were stretched/squished, but should crop properly now
    • BPM Display for SSC files was always 60, but now should not always be 60
    • Chart Preview improvements
      • Chord Density Graph always works
      • Chord Density Graph won’t be desynced if the file ends in a Hold/Roll
      • Difficulty list doesn’t run away if using hipster aspect ratios (non 16:9)
      • Music should always let you seek if it starts playing properly
      • Music won’t desync when seeking
      • Pausing the music won’t enable some really weird behavior in many other places
      • Random game crashes reduced by at least 1%
    • Tags with long names shouldn’t cover the Music Wheel if not on 16:9
  • General
    • Crashinfo contains the proper game version and git hash
    • Duplicate Difficulties (duplicate non-Edit difficulties in sm files) used to fail loading NoteData only, but should work now
    • Game Start’s ability to be pressed was deleted by the Caution Screen, so we deleted the Caution Screen
    • LoadingWindow on Windows loaded a Font in the Data folder and didn’t unload it
      • This causes the thing where you can’t modify the Data folder. To apply this fix, simply restart your computer before installing the game and then forget it ever was an issue
    • Logging in halfway to Multiplayer then deciding now would be a good time to play Singleplayer caused crashes for some people, but now causes crashes for nobody
    • Logging in to online integration with bad credentials appeared to be successful, much to your disappointment
    • MP3 seeking should no longer desync
      • Relevant only to Chart Preview, Practice, and Replay
    • Multithreaded startup had an inconsistent crash caused by a race condition involving multiple HighScores on different Difficulties of the same Song. Cases where this didn’t crash caused wildly incorrect SSRs
    • NoteData didn’t load from some files in some cases due to code that vanished during a temporal rift. This was part of the reason DWI erased itself when you Autosynced and why Edit Difficulties didn’t load
    • Playlist Lua functions caused a lot of crashes
    • Profiles stopped loading if only 1 was present
    • Profiles saved to the wrong location very rarely
    • Saving always completely failed if on a vanilla instance with no Profiles
    • Syncing a file with an unloaded Couple Difficulty won’t crash the game
    • Verbose Logging was not set for SSC NoteData loading
    • Verbose Logging was not set for Combo Graph loading

Developer Updates

  • New Actor Method GetTrueRotationZ
  • LuaJIT profiler added to fallback scripts somewhere
  • RageSound itself keeps track of the Paused state of a Sound in a more obvious way
  • RageTimer internals got replaced with std::chrono in an attempt to make things work better
    • 1 person (that’s right 1 entire person!!!) reported that this fixed sync drift over time and fixed sync drift caused by large stutters like pressing F2
  • CrashHandler on Windows uses a separate thread now
  • Player’s TimingWindowScale (which is actually a Preference) is accessible anywhere from the namespace
  • StageStats keeps track of whether or not they were created by Player or something else (a Liveplay or not)
  • Steps will keep track of whether or not it is a duplicate Difficulty and forced to be a different Difficulty
  • Gameplay has new subclasses GameplayReplay and GameplayPractice
  • Player has new subclasses PlayerReplay and PlayerPractice
  • Moved almost all of the License Footers to a single file
  • NoteDataUtil can set up a specific portion of NoteData at will
  • Lua has access to some new cool stuff
    • GetTrueRotationZ
    • Practice Mode Settings
    • Recalculate Player Rating
    • Check Player Options for Invalidating Mods
    • Check Player Options for Mods that Invalidate Replays (Turns)
  • PlayerAI has the ability to set PlayerStageStats based on a given full Replay
  • ReplayData that is already downloaded does not need to be downloaded again, so will not produce an additional request to the network
  • Renamed Borp to PlaySampleMusicExtended
  • Renamed the Practice and Replay screen functions to have the same name for their seeking and pausing functionalities just to make working with them that much more confusing
  • Changed PlayerInfo vector to an attribute: The last Player 2 dependent thing in Gameplay
  • Score Keys of temporary online Replays are prefixed with “Online_”
  • Removed a bunch of little unimportant things
    • Characters
    • AI.ini
    • Instrument tracks, Guitars, Frets
    • PlayerNumber Macros
    • Some token thing
    • Norf
    • Blacklist.txt
    • RandomAttacks
    • Version Date/Time for Crashinfo
  • RageSoundReader_MP3 had some oop related fixes so that accurate sync actually works
  • X11 Input changes were made, breaking it for some people but fixing polling lines for others

Known Issues

  • Combo resets to 0 when pausing in Replays
  • Combo Graphs sometimes do not convert back to the correct combo numbers due to the way Replay Data is parsed and stored internally. Will be fixed later
  • Life Graphs may either lose detail or become exaggerated in certain situations
  • Mines or dropped Holds/Rolls can cause deviations in the Replay-calculated WifePercent that you see when seeking, pausing, or hovering the offset plot
  • Music rarely doesn’t play if you move quickly in Select Music
  • A very small number of scores may be viewable in Replay mode but will fail horribly. Notably, itsjake’s 1h54m JS 1.4x

I installed the update, but I can’t find the actual launch application. Help would be appreciated!

It’s where you installed it. I’m not sure where else it could be.

Lmao okay thanks

Edit: I was being dumb and I installed the wrong version:sweat_smile:

I’ve just installed the new update and migrated my data to the new version. Everything seems to be fine, until I noticed that “No Mines” is now an invalid modifier? Is this a bug or something? It’s not an invalid modifier before, why the sudden change? The changelog above only stated about “Additive Mines” being invalid. Can somebody please explain it to me? It’ll be very helpful. Thanks in advance!

ever since like 0.60 no mines has been invalid. good thing tbh

1 Like

Thanks for the clarification! I’ve switched skins because of that (my old skin doesn’t show mines at all) and now I think my reading skill is better on this new skin. Neat!