Golden Paths for Babylon.js!

Hi all!

Today we’re officially unveiling our “golden path” work to help facilitate and broaden Babylon’s usage in various scenarios. For a thorough overview check out our most recent blog post, but the short version is that over the coming months we, the Babylon Team, will be creating a variety of full-fledged experiences, documenting the end-to-end process, and fixing any gaps we find in order to “pave the golden path” for creating that kind of experience. The first of these golden paths is already done and available: check out Playground to Production: Fruit Fallin’ to see the journey by which we took a Playground proof-of-concept and developed it into production software shippable on Web, iOS, and Android!

This first golden path shows a number of key patterns/skills we wanted to explore:

  • Bringing code from the Playground into the Template Repository Workflow (TRW).
  • Basic 2D game development.
  • Implementing temporal logic with coroutines.
  • Hosting and sharing the TRW test app with GitHub Pages.
  • Exporting Babylon experiences from the TRW to Ionic (and thereby Web, WPA, Android, and iOS) via NPM.

So, now that we’ve got all that… What next?

As I mentioned, we want to continue to pave these golden paths for a wide variety of experiences. The long-term goal is that, no matter what kind of experience somebody wants to make with Babylon, there’s a well-trodden golden path leading somewhere similar that they can use to get started. We’ve now got a path to a Flash-style 2D game shippable on multiple platforms. What kind of path should we pave next? In other words, what kind of experience would you like us to show you how we would build?

  • Should we make a “walking simulator”-style experience featuring a first-person character controller, physics-enabled environments, and Electron as a target platform?
  • Should we make “postprocess library” showing how to use Babylon to make a utility for running shaders on videos, publishing that utility as an NPM package?
  • Should we make a “viewer/configurator” showing how to create a 3D viewer with configuration options, then add that to an existing website a la 3D commerce?

Or something else? Ideas that I haven’t thought of? I can’t guarantee exactly what we’ll end up doing or in what order we’ll end up approaching it. But we’re making these golden paths for you, the Community, so it’s important for us to know…

What kinds of things do you want to make? :blush:

25 Likes

+1 for this idea!!!

5 Likes

Quick poll: of the listed possible golden paths, which one are you most interested in seeing?

  • Viewer/configurator integrated into separate Website
  • Postprocess library published through NPM
  • “Walking simulator”-style first-person experience targeting Electron
  • Your own idea from the comments below!

0 voters

Note: this poll is to gauge interest and won’t necessarily determine the order in which we tackle things. Some golden paths need pieces from other golden paths that must therefore come before them, and golden paths that require new Babylon.js features will be affected by things like feature freeze before a major release. Those caveats covered, though, let us know what kinds of experiences and golden paths you want to see next!

How about a full fledge ECS?

Walking simulator has been done umpteen times, Postprocess lib would be cool but it would be nicer to see it presented as a galley that you could pick different process and create a rendering chain and preview the results prior to compiling the script to use in your scene.

Not sure what the viewer configurator would be.

Yeah my vote is the Postprocess, or a robust ECS that we can start making modular scripts and having them on some sort of catalog to preview and download.

2 Likes

This looks promising:

They even have a babylonjs example.

Edit: Looks like the last commit was over a year ago.

Edit 2: GitHub - kaliber5/ecsy-babylon: Experimental implementation of ECSY for babylon.js.

Last commit for that was 10 hours ago.

2 Likes

I’m not 100% sure what an ECS is (entity component system?), but it sounds pretty neat!

To clarify, I’m not necessarily expecting the experiences created for golden paths to be something we’ll continue to make and use indefinitely; I don’t anticipate making a lot of tools, for example. Rather, the golden paths are supposed to exemplify making a kind of experience that people will want to make a lot more of. That’s why walking simulators and viewer/configurators (basically just viewing/manipulating a 3D object on a Web page) are high on the list, even though people have made many of both before. Lots of people (we suspect) want to make such things, and many who may want to do so may not know how to go about it or go through it sustainably, so having a well-traveled, well-documented golden path will hopefully help people make other similar experiences, even if the experience used to pave the golden path isn’t independently that compelling.

