Skip to content

Start typing to see game suggestions. This only suggests apps that have a store page.

Only apps with a store page are suggested. Enter Submit to view all results. Ctrl+Enter View and filter in instant search.
Close ×

Open Hexagon update for 29 March 2021

Open Hexagon 2.0.4 is now released!

Share · View all patches · Build 6454216 · Last edited by Wendy

Patchnotes via Steam Community

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.


(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


  • 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

Check out the Open Hexagon - Custom Level Aesthetics video, showcasing levels from two excellent packs

  • Polygonal Cubics, by Babadrake
  • The Travel Pack, by Syyrion


Windows Content Depot 1358091
  • Loading history…
SteamDB has been running ad-free since 2012.
Find out how you can contribute.
Open link