SkySimulation is the Take Some() sky and atmosphere package for Java / jMonkeyEngine worlds.
We are Take Some() — a small engineering team building game-runtime infrastructure: simulation systems, rendering tools, world technology, and reusable engine modules for our own projects.
This repository turns the original SkyControl-style sky runtime into a Take Some() package with practical controls for modern game worlds: atmospheric tuning, sun and moon texture customization, cloud lighting, stars, horizon haze, and release-ready Gradle publishing.
We are building a reusable world-simulation layer for our games and engine experiments:
- dynamic sky, sun, moon, stars, haze, and cloud layers;
- configurable atmospheric lighting profiles;
- texture customization for both the sun and the moon;
- lighting synchronization for ambient light, directional light, bloom, shadows, and viewport background color;
- package distribution through Maven Local and GitHub Packages;
- a foundation for richer worlds, weather, time-of-day systems, and future Take Some() engine modules.
The public Java namespace currently remains compatible with SkyControl:
import jme3utilities.sky.SkyControl;
import jme3utilities.sky.SkyAtmosphere;That keeps existing code usable while the artifact itself is published under Take Some() coordinates.
The public API stays in the stable jme3utilities.sky namespace:
SkyControl
SkyControlCore
SkyMaterial / SkyMaterialCore
SkyAtmosphere
CloudLayer
SunAndStars
Updater
Implementation helpers are grouped by responsibility in focused packages:
jme3utilities.sky.atmosphere atmospheric parsing and lighting math
jme3utilities.sky.material texture sampling helpers
jme3utilities.sky.scene scene-graph naming helpers
jme3utilities.sky.update live updater application helpers
Some helper classes remain package-private in jme3utilities.sky when moving
those classes would force us to expose constructors or state that should stay
encapsulated. Public compatibility is preferred over cosmetic directory moves.
Version 1.4.2 adds smooth runtime atmosphere transitions, typed weather-state subscriptions, expanded cloud-weather diagnostics, generated sky material logging, and stronger DDS/BC normal-map inspection for cloud presets.
SkyCloudPresetprovidesCLEAR,FAIR,OVERCAST,WISPY,CLOUDY,RAIN,STORM, andNIMBUS.SkyControl.setCloudPreset(preset, seconds)changes weather by fading current layers out, swapping alpha/normal/scale/motion while invisible, and fading target layers in.- DDS resources live under
SkyLibrary/src/main/resources/Textures/skies/clouds/presets. cloud-weather-presets.jsonrecords managed presets, raw bundles, DDS inventory, SHA-256 values, transition policy, and generated material/shader settings.:SkyAssets:skyMaterialsgeneratesdome02,dome06,dome20,dome22,dome60, anddome66MatDefs and GLSL shaders.- BC5/ATI2 DDS normal maps are supported through the first-party fallback loader and are mapped to
Image.Format.RGTC2.
Visual smoke test:
gradlew.bat :SkyExamples:SkyCloudWeatherSmokerepositories {
mavenCentral()
maven {
url = uri("https://maven.pkg.github.com/Take-Some/SkySimulation")
credentials {
username = findProperty("gpr.user") as String? ?: System.getenv("GITHUB_ACTOR")
password = findProperty("gpr.key") as String? ?: System.getenv("GITHUB_TOKEN")
}
}
}
dependencies {
implementation("dev.takesome:sky-simulation:1.4.2")
}First install the package into Maven Local:
gradlew.bat packageLocalThen use it from another Gradle project:
repositories {
mavenLocal()
mavenCentral()
}
dependencies {
implementation("dev.takesome:sky-simulation:1.4.2-SNAPSHOT")
}Requirements:
- JDK 17+
- Gradle wrapper from this repository
Common commands:
gradlew.bat :SkyLibrary:compileJava
gradlew.bat :SkyLibrary:checkstyleMain
gradlew.bat packageLocalBuild release artifacts locally:
gradlew.bat :SkyLibrary:assemble -PskySimulationVersion=1.4.2Artifacts are generated in:
SkyLibrary/build/libs
A GitHub release is produced by pushing a version tag:
git tag -a v1.4.2 -m "SkySimulation v1.4.2"
git push origin v1.4.2The release workflow publishes the Maven package to GitHub Packages and attaches the JAR, sources, Javadoc, POM, and Gradle module metadata to the GitHub Release.
SkyLibrary— runtime library and public API.SkyAssets— generated sky, star, sun, moon, cloud, and haze textures.SkyExamples— example applications and test scenes.
SkyAtmosphereprofile for atmospheric lighting and realism tuning.earthlike-atmosphere.propertiesdefault tuning preset.- Explicit
setSunTexture(...)andsetMoonTexture(...)APIs. clearMoonTexture()for returning to phase-preset moon textures.- GitHub Packages publishing under
dev.takesome:sky-simulation. - Release workflow for GitHub Releases.
SkyCloudPresetweather presets with gradual transitions.- DDS cloud preset resources plus
cloud-weather-presets.jsonregistry. - Generated sky MatDefs/GLSL via
:SkyAssets:skyMaterials. - BC5/ATI2 DDS normal-map fallback loader for cloud normals.
- Smooth atmosphere transitions for gradient style, sunset intensity, and halo intensity.
- Game-facing weather subscriptions for exact weather ids, storm-like states, precipitation thresholds, wind thresholds, and all weather changes.
- Expanded logging for Lua weather ABI loading, cloud preset transitions, generated sky material creation, and compressed DDS/BC cloud texture metadata.
SkySimulation is based on the SkyControl project lineage and keeps the BSD-style license terms from the original codebase. Take Some() maintains this fork for our own engine/runtime work while preserving compatibility where it matters.
See LICENSE and source headers for license details.