Android app for Wuthering Waves (WuWa) performance optimization — analyzes your device log, generates optimized Engine.ini configs for FPS boost and graphics tuning, and deploys them via ADB/Shizuku/Root. Includes CVar tuning, SmartBrain scoring, Pity Tracker, Battle Stats, and Player Profile. Designed for low-end to flagship Android devices.
⚠️ DISCLAIMER This project is NOT affiliated with Kuro Games or Wuthering Waves. It is a fan-made tool for editing game configuration files. Modifying game files may be subject to the game's Terms of Service. Use at your own risk. The creator is not responsible for any account actions, bans, or issues that may arise.
- Download the latest APK from Releases.
- Install on your Android device (enable "Install from unknown sources").
- Open the app — accept Terms of Use.
- Grant storage permission when prompted (for backups).
- Connect using one of the 4 access methods below.
The app needs to read/write game config files in Android/data/com.kurogame.wutheringwaves.global/.
Best for: Non-rooted users. App implements ADB wire protocol directly — connects to localhost ADB daemon. (maybe broken yeat)
Setup:
- Enable Wireless Debugging in Developer Options
- Tap Connect in app — auto-scans ports 37000-44000
- Accept RSA fingerprint on phone
- On Android 16+, may need re-pair after reboot (auto key regeneration handled)
Best for: Non-rooted users with Shizuku installed.
Setup:
- Install Shizuku
- Start Shizuku service
- Select Shizuku mode in app → Permit → Connect
Best for: Rooted devices (Magisk, KernelSU, APatch).
Setup:
- Select Root mode
- Test Root → grant in root manager
- Connect
Best for: Quick one-off edits. Limited — no shell access, no config generator.
Setup:
- Select SAF mode → Pick Dir
- Navigate to
Android/data/com.kurogame.wutheringwaves.global/files/UE4Game/Client/Client/Saved/Config/Android - Allow
- Backend Status — current access method, connection state. Tap chip to cycle methods.
- Manual ADB — enter IP:port for Wireless Debugging
- Custom Config — pick
.inifiles to apply (Engine.ini, DeviceProfiles.ini, GameUserSettings.ini, Scalability.ini, Hardware.ini). Auto-backup before applying. - Delete Config Files — removes all 5 config files from game directory
- Quick Actions — Backups, Collect Client.log, Config Generator, Cancel
- Real-time log viewer with color-coded messages, save icon to export to
Downloads/WuWaConfig/
All user-facing files (saved logs, collected Client.log, config backups) are stored in
Downloads/WuWaConfig/— accessible from any file manager.
- Device Log — reads
Client.logfrom device (chunked, XOR-decrypted). Shows animated progress with cyberpunk glitch effect. - Import Log — pick a saved
.logfile for offline analysis - Analysis displays: device model, GPU, API, Android version, RAM, FPS, thermal events, texture errors, OOM, forbidden CVars, active CVars
Algorithm evaluates device from 0-100:
| Signal | Impact |
|---|---|
| GPU tier | +30 to -20 |
| RAM | +8 to -15 |
| Vulkan | +8 |
| FPS drops | -6 to -18 |
| Thermal throttling | -5 to -20 |
| GPU OOM | -12 to -30 |
| Frame drops | -5 to -10 |
| Forbidden CVars | -5 each (can toggle off) |
| Unknown CVars | -5 if >5 in log |
| Active CVars differ from game defaults | +5 if well-optimized, -8 if room to improve |
| Combined signals | -5 to -6 |
Recommendations: Ultra (80+), High (75+ / 70+), Balanced (55+ / 40+), Performance (<40), Potato (≤20 or OOM ≥2)
| Preset | Screen % | Shadow | SSR | View Dist | Foliage LOD |
|---|---|---|---|---|---|
| POTATO | 50% | 0 (128) | 0 | 0.3 | 0.4 |
| PERFORMANCE | 60% | 0 | 0 | 0.5 | 0.7 |
| BALANCED | 100% | 2 | 1 | 1.5 | 2.0 |
| HIGH | 100% | 4 | 2 | 2.0 | 2.5 |
| ULTRA | 100% | 5 | 4 | 3.0 | 3.0 |
120 FPS unlock, Ultra quality unlock, VSync, Auto cooling, Force Vulkan safety, HZB occlusion, Disable fog/CA/outlines/blur/bloom/auto-exposure/SSR, Allow restricted CVars, Hardware.ini generation with device-tier CVars
Overworld / Domain & Tower
Toggle each: Engine.ini, DeviceProfiles.ini, GameUserSettings.ini, Scalability.ini, Hardware.ini
Single button — generates configs with automatic CVar optimization: redundant lines matching game defaults are commented out (; REDUNDANT), and unknown CVars not in the UE4 binary dump are flagged (; UNKNOWN CVar). Shows review dialog with monospace text editor. Edit CVars inline, then deploy from dialog or close without deploying.
Reads device Engine.ini for [Core.System] paths, regenerates with edits, pushes to device, refreshes KuroConfigMonitor hashes. Automatic deploy verification — pulls fresh Client.log, cross-references deployed CVars against engine-recognized ConfigMonitor CVars, shows accept/reject badge with color-coded tag chips: N redundant (matches game defaults), N unknown (not in UE4 binary dump), N monitored (ConfigMonitor-tracked).
Iterative benchmark loop (up to 5 rounds): deploys preset → captures FPS via logcat → adjusts preset/options → redeploys until target FPS reached.
- Fetch Gacha History — reads Client.log for Convene URL, auto-retries up to 6 times (10s apart). Parses URL and fetches full pull history from Kuro's gacha API.
- Summary: total pulls, ★5/★4 counts, avg pity per rarity
- Per-pool breakdown: pulls per banner type, ★5/★4 counts per pool
- Pity Prediction: per-banner 50/50 or Guaranteed status, last ★5 details, estimated next ★5 pity, soft pity detection (≥66 ★5 / ≥57 ★4), hard pity countdown, 4★ tracking
- Result History: last fetch result saved locally with 12-hour auto-expiry. Load or clear from the history banner.
- Background Polling: start foreground service to keep polling while app is minimized. Posts notification when URL found.
- Read-only — zero footprint, game cannot detect
- UID, Server, Level header
- Game Progress: Tower floor, Weekly Rogue score, Battle Pass status
- Game Info: Version, Language, Login device ID, Last login time
- Config bars: Engine.ini / DeviceProfiles.ini / GameUserSettings.ini setting counts
- Cached — profile data stored locally. Auto-shown on revisit; Refresh button re-fetches from device.
- Parses
Client.logfor CN keyword battle counters - Cards: Combat, Exploration, Economy, Social, System
- Each shows stat chips with current values
- Requires gameplay for non-zero data
- Auto-backup — created before any config write
- Manual backup — named backups from Backups screen
- Restore — push saved files back to device
- Delete — remove old backups
- Also saved as
.inifiles inDownloads/WuWaConfig/Backups/{name}/for browsing
- Theme: System / Light / Dark
- Custom Background: Image (jpg/png/gif) or Video (MP4). Opacity slider 5-70%. 15% gradient overlay. Persistent URI.
- Backup Directory changer (also mirrored to
Downloads/WuWaConfig/) - Device info: Chipset, RAM, API level
- App version, Links (GitHub, YouTube, Telegram, Discord)
app/
└── src/main/java/com/wuwaconfig/app/
├── MainActivity.kt # Navigation (7 screens), permissions
├── WuWaConfigApp.kt # Application class, backend holder, background settings
├── adb/
│ ├── AdbProtocol.kt # Wire protocol message encode/decode
│ ├── AdbClient.kt # TCP client, auth handshake, shell, drainTrailingWrte
│ ├── AdbCrypto.kt # RSA key generation, signing, SSH format
│ └── PortScanner.kt # Port scan 37000-44000 + 5555, 30s cache
├── backend/
│ ├── AccessBackend.kt # Interface + AccessMethod enum
│ ├── AdbBackend.kt # ADB shell, run-as fallback, push via base64
│ ├── RootBackend.kt # su -c, 10s timeout
│ ├── ShizukuBackend.kt # Shizuku API (reflection), 15s timeout
│ └── SafBackend.kt # DocumentFile, empty-path filter, 3-strategy fallback
├── config/
│ ├── ConfigGenerator.kt # INI generation, CVar overrides, CvarDatabase optimization, Scalability.ini
│ ├── CvarDatabase.kt # Loads 3 CVar files from assets (libUE4_cvars.txt, config_monitor_cvars.txt, config_monitor_values.txt), lookup + optimization + SmartBrain scoring
│ ├── ConfigManager.kt # Device I/O, backups, logs, profiles, battle stats, hashes
│ ├── LogParser.kt # XOR decryption, Convene URL extract, battle stat parse
│ ├── SmartBrain.kt # Scoring engine, recommendation
│ ├── ForbiddenCvars.kt # 31 known Kuro restricted CVars + strip/filter helpers
│ ├── BenchmarkTuner.kt # Auto-tune: FPS capture, preset adjustment
│ ├── GachaApi.kt # Gacha API client (HTTP POST, pity calc, predictions)
│ ├── GachaHistoryStore.kt # Local gacha history persistence (12hr TTL)
│ ├── ProfileStore.kt # Profile cache persistence
│ └── ChipsetDetector.kt # Local SoC detection
├── model/
│ ├── GachaRecord.kt # GachaRecord, GachaPool, GachaData, PityPrediction, GachaHistoryEntry
│ ├── PlayerProfile.kt # Profile data class
│ ├── BattleStats.kt # BattleStats data class
│ ├── LogInfo.kt # Parsed log data
│ ├── PresetModels.kt # CvarEntry, GameMode, GeneratorOptions (5 file toggles + allowRestrictedCvars), GeneratedIni
│ ├── GamePaths.kt # Directory paths, hash monitor config
│ ├── ConfigPreset.kt # ConfigFile, ConfigBackup
│ └── VerificationReport.kt # Deploy verification: accepted/rejected CVars + CvarDetail (isKnown, isMonitored, gameDefault, matchesDefault)
├── service/
│ ├── AdbConnectionService.kt # ADB foreground service
│ └── GachaPollService.kt # Background gacha polling service
└── ui/
├── MainViewModel.kt # Shared ViewModel (~880 lines)
├── components/
│ └── Components.kt # GlassCard, GradientBackground, GlitchText, GlassButton, etc.
├── screens/
│ ├── HomeScreen.kt # Backend control, actions, log viewer
│ ├── ConfigGenScreen.kt # Analysis, presets, options, auto-tune, 4-tab review
│ ├── PityScreen.kt # Gacha fetcher, summary, predictions, history
│ ├── ProfileScreen.kt # Player profile view (cached)
│ ├── BattleStatsScreen.kt # Battle stats from Client.log
│ ├── BackupScreen.kt # Backup list + CRUD
│ ├── SettingsScreen.kt # Theme, backgrounds, info
│ ├── SetupScreen.kt # First-run setup
│ └── TermsScreen.kt # Terms of use
└── theme/
├── Color.kt # Neon palette + glass colors
├── Theme.kt # Dark/Light Material3 schemes
└── Type.kt # Typography
- Language: Kotlin
- UI: Jetpack Compose + Material 3
- Architecture: MVVM (ViewModel + StateFlow)
- Navigation: Jetpack Navigation Compose
- Image loading: Coil
- Video playback: Media3 ExoPlayer
- Backends: Root / ADB (in-app protocol) / Shizuku API / SAF
- Serialization: Gson
- Min SDK: 26 | Target SDK: 34
Set these topics on the repo for better search visibility: wuthering-waves, wuwa, android, fps-boost, engine-ini, config-optimizer, gacha-tracker, pity-calculator, kuro-games, mobile-gaming, performance, android-optimization, ue4, unreal-engine-4, adb, shizuku, gaming-tool
Additional keywords: game-config-tool, fps-unlock, graphics-tuning, cvars-editor, client-log-analyzer, wuthering-waves-android, smart-brain-scoring, config-monitor, kuro-config, mobile-game-booster, gacha-history, genshin-alternative, open-world-mobile, wuwa-mobile-config, wuthering-waves-optimization, engine-ini-tweak, deviceprofiles-ini, vulkan-optimization, thermal-fix, low-end-booster, auto-tune-wizard, fps-benchmark, snapdragon-gaming, adreno-tuning, mali-gpu-config, shizuku-tool, adb-config-deploy, kuro-monitor-hash, cvar-database
Copyright (c) 2026 Player42