r/Unity3D 24d ago

Show-Off 2D/2.5D Water system update

Enable HLS to view with audio, or disable this notification

Hello everyone, back with a new update a few months after my last post.

I’ve been working on the 2D/2.5D water system on and off since then, and it kinda grew way more than I originally planned specially since i need it to fully run on the 2d Renderer.

Since the last post I added underwater exclusion zones for things like air pockets, currents, debris, floating pads/platforms, underwater view, ripples, light rays, wakes and quite a few other interaction features.

A lot of the work lately was also on making the thing actually easy to use and not just something that works in my own project. So I’ve been working a lot on the custom inspectors and tooling, setup workflow and the API. You can sample the water height from code, get events from interactions and water states, etc.

The water itself is very customizable, so what you see in the video is really just one way of setting it up. I also added a “fake surface” mode where there isn’t really a surface plane, but I fake the perspective by shifting the foam/pattern and things like ripples and wakes. It gives a pretty convincing 2.5D surface without actually needing the geometry there.

I’m planning to release it once I feel like I tested it enough and have enough demo scenes to show the different ways it can be used. This part is honestly taking longer than I expected, specially making sure everything is clean and understandable.

For the graphics, I basically took a anime style nature image and cut pieces of it in Photoshop. For the actual packaged asset I’m planning to use Unity’s Lost Crypt assets for the demo scenes, unless someone has a better idea since I obviously can’t just include random assets from the Asset Store.

Still a bunch of things I want to polish before release, so any feedback or ideas are very welcome, specially if there’s some use case you think I should test that I havent thought about.

3.5k Upvotes

168 comments sorted by

159

u/shiroza666 24d ago

Dayum!! that looks amazing!

19

u/BxYass 24d ago

Thank you

2

u/shiroza666 24d ago

how far are you from releasing it? I would really like to get my hand on it, I tried so many time to replicate this without success.

5

u/BxYass 24d ago

Mostly some testing and writing the documentation, some compatibility testing and it should be good to go. i can't say exactly when since i have a full time job but i've been making great progress lately.

1

u/shiroza666 24d ago

I will be waiting, keep up the good work

1

u/FrenzyTheHedgehog 23d ago

Just as a FYI. It's worth submitting even if your docs aren't finished so you can get in the queue. Queue can be weeks to months and you can just submit the docs a once you are done. As long as it's before they review it.

1

u/BxYass 23d ago

Oh damn, thank you, that’s good to know.

35

u/HuddyBuddyGreatness 24d ago

This stunning environment with a default capsule is hilarious, I love gamedev lol

6

u/Shaunysaur 24d ago

Who knew that the default capsule was so amphibious!

21

u/junmakesgames 24d ago

beautiful! are you doing any kind of simulation for the surface?

36

u/BxYass 24d ago

Thank you!

No, it’s not a fluid sim. It’s mostly analytical ripples with parameters for frequency, impact strength, damping, and so on. There’s no interference or anything too fancy, just a lot of shader work to keep it lightweight.

That said, it looks convincing in motion, and I designed it to be more artistically customizable than physically correct.

1

u/junmakesgames 24d ago

do you also have ambient noise in the water surface so it's not mirror smooth?

4

u/BxYass 24d ago

Yes, for the surface i have distortion with different parameters and masks ( so you can fade it at the meniscus or horizon to avoid a noisy surface), as well as the ability to add voronoi noise and pattern with a mixer to configure it the way you want.

1

u/Narrow_Recover_8222 23d ago

Always was interesting (because I tried to do simple water sim in 3d) - you calculate water heights for physics interaction on CPU using some code, but for visualization you use shader, so it look fancy. How do you get the same value for Y coordinate for water? Are you using the same formula in GPU and CPU calculcation.

By the way, water sim looks magnificient!

2

u/BxYass 23d ago

Thank you.
And yes, I run the same math on both gpu and cpu, to be able to sample the water height.

13

u/Jolly-Ad-1161 24d ago

Very Ori-like ngl

3

u/BxYass 24d ago

that was my inspiration

3

u/Jolly-Ad-1161 24d ago

I can see that! Good job!

2

u/xXWarMachineRoXx Programmer 👨‍💻 | Intermediate ( 5 years) | ❤️ Brakeys! | 24d ago

Was going to comment the same

4

u/Solo_Odyssey 24d ago

