Just found really great and extremely funny SCIENTIFIC document about Babylon.js ease of use - http://www.diva-portal.org/smash/get/diva2:1523176/FULLTEXT01.pdf
For the ease of use part, observation sessions were made with nine developers who were tasked with getting a basic 3D model up and running locally with each framework with the official documentation as a starting point, one hour limit respectively.
Here is just one experience “from the other side”.
Participant I
Hardware + OS: macbook pro, ubuntu
Languages + techniques: c++,c#,html,js, have used 3d before. not used webpack/node in a while so didn’t remember how it works and how I remembered how it works was wrong and made me confused.
Babylon.js
Runs ‘npm install --save babylonjs’
“Well now it went wrong.”
Deletes everything and creates a test folder and then runs ‘npm init’ first and then ‘npm install’.
Reads about imports via link 2 then reads under ‘getting started’ via link 1.
“So we can test an example then to see if things work.”
Copies some code from getting started.
"It’s been a long time since I’ve done this but we’ll see if we get things to work”
Googles ‘npm run package.json’
Ends up on michael-kuehnel.de guide about npm, follows it a bit.
“Aha maybe it is not an imported script, but why doesn’t it want to, now I lost the second link.”
Pastes import * as BABYLON at the top of a .js file.
Gets syntax error, cannot import module.
“Ouch ouch ouch.”
Tries require instead of import.
Reloads, gets ‘engine is not defined’.
“I suppose I have to go back and check out how the heck this works.”
Googles ‘npm tutorial’.
Reads over at nodesource.com.
Double-checks that guide with own installation.
Goes to sitepoint.com/npmguide.
Googles ‘npm tutorial run script’
Back to the michael-kuehnel.de guide.
Runs ‘npm --help’ and reads a bit about it.
“Yes it was an error message.” Refers to it being connected to babylon.js not npm.
Reads more in the Babylon.js docs.
Copies selective import {engine} etc scene from babylonjs.
Tries to use import instead of require.
Reads throughout the npm support page.
“Need to do all these things as well.”
Runs ‘npm install --savedev typescript webpack tsloader webpack-cli’.
Creates a webpack.config.js and pastes the sample code there.
Also adds an tsconfig.json.
“Should I really need to include…?”
Creates HTML file index.html and pastes code from npm support page Babylon.js docs.
“This seems to be for ts, that’s not what I’m doing here.”
Finds guided learning getting set up in the documentation, scrolls through it and reads.
Opens getting started again, link 1.
Big sigh.
Clicks on the ‘first scene and model’ and getting started playground, it comes up a cube.
Scrolls more in ‘first scene and model’ section.
Googles ‘babylon nodejs’, clicks on a local webserver guide, goes back to babylon.js.
Peruses documentation, homepage, diving deeper, api, babylon native. Clicks on learn and then documentation, getting
started.
“I have already looked at this.”
"Well, they could have been a little clearer but they seem to have their own thing that they test all their examples in.“ Refers to
the playground.
Deletes everything in the test folder.
Creates an index.html.
Now follows guided learning create a game tutorial.
run sudo apt-install node-typescript.
“Do you need all that?”
Runs everything anyway.
Runs ‘npm run build’ but gets error that it does not resolve some dependencies with webpack, cli and more.
Checks through its terminal history.
Creates a public folder and moves index.html to it.
Clean webpack plugin seems to have problems.
Runs ‘npm run start’ and gets ‘webpack-dev-server not found’.
“Here we see that it is installed.”
Installs it again anyway.
Does not seem to work.
Runs the installations of typescript and ts-loader etc.
Gets several deprecation warnings that fsevents will break and chokidar will break on nodev14.
The computer crashes and the participant drops out of zoom-call, back again two minutes later.
Googles ‘set up babylon.js’
Comes to the a page on tree shaking on Babylon.js docs.
Tries ‘npm run build’.
Reads more on the tree shaking page.
Goes to stack overflow.
Runs ‘npm run start’, does not work.
Deletes entire node_modules.
Copies webpack-dev-server again from the guide to start a game within Babylon.js docs.
Runs ‘npm run build’.
Runs ‘npm run start’.
Gets error ‘cannot find node_module webpack-cli’
Installs it.
Runs ‘npm run build’.
Opens index.html in the browser, sees a sphere.
“But if I do as they write there I don’t get it to work. Only like this.”
Do you recognize yourself in this example? As for myself - yes, I do.
I also have to admit that while reading this I’ve laughed to tears
From my point of view the “Getting Started” part of the docs should give more clear and structured information about the possible first steps which are not so evident for users as one may think.