Quick answer: Build one authoritative combat lifecycle before adding modes. Players should move from lobby to FFA or a Duel queue, receive a validated kit, fight inside controlled boundaries, recover after death or disconnect, and return without duplicated items or stale match state.
1. Define the player journeys
Write FFA and Duels as separate flows. FFA is persistent: join an arena, receive protection, fight, die, respawn and re-enter quickly. Duels are isolated: choose rules, queue, reserve an arena, start a match, determine a winner, restore the arena and release it. Document combat logging, spectators, round rules, draw conditions and commands blocked during combat.
2. Select a core or configured setup
Use a core when you already have maps, menus and an integration plan. Use a configured setup when you prefer to customize a working baseline. ShyamDuels is the core path; Advance ShyamDuels packages it into a configured server. ShyamPractice is the alternative setup around separately licensed StrikePractice.
3. Build readable arenas
Create safe spawns, visible boundaries, anti-stall geometry and enough room for the intended kit. Test crystal placement and cleanup, projectile lines, mace height, potion effects and border behavior separately. Preload or pre-generate relevant chunks. Never let two matches share mutable arena state.
4. Validate kits and inventory ownership
Decide which plugin owns the player's inventory snapshot. Validate kit contents when saved and loaded, including nested containers and custom metadata. Test number keys, offhand swaps, death drops, disconnects and server shutdown. A player must never keep match items or lose unrelated lobby items after exit.
5. Configure queues around real population
Start with two or three distinct modes. Ranked and unranked copies split population again, so expose them only when concurrency supports reasonable waits. Record join, leave, timeout and completion events. Queue state should be removed exactly once after disconnect, match start or cancellation.
6. Add fair progression
ELO, leagues, titles, cosmetics and leaderboards can reward repeated play without selling combat power. Protect rating updates from duplicate match-completion events. If matches reward currency, test how that source affects the wider economy and add meaningful sinks.
7. Run failure-path tests
- Disconnect during queue, countdown, combat and result processing.
- Restart while arenas or profiles are active.
- Trigger simultaneous deaths and environmental kills.
- Lose the database briefly and confirm game threads do not block.
- Reload permissions and verify non-admin behavior.
- Complete many matches while profiling MSPT, packets and arena resets.
8. Launch with observability
Track queue times, match completion, mode distribution, player return rate, MSPT and errors. Back up worlds and data before every major update. Add modes because measured demand exists, not because an empty configuration slot is available.
Continue with Practice server RAM planning and the PvP and Practice product collection.
Deployment requirements, test method and fixes
Who this is for
This build path fits owners who want both persistent FFA combat and isolated duels, and who can test inventory restoration, matchmaking and arena resets before launch.Who should not launch this yet
Do not open publicly while leave/reconnect behavior, kit restoration or simultaneous arena resets remain untested. A large mode list cannot compensate for an unreliable core loop.Baseline requirements
- Java 21 and a supported Paper 1.21.x build for the current ShyamDuels release
- Required dependencies from the versioned documentation
- Separate source copies of duel arenas and safe FFA spawn points
- Persistent storage, permission groups and a rollback-tested backup
Test methodology
Run every kit through queue, match, death, spectator, rematch and return-to-spawn paths. End several matches together to measure arena restoration. Disconnect each participant at a different match phase and confirm that inventories, statistics and arena locks recover exactly once.Common errors
Queue never starts: check kit-to-arena eligibility and player permissions.Arena stays occupied: inspect the first completion exception and reset callback instead of manually unlocking it.
FFA inventory leaks into duels: reproduce the transition with a normal account and verify each save/restore boundary.
Start with ShyamDuels Core for full control or the prepared FFA and Duels setup for a configured baseline.
Attachments
Last edited: