Naar inhoud springen
Gebouwd op Bevy
Bevy

Jouw browsergame, gecompileerd tot een native app

Wanneer een project klaar is om de tab te verlaten, exporteert de Engine het en genereert een Bevy-project in Rust — dat vervolgens wordt gecompileerd tot een Windows-, macOS-, Linux- of Android-build.

Doel

Bevy 0.19

Licentie

MIT / Apache 2.0

Taal

Rust (rustc ≥ 1.95)

Renderer

wgpu

Wat Bevy is

Bevy is een game-engine geschreven in Rust, gratis en open source onder een dubbele MIT / Apache 2.0-licentie. Hij is opgebouwd rond een entity-component-system-architectuur en rendert via wgpu, dezelfde grafische abstractie die aan de basis van WebGPU ligt. Hij compileert naar een echte native binary — geen browser, geen runtime om mee te leveren.

Waarom eigenlijk een tweede engine

Babylon.js is wat aukimi mogelijk maakt: een 3D-applicatie die je opent met een URL. Maar een afgewerkte game moet vaak een bestand zijn — iets om op een winkelpagina te zetten, aan een speler te geven, of te draaien zonder tab. In plaats van je te vragen je project elders opnieuw op te bouwen, vertaalt de Engine het: de scène die je in de browser hebt gemaakt, wordt een Bevy-project dat compileert tot een desktop- of mobiele applicatie.

Wat er precies wordt geëxporteerd

De build maakt geen screenshot van je scène. Hij extraheert haar: geometrie en materialen vertrekken als een standaard-GLB, alles wat de engine weet en wat glTF niet kan dragen (terrein, vegetatie, lucht, post-processing, entiteitsdata, scène-instellingen) vertrekt ernaast als gestructureerde JSON, en uit die twee bestanden wordt een volledig Rust-project gegenereerd. Dat project is een normaal Cargo-project — je kunt het gewoon lezen.

  • scene.glb — geometrie, materialen, animatie
  • scene.json — terrein, vegetatie, lichten, instellingen
  • Een gegenereerd Cargo-project gericht op Bevy 0.19

Je scripts gaan mee

Gameplayscripts geschreven in de Engine worden niet met de hand herschreven naar Rust, en ze worden niet weggelaten. Het gegenereerde project bevat een JavaScript-runtime (QuickJS) en bindt dezelfde scripting-API, zodat een script dat in de browser is geschreven, ongewijzigd draait in de native build. Die twee API's op elkaar afgestemd houden is een vaste regel in de codebase, geen bijzaak.

Vier doelen, en één die eerlijk toegeeft dat hij ontbreekt

Windows-executables, macOS-appbundels, Linux AppImages en Android-APK's zijn de doelen die het buildpaneel vandaag aanbiedt. iOS staat vermeld en is uitgeschakeld — de vereiste toolchain is niet iets wat we achter een laadanimatie kunnen verstoppen. Als de buildserver je doel niet aankan, krijg je het gegenereerde Rust-project om zelf te compileren, in plaats van een foutmelding.

  • Windows 10/11-executable
  • macOS-appbundel
  • Linux AppImage
  • Android APK (Android 8+)

Wat niet meekomt, wordt gemeld

Twee renderers zijn twee renderers. Sommige dingen die de browserpreview doet, hebben nog geen equivalent aan de Bevy-kant — gebakken lightmaps en gelokaliseerde light probes zijn daar voorbeelden van. De exporter schrijft een conversierapport dat precies vermeldt wat niet kon worden overgedragen, in plaats van het stilzwijgend te laten vallen en jou het verschil te laten ontdekken in de afgewerkte build. Een gat dat je kunt lezen, is een gat waar je omheen kunt plannen.

Bouw je project tot een echte binary

Maak de game in de browser. Lever hem als applicatie.

Steun het Project