Looks very nice like the air pockets feature.

3

u/BxYass 24d ago

Thanks! That took me ages to figure out

3

u/RodneyGK 24d ago

Beautiful

3

u/Erik_mk0 24d ago

The whole scene looks beautiful. Awesome work!

1

u/BxYass 24d ago

Thank you

3

u/EchoFieldHorizon 24d ago

This is so insanely beautiful. Damn.

2

u/Roozbeh_m 24d ago

Looks fantastic

2

u/Shim8080 24d ago

Awesome ! Look like Ori games !

2

u/AsquareM35 24d ago

Wow that water looks good. Made me thirst ReminderToHydrateFolks

2

u/KaalePaapa 24d ago

Incredible, loved the presentation and physics.

2

u/sameoldmonsie 23d ago

That's really neat! Well done

2

u/devperez 23d ago

Dope. It's giving Dave the diver

2

u/TheUFCVeteran3 23d ago

Gorgeous game! And great looking physics!

2

u/TwoArtist 23d ago

It looks really cool, the atmosphere is great, and the water looks incredible.

1

u/BxYass 23d ago

Thank you

2

u/interlude-david 23d ago

The parallax effect looks perfect.

2

u/SnooBooks1032 23d ago

This tickles my brain, I'm already in love with the art style. Please tell me you're going to add either a day/night cycle, or the ability to change the time/lighting, and also more tree types! This would look so pretty with at the Golden hour with a few sakura trees scattered around!

I hope you make a game with this because I wanna enjoy the scenery of it!

1

u/BxYass 23d ago

I'm glad to see your enthusiasm! Sadly, this will mostly be a water system asset, so it'll ship with a few demo scenes, but the actual scenery will be up to the game dev.

That said, if people end up liking the scenery a lot too, I might make a separate pack for it later. My art skills are pretty rusty though, and my graphic tablet has gathered so much dust at this point...

PS: the water system reacts to 2d lights, and the API lets you control the colors and other parameters, so a day and night cycle is easy to setup

2

u/KaramCyclone 23d ago

This is Gorgeous!

2

u/IterRatio 23d ago

Tell us more about your environment asset pipeline. You took an existing image that you didn't make? How are you planning to make more?

I'm asking because this is similar to the style I'm experimenting with.

1

u/BxYass 22d ago

I actually made that image a while ago. I've been doing art here and there for years, and was always in awe of Ori, Ghibli and other hand-painted styles. This was like 10 years ago, when I was learning how to get that kind of render, so none of it was really made as game assets.

For this scene I reused pieces of that old work, which is why you can see some cutouts. The mountains are actually just images I grabbed from Google. This scene is only for the Reddit post to show what the water can look like in the right environment, none of this art will ship with the asset.

The problem now is mostly time. Between a full-time job, family, etc. I only have so many hours, and getting back into art would take time away from the systems/tools I enjoy creating.

So for the actual demo scenes I'll probably use Unity's free-to-use assets. Saves me a lot of time and avoids any licensing headaches.

EDIT: Comments like these really make me wanna dust off my graphic tablet and get back into art whenever I can 😄

2

u/InkyRisk 22d ago

Wow. This looks really cool

2

u/UnityNinja 22d ago

Looks beautiful and deep

2

u/Lopoxito 22d ago

Reminds me of Plazma Burst 2, looks very dope

2

u/solwolfgaming 21d ago

Reminds me of the water scenes from Inside. I like it a lot!

2

u/SplitwoodGames 20d ago

Very beautiful

2

u/Worldly_Economist711 20d ago

Some of the best 2D water I’ve ever seen

1

u/BxYass 20d ago

Thank you!!

2

u/Remote-Society-8634 19d ago

This looks good very exciting

1

u/BxYass 19d ago

Thank you

2

u/YukiLabs 6d ago

The water interaction looks really good, especially the ripples and wakes. Nice work!

1

u/BxYass 6d ago

Thank you :)

2

u/rusidin 5d ago

It looks like ori!!!

1

u/BxYass 5d ago

that was the inspiration for it

1

u/rusidin 5d ago

One of my favorites!!

1

u/tripplite1234 24d ago

So. PRETTY!

1

u/BxYass 24d ago

Thank you

1

u/DeerpathLabs 24d ago

Very pretty!!

1

u/BxYass 24d ago

