Battly Launcher is an open source launcher for Hytale focused on patch-based updates, mod management, and a modern desktop UX.
- Patch pipeline with
.pwrfiles (download, validate, apply, recover). - Version channels (
releaseandpre-release) with API/CDN fallback support. - Custom client/server patching for community auth and server compatibility.
- In-app mods browser and installer (CurseForge integration).
- News feed with safe fallback behavior.
- Full i18n runtime with locale JSON files.
- Rotating launcher backgrounds with fade transitions.
- In-app game logs viewer (tail 100/200/500, full log, realtime mode).
- Electron + Node.js 20+
- Renderer: vanilla HTML/CSS/JS
- IPC bridge:
src/preload.js - Build flow:
build.js+electron-builder
Main external endpoints in current architecture:
- API config and metadata:
https://api.battlylauncher.com/hytale/config - Patch CDN:
https://cdn.battlylauncher.com/hytale/patches/... - Auth session service:
https://sessions.battly.org
- Windows 10/11 x64
- Node.js 20+
- Internet connection for first setup and patch delivery
Notes for Linux development/testing:
- The launcher supports Linux workflows in services, but game binary compatibility depends on GLIBC and build target.
- If a patch file is downloaded as 0 bytes, the launcher now treats it as invalid and retries/fallbacks.
git clone https://github.com/1ly4s0/Battly4Hytale.git
cd Battly4Hytale
npm install
npm startBuild package:
npm run buildsrc/
|- main.js # Electron main process
|- preload.js # Safe renderer bridge
|- renderer.js # Main UI state and interactions
|- index.html # Main launcher window
|- splash.html # Splash screen window
|- scripts/ # UI helper modules (i18n, navigation, bg rotator)
|- services/ # Domain services (game, patcher, mods, news, logs, versions)
|- styles/ # CSS modules (match, legacy, splash)
|- locales/ # Translation files
|- assets/ # Images, icons, bundled ui libs
|- utils/ # Helpers (logger, sanitizer, integrity)
docs/
|- ARCHITECTURE.md
|- STYLES.md
The launcher now works with explicit channels:
release(official/stable)pre-release(beta)
Selection flow:
- Renderer asks
versionManagerfor available channels and versions. - Main process reads API metadata.
- If metadata cannot be resolved, fallback mapping is used.
- Selected patch is validated before apply.
- Empty or invalid patch files are rejected and retried.
This prevents stale fallback text such as "manifest unavailable" from blocking channel-based selection.
Launch flow (high level):
- Resolve selected version/channel.
- Ensure Java runtime (
services/javaManager.js). - Ensure game files and apply
.pwrpatch if required (services/patcher.js). - Patch client/server binaries (
patchClient/patchServer). - Build auth tokens and launch process (
services/game.js). - Stream stdout/stderr into
services/gameLogs.js.
If launch fails, the user can inspect logs directly from Settings.
Settings include:
- player/account management
- language selection
- GPU preference
- hide launcher on play
- java override
- open game location
- repair game
- open game logs
Game logs modal modes:
- last 100 lines
- last 200 lines
- last 500 lines
- full log (slow on large sessions)
- realtime stream
- Check CDN availability and selected channel.
- Confirm fallback map entries include your platform and target version.
- Delete invalid cached patch (
0 bytes) and retry.
- Trigger Repair Game.
- Verify game path inside
%AppData%/Hytale/instances/.... - Confirm patch apply finished without interruption.
Typical error pattern: GLIBC_2.xx not found.
- Run on a newer distro/runtime with compatible GLIBC.
- Ensure target binary matches your runtime expectations.
If you see Cannot read properties of undefined (reading 'openExternal'), verify preload API exposure and renderer usage for external links.
- Architecture internals:
docs/ARCHITECTURE.md - CSS architecture and conventions:
docs/STYLES.md
When opening a PR:
- Keep IPC changes mirrored in
main.jsandpreload.js. - Add/update i18n keys in all locale files when UI text changes.
- Do not add new inline styles when a module CSS file is available.
- Update documentation when behavior changes (especially launch/patch/version flow).
ISC
Hytale is a trademark of Hypixel Studios. This launcher is an independent community project and is not affiliated with Hypixel Studios.