FERRETGame engine over Babylon.js
Ferret

Gallery

A level brought in from Unreal Engine 5 and rendered by Ferret in a browser at the desktop quality tier. Levels come from the export pipeline and are described by a manifest (Levels and packages).

The gate towers against an overcast sky
Stone, instanced paving and trees; the sun and sky come from the level's environment file.
A torch-lit passage with a wooden gate
Torch flames are effects of the level, lit and animated at run time.
A courtyard with the keep in the distance
Filmic tone mapping and cascaded sun shadows come with the desktop quality tier.
A banner on a frame in the courtyard
A banner mesh whose picture is a web page.
Braziers on stands in front of the wall
Props keep their Unreal names, so the manifest can attach behaviour to them.

The gearbox#

The showcase sample has one more level, gearbox (id gearbox-bench; pause menu: Gearbox bench, or ?level=gearbox-bench): the five-speed transaxle of the gearbox plan and nothing else on screen. Shafts, free gears, sleeves, forks, the crown, the planets and the oil level turn and slide from the machine's state, node by node (drivetrain.json names them). The input drive and the output load are numbers in the physics (a source whose torque the throttle sets, a load torque the brake control sets); nothing is drawn for them.

  • Controls. Console: cursor up / down demand / load, left / right the gear (the lever steps one gear), A the clutch, B the menu (cutaway, exploded view, power path, torque arrows, camera view). Keyboard: W / S, Space, Q / E or 0-5 and R, C cutaway, X exploded, P power path, V view. Gamepad: triggers, A, bumpers, X / Y / B.
  • Panels. Speeds and torques of every shaft, the engaged gear and the last shift, power in / out / loss and the losses by element, oil and cone temperatures, and a live graph of the last six seconds (speeds, torque, sleeve travel, a line where a shift ended).
  • Scripted drive. ?drive=1 (or the app argument { drive: true }) runs start, 1st to 5th, brake, reverse; tests/simulator/gearbox_test.py runs it on the simulator, tests/e2e/showcase-gearbox.spec.ts checks the view against baselines (neutral, 3rd gear under load, cutaway).