Releases: playstructs/structsd
Quantillia v0.16.0
This month we tackled some fundamental features that structsd would need in place to graduate from a testnet chain, especially around gas handling and upgrades. We snuck a couple more gameplay fixes in there too.
| Item | Category | Reporter |
|---|---|---|
| Attack Run not dealing damage | gameplay, bug | jpeg |
| Planet Explore should require Fleet onStation | gameplay, suggestion | jpeg |
| structsd Makefile | feature | abstrct |
| Free x/staking Msgs | bug, feature | abstrct |
| Guild UGC Moderation | api, feature | abstrct, netlag |
| Custom Ante Handler Design for Structs Chain | consensus | abstrct |
| Attacks cannot easily use auto Gas | bug, consensus | abstrct, netlag |
| Implement Cosmos SDK Upgrade Handler System | consensus | abstrct |
Changelog
- 5f49b3d Added UGC moderation functionality for guilds
- a1ec2db Added UGC moderation functionality for guilds
- 964460c Added a new fleet is on station requirement for planet exploration.
- 6466e67 Added more work to the custom ante to make sure staking module queries were getting enough gas to complete. They're more complicated than normal due to the hooks they run.
- 7cfdd26 Adding in proper upgrade path framework
- e63915d Adding more strict parameters to name and pfp setting. Adding moderation events. Cleaning up some ante code.
- ca31f7e Adding new PDC related tests
- 34fe936 Custom ante handler for Structs. All Structs gameplay txs (allocations, substations, guilds, membership, permissions, ranks, reactors, address registration, proxy join, planet exploration, struct building, fleet movement, combat) work as free transactions with no fees. Standard Cosmos operations (bank sends in Phase 4b) work with normal gas fees. All 80+ message types are being processed correctly through the custom decorator chain
- 1115efe Fixed a gameplay issue where starfighter damage expectations where between 0-3 instead of 1-3. New struct type attribute for guaranteed shot is available for struct types that require a minimum.
- aacca6d Fixing an ante bug relating to reactors
- 3da6f3b Long time coming but finally putting a proper build system in place.
- 4be9cb7 Small improvements to the ante
- 36abe45 resolving a number of bugs/flaws in the latest code changes after deep review
- 45387da updating readme with make details.
Pyrexnar
Like Opheliora but far less tragic.
- Fixed bug in Proxy Join
- Fixed tests that should have been there in the first place
Full Changelog: v0.14.0-beta...v0.15.0-beta
Opheliora
This release is a doozy. It's a significant step towards a mature codebase with working economic tooling and a battle engine tuned for fun.
Combat Engine Rewrite
The attack system was architecturally overhauled. All combat resolution logic has been centralized into AttackContext as a dedicated combat engine, replacing the previous approach where combat methods were scattered across StructCache. Every combat method now returns a typed result struct (EvasionResult, BlockResult, VolleyResult, CounterResult, RecoilResult, PlanetaryDefenseResult), and zero event writes happen during resolution. Event construction is consolidated into exactly two methods: EndShot for per-target details and Finalize for the overall attack event.
This restructuring was necessary to fix a bug where multi-shot weapons (like the Starfighter's Attack Run with 3 projectiles) were aggregating all shots into a single EventAttackShotDetail row. Damage totals were mechanically correct, but per-projectile hit/miss breakdowns were invisible to clients. Each projectile now gets its own event row, matching the proto's intended repeated EventAttackShotDetail design.
Counter-Attack Overhaul
The counter-attack system received several interrelated fixes. Structs now track counter-spent state per attack, ensuring each defender counters at most once. The ordering has been corrected so defensive counter-attacks occur before block attempts, and counter-attacks now properly fire even on evaded shots. Attack Runs were being countered too aggressively — all of these changes together bring the combat loop in line with the intended game design.
Allocation System Rework
The allocation system has been significantly reworked. The controller identifier is now PlayerId rather than an address, account abstraction has been added, and source capacity underloads are properly guarded. Allocations on import have been fixed (consensus-breaking), and provider allocations now validate the controller correctly. This touches the economic core of the chain.
Permission System Overhaul
Permissions have shifted from struct-level to a rank-based model. Guild rank now gates capabilities like kicking members. Struct-specific permissions have been removed in favor of the new system, and orphaned permissions are cleaned up. This is a meaningful governance change for guilds.
Additional Fixes
targetPlayerId moved from EventAttackDetail to EventAttackShotDetail in the proto (API-breaking for clients parsing attack events)
Planetary Defense Cannon return value was never being set — now correctly reports when cannons fire
EvadedCause was being populated even on failed evasion attempts — now only set on successful evasion
All combat logging downgraded from Info to Debug to reduce production noise
commitAll() reordered for indexer compatibility
| Issue | Type | Author |
|---|---|---|
| Update Attack Events | API | netlag |
| Attack-Run countered too aggressively | Gameplay | netlag |
| Structs can only Counter-Attack once per Attack | Gameplay | abstrct, netlag |
| Planetary Defenses now accurately stack | Gameplay | abstrct |
| Guild Rank limits Guild Kick Capabilities | Gameplay | abstrct |
| Prevent Defender Block on evaded shot | Gameplay | abstrct, jpeg |
| Defensive Counter-Attack should occur before Block | Gameplay | netlag |
| PDC was counter-attacking when should be prevented | Gameplay | jpeg |
| Counter-Attack should fire on missed shot | Gameplay | jpeg |
| Guard Source Capacity Underload in Allocation | Suggestion | abstrct |
| Use AttackContext for managing attack results | Suggestion | abstrct |
| Delete orphaned permissions | Suggestion | abstrct |
| New Guild Rank Permission System | Suggestion | abstrct |
| Remove Struct specific permissions | Suggestion | abstrct |
| Proxy Join Error Handling Improvements | Bug | abstrct |
| Address Register Error Handling Improvements | Bug | abstrct |
| Allocation Controller needs validation | Bug | abstrct |
| Provider Allocations use controller incorrectly | Bug | abstrct |
| re-order commitAll() for indexer | Bug | abstrct, netlag |
| Add account abstraction to Allocations | Feature | abstrct |
| Allocation Refactoring | Feature | abstrct |
| Fix Allocations on Import | Consensus,Feature | abstrct |
| Allocation Controller now PlayerId | Core | abstrct |
| Improve Permissions | Core | abstrct |
Full Changelog: v0.13.0-beta...v0.14.0-beta
Nebulon
Mystigon
Various bug fixes, gameplay tweaks, and a casual complete refactoring of the caching framework.
| Issue | Type | Requester |
|---|---|---|
| Energy issue during Build Cancel | Bug | jpeg |
| GoOffline() running too often | Bug, CLI | abstrct |
| Improved test coverage | Consensus | abstrct, netlag |
| Improved genesis import | Bug, Consensus, Core, Feature | abstrct, jpeg, netlag |
| Agreement Update bug | Bug | abstrct |
| Provide Create allowed for empty denom on Rate | Bug | abstrct |
| CounterAttack not doing a full readiness check | Bug, Gameplay | jpeg |
| Fix AttackCounterable as Struct-Level Override | Bug, Gameplay | jpeg |
| Add seizedOre to raid status | Feature | netlag |
| Jamming satellite effects linger after death | Bug | jpeg |
| Randomness Checks seem wrong | Bug | jpeg |
| Error on Fleet Movement to Populated Planet | Bug, Core | netlag |
| General Context Manager | Feature | abstrct |
| Energy Bug during PlanetExplore | Bug, Economy | abstrct |
| Possible Fleet PeaceDeal issue | Bug, Core | abstrct |
| Consistency Bug | Bug | abstrct, netlag |
| Always Delete Attribute on zero? | Suggestion | abstrct, netlag |
Full Changelog: v0.11.0-beta...v0.12.0-beta
Luxoria
This release is badass. Huge upgrades, squashed bugs, and fun gameplay changes.
| Issue | Type | Requester |
|---|---|---|
| Zero block start hashing issue | Bug | AdamBomb, Dan, LuckyStar, jbowers, jpeg |
| Upgrade to IBC v10 | API, Consensus, Core, Economy | abstrct |
| Upgrade to Cosmos SDK v0.53.5 | Consensus, Core | abstrct |
| Open Hashing by Default | Core, Feature | abstrct |
| Improved error logging for indexing | Core, Suggestion | netlag |
| Missing Returns in Fleet Readiness Checks | Bug | abstrct |
| Double Commit on Same Target | Bug | abstrct |
| Target Struct Existence Not Validated | Bug | abstrct |
| Missing Weapon System Validation | Bug | abstrct |
| Missing Events for Indexer | Bug, Feature | abstrct, netlag |
| Object Deletion Inconsistencies | Bug | abstrct, netlag |
Kalyptrix
Hopefully longer lived than Junctiondale.
Fixes:
- New Command ship now knows where it is.
Junctiondale
The first release ready for Sticky State! New gameplay changes to remove friction from onboarding, and to keep the action moving smoothly.
| Issue | Type | Requester |
|---|---|---|
| Bug during Raid Attacker Defeated | Bug | netlag |
| Struct Activate requires unfun high Charge Bar | Gameplay | abstrct, netlag |
| Improve Import/Export for Genesis | Core | abstrct |
| Remove Online requirement from build cancel | Gameplay | abstrct |
| Event missing for Struct Defender Clear | Bug | netlag |
| Gift an initial Command Ship | Economy, Feature, Gameplay | jpeg |
| Remove charge requirement from build cancel | Gameplay | abstrct |
Full Changelog: v0.9.0-beta...v0.10.0-beta
Isoteria
A number of bug fixes and gameplay tweaks all needed for a smoother experience in the Structs UI and beyond.
| Name | Type | Requester |
|---|---|---|
| New PermissionHash | Core, Feature | abstrct |
| Panic on Aimless Allocations | Core, Economy | abstrct |
| Cosmos Simulation Coverage | Core, Feature | abstrct, netlag |
| Improving Test Coverage | Core | abstrct |
| Update Guild Membership tx handlers | Core | abstrct, cisphyx, netlag |
| Implement guild_membership_cache.go | Core | abstrct, cisphyx, netlag |
| Slashing and Infusions | Consensus | abstrct, netlag |
| Stale Infusion Cleanup | Core | abstrct, netlag |
| Create InfusionCache layer | Core, Feature | abstrct, netlag |
| Add new Messages to AutoCLI | Bug, CLI | abstrct, netlag |
| Resolve Defusion/Infusion Miscalculation | Bug | abstrct, netlag |
| Remove Charge Bar hits for all Hash functions | Gameplay | abstrct, jpeg, netlag, trevor |
| Account abstraction sendTokens wrapper MsgPlayerSend | Core, Feature | netlag |
| Difficulty calc issue in Compute | Bug | jbowers |
| Guild Request/Invite Issue | Bug, Consensus | abstrct, cisphyx |
What's Changed
Full Changelog: v0.7.0-beta...v0.9.0-beta
Helionar
Latest changes for testnet 103. Bug fixes, improved information/state propagation for indexing, and improved workflow changes for managing alpha infusions and guild membership.
| Issue | Type | Author |
|---|---|---|
| EventProviderAddressDetail format incorrect | Bug | abstrct |
| Struct Sweep Delay | Gameplay | netlag |
| Merge Redelegate and GuildJoin | Suggestion | jpeg,netlag |
| Account Abstraction Wrappers for Staking functionality | Feature | netlag |
| GetInfusionByID Split check | Bug | abstrct |
| Improve logging system (Phase 1) | Suggestion | netlag |
| Add retreat event | Core,Feature,Suggestion | netlag |
| EventGuildBankAddres format incorrect | Bug | abstrct |
| Bond issues stake reward | Bug,Economy | abstrct |
| ualpha / alpha denom metadata missing | Bug,Economy | abstrct |
Full Changelog: v0.7.0-beta...v.0.8.0-beta