Diving is expensive; learning doesn't have to be.
Practice in the simulator, not during a dive you're paying for.
Train on dry land, build confidence, and make the most of every minute of your underwater adventure.

The simulator teaches you to act correctly to mistakes, showing you the future of your decisions before you get into the water.
- What if I had made a different decision?
- What happens if I stay five more minutes at the bottom?
- What happens if I ascend too quickly?
- How do my tissues react if I switch to a different gas mixture?
- How does a deeper or longer stop affect my decompression profile?
What this simulator does?
Divantys Dive Simulator is an interactive diving simulation and learning platform that allows you to visually and in real time observe the physical and physiological processes that occur during a dive. Its goal is to transform complex concepts of diving theory, decompression, and human physiology into an easy-to-understand visual experience for divers, students, instructors, and industry professionals.
Divantys works as a virtual laboratory where you can explore how the human body responds to different dive profiles, gas mixtures, depths, and exposure times.
"The goal is not to simulate diving, it is to improve the real diver."
Controllable 3D experience
- Descent/Ascent joystick
- Look/rotation joystick
- Neutral zone for stability
Full report
- Maximum depth
- Total time
- Total and remaining NDL
- Ceiling (minimum safe depth)
Models and concepts represented
The simulator implements physiological models and common educational rules in recreational diving: nitrogen absorption and release by tissues, no-decompression limits, and oxygen exposure.
Simulates nitrogen loading in different tissues at different speeds, allowing estimation of saturation, “ceiling”, and behavior in repetitive dives.
Calculates PPO₂ based on depth and fraction of oxygen (FO₂), and accumulates CNS exposure with a PPO₂ limits model. Includes alert levels (OK / WARNING / DANGER).
NDL (No Decompression Limit)
- Total allowed NDL
- Remaining NDL according to the profile
- Educational risk interpretation
Ceiling and ascent
- Ceiling in meters
- Required stop detection
- Safety stop recommendation
Repetitive dives
- Tissues are preserved between dives
- Surface interval reduces load
- Residual accumulation learning
Instruments and visualization (HUD)
To facilitate understanding, the simulator shows visual instruments on screen during the dive. Its purpose is for the user to “see” how concepts change with their behavior.
Air tank (AL80)
- Pressure in bar and PSI
- Remaining percentage
- Reserve alert (e.g., 35 bar)
- Out of air status
Nitrogen bar
- Visual smoothing (slow loading / normal unloading)
- Colors by level (green→red)
- Didactic approach, easy to interpret
NDL and ascent status
- Remaining NDL
- Safety stop recommendation
- Ceiling (if applicable)
PPO₂ y CNS
- Color-coded alerts for toxicity levels
- Cumulative CNS percentage tracker
Real-time Depth
- Dynamic depth updates throughout the entire dive.
- Visual smoothing that simulates the behavior of real instruments.
You can speed up the simulation to observe how values change faster. This function is useful for education: it shows the trend of indicators without having to wait for long periods.
Safety Stop (Recreational safety stop)
This module simulates the 5-meter safety stop in recreational diving. Its logic is based on scaled real-time control, depth tolerance, and detection of interruptions or redescents to validate or invalidate the stop.
Stop recommendation
- Activated if maximum depth exceeds 10 m
- Deactivated if there is active or required deco
- Status: recommended → activates the safety stop
- Optional user notification callback
Execution logic
- Stop zone: 5 m ± 2 m
- Pause zone: 5 m - 3 m (no progress)
- Time accumulation in simulated seconds
- Scaled by simulation speed (GET_TIME_SCALE)
- Completed after 180 effective seconds
- Automatic pause upon leaving the zone
Interruptions and redescent
- Leaving the zone invalidates progress
- Cancelled state activates tracking reset
- Marks interruption if logic is broken
- Redescent > 6 m resumes recommendation
- 30 s window for post-completion invalidation
Time is calculated in simulated real-time, accumulating only when the diver remains within the correct range. If they leave the zone, the counter pauses. If they complete the 3 effective minutes, the stop is marked as completed. However, a subsequent redescent can invalidate it under certain physiological conditions.
Nitrogen load bar (Educational UI)
This module visualizes in real time the nitrogen load in the diver's fast tissues. Its objective is educational: to show how relative saturation evolves during the dive through a smoothed, color-coded progress bar.
N₂ load visualization
- Based on fast tissues from the physiological model
- Value expressed as a percentage (0–130%)
- Visual smoothing to prevent sudden jumps
- Real-time update during the dive
Color coding
- Green: low and stable load (< 60%)
- Yellow: caution zone (60%–85%)
- Orange: high load (85%–100%)
- Red: potential supersaturation (> 100%)
Smoothing & Stability Logic
- Progressive interpolation (ease-in / ease-out)
- Differentiated response (slower loading than unloading)
- Screen flicker prevention
- Visual value clamping between 0% and 130%
The bar can include additional text (such as Gradient Factor or physiological state from the model). This allows for visual correlation between nitrogen saturation and decompression status, offering a more intuitive representation of the accumulated risk.
Air consumption (AL80 multi-tank)
This module simulates actual gas consumption in dynamic time using SAC (Surface Air Consumption), ambient pressure, and time scale. It supports single or multi-tank configurations and calculates the progressive depletion of the entire system.
Consumption model
- User-configurable SAC
- Ambient pressure = 1 + depth/10
- Scaled by GET_TIME_SCALE()
- Proportional consumption per tank
Multi-tank system
- Base tank AL80 (2265 L)
- Support for multiple tanks
- Consumption split among active tanks
- Global OUT OF AIR status
HUD Visualization
- Visual level by volume percentage
- Real-time bar / PSI conversion
- Color based on reserve (green → orange → red)
- Alert below 35 bar
The system calculates the total remaining volume by summing all active tanks. Consumption is updated at each simulated frame and allows detecting the reserve point or the critical "out of air" condition. The model reflects both individual and global consumption.
Oxygen toxicity (NOAA CNS)
This module evaluates the risk of oxygen toxicity using PPO₂ and accumulated CNS. The status is represented through physiological risk levels like a dive computer.
Oxygen partial pressure (PPO₂)
- PPO₂ = FO₂ × ambient pressure
- Operational limit: 1.4 bar
- Critical: ≥ 1.6 bar
CNS (Central nervous system)
- NOAA exposure model
- Progressive increase over time
- 100% = recommended limit
Toxicity status
- OK: exposure within safe limits
- WARNING: caution zone
- DANGER: risk of acute toxicity
The system combines acute toxicity (PPO₂) and cumulative toxicity (CNS). The displayed status reflects the dominant risk level at each moment of the dive, similar to a real technical dive computer.
Decompression engine logic (Bühlmann + GF)
This module calculates the diver's decompression plan in real time by simulating tissue nitrogen saturation, generating mandatory stops and adjusting the ascent profile according to physiological status and the safety gradient (GF). Additionally, it maintains a persistent history to prevent losing progress between plan regenerations.
Decompression plan generation
- Ceiling calculation with GF line (safe ascent limit)
- Rounding to stop increments (STOP_STEP_M)
- Simulation of tissue loading per stop
- Ends when the ceiling drops below 3 m (STOP_REQUIRED_M)
- Preview mode without affecting actual history
Stop history and persistence
- decoHistory stores progress by depth
- Hydration of stops from history
- Preserves performed time (timePerformedSec)
- Prevents resets on stops already started
- Merge between new plan and previous state
Real-time update
- Current stop control with depth tolerance
- Order locking (do not skip previous stops)
- Dynamic regeneration if the profile worsens or improves
- Time accumulation by dtSimSec
- Auto-complete at 95% compliance
- Dynamic TTS calculation (ascent + stops)
TTS is calculated by combining stage-by-stage ascent time (based on ascent rate) plus the remaining time in active decompression stops. The result is continuously adjusted based on the actual state of the tissues and the current plan.
Responsible use and important notice
This project is an educational and illustrative tool. Real diving requires training, certified equipment, and professional supervision.
Important
This simulator is not a diving course, does not replace formal training, and is not a dive computer or an operational planning tool. It must not be used to plan real dives or for decision-making. Everything shown is for illustrative purposes only, using concepts and algorithms applied solely for simulation and visualization needs. Using the simulator is the user's responsibility.
