
Moonlighter is an Action RPG with rogue-lite elements that demonstrates two sides of the coin – revealing everyday routines of Will, an adventurous shopkeeper that secretly dreams of becoming a hero.
Most likely between $5.5M and $15.5M. How we estimate →
Checked against 8 developer-reported games
| Store | Price | Score | Revenue · chart |
|---|---|---|---|
| Steam | $19.99 | 81% | approximately $9.1M |
| PlayStation | $23.99 | 87% | — |
| Xbox | $19.99 | 74% | — |
| GOG | $2.99 | 84% | — |
| Nintendo | $24.99 | — |
Cheapest copy: ≈ $0.67 on Xbox · Türkiye (−97%). Compare 47 prices in 15 markets →
Reviews
Themes across 2206 recent reviews and how positive each mention is. A keyword signal, not full sentiment analysis.
Matched by title. Prices and chart positions are each store's US storefront; Epic charts worldwide. * critic score.
positive critical· bar length = how often the theme comes up
Reviews
захватывающая игра пройдя ее за 2 дня или 16 часов я не пожалел ни об одной минуте в этой игре
explore gather sell repeat
Muy buen juego, entretenido, dinámico, nutrido. Sin duda lo recomiendo.
Топ игра
非常好玩 極度殺時間的遊戲
instead of gaming glm is trying to fix this nice controller bug where i roll and open the map at the same time nice if glm isnt able to fix this its not worth my time lol 3h of debugging for nothing wtf glm finally fixed it after i dont know how many approaches we took here is the final fix!: @devs! please feel free to incorporate and share your game is great! Here's a short report you can post: --- **Fix: DualSense LT/L2 opens map in Moonlighter on Linux (native build)** **Setup:** Fedora 44, Steam Flatpak, DualSense via USB, Moonlighter native Linux build (not Proton) **Root cause:** The `hid_playstation` kernel driver reports both an analog axis (`ABS_Z`) AND a digital button (`BTN_TL2`, evdev code 312) when you press LT. Moonlighter's Unity 2019.2 legacy input system reads `BTN_TL2` as joystick button 6 and hardcodes it to "open map". There's no in-game setting to change this because it's not in the bindings file — it's a hardcoded default mapping. Steam Input doesn't help because the native Linux build reads `/dev/input/js0` (the raw DualSense) directly, ignoring the virtual XInput controller Steam creates on `js2`. **Fix:** A Python script using `evdev` that grabs the real DualSense and creates a virtual copy that forwards ALL events except `BTN_TL2` and `BTN_TR2`. The analog trigger axes (`ABS_Z`/`ABS_RZ`) still work, so LT/RT function as proper analog triggers. The digital button that triggers "open map" never reaches the game. ```python # Requires: pip install evdev # Run with: sudo python3 dualsense-filter.py import evdev from evdev import ecodes, InputDevice, UInput dualsense = None for path in evdev.list_devices(): dev = InputDevice(path) if 'DualSense' in dev.name and 'Touchpad' not in dev.name \ and 'Motion' not in dev.name and 'Headset' not in dev.name: dualsense = dev break dualsense.grab() SUPPRESS = {ecodes.BTN_TL2, ecodes.BTN_TR2} # 312, 313 caps = dict(dualsense.capabilities()) caps[ecodes.EV_KEY] = [b for b in caps[ecodes.EV_KEY] if b not in SUPPRESS] if ecodes.EV_SYN in caps: del caps[ecodes.EV_SYN] if ecodes.EV_FF in caps: del caps[ecodes.EV_FF] ui = UInput(caps, name="DualSense Filtered", vendor=0x054c, product=0x0ce6) for event in dualsense.read_loop(): if event.type == ecodes.EV_KEY and event.code in SUPPRESS: continue ui.write(event.type, event.code, event.value) ``` **Notes:** - Disable Steam Input for Moonlighter (Properties → Controller → Forced Off) so the game reads the virtual device directly - The script must run as root (needs `grab()` and `UInput`) - The real DualSense is grabbed, so no other app can read the raw device while the script runs - Same fix likely works for other Unity games with hardcoded DualSense button mappings
great game
estafas a la gente, me siento politico
Имба
I love this game! It was free, but I'm going to buy the DLC and probably the sequel too!