19e7f619ab
- Remove entire Cleanser system (signal, vars, HUD, input, RPCs, bot AI) - Ghost (Invisible Mode) now bypasses sticky tiles in Gauntlet - Grant Ghost powerup every 2 missions instead of Cleanser charges - Ghost tiles spawn naturally on Gauntlet arena (15% chance) - Bots use Ghost powerup when boxed in by sticky tiles - Players pushed into sticky while Ghost are not slowed - Remove use_cleanser input action from project.godot - Remove CleanserHBox UI from gauntlet_hud.tscn - Bump version to 2.4.2
15 KiB
15 KiB
[2.4.0] — 2026-06-18
- Rebuilt the Gauntlet game mode from the ground up — new wave-based mechanics, arena redesign, and tighter difficulty scaling.
- Added freeze-area VFX — the freeze powerup now shows a visible icy floor spread across the affected tiles.
- Added block-wall VFX — blocked tiles now display a visible barrier effect so you can see the wall.
- Added playerboard scatter VFX — Stop n Go tile-scatter penalty now shows a visible shake effect on your board.
- Fishing Tektons in Freemode now animate — both the character and fishing rod move together in a loop.
- Static Tekton turrets now face the direction they throw and play the throw animation.
- Replaced old animation system with a unified animation pack using original Blender bone names — smoother, more natural character movement.
- Characters now play a carrying blend (legs walk + arms hold) when carrying a Tekton instead of sliding idle.
- Fixed host player name showing as "Guest" when starting Freemode too quickly after login.
- Fixed "Cannot create match when state is JOINING" error when double-clicking the mode button.
- Fixed Tekton pickup prompt [G] to follow your custom keybind settings from the options menu.
- Lobby area label now updates automatically when switching game modes.
- Fixed Freemode spawning the wrong Tekton model — static turrets now use the correct throwing-tile mesh.
- Admin Panel no longer crashes on empty JSON responses from the server.
[2.3.7] — 2026-05-25
- Added Candy Cannon timer, firing mechanics, and 5-shot volleys to Gauntlet.
- Added new game mode: Candy Cannon Survival — dodge candy volleys from a giant cannon in the center of the arena!
- New 20×20 arena with a central Candy Cannon obstacle and three escalating phases: Open Arena, Route Pressure, and Survival.
- Candy Cannon Survival is now selectable from the lobby game mode list with its own dedicated arena.
- The arena now spawns collectible tiles (Hearts, Diamonds, Stars, Coins) with pattern-matching missions — complete goals while dodging candy!
- Integrated automated testing into CI pipeline — all commits now run unit and integration tests via GitHub Actions.
- Set up complete GitHub Actions CI/CD pipeline with build, test, and deployment workflows for Windows, Android, and macOS platforms.
[2.3.5] — 2026-05-22
- Refactored
lobby.gdinto modular helper classes (LobbyChat,LobbyMainMenu,LobbyRoomList,LobbyRoom) to reduce file size and improve maintainability. - Externalized Nakama connection config in
nakama_manager.gd— server key, host, port, and scheme now read from environment variables with ProjectSettings fallback. - Hardened
auth_manager.gdsession encryption — replaced static key with device-specific key derived fromOS.get_unique_id().sha256_text(). - Removed Steam email-based fallback auth; Steam login now requires a valid auth ticket (no more dev-mode workaround).
- Wired
GachaManager.pull()as async (await) ingacha_panel.gdto support server-side gacha rolls. - Removed dummy wallet seeding from
gacha_panel.gd— wallet balances now sourced exclusively from server. - Added
store_typefield to currency purchase payload for IAP receipt routing. - Added server-side IAP receipt validation in
economy.luawith Google Play, Apple, and test-mode receipt support. - Registered
gachaLua module inmain.luaserver entrypoint. - Cleaned up stub methods (achievements, leaderboard, shop wrappers) from
backend_service.gd. - Fixed
featured_bannerstype safety ingacha_manager.gd— guards against non-array server responses. - Removed stale
tiles_armagedon_a1.resfrom project root (asset relocated toassets/models/meshes/).
[2.3.4] — 2026-05-15
- Modernized
GachaPanelandFragmentCraftPanelUI to align with the Tekton dark theme and Lobby aesthetics. - Updated panel borders to use standard 4px content margins, matching the Login and Lobby interfaces.
- Redesigned banner selection tabs (Star/Gold) into compact navigation elements with state-driven styling (Inactive: Cyan, Active: Dark Blue).
- Replaced single-line currency balances with individual themed panels containing icons and right-aligned values.
- Updated
GachaPanelto display both Star and Gold balances simultaneously for better resource management. - Introduced separate UI panels in
FragmentCraftPanelto display Common, Uncommon, and Rare fragment quantities individually. - Refactored
FragmentCraftPanelaction buttons to use the TektonBtnDarkstyle with consistent padding and corner radii. - Fixed nearly invisible "Rates" text in Gacha by changing font color from dark brown to light grey.
- Updated
ProfilePanelcategory tabs to use descriptive text labels ("Head", "Costume", "Gloves", "Accessory") instead of emojis. - Standardized currency and fragment balance panels to be fixed-width and compact, removing excessive horizontal stretching.
- Dynamic
StyleBoxFlatinstantiation for tabs inGachaPanelandProfilePanelto ensure visual consistency across all modal screens.
[2.3.3] — 2026-05-13
- Modernized Shop UI to match Lobby's dark theme; removed orange/brown accents in favor of a neutral dark-grey aesthetic.
- Replaced Label-based currency indicators with pill-shaped containers and high-quality gold/star textures.
- Integrated
RichTextLabelwith BBCode support for inline currency icons across all shop cards (Gold, Star, and Cosmetic). - Implemented active-state highlighting for shop tabs with distinct visual feedback (white bg/dark text for active).
- Added featured banner system with sidebar support for event-based selling and special item spotlights.
- Added "Shop" tab to Admin Panel to manage 3 featured banner slots and their associated event labels.
- Standardized UI margins, button padding, and minimum sizes to ensure layout consistency and prevent text overlap.
- Added server-side RPCs (
admin_set_featured_banners,admin_get_featured_banners) for persistent shop configuration. - Fixed missing dependency errors (sky_sea_01.png and tiles_slot.png) by clearing stale .godot cache and UID references.
- Implemented
_populate_banners()function inshop_panel.gdto fix "Function not found" runtime error.
[2.3.2] — 2026-05-12
- Integrated Mailbox UI into lobby with CanvasLayer overlay (renders above 3D viewport).
- Redesigned
mailbox_panel.tscnto 3-column layout: scrollable mail list | content area | reward slots. - Auto read-all and auto claim-all triggered on mailbox open — no "NEW" tags remain after viewing.
- Fixed
MailboxBtntext glitch — removed text override, replaced withMailBadgeLabel overlay in top-right corner of button. - Fixed
mark_as_read()inMailManager— now persistsread_idsto server via newsave_mail_stateRPC. - Admin Panel: Announcement tab
Target Userfield now accepts username, display name, or user_id with Find button for resolution. - Admin Panel: New Mail Manager tab listing all global and personal sent mails with Type, Title, Sender, Start, Expires, Status columns.
- Admin Panel: Edit dialog for mails uses
date_picker.tscnfor end date and supports reassigning recipient (username lookup + move). - Admin Panel: End Now button sets
end_dateto current timestamp; Delete permanently removes mail from server storage. - Server: Added
admin_list_mailRPC — paginates allinbox/personalstorage objects across all users viastorageList. - Server: Added
admin_update_mailRPC — extract-then-reinsert pattern supports field edits and cross-user mail movement. - Server: Added
admin_delete_mail_serverRPC — hard-removes mail from global config or personal inbox storage. - Server: Added
save_mail_stateRPC — merges clientread_idsinto serverinbox/statewithout clobbering claimed/deleted IDs.
[2.3.1] — 2026-05-11
- Integrated DM tab system directly into the lobby chatbox — DMs now open as closeable tabs inside ChatPanel instead of a fullscreen overlay.
- Removed static DMTabBtn; DM tabs are dynamically created per friend using a scene-local DMTabTemplate with (X) close button.
- Added
@usernameauto-suggest popup in ChatInput — typing@shows a live-filtered friend list; tap/click to select and format as@username (message). - FriendSuggestPanel moved to scene node (editable in editor) with touch/mobile support via item_selected signal.
- DM messages render in the shared GlobalChat RichTextLabel, switched by active tab context.
- Incoming DMs from friends automatically create a new tab without opening the Social Panel.
- Fixed self-DM tab creation — outgoing DM echo no longer triggers a tab for own username.
- Chat timestamps updated to
[ DD-MM-YY - HH:MM ]format; DM history loaded oldest-to-newest (oldest at top, newest at bottom). - Added
/clearcommand — clears DM chat history locally; on Global tab, only admin/owner/moderator can use it. - Admin
/clearon Global also callsadmin_clear_global_chatRPC to permanently delete persisted messages server-side. - Added
admin_clear_global_chatRPC intekton_admin.js— paginates and removes all messages from the channel. - Fixed
theme_override_colorsproperty error on dynamically created Button nodes — replaced withadd_theme_color_override().
[2.3.0] — 2026-05-06
- Fixed boot screen crash caused by
TextureButtoncast asButtonreturning nil (as Button→as BaseButton). - Routed boot screen button
.textassignments through childLabelnodes forTextureButtoncompatibility. - Changed changelog bullet list to BBCode
[table=2]layout for proper hanging indent on wrapped lines. - Fixed changelog
RichTextLabelscroll by removingfit_content = trueflag. - Synced player avatar, username, leaderboard score, and rank to the Room List panel header on open.
- Restored preserved hosting logic — wired Play tab
FreeModeBtnandStopNGoBtnto host room with correct game mode. - Wired Room tab
RoomFreeModeBtnandRoomStopNGoBtnto filter room list by game mode (toggle). - Encoded game mode as
[Mode] Room NNNNprefix in room name for LAN room discovery filtering. - Added
game_modefield to room dictionaries acrossLobbyManager(Nakama + LAN) andNakamaManagermatch listing.
[2.2.1] — 2026-05-01
- Updated daily login logic to support multiple reward types (star, gold, fragments).
- Fixed leaderboard UI to dynamically update with player changes.
- Added full backend Nakama support for daily login claiming and administration.
- Refactored Admin Panel to include a bordered 30-day grid layout with January-December selection.
[2.2.0] — 2026-04-30
- Redesigned Social Panel with a 3-tab layout (Search, Requests, Friends) to fix UI overlap issues.
- Fixed an issue where offline friend requests were not being delivered properly.
- Added persistent storage for Direct Messages, loading previous chat history when opening a DM.
- Improved real-time Nakama socket listening to allow incoming DMs to be received instantly even when the chat tab is closed.
- Fixed account state pollution where friend data leaked when switching users without restarting the client.
- Corrected server-side RPCs for Nakama
send_friend_requestensuring persistent push notifications. - Re-themed Social Panel DM UI to use dark brown fonts for high-contrast readability.
[2.1.9] — 2026-04-29
- Added friend system with friend list, direct messaging, and lobby invitations
- Improved Steam login support
- Added Social Panel with Friends, Global Chat, and Direct Message tabs
- Added ability to add/remove friends from lobby player slots
- Added Invite Friends button to lobby
- Added lobby invite notifications
- Fixed account type display in profile panel
[2.1.8] — 2026-04-24
- Optimized network synchronization with deterministic tile slots and granular board sync
- Removed lag-sensitive server adjacency checks to fix "disappearing tiles" on high-latency connections
- Fixed "No multiplayer peer assigned" crash during host disconnection and cleanup
- Finalized AP system removal, transitioning to a fully real-time authoritative model
- Restored bot mission completion logic
- Stabilized Nakama socket cleanup during match-to-lobby transitions
- Fixed Tekton not rotating toward spawning direction when throwing tiles
- Fixed purple powerup tiles spawning on top of existing layer 1 tiles
- Added animation delay to tile spawning to match Tekton throw animation timing
- Implemented 1-tile perimeter buffer on all spawn areas to prevent edge spawning and stuck gaps
- Tekton NPCs now spawn exclusively in corner zones; players spawn in middle zones
- Fixed outline shader being lost when applying skin material overrides
- Added Unstuck button to pause menu to teleport stuck players to a safe area
[2.1.7] — 2026-04-24
- Upgraded Gacha interface with dynamic CSGO-style sequential reveal animations
- Added an animation skip button for faster 10x multi-pulls
- Fixed a bug where opening the Craft menu from Gacha would show an empty screen
- Stabilized login flow by resetting connection states after failed auto-logins
[2.1.6] — 2026-04-24
- Added Gacha system with Star and Gold banners (1x & 10x pulls)
- Fragment Craft system — collect drops to craft exclusive skins
- Fixed boot screen stuck on "Checking versions..."
[2.4.2] — 2026-07-03
- Replaced the Cleanser mechanic in Gauntlet mode with a Ghost powerup sticky-bypass system.
- Ghost (Invisible Mode) now lets players walk through sticky candy tiles in Gauntlet — no more hard block.
- Players earn a Ghost powerup every 2 completed missions in Gauntlet (replaces Cleanser charge grants).
- Ghost powerup tiles now spawn naturally on the Gauntlet arena (15% chance alongside common tiles).
- Removed Cleanser HUD elements (icon, label, charge counter) from the Gauntlet overlay.
- Removed
use_cleanserinput action — Ghost uses the existing powerup activation keybind. - Bots now activate Ghost powerup when boxed in by sticky tiles instead of using Cleanser.
- Players pushed into sticky tiles while in Ghost mode are no longer slowed.
[2.4.1] — 2026-06-28
- Fixed Gauntlet map layout to remove red unpassable barrier blocks and center blocks. They are now standard walkable floors but act as hard blockers in physics so players cannot pass them.
- Fixed Gauntlet mode to prevent powerups or sticky bubbles from spawning on boundary tiles or under the central cannon.
- Center Candy Cannon now shoots actual projectiles that fly towards sticky cells and leave a VFX trail behind them.
- Added new VFX to the Center Candy Cannon. It now has a glowing pink tank and spinning metallic rings.
- Fixed Gauntlet Cleanser to stack charges instead of capping at 1.
- Cleanser instantly clears a 3x3 AoE of sticky cells and frees any players inside immediately upon activation.
- Added VFX and SFX when purifying cells with the Cleanser (cyan burst particles).
- Added instant visual feedback indicator for Gauntlet Cleanser using popup text when consumed.
- Fixed Gauntlet Cleanser UI phase label layout to ensure it does not overlap with other UI elements.