Hello everyone – Open Hexagon 2.0.4 is now available!
This is the third official update since the Steam release, and it focuses on engine and performance improvements, and empowering level creators with a new in-game Lua console, pack dependencies, and many new Lua functions.
Enjoy!
(For any question or feedback, please get in touch with me on our official Discord.)
Major Changes
Changed ticks per second from 120TPS to 240TPS, improving the game's precision during collision detection and movement
Level packs can now depend on other packs in order to promote code reuse and avoid repetition
Change Lua runtime to LuaJIT, having 20x better performance on average
- Caveat: supports features only up to Lua 5.1
Added in-game debugging and experimentation tools in Debug Mode:
- (F1): toggle Lua console, allowing to run code on demand and track variables in real-time
- (F2): pause and un-pause the game – Lua console is usable when the game is paused
New Levels
- Added a new work-in-progress official level pack, Orthoplex, containing:
- Arcadia: an unusual level with wavy patterns made out of custom walls
- Bipolarity: fast-paced barrages and forced 180° player swaps
Level Improvements
Perfectly synchronized pulse and beatpulse with the music for all built-in levels
- Exceptions: Golden Ratio and Acceleradiant, as they will be reworked in the future
Moved Baby Steps to a new pack, Tutorial, making its role more clear to new players
Added a graphical transition effect to the player's triangle when focusing/unfocusing
Minor Improvements
Added a few milliseconds of ignoring input after death to avoid accidental restarts
Added new Show Level Info option that displays information about the current level in the bottom-left corner of the screen, useful for streaming/recording
Added options to hide the timer and status text, useful for cinematic recordings
Added -printLuaDocs command line argument to print out Lua documentation
Bug Fixes
Fixed crash when attempting to change keyboard bindings
Fixed broken antialiasing menu setting, now supports up to 16x
Fixed t_eval crashing the game on Lua error
New Lua Functions
(Please refer to the Lua reference on the official wiki for a more detailed explanation.)u_execDependencyScript: to load a script from one of the pack's dependencies
- As opposed to u_execScript, which loads a script from the current pack
l_[set/get]ManualPulseControl: when set to true allows Lua scripts to manually control pulse values
- l_[set/get]Pulse
- l_[set/get]PulseDirection
- l_[set/get]PulseDelay
l_[set/get]ManualBeatPulseControl: when set to true allows Lua scripts to manually control beatpulse values
- l_[set/get]BeatPulse
- l_[set/get]BeatPulseDelay
l_[get/set]pulseInitialDelay: control initial delay before any pulse effect starts, useful to sync up a level with the song's beat or to wait until the music reaches a certain point
Custom wall optimized functions
- cw_createDeadly: more optimized way of creating a deadly custom wall and getting back an handle
- cw_createNoCollision: more optimized way of creating a no-collision custom wall and getting back an handle
- cw_moveVertexPos: more optimized way of moving a custom wall's vertex by a specified offset
- cw_moveVertexPos4Same: very optimized way of moving all vertices of a custom wall with the same offset
- cw_[set/get]VertexPos4: more optimized way of controlling all vertex positions of a custom wall
- cw_[set/get]VertexColor4: more optimized way of controlling all vertex colors of a custom wall
- cw_setVertexColor4Same: very optimized way of setting all vertex colors of a custom wall to the same color
u_inMenu(): returns true if a Lua script is being executed from the menu screen, false otherwise
s_getMainColor, s_getPlayerColor, s_getTextColor, s_get3DOverrideColor, s_getCapColorResult, s_getColor: return a RGBA tuple of the current style's corresponding color
Lua Function Cleanup
- Removed unused pulseDelayHalf and related Lua functions
Miscellaneous
- Added a pulseHelper.html JavaScript tool in the GitHub repository to help level makers calculate pulse values that are in sync with the music's BPM
- Beatpulse delay should be set to 3000/BPM (or one of its multiples)
- Pulse values can be calculated through the tool – the displayed equation should be as close to 3000/BPM (or one of its multiples) as possible
Community Spotlight