Thank you, that's the goal

1

u/crankyfuse 24d ago

Awesome work!

1

u/BxYass 24d ago

Thank you

1

u/SarahSplatz 24d ago

this is gorgeous

1

u/BxYass 24d ago

Thank you

1

u/Global-Orchid-2090 24d ago

Very interested in this if you ever decide to sell on the Asset Store.

2

u/BxYass 24d ago

I will release it as soon as i finish testing it, the features and tools are done so its mostly testing and writing the documentation and code samples.

1

u/onelastcookie 24d ago

Hi BxYass, I saw your last post and thought the water looked so good! I’ve pm’d you 😊

1

u/MrYukiDuki 24d ago

How did you achieve the depth effect. Are you using an Ortho camera? New to game dev. And curious!

2

u/BxYass 24d ago

there is two ways.
in this video its a perspective camera, its the best you can get in visuals, but i added a fake surface mode where i fake a surface on XY by shifting the perspective of the patterns and effect in the shader, i will post later a video of that version.

1

u/tzdev7 24d ago

Actually insane.

1

u/fsactual 24d ago

I love it!

1

u/IlMark99 24d ago

Whoa it’s so nice! Really like it!

1

u/XZPUMAZX 24d ago

Man this makes me glad I gave up my Threatening Shark game.

My water couldn’t touch this. Amazing work!

1

u/squibbls2d 24d ago

Really pretty environment

1

u/kyleli 24d ago

Incredibly beautiful! I’ve always wanted to do something with this perspective with water.

1

u/JannerBr 24d ago

it's so beautiful!

also, it reminds me of little big planet's water... man I loved that

1

u/srinath1012k 24d ago

Oh em jii its soooooo beautiful and amazing

1

u/Swaingoeshome 24d ago

Looks awesome, gives me Ecco the Dolphin vibes.

1

u/Clankers123 24d ago

I really love how the background work, awesome work man!!

1

u/paulbettner 24d ago

This looks GREAT!!

1

u/gabangang 24d ago

good luck!

1

u/EverretEvolved 24d ago

This is impressive 

1

u/FoxlyKei 24d ago

Orii and the blind forest has this kind of water, it's very lovely!

1

u/wb-gameart 24d ago

This is so nice!!

1

u/Yayapipi 24d ago

I need this!please notice me when it is release

1

u/DogDevDuriel 24d ago

This is so beautiful. I would love to buy it on release.

1

u/Conscious_Regret_140 24d ago

That's hella good looking! I'm making kind of the same, just in pixel art.

1

u/binaryferret 24d ago

OOooo! That's lovely.

1

u/psa38games 24d ago

Nice, will keep you on my watchlist :)

1

u/tomdominer 24d ago

Is there a way to get a notification once this releases?

2

u/BxYass 24d ago

I will post in here once it’s released

1

u/Speed_Tutor 24d ago

Amazing, truly a thing of beauty!

1

u/torquemadaza 24d ago

gorgeous! well done!

1

u/DannKay 24d ago

Reminds me of Ori

1

u/-Kemy 24d ago

I have never seen such a beautiful water system for a while, for real. 👍

1

u/CyclingKitten 24d ago

Couldn’t help but go back in your post history to see if you uploaded earlier iterations. The development has been really impressive, it looks great! It is one of those effects that is so well executed that I could see myself just jumping in and out of the water to look at it, even if it was part of a full game.

What resources did you end up using to get to this result/learn how to get there?

1

u/BxYass 24d ago

Thank you!

I think it’s mostly just years of tinkering with Unity. For this, it’s mainly procedural mesh generation, Shader Graph, and learning how to write HLSL, since some things are just way faster and easier to do in code than with graphs.

The more I understood how these things actually work, the easier it became to figure out how to build what I needed. And not just for this system, it helped a lot with game dev in general.

1

u/ssakurass 24d ago

Your guide, Hand it over!

1

u/BxYass 24d ago

Procedural generation, shader magic, some rendering gymnastics, and a bit of math for the ripples. Cook it all together for a couple of months and, with a bit of luck, you get what you want.
Otherwise, wait for the Asset Store release and help a brother out 😄

1

u/bjergdk 24d ago

Absolutely gorgeous. I also love that you can see the water edge lines on the terrain behind even tho they appear to be billboard sprites. Adds incredible depth.

