[Community Project] WIP Weather & Water Shader

Its a 24 hour clock 0001 should get you one minuite past midnight and 1301 should get you 1:01 pm. You can see in the construction script of BP skydome DefaultHour which is probably the hour your playing with is clamped between 0.0f and 24.0f (then multiplied by 60.0f to get currentMinute)

If youd like some more information on the ToD system search for what it was built off search for “Gregdumb’s time-of-day skydome blueprint, version 1.2! Created with Unreal Engine 4.2.1.”

You can see pretty much the same efffect just by playing with the stock public settings in BP_Ocean BP_Skydome and spawning a bunch of fish. You’ll want to make a nice terrain using the “M_Sand” mat so you dont see the edge of it but I think you can pull off some beauty shots stock if you wanted.

Seems like I have to fight my way through a bunch of engine bugs to make multiplayer ships work properly :stuck_out_tongue: as if network jittering, replication, per-poly collision and third person pawn rotation wasn’t enough :rolleyes:

https://.unrealengine.com/showthread.php?66383-There-is-no-way-of-keeping-a-vehicle-after-exit
questions/209838/spring-arm-weird-camera-bug.html

Apparently no one ever tried to make a multiplayer ship in third person before :wink:

Hey GlitchSack,

I’m currently developing the fish further, but you can check out the current progress on the branch :)! Right now there are fish nodes set up in level, when the player gets near one these fish will spawn.

Have fun,

Multiplayer sounds cool. Tough though. I’m excited to see updates for more water dynamics. Splashes wakes bow waves kelvin wakes. Weather I can do its the water dynamics I would struggle with. Regardless, keep on truckin TK and and HK and Komdodo, checking the thread, Trello and 3-4x a day lol

Thanks ! That really helps to make sense of everything! I never thought to try the numbers without : so I was simply using two digit characters.

Actually I have another question. How would you go about using the Sun’s light settings to drive the color over time of another light? For example I have a cave system in my level but there’s a gap in the ceiling to let some of the outside light in. I placed a spotlight there to simulate some ambient light coming through. How would I synchronize the color of the spotlight to match that of the sun/moon so that when night time hits, the color of the spot changes at the same time to the same value?

Can someone help me with? I updated the plugin and added the fishmanager but the oceanBP looks like now.

Check out the Skydome blueprint, looks like the color is fed from a curve.


Current status of the upcoming “ships” update:

It’s almost ready, there a couple of things I have to clean up and make a bit more “modular” first, so you can easily add and configure your own ships/boats.

-Networking is all setup, all done via BP and nicely commented out (although synchronization is still WIP and probably not perfect, needs more testing)
I had to make a custom player controller in C++ though (to solve a problem with possession, basically the ship got de-spawned when a player it disconnected or exit the game while driving it) special thanks to for helping me figure out how to do that :stuck_out_tongue:

-Ship health and damage is implemented (nothing too fancy, just a simple health bar made in UMG and then sinking via density override), you can totally have a little naval battle :wink:
Ships can be respawned after they are destroyed, there is a respawn time variable.

-Particle hit when hitting water, ice (icebergs) and wood which also catches on fire :stuck_out_tongue:

-Added ambient sfx.

-Added snow, which can be toggled in Skydome BP.

-Cannons which can be fired individually by a player next to it or all at once when driving the ship.
You can add and “link” as many cannons as you like to a ship.
Each cannon has reload time and damage variables.

-Two ship blueprints.
The first one is pretty simple… forward speed, steering speed and buoyancy settings.
The second one is the “per-poly collision” one, I might post some notes after I release the update to explain a bit how it is done, it’s a little more complex.

Funny thing is that the per-poly collision ships seems that can be much more efficient perfomance-wise compared to convex collision with many primitives :stuck_out_tongue:

Oh right. So I suppose I could use the same values to drive the other lights in the scene? That would cover the color change but what about the timing? I really know too little about . I should look for some more tutorials.

Not any help?

is how it looks in the blueprint viewport, if you add it to a level, apply the correct settings, add the skydome BP etc. then it will look correct.
You should check out the example maps and see how everything is done… currently you cannot add the by simple drag-n-drop to any level, we plan to improve that of course :stuck_out_tongue: but it is what it is now.

