Monthly Development Report: Duriano
1. Executive Summary
May was a performance, polish, and platform-readiness month for Duriano, continuing the rapid post-launch cadence with seven patch releases (v1.0.14 through v1.0.20). The month was driven by three themes: a large-scale UI/addressables optimization pass to lift mobile and low-end performance, the introduction of national flags and platform icons across leaderboards and player names, and the completion of the analytics + iOS ATT (App Tracking Transparency) privacy stack. Xbox GDK auto-sync and Jenkinsfile hardening rounded out platform and CI/CD work.
Key Achievements:
- Releases: Shipped 7 versions (v1.0.14 – v1.0.20), averaging roughly a release every four days.
- UI Optimization: Migrated UI to a safe Addressables system, applied UI scaling per-addressable, introduced SortOrder-based UI ordering, and added mobile renderScale + lower-resolution display settings.
- Nation Flags & Platform Icons: Added nation-flag selection, flag/platform-icon display on player names and the Top 3, and wired nationalFlag into the ranking payload with a fallback.
- Analytics & Privacy: Completed the GA4 + GameAnalytics event suite (IAP, achievements, upgrades, daily rewards) and stood up the full iOS ATT prompt flow with deferred analytics init.
- Platform/CI: Xbox Unity-version auto-sync to GDK, cross-platform Jenkinsfile (-buildTarget args), build caching, and Mac-compatible shell stages.
2. Gameplay & Mechanics
- AutoGod Skill: Added a function for the Auto God Skill.
- Challenge Activation: Added a 2-second delay to chamber start when a challenge is activated, smoothing the transition.
- Stat Reset Fixes: Fixed Item and Fate stats resetting on death, and prevented item effects from persisting incorrectly across runs.
- Ability & Indicator Fixes: Fixed ability aegir06, the RockTrap indicator, the indicator flow, and an achievement ("dancin") unlock-timing issue.
- Crash & Softlock Fixes: Resolved a game crash from eir02, a stuck-after-submit-chamber softlock, and a difficulty-selection bug.
3. UI & Performance Optimization
- Addressables Migration: Built UI infrastructure for Addressables, implemented a safe addressable UI system (fixing a hide crash), and released addressables after scene changes to cut memory.
- UI Scaling & Ordering: Applied UI scaling to each addressable UI and ordered both spawned and direct UIs by SortOrder, including a main-UI ordering pass and pause-menu navigation fix.
- Mobile RenderScale: Added mobile RenderScale settings (40%–100%) and lower display resolutions (640×400 16:10, 854×480 16:9, 800×600) for low-end devices.
- Particle Optimization: Capped max particles in scene, turned off cast shadows and light probes on particles, and disabled particle objects where unused.
- UI Bug Fixes: Resolved game-over/boss-defeated UI not showing, shop display transitions, the augment caution popup, load-resolution bug, game-result info, first-launch detection (avoiding settings reset on awake), and UI event cleanup / missing-reference protection.
4. Ranking, Nation Flags & Platform Icons
- Nation Flag Selection: Added nation-flag selection with a polished selector UI, and refactored player-name and flag data operations into GameData.
- Leaderboard Display: Added flags/platform icons in front of player names, the Top 3, and default-flag fallbacks; aligned leaderboard fetcher initialization and pre-initialized the server leaderboard.
- Ranking Integrity: Added a nationalFlag fallback and API payload for the leaderboard, and protected against the LeaderboardFetcher instance occasionally being null.
5. Analytics & iOS ATT (Privacy)
- GA4 Event Suite: Added analytics for IAP payments, achievements (unlock), upgrades, daily rewards, and main game events; added a Game Analytics Wrapper initialized in the launch scene with lower-case event-name enforcement and logger output.
- iOS ATT Flow: Added ATT for iOS, deferred the ATT prompt and synced analytics initialization to it, waited for ATT before local-network use, and handled analytics running before ATT is shown.
- iOS Compatibility: Installed the iOS 10.4 support package, added the Objective-C exceptions compile flag, fixed the iOSCloudBridge plugin and a non-iOS compiler error, and removed redundant user-tracking requests.
6. Backend, CI/CD & Platform
- Version Releases: Shipped 7 builds — v1.0.14 through v1.0.20 — including the v1.0.20 iOS app-id override.
- Xbox: Xbox Auto-Sync now reads the Unity version from the asset file (not an absolute path) and syncs to GDK.
- Jenkinsfile Hardening: Added -buildTarget to all platform build commands, enabled build caching across Jenkinsfiles, improved environment-variable handling and Windows compatibility, and added Mac-compatible shell stages.
- API Client: Automatically forced the Prod URL in release builds and encrypted the SendRequest API payload; added a websocket-based OnlineUserTracker.
7. API / Backend (Duriano API)
- Request Signing: Added HMAC-SHA256 signature-verification middleware for POST/PUT requests, with a controlled bypass for internal Google Cloud Tasks and a backward-compatibility bypass for older clients (with TODOs to remove it).
- National Flags: Added nationalFlag to the ranking and updated the player-name systems to support the new client flag flow.
- Database: Synced Firestore indexes from production and updated the index for the getLeaderboard filter.
- Config & Docs: Enforced dev deployment by default, fixed Cloud Tasks to dynamically use the current project ID, fixed auth-middleware lint, and added a Security & API Signing section to the README.