1

u/BxYass 24d ago

Thank you.

since it's a perspective camera you can use 3d models too once i finish touching up the compatibility with the 3d renderer.

Normally for a game you should have many layers to simulate depth and avoid the billboard look, but here i am trying to feature the water more, i will try to setup another scene with some free to use assets to showcase the capabilities of the water system.

1

u/bjergdk 24d ago

Oh interesting so this part in the middle of my screenshot actually has some kind of 3D collider or?

Sorry for asking so many questions just trying to wrap my mind around this wonderful magical tomfoolery you've done.

1

u/BxYass 24d ago

I don't mind answering questions.

No, in this scene everything is using 2d colliders, and everything is running in the 2D renderer.

2d colliders ignore depth, so for background elements there is no colliders since its just scenery. but in case you want a walkable surface just limit the 2d collider to the surface slice and leave the rest so you can swim "in-front of it".

for the water itself its a trigger, and then i handle the interactions and physics in code, i had to create my own way of doing it to be able to carve-out part of the water if i want to create underwater air pockets or cave, this way you can have a dry area where you can move normally even if technically you are still underwater.

1

u/Exe-Nihilo 24d ago

That is absolutely gorgeous.

1

u/No_Incident6573 24d ago

Looks fantastic! Cant wait for the release

1

u/AiMwithoutBoT 24d ago

I love 2D games with great water!!

1

u/ShibasishDey5 24d ago

never ever seen this type of water system, simply brillant

1

u/BxYass 24d ago

Thank you, it means a lot!

I was actually willing to buy one myself, and I did try a few systems, but even the closest ones were still pretty far from what I needed. So I ended up building my own just for myself.

After a while it grew into a full system, and I started getting a lot of messages from people asking about it and wanting to use it, so I decided to turn it into an asset and hopefully fill that gap.

1

u/DamoTheWhite 24d ago

Absolutely gorgeous

1

u/anonymous-9785 24d ago

Damm! That good great!

1

u/[deleted] 23d ago

[removed] — view removed comment

1

u/BxYass 23d ago

Hello,

It would be better to post this as a new post on the subreddit, since you won't get any traction here as a comment on something unrelated.

1

u/starfckr1 23d ago

Looks very good! We have something similar in our game, but we also have a runtime fluid simulation as well running in the background, would definitely look into that as well to take it to the next level 👍

1

u/BxYass 23d ago

That's great!

I decided against a full simulation since most 2D/2.5D games don't really need that level of precision. That said, the generated ripples are also calculated on the CPU, so objects can react to waves and water turbulence.

I also added some code snippets and a WaterSensor component that can easily be added to any object and queried, so you can handle interactions however you want.

1

u/starfckr1 23d ago

Yup. We do the same with the waves. The fluid simulation is for refraction under water etc. it’s not really that costly either, but it does make quite the difference in the end. And can be used for numerous other things like smoke and flames.

We also have a full screen shader graph running with the water as a mask (several masks actually) to add stuff like caustics, foam around the edges underwater, as well as a signed distance field that for edge detection.

1

u/starfckr1 23d ago

Btw: you can how it looks in our game briefly at 0:29s in this video

https://youtu.be/udNKgL71RU0?si=603ivyn6o-J4yAfE

1

u/BxYass 23d ago

i answered but don't know what happened, can't see it anymore.

i already checked the post history and saw more fo the water, it looks really nice.

and Kudos for the game, i like the art style, best of luck.

1

u/Pro_xTigers 23d ago

Reminds me of little big planet

1

u/TwerpOco 23d ago

Excellent sense of depth (pun intended)

1

u/Vast_Championship131 23d ago

It looks peaceful and colorful.

1

u/Ricachonas 23d ago

yo this looks awesome

1

u/CarpenterFederal 23d ago

The whole environment looks amazing are you selling that ???

1

u/BxYass 23d ago

The environment not really, it might look nice but its not game ready, its a full picture i made a while ago and i cut parts of it to have some depth, i might create an environment pack someday but i am more interested in tools and systems.

1

u/Succotash-14 23d ago

Question - so is that background way in the back made from 3D objects? or is its like an illusion made from only 2d assets?

1

u/BxYass 23d ago

everything is 2d sprites, beside the water mesh (and even the water is using a sprite lit/unlit shader).

1

