Session Overview
A game session is the core unit of gameplay in Abyss. Each session:- Has a unique session ID
- Belongs to a single player
- Tracks all game state (score, level, spins, items, etc.)
- Can be competitive (prize pool) or free play
Session Lifecycle
Creating a Session
Function Signature
Process
- Generate new session ID
- Initialize GameSession struct
- If competitive: transfer CHIP deposit
- Store session data
- Add to player’s session list
- Return session ID
Session Initialization
Session Data Structure
Session Actions
Spinning
- Decrements
spins_remaining - Generates random grid via VRF
- Calculates patterns and score
- Applies relic effects
- Checks for 666 game over
Buying Items
- Deducts cost from
score - Adds item to session inventory
- Items persist until session ends
Relic Actions
- Equip: Store relic token ID (once per session)
- Activate: Queue effect for next relevant action
Session Ending
Game Over Conditions
| Condition | Trigger | Effect |
|---|---|---|
| 666 | Three 6s in pattern | Immediate end, score = 0 |
| No Spins | spins = 0 AND score < threshold | Session ends |
| Manual | Player calls end_session | Voluntary end |
End Session Function
- Validate session is active and owned
- Mark
is_active = false - Finalize score
- Update leaderboard if competitive
Leaderboard Submission
For competitive sessions:- Validate session ended
- Compare score to leaderboard
- Insert if qualifies for top positions
- Shift lower rankings down
Session Queries
Get Session Data
Get Player Sessions
Get Last Spin Result
Session Items
Items purchased during a session are stored separately:- Score calculation (bonuses)
- 666 check (La Biblia)
- Level up (spin bonuses)

