WebGL Water
madebyevan.com
madebyevan.com
But I also recently came across madebyevan.com again by accident after researching the backing of different npm projects to assess which ones had good momentum or commercial backing behind them to assess their long-term viability, and noticed a lot of npm projects (~2M weekly) relying on esbuild [1] as a fundamental part of their build system due to its amazing performance [1].
All good except that the foundational part of many npm projects feature is mostly being maintained by a single developer [2], a @evanw who was also prolific in responding to esbuild's issue catering for different peoples issues & feature requests. I didn't think this level of investment in a popular OSS project was sustainable and hoped they had good sponsorship behind them, but was surprised that @evanw [3] didn't have sponsorships enabled which I thought strange as most authors of popular npm projects have good sponsorship, but upon further research it's because Evan Wallace's day job is as the CTO and cofounder of Figma - a popular company with ~10B valuation.
Which is great in that esbuild isn't at risk of being sporadically abandoned from its lead developer joining a new/demanding startup, on the other hand a foundational project in npm's ecosystem is being developed in the spare time of a Co-founder & CTO of a ~10B Co - who also creates great demos :)
[1] https://github.com/evanw/esbuild
- iOS still doesn't support webgl 2.0 and webgl 1.0 is ancient
- browsers suck for 3D content in other ways too (slow load times, impossible to controll cache/asset loading/storage, etc.)
- the above sucks even more when you are on limited connectivity/offline
- wasm load times also suck
- browser input is terrible for 3D
A lot of these could be fixed by providing some APIs but it's not in Apple interest to give you the tools to bypass their appstore tax. And web standards take forever to develop. I lost enthusiasm about webgl back in 2016 when it was already ancient and showing no signs of fast cross browser adoption.
"browser input is terrible for 3D" doesn't make sense. The web version of game streaming services like Stadia use browser input and they work fine.
Offline storage of gigabytes of assets is tough, that's a valid criticism. But that is not a deal breaker for many applications. Hopefully we'll see more movement on this.
A lot of the load time issues with web games are just bad software architecture and can be solved by the same techniques web developers use: breaking assets and code into modules loaded on demand instead of giant monolithic wasm binaries or asset packs.
WebGPU is like I said irrelevant since the platform is not enabling for these kinds of apps.
Right, it supports Metal and all the WebGPU implementations right now are using Metal. Apple was in fact the driving force behind WebGPU.
I see where they are coming from, opengl (including webgl) is such a clusterfuck.
The previous time, from 2017[1], was already quite good - there was only a single complaint, and that was about someone missing a WebGL extension this needs for floating point textures.
Truth be told the phone is relatively old, but then again I haven't switched because it... still works and I assume many other owners made the same choice regarding their devices.
I doubt either would actually lack float texture support though. The WebGL implementation perhaps has weird requirements for when to allow this extension.
I checked and indeed it's not listed when looking at chrome://gpu
Works on Firefox though.
Unfortunately, this feature is very obscure, not really explained anywhere, and no complete list of blocked configurations exists anywhere. I've heard that it's supposedly to protect from buggy implementations that might allow a sandbox escape exploit. But again, that's just hearsay, there's really no official, up to date documentation on any of this
Thanks for reminding though.
That's because it runs fine in Firefox Focus. The error message shows up in Samsumg Internet Browser and Chrome though.
(S8 is a great device. I don't want to "upgrade" - hate the notch on newer versions, the S8 still performs very well, and I don't know of any feature only in newer phones that I have a use worth paying for.)
400 Bad Request, You have attempted to access this site via TLS (HTTPS), but it is not configured for TLS access.
Probably because I have "dom.security.https_only_mode" enabled in Firefox
The first line: "This demo requires a decent graphics card and up-to-date drivers." made me chuckle at the humbleness since I'm running this in Firefox on a 10 year old laptop. Buttery smooth (I'd say 60fps) at what seems full native resolution.
I guess it's the "up-to-date" drivers part (or rather, browsers playing along with existing drivers) that makes the difference.
"Uncaught Error: This demo requires the OES_texture_float extension"
That's a Mozilla browser on Android though.
Going to take this positive feeling, eat and ice cream bar, rub my tummy, watch some Babylon 5 and go to sleep with all of these happy feels. :)
It's really no big deal to provide that detail even if it transpires to be irrelevant.
Since then I’ve had my mind blown several more times, but this demo has a special place in my mind. I was so excited at the prospect of WebGL.
By '92 I had built a whole software 3D renderer in x86 and had the T-Rex from Jurassic Park stomping around in real-time on my 286.
10 years later it still looks as good as I remember
Edit: Looks like I'm wrong about the density. When you load the page the "gravity" of the ball is actually off (but it's at the bottom, so it looks like it's on and dense), and pressing G lets it float up.
It's not turning off gravity though. If there was no gravity, the water wouldn't pool at the bottom, so I was hoping to see blobs of water floating around.
Even being from 2011, the fact that works right on a 2017 low end phone with low battery, is totally mind blowing
Maybe it's as simple as "Steam is the money pipeline, and everyone makes native games on Steam."
- WebGL is a subset of ES 3.0, when the hardware can do GL ES 3.2
- WebGPU, when it arrives sometime during 2022, it will be a 1.0 MVP of the features from Metal, Vulkan and DX 12, with yet another shading language that looks like a mix of C++/HLSL/Rust, WGSL.
- If you just want compute, now WebGPU is the only option, although GL ES 3.2 has it. After two failed attempts from Intel, Chrome folks managed to force everyone to use WebGPU instead, so that is ready when WebGPU is ready.
- Lack of tooling, to debug WebGL you have basically to debug the browser process and try to track down your 3D calls from the browser own ones (there is a SpectorJS, which is quite simple when compared against something like Pix or REnderDoc)
- Browsers black list consumer's hardware/software, so content producers have no idea how well it actually runs.
- Indie game development moved from Flash into mobile, where tooling is much better.
Finally, I leave you the Flash demo for Unity 3 using CrossBridge[0] and Stage 3D [1], back in 2011.
https://www.youtube.com/watch?v=UQiUP2Hd60Y
[0] - https://adobe-flash.github.io/crossbridge/
[1] - https://help.adobe.com/en_US/FlashPlatform/reference/actions...
https://classic.minecraft.net/
Mobile Safari:
- Forever lacked >WebGL 1.0
- WebGL very slow compared to native
- Won't let you use accelerometer, motion control, etc., because "Privacy" (but privacy loving Apple was totally going to scan our iPhone photos until we all raised hell...)
- Web Audio stack breaks games in interesting ways desktop doesn't. "Oh, we don't let you load .mp3 audio samples by default like desktop browsers can...."
Android Chromium:
- Has 200-300ms audio latency on many devices. Here's a demo where touching/clicking the squares should have instant response (try it on desktop) but many Androids have the lag:
> https://classic.minecraft.net/
I think that site just doesn't grok touch. Tech-wise, I believe it would run okay on modern phones if the controls were sorted out.
Shameless plug, but my team and I are on a mission to solve this for Unreal Engine developers looking to export their projects to HTML5. The potential for the gaming and metaverse opportunity in the browser is enormous, so to this end we're bringing the full power of UE4/UE5 to WASM, in combination with WebGPU + WebXR to deliver experiences that rival anything on Steam or other storefronts or app stores.
In addition to our hosting platform for deploying, maintaining, and monetizing, we offer a suite of tools for optimization that include compression for drastically reduces file sizes, and on the fly asset fetching to keep load times as short as possible. The goal is near native performance, with faster deployment and accessibility than Steam.
For developers and creators, there's no unnecessary 30% cut of your virtual worlds and real-time 3D applications to walled gardens. Add in that you only have one codebase to main that when deployed, it just works everywhere with a browser.
For users, play is a single click away, no local installs or dedicated clients required on computers or mobile.
Link to our website: https://www.theimmersiveweb.com/
Link to our Discord: https://discord.gg/zUSZ3T8
Steam isn't a major consideration once you've gone into the weeds of implementing software that colors outside the usual browser lines.
https://docs.unity3d.com/2021.2/Documentation/Manual/webgl-g...
there are several other unity only web game sites and lots of others with not just unity
Now Blender is really good we’re seeing a lot more indie games exploring low-poly 3D aesthetics. Further the increasing viability of using more compact formats like SDF hopefully means we see even more people realising they can actually build something on the web.
You can even plug a keyboard and mouse in and use all our game editors.
Curse of Monkey Island: https://personal-1094.web.app/scummvm.html (press esc key right away upon load to skip straight to playing)
Baldur's Gate 2 demo: https://personal-1094.web.app/gemrb.html
Diablo demo: https://d07riv.github.io/diabloweb/
Humongous Arts games:
Spy Fox in Dry Cereal demo: https://thatgamedev01.itch.io/spyfoxindrycereal
Pajama Sam demo: https://thatgamedev01.itch.io/pajama-sam-3
For example this IFC-in-browser thing looks amazingly useful: https://twitter.com/ifc_js/status/1462880392915083269
Even if you can get the game's renderer and UI to reach parity, it's hard to overcome the UX and network effects of Steam. And that sort of ecosystem fragmentation (alternative platforms often don't offer crossplay) is bad for gamers, not to mention having to implement different multiplayer pipelines makes lives harder for devs.
Gaming on the web might be nice for trashy flash like games, but for anything more, why would anyone waste time on that when there's much better curated experiences on Steam, or barring that, mobile app stores and Switch? There are already enough excellent indie games to last several lifetimes. Not gonna waste time exploring the dark corners of the web to try some amateur's experiment with webgl. If they're not on an established game platform by now, I could only assume the devs care about their philosophies more than end user experience, and it would be a subpar experience even if I got the graphics to load (big if).
Even something like GeForce Now (cloud rendered streaming games) use Steam and Steamworks APIs for the community and multiplayer APIs. It's therefore much better than competitors like Google Stadia (which is pretty much dead and has no community). GOG has a niche but only for single player games. For multiplayer it's either Steam or dead matchmaking.
Maybe a more interesting comparison is something like boardgamearena or boardtopia, which offer not just simple games but also the marketplace and matchmaking features of their own. They have established their own communities finding a niche (digital low fi board games) that Steam has neglected.
WiFi is also still not up to par just quite yet. Maybe wifi 6?
instead of checking "currentPosition" and "futurePosition" for a collision per frame, instead compute a sphere using those two values as bounds, and check if there are any collisions within that sphere
Then unpause, watch the ripples
This maybe old. Runs perfectly on my 2013 dell laptop.
Uncaught Error: This demo requires the OES_texture_float extension
I’m running it on an older iPad Mini (Safari, on the latest OS), and it works fine.