, Before I updated to the version with the fish AI system, the BP worked perfectly without the Skydome BP and my own settings. It was after I updated the plugin happened. I still have a version of my project where the plugin haven’t been updated with the fish-blurprints and AI system, and whenever I start that project I see no fault in the ocean_bp’s appearance, both in level and in the editor.

Thanks in advance! :smiley:

Things change between versions obviously :stuck_out_tongue:

I’m not sure which settings exactly might have caused , might investigate at some point… for now just try to copy over everything from the example map.

Edit: actually it’s the SSS light vector parameter which is fed by the BP_Skydome.

If you want to use your own sky then you will have to manually set the light vector yourself.

Check out the UpdateSun function inside BP_Skydome (to the right) to see how it is done… you can also set it to a static direction if you have static sun.

Hello ,

Sorry for the lack of updates on , TK has been doing a great job helping out over the past couple weeks though, thanks TK! :slight_smile:

I had a complication from my recent surgery that has prevented me from working on all of recently. It has been a really tough couple of weeks, but I’m feeling a bit better now.

I will try and answer all of your posts/pm’s/skype messages, and finally get back to working on the project weekend.

Thanks guys!

Hi and lots of wishes for a fast recovery!
Is plugin going to have a version as well?

Hey Everybody,

I implemented the procedural terrain (Created by Azarus) into a level on called “ProceduralOcean.umap,” feel free to check it out. It will crash every so often at the moment because of my new fish implementation, rest assured I am working on it ;).
6fqjhhbpPJM

I’ve downloaded the project from and am impressed with the work you have done. Besides being a cool project, tt has been invaluable as an example of a simple project that is a mix of Blueprint and C++.

I have a question about compiling the plugin, in case I want to try some changes. There is no .sln file in the repo, so how are you compiling the plugin? I was able to add a sln file via “File -> Add Code To Project” myself and compile, but I am wondering if that is the ‘correct’ way to compile a plugin. Thanks!

Hey great work on the plugin so far.
But I have a little question:

Is it possible to have multiple planes with different wave directions? Because we have an island and it looks kind of strange to have waves coming from the land instead of having them flowing towards it.
Creating a blueprint duplicate and changing the direction does not work, as it still changes the direction for all planes (even if the values are different).

We could also work with some kind of flowmap for wave direction, if that is a possibility.

Thanks in advance.

Hello! :slight_smile:
First of all i want to say that the work all of you have done here looks amazing. :slight_smile:
However, I’m working on a small project, and when i play in the editor everything works great but when i try to compile/launch i get the following error:



LogPlayLevel: Project.Build: ********** BUILD COMMAND STARTED **********
LogPlayLevel: InternalUtils.SafeFileExists: SafeFileExists C:\Program Files (x86)\Xoreax\IncrediBuild\xgConsole.exe=False
LogPlayLevel: UE4Build.Build: XGE was requested, but is unavailable, so we won't use it.
LogPlayLevel: UE4Build.Build: ************************* UE4Build:
LogPlayLevel: UE4Build.Build: ************************* ForceMonolithic:
LogPlayLevel: UE4Build.Build: ************************* ForceNonUnity:
LogPlayLevel: UE4Build.Build: ************************* ForceDebugInfo:
LogPlayLevel: UE4Build.Build: ************************* UseXGE:
LogPlayLevel: InternalUtils.SafeFileExists: SafeFileExists E:\EpicGames\Epic Games\4.7\Engine\Binaries\DotNET\UnrealBuildTool.exe=True
LogPlayLevel: InternalUtils.SafeDeleteFile: SafeDeleteFile C:\Users\Alpha Seven\Documents\Unreal Projects\-DefaultProject\-\Intermediate\Build\Manifest.xml
LogPlayLevel: InternalUtils.SafeFileExists: SafeFileExists E:\EpicGames\Epic Games\4.7\Engine\Binaries\DotNET\UnrealBuildTool.exe=True
LogPlayLevel: InternalUtils.SafeFileExists: SafeFileExists E:\EpicGames\Epic Games\4.7\Engine\Binaries\DotNET\UnrealBuildTool.exe=True
LogPlayLevel: Completed Launch On Stage: Build Task, Time: 1.750059
LogStats:Warning: MetaData mismatch. Did you assign a stat to two groups? New //STATGROUP_Threads//FLauncherTask///Thread_dbc_0///////STATCAT_Advanced//// old //STATGROUP_Threads//FLauncherTask///Thread_ef0_0///////STATCAT_Advanced////
LogPlayLevel: CommandUtils.Run: Run: E:\EpicGames\Epic Games\4.7\Engine\Binaries\DotNET\UnrealBuildTool.exe OceanDemo Win64 Development -generatemanifest "C:\Users\Alpha Seven\Documents\Unreal Projects\-DefaultProject\-\OceanDemo.uproject"  -noxge -rocket -NoHotReloadFromIDE
LogPlayLevel: CommandUtils.Run: Run: Took 1,0910624s to run UnrealBuildTool.exe, ExitCode=0
LogPlayLevel: InternalUtils.SafeFileExists: SafeFileExists C:\Users\Alpha Seven\Documents\Unreal Projects\-DefaultProject\-\Intermediate\Build\Manifest.xml=True
LogPlayLevel: InternalUtils.SafeCopyFile: SafeCopyFile C:\Users\Alpha Seven\Documents\Unreal Projects\-DefaultProject\-\Intermediate\Build\Manifest.xml E:\EpicGames\Epic Games\4.7\Engine\Programs\AutomationTool\Saved\Logs\UBTManifest.0.xml
LogPlayLevel: UE4Build.PrepareManifest: Copied UBT manifest to E:\EpicGames\Epic Games\4.7\Engine\Programs\AutomationTool\Saved\Logs\UBTManifest.0.xml
LogPlayLevel: InternalUtils.SafeFileExists: SafeFileExists E:\EpicGames\Epic Games\4.7\Engine\Binaries\DotNET\UnrealBuildTool.exe=True
LogPlayLevel: InternalUtils.SafeFileExists: SafeFileExists E:\EpicGames\Epic Games\4.7\Engine\Binaries\DotNET\UnrealBuildTool.exe=True
LogPlayLevel: CommandUtils.Run: Run: E:\EpicGames\Epic Games\4.7\Engine\Binaries\DotNET\UnrealBuildTool.exe OceanDemo Win64 Development  "C:\Users\Alpha Seven\Documents\Unreal Projects\-DefaultProject\-\OceanDemo.uproject"  -noxge -rocket -NoHotReloadFromIDE
LogPlayLevel: UnrealBuildTool: Performing 1 actions (4 in parallel)
LogPlayLevel: UnrealBuildTool: [1/1] Link OceanDemo.exe
LogPlayLevel: UnrealBuildTool:    Creating library C:\Users\Alpha Seven\Documents\Unreal Projects\-DefaultProject\-\Binaries\Win64\OceanDemo.lib and object C:\Users\Alpha Seven\Documents\Unreal Projects\-DefaultProject\-\Binaries\Win64\OceanDemo.exp
LogPlayLevel: UnrealBuildTool: UELinkerFixups.cpp.obj : error LNK2019: unresolved external symbol "void __cdecl EmptyLinkFunctionForStaticInitializationOceanPlugin(void)" (?EmptyLinkFunctionForStaticInitializationOceanPlugin@@YAXXZ) referenced in function "void __cdecl UELinkerFixups(void)" (?UELinkerFixups@@YAXXZ)
LogPlayLevel: UnrealBuildTool: C:\Users\Alpha Seven\Documents\Unreal Projects\-DefaultProject\-\Binaries\Win64\OceanDemo.exe : fatal error LNK1120: 1 unresolved externals
LogPlayLevel: UnrealBuildTool: -------- End Detailed Actions Stats -----------------------------------------------------------
LogPlayLevel: UnrealBuildTool: ERROR: UBT ERROR: Failed to produce item: C:\Users\Alpha Seven\Documents\Unreal Projects\-DefaultProject\-\Binaries\Win64\OceanDemo.exe
LogPlayLevel: UnrealBuildTool: Cumulative action seconds (8 processors): 0,00 building projects, 0,00 compiling, 0,00 creating app bundles, 0,00 generating debug info, 3,77 linking, 0,00 other
LogPlayLevel: UnrealBuildTool: UBT execution time: 7,20 seconds
LogPlayLevel: CommandUtils.Run: Run: Took 7,3214188s to run UnrealBuildTool.exe, ExitCode=2
LogPlayLevel: ErrorReporter.Error: ERROR: AutomationTool error: Command failed (Result:2): E:\EpicGames\Epic Games\4.7\Engine\Binaries\DotNET\UnrealBuildTool.exe OceanDemo Win64 Development  "C:\Users\Alpha Seven\Documents\Unreal Projects\-DefaultProject\-\OceanDemo.uproject"  -noxge -rocket -NoHotReloadFromIDE. See logfile for details: 'UnrealBuildTool.txt'
LogPlayLevel: BuildCommand.Execute: ERROR: BUILD FAILED
LogPlayLevel: Program.: ERROR: AutomationTool terminated with exception:
LogPlayLevel: Program.: ERROR: Exception in AutomationTool: Command failed (Result:2): E:\EpicGames\Epic Games\4.7\Engine\Binaries\DotNET\UnrealBuildTool.exe OceanDemo Win64 Development  "C:\Users\Alpha Seven\Documents\Unreal Projects\-DefaultProject\-\OceanDemo.uproject"  -noxge -rocket -NoHotReloadFromIDE. See logfile for details: 'UnrealBuildTool.txt'
LogPlayLevel: Stacktrace:    at AutomationTool.CommandUtils.RunAndLog(String App, String CommandLine, String Logfile, Int32 MaxSuccessCode, String Input, ERunOptions Options, Dictionary`2 EnvVars)
LogPlayLevel:    at AutomationTool.CommandUtils.RunUBT(CommandEnvironment Env, String UBTExecutable, String CommandLine, String LogName, Dictionary`2 EnvVars)
LogPlayLevel:    at AutomationTool.UE4Build.BuildWithUBT(String ProjectName, String TargetName, UnrealTargetPlatform TargetPlatform, String Config, String UprojectPath, Boolean ForceMonolithic, Boolean ForceNonUnity, Boolean ForceDebugInfo, Boolean ForceFlushMac, Boolean DisableXGE, String InAddArgs, Boolean ForceUnity, Dictionary`2 EnvVars)
LogPlayLevel:    at AutomationTool.UE4Build.Build(BuildAgenda Agenda, Nullable`1 InDeleteBuildProducts, Boolean InUpdateVersionFiles, Boolean InForceNoXGE, Boolean InForceNonUnity, Boolean InForceUnity, Dictionary`2 PlatformEnvVars)
LogPlayLevel:    at Project.Build(BuildCommand Command, ProjectParams Params, Int32 WorkingCL)
LogPlayLevel:    at BuildCookRun.DoBuildCookRun(ProjectParams Params)
LogPlayLevel:    at BuildCommand.Execute()
LogPlayLevel:    at AutomationTool.Automation.Execute(List`1 CommandsToExecute, CaselessDictionary`1 Commands)
LogPlayLevel:    at AutomationTool.Automation.Process(String] CommandLine)
LogPlayLevel:    at AutomationTool.Program.MainProc(Object Param)
LogPlayLevel:    at AutomationTool.InternalUtils.RunSingleInstance(MainProc , Object Param)
LogPlayLevel:    at AutomationTool.Program.()
LogPlayLevel: Program.: ERROR: Command failed (Result:2): E:\EpicGames\Epic Games\4.7\Engine\Binaries\DotNET\UnrealBuildTool.exe OceanDemo Win64 Development  "C:\Users\Alpha Seven\Documents\Unreal Projects\-DefaultProject\-\OceanDemo.uproject"  -noxge -rocket -NoHotReloadFromIDE. See logfile for details: 'UnrealBuildTool.txt'
LogPlayLevel: ProcessManager.KillAll: Trying to kill 0 spawned processes.
LogPlayLevel: Program.: AutomationTool exiting with ExitCode=2
LogPlayLevel: Domain_ProcessExit
LogPlayLevel: ProcessManager.KillAll: Trying to kill 0 spawned processes.


Any help or pointers would be greatly appreciated.
Thanks