A simple pandemic simulation with customizable parameters written in Rust, rendered with Raylib.
demo.mp4
Customisable parameters:
INFECTION_RADIUS
- Radius around infected person where normal person is susceptible to infectionINFECTION_RATE
- Probability that normal person will get infected when within infection radiusNUMBALLS
- Number of peopleINITIAL_INFECTED_POPULATION
- Number of people infected at start of simualtionMAXSPEED
- Maximum possible speed that people move around at (speeds and start locations are random)BASE_RECOVERY_TIME
- Base time for recoveryRECOVERY_TIME_RANGE
-recovery_time = BASE_RECOVERY_TIME + rand(-RECOVERY_TIME_RANGE, RECOVERY_TIME_RANGE)
, accounts for natural variation in recovery times.FATALITY_RATE
- Percentage of people that would die afterrecovery_time
has elapsed. Remaining will recover.
Instructions:
git clone https://github.com/gursi26/pandemic_simulation.git
cd pandemic_simulation
cargo run
Dependecies:
TODOs
- Use grid rendering system for better performance with higher number of objects
- Other, more optimised collision detection methods
- Include phenomena like
- Social distancing
- Lockdown with frequent trips to a central location (like a grocery store)
- Separate communities with travel between them
- Quarantine zones for infected patients
- Asymptomatic cases
- Fatality rate
- Recovery rate
- Virus mutating into a stronger variant (more contagious or more deadly)