With that said, is an ECS something lots of people might want to use, or is it something lots of people might want to make? If the latter, it might make a great subject for a golden path. If the former, it might be better suited to be shown as a tool, a step along the way in a golden path showing how to make the thing people would want to use it for.

2 Likes

I have one targeted for BJS but it has been sitting with a few demos. It would just need people refining it and start adding components.

It has a full communication bus between entitles and components as well with a subscription system.

I just don’t really have the time to dedicate to it, but it for sure has all the foundation there.

What I would really like to see is like a catalog of components, materials and postProccess like the Unity asset store, but for BJS with all the code viewable and extendable. Then there could be rack of “golden paths”

1 Like

Hi golden patch is silver without khr extensions. We need full support khr material properties in exporters like transmission and tickness. Now i found only one editor program with full support this extensions. Im understand shader way but we need something standards in 3d commerce in our pipeline

1 Like

What I would really like to see is like a catalog of components, materials and postProccess like the Unity asset store, but for BJS with all the code viewable and extendable. Then there could be rack of “golden paths”

That’s exactly what I want too. I just wrote a long post with a post-mortem: Post-mortem analysis of a Babylon project and this would be my #1 request for BJS. BTW, if that project can be useful for this golden path initiative I’d be very happy to help.

2 Likes

@Pryme8 @brunobg Gotcha, I think I understand. While I’m not sure making a catalog, as such, would constitute a golden path, both creating components for such a catalog and using components from such a catalog are very much golden path items—in fact, those are both things I want to explore when making the, “Postprocess library published through NPM.” My impression right now (subject to change) is that NPM represents probably the best way to distribute such reusable components, at least for code and probably assets as well, and using such components through NPM should slot very well into the Template Repository Workflow. A rudimentary usage of this pattern already appears in the last two sections of the first golden path, but I’m pretty excited to explore the pattern more deeply in future golden paths, specifically the postprocess library one. As for there being a catalog of these things somewhere (On the forum? In the docs?), I hadn’t really thought about it, but it sounds like a great idea!

I do not want to start an asset store because of all the constraints (Content management, review, ownership, compliance, security, privacy) that come with it.

Remember that Unity is making money with their tool where babylon.js is (and will remain) entirely free.

6 Likes

Thouuuuugh there is nothing stopping a private individual from monetizing the idea.

1 Like

Oh my gosh yes!!!

These might be quite specific, but since I’ve just gone through this;

  1. A simple editor; add primitives, move and resize, set/change material, save/load/export.
  2. Something around shader development - I came to babylon because of the visual node editor. So something allowing people to use this to create a custom shader and then put that in their own website; as a background or effect for example.

If you weren’t already going to do this, getting up and running with webpack etc was a big deal for me - so for these golden paths I would like the complete project put up as a zipped template; download, unzip, npm install…etc…then access http://localhost:8080 or whatever to see the final project. Then people can see a running babylon project doing what they want, and use that as a jumping off point.

It’s really great. I hope I can see how to design high-quality particle effects like particleHelper.

maybe a CLI would be useful as a way to generate these template projects based on user selections. on the one hand it is a maintenance burden on the team, but can be really fast to get running from zero.

1 Like

I’ve voted for the viewer/configurator 'cause I think it’s a use case many people want to do, but I’m personally more interested in a quake-like experience (or at least a FPV one :blush:). Helping to know how to use Electron or similar tools could be very helpful, especially for CG artists which are most of the time feared by developer tools & workflow (and code itself :crazy_face:).

I think this has to do with this topic: a text summary of the great video tutorial series of @PirateJC (like Interactive Hex Tiles - which appears not mentioned in the doc by the way?) could be a nice addition alongside the videos. I say this 'cause I have many of his videos in my “watch later” playlist, and doesn’t often take time to watch them, while a text version could help to easily learn important points (and come back read them in a easy way to retrieve informations).

[edit] oh, and very nice initiative by the way!

4 Likes

Oh yes I agree. Having a clear path to write components, with a template repo that’s easy to fork and example docs would be amazing. Count me in to help and to be among the first ones to release some. You can DM me if you want to coordinate something.

I completely understand. But perhaps a new forum area to post assets/components? It’d make for an easy way to find them and have none of these issues.