"Bumi" means earth in my native tongue (malay).
Bumi is a real-time day/night cycle and weather system for GZDoom. It is made for RPGs and/or open world-ish projects.
Current features:
- Real-time day and night cycle with tinting across the entire map
- Gregorian calendar system with days, months and years
- Moon phases
- Adjustable timescale
- Sun lens flare
- Particle clouds in the sky
- Chance for overcasting, rain and thunderstorms - completely random and in real-time
- Rain drops that do not fall through ceilings
- Compatible with sector lighting - my engine does not overwrite your sector lighting work
- Minimal sector tagging required (and customizable range of tags - useful for maps with a lot of 3D floors)
- Sky lights (dynamic lights that follow the ambient colour; useful when placed indoors to simulate environmental lighting)
- Fog and haze
- Seasons
- Snowing during winter
- Seasonal texture swap (level textures that change appearance depending on season)
- Stars in the sky
KNOWN ISSUES
- Sun glare looks slightly incorrect with PixelRatios other than 1.0
- Sun glare position does not scale with ScreenSize at all
- Clouds are not flat (requires +FLATSPRITES)
- Mists during winter do not have +ROLLSPRITE
- Snow isn't A_Warped to the player - you can outrun the particles
- Snow and rain sprites will overlap in multiplayer (requires A_VisibilityFilter)
- Decorative actors do not switch to snowy variants during winter
- Sun glare and environment sounds do not work correctly in chasecam, coop spy, or when viewing through any non-player cameras
- Rain and snow will not spawn if sky ceiling height is below 256
- Sun glare appears at the wrong height if player's ViewHeight is too short
- During screen melts, you can briefly see the skybox is black
- Does not report any errors if the template skybox is not found in the level
- Returning to a previously visited level via map or changemap cheats might possibly be broken (for now)
- Base year is 2001; make it so that base year could be user-definable
ADDRESSED
Added simple environment sound mode as a server CVar:
- Environment sounds cannot sync seamlessly to your camera position in multiplayer due to player prediction
- Environment sounds will leak between players if you stand close enough to each other
Ideas for version 1.1 in future:
- Currently, weather system is linear. It goes from clear -> overcast -> rain. Thunderstorms and fog can be layered on top of these weather modes but it's kind of clunky. Future goal would be to completely overhaul the weather system so that current weather will be 1-dimensional and you can smoothly blend to and from different weather "modules" or "blocks" seamlessly and non-linearly. Idea inspired by FoxEngine devs who mentioned doing something like this
- Each weather module would have their own set of unique properties - blend colours, precipitation type, etc (PS day and night would be considered as modules as well).
- Overhaul the chance calculation because right now it's too erratic and has very biased favours (look into implementing custom random number generators).
- Externalize weather module defintions so that ACS doesn't need to be recompiled? Not sure how feasible this would be.
- Probably would eventually need an editor to generate the data needed (and if weather modules would be externalized, then DEFINITELY an editor would be needed)
- Get rid of the sun glare hack, this shit has no business being any of this hacky HudMessage nonsense... it should be a GZDoom full-screen post process shader.
Credits [incomplete for now; will update this constantly]
Randy Heit - ZDoom
Graf Zahl - GZDoom
Nash Muhandes - main developer, programmer
carlcyber -assistant programmer, technical advice and optimization
DavidPH - GDCC, technical advice
Special thanks:
Zeberpal - giving me permission to feature his map DCA2TechTest in the demonstrational video
Blzut3 - GetAspectRatio() (heavily modified)
Isle, LilWhiteMouse, Gez, TheZombieKiller, DavidN, FDARI, marrub - general programming help
Gavin "Interkarma" Clayton (Daggerfall Tools for Unity) - his season code in DFTFU gave me some ideas on how to implement my own
undead003, Shane Strife, loismustdie555 - playtesting