A simple pandemic simulation with customizable parameters written in Rust, and 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_timehas elapsed. Remaining will recover.
Instructions:
git clone https://github.com/gursi26/pandemic_simulation.gitcd pandemic_simulationcargo 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)