Is a minetest mod that changes the sky based on the player's current biome (plus some other sky-related stuff).
- Sky colorization
- Sun and moon scaling according to the biome's heat
- Setting the star amount according to biome's humidity
- Star colorization
- Cloud resizing according to biome's humidity
- Fog control
- Smooth transitions when changing the above
- Per-player skybox handling
- Activates minetest's dynamic shadows and allows tweaking intensity
- Supports defining server-wide events, which colorize the sky and can set custom sun and moon graphics
The /skygen <param1> <param2>
chatcommand allows access to the options for each player.
These are:
off
- Deactivates SkyGenbiome
- Switches to the biome modeskybox <skybox_name>
- Sets the player's skyboxshadow <intensity>
- Tweaks minetest's dynamic shadow intensitytoggle_star_color
- Toggles star colorizationtoggle_scaling
- Toggles the sun and moon scaling
Server admins can initiate events using the /skygen_event
chatcommand.
The event command has two options:
<event_name>
- Starts an event if it existsdeactivate
- Ends an active event
Skygen is expandable with custom skyboxes, events and new biome colors.
A color definition is appended to the skygen.colors
table and looks like the following:
grassland = { name = "Grassland", colors = { day = {r=160,g=199,b=246}, day_horizon = {r=39,g=115,b=185}, sun_tint = {r=222,g=99,b=0}, moon_tint = {r=18,g=103,b=182}, indoors = {r=128,g=128,b=128}, fog = {r=128,g=128,b=128}, } fog_distance = -1 fog_start = -1 }
The key has to be the same as the biome name that the color definition corresponds to.
If your biome is unknown to skygen, it will color its sky with the definition specified in the skygen.fallback_biome
variable.
Fog distance and color are also set in this table, the values provided in this manner are given directly to minetest's set_sky method.
The skybox name has to be added to the skygen.skybox_names
table in order for your skybox to be visible to SkyGen.
The skybox definition is placed into the skygen_path/textures/skyboxes/<skybox_name>/skydef.lua
. It should have the following contents:
skygen.skyboxes.test_sky = { description = "Test", color = '#402639', clouds = true, time = 5000, change_sun = true, sunrise_visible = false, sun_scale = 8, change_moon = "none", --moon_scale change_stars = "none", --star_count --star_color --star_scale change_clouds = "none", --cloud_density --cloud_color --cloud_ambient --cloud_height --cloud_thickness --cloud_speed }
The color
field sets the color of the fog.
The time
field sets the skybox' time of day, it can be removed for the default day/night cycle.
The fields that accept true/false/"none"
options are clouds, change_sun, change_moon, change_stars, change_clouds
. These work like so:
true
makes SkyGen read the related fields and apply themfalse
makes SkyGen ignore the related fields and use default Minetest values"none"
removes the object from the sky
The rest of the fields are handled over to minetest and their documentation is found over at the lua api documentation.
An event definition is appended to the skygen.event_data
table.
The definition looks like this:
skygen.event_data.test = { description = "Test", start_message = "The Test has Arrived!", end_message = "The Test has Ended!", moon = "moonfall_moon.png", sun = "sun.png", color = {r=0, g=255, b=0}, color_night = {r=0, g=255, b=0}, color_cloud = {r=255, g=0, b=0}, color_sun = {r=0, g=255, b=0}, color_moon = {r=0, g=255, b=0}, }
The color definitions are used to tint the biome colors. The amount of tint is described globally by the skygen.event_colorizer_intensity
variable.
The strings.lua
contains variables that store strings which trigger on chatcommands. This can be useful if you're making a game that needs skygen to be more integrated into your game world.
The global customizable variables are stored in the vars.lua
. There is only a couple that need explanation/warning:
skygen.biome_transition_frames
- should not go much higher than 16, as it is used to calculate the amount of change to scaled objects per transition step and higher numbers then introduce more approximations into the calculation.skygen.default_state
- if you change this toskybox
you also need to provide theskygen.default_skybox
or the game will crash when the new player joins (since no skyboxes are included by default).skygen.sky_biome_start
- is a little override for the custom game that skygen is made for, but you can easily adapt it for your own use by flipping a few switches. You'll need the skybox for it which is in a separate repository.