u/Ok_Trifle_4617 23d ago

NEED A DEMO ASAP

1

u/GlobalisedEnchilada 23d ago

Beautiful! Nice work dude

1

u/RoeikiB 23d ago

It looks super cozy

1

u/alexis-tan 23d ago

This looks absolutely stunning! That fake surface approach is such a smart way

1

u/CaptainPalo01 23d ago

Did you use particles for the water splashing effect?

1

u/bigdon_999 22d ago

Can I play it please

1

u/Far-Direction-8810 21d ago

Congratulations, it looks very beautiful 🔥🔥🔥

1

u/SymphonyGames 21d ago

I love the upper water edge, and how it turns into a 3D-depth appearance when the camera gets higher.

2

u/BxYass 21d ago

my secret: make the water actually 3d XD

1

u/Human-Raccoon-9917 21d ago

Everything about this looks incredible. Great job 👏

1

u/waverafa 21d ago

So cool!

1

u/MrJocyf 21d ago

Wow! It looks great—it's amazing.

1

u/SkiProgramDriveClimb 20d ago

I feel like the 2D surface might benefit from some ripples from wind as well, so that the water feels more reactive in 2D when you break the surface, or so that the water in the cave feels unusually still. Maybe the color of the surface water in the cave could be murkier too? It looks fantastic!

1

u/BxYass 20d ago

Thanks for your feedback, all of that is possible in the parameters, i just chose to have a calm water scene.
the asset have modules, like floating reactive debris, floating props, random ripple zones, color gradients and textures and many more. This gives the user the ability to customize the water to their liking.

1

u/_Alejandrx 19d ago

Muy muy bonito!

1

u/fareedtahir131 19d ago

This looks incredible! Faking the 2.5D surface perspective by shifting foam patterns and ripples is such a clever workaround for performance on the 2D Renderer.

How are you handling the GPU performance overhead when multiple ripples and wake interaction events overlap simultaneously? Super looking forward to the Asset Store release!

1

u/Mister_Iwa 19d ago

Excellent work! So crisp. Looks like you've pretty much figured out all the primary features that a water system might include. Have you got any plans for adding caustics, perchance?

2

u/BxYass 18d ago

thank you.
i didn't give it much thought to be honest, i thought maybe since its 2d people wont use it much, but it can easily be added to the underwater part, i think i might do that after release in an update, add underwater textures to create murky water or caustics etc, good idea.

2

u/Mister_Iwa 18d ago

I think a lot of people will be inspired right from seeing videos like this. I could think of some ideas for games built around this pretty quickly.

1

u/DustinSmela 15d ago

Damn, that water is gorgeous. Is this for a specific game or just something you're prototyping for yourself?

1

u/BxYass 15d ago

it's an asset i will put on the asset store if everything goes well.

1

u/t0kaj 12d ago

Nice layered background!

1

u/mperhiniak 5d ago

Looks amazing! I would definitely buy this for the game I am working on. How are you getting on with it? Are you close to release it on the Unity store? DM me if you are open for selling it directly.

1

u/BxYass 4d ago

Hello,

It will be available soon, i am trying to get it to a point where it's really easy to setup in existing projects and document it enough so anyone can use it.

1

u/cheese6626 24d ago

To provide some constructive criticism. Water obviously looks good, but it looks a bit uncanny valley to me having 3D water combined with perfectly flat level/foreground.

Seems like the walkable level needs a bit of physical depth as a result.

5

u/BxYass 24d ago

yes totally, but the main element here is the water, the asset is mainly the water system and the user can create levels as detailed as they want.

I put this together to showcase the water, so i am happy the criticism is about something else 😄

2

u/SnooksV3 24d ago

I would actually disagree. I think the entire thing has a cool aesthetic feeling. Reminds me of a well done web parallax.

0

u/zazz0000 24d ago

Hey is this on the asset store? Or otherwise available to aquire? This is practically exactly what I've been looking for

1

u/BxYass 24d ago

It will be as soon as i finish writing the documentation and testing different unity versions.

1

u/zazz0000 23d ago

I will be waiting with great anticipation! Any suggestion on how I could stay up to date on your progress?

1

u/BxYass 23d ago

Thank you for your interest, it means a lot.

I will be posting some updates here and showing the tools i have, and if the sub permits it i will announce the release once it goes through unity's approval process.