[HN Gopher] Bevy 0.3: game engine built in Rust
       ___________________________________________________________________
        
       Bevy 0.3: game engine built in Rust
        
       Author : _cart
       Score  : 94 points
       Date   : 2020-11-03 21:04 UTC (1 hours ago)
        
 (HTM) web link (bevyengine.org)
 (TXT) w3m dump (bevyengine.org)
        
       | adamnemecek wrote:
       | You guys should also check out rg3d
       | https://github.com/mrDIMAS/rg3d
       | 
       | Join the discord channel https://discord.gg/xENF5Uh
        
       | _cart wrote:
       | Author here. I'm happy to answer any questions you have about
       | Bevy!
        
         | kiliancs wrote:
         | I enjoyed reading this release announcement. Thanks for all the
         | details.
        
         | ffhhj wrote:
         | Great work! I have developed games in several game engines, but
         | I'm new to Rust. Can it run inside a WebView and communicate
         | with Java (Android) thru a JS interface? That would be awesome.
        
         | Vermeulen wrote:
         | Any plans for scripting/logic other than Rust? I can't imagine
         | it working well to quickly iterative on gameplay
        
           | gameswithgo wrote:
           | The developers of EVE Online had this same thought, about
           | C++, so they used python as the gameplay scripting language.
           | A few years later faced with unsolveable performance issues
           | with large scale battles they had to resort to slowing down
           | time by a factor of 4, during large scale battles.
           | 
           | Just a single anecdote but can be important to keep in mind.
           | As well, some types of scripting languages can have their own
           | productivity problems as projects get large. Lack of types
           | making code hard to follow, bugs harder to track down,
           | refactors riskier etc.
        
           | _cart wrote:
           | Rust isn't inherently slow to iterate, its just easy to write
           | code that compiles slowly if you aren't careful. One of
           | Bevy's primary focuses is to have fast iterative compile
           | times. Changes to our examples can be recompiled in ~0.8-3
           | seconds (according to your hardware, os, and linker). We have
           | a "fast compiles" configuration that works quite well.
           | 
           | First we do plan on exposing hooks to allow scripting
           | languages to be plugged in to Bevy. We actually already have
           | a pull request out for that.
           | 
           | However my default answer to the scripting question is that
           | it is a non-goal for Bevy, and is in fact maybe even an anti-
           | feature. I want Rust to be the "one language" people use to
           | build Bevy games. I think a cohesive ecosystem is an
           | incredibly important part of an engine's success. If half of
           | Bevy devs use rust and the other half use C#, then
           | compatibility and interop become a huge problem. The Rust
           | language choice does set a high bar, but Bevy doesn't need to
           | be all things to all people. Additionally, the Bevy API is a
           | Rust API. Defining FFI on top means we need a second api
           | surface that is the "lowest common denominator" (aka a C
           | api). This both increases maintenance burden and creates the
           | "rust experience" and the "everyone else" experience.
           | 
           | In the near future 3rd party Bevy scripting plugins will
           | start popping up, but I doubt I will ever officially endorse
           | them.
        
             | _cart wrote:
             | I also think on of the major selling points of Bevy is that
             | "bevy game devs" are actually "bevy engine devs" ... they
             | just don't know it yet. Bevy is implemented using the same
             | plugin interface that games use, which blurs the line
             | between engine code and game code.
             | 
             | Adding scripting languages into the mix removes this
             | benefit and cuts down on the number of people capable of
             | contributing back to the engine.
        
             | nahuel0x wrote:
             | what about using rust for scripting but compiled to wasm,
             | so beavy can (hot-re)load wasm modules?
        
       | dang wrote:
       | Related threads from recent months:
       | 
       | https://news.ycombinator.com/item?id=24123283
       | 
       | https://news.ycombinator.com/item?id=24334307
       | 
       | https://news.ycombinator.com/item?id=24123283
        
       | victoriasun wrote:
       | Man, you guys really kill it with blog/changelog announcements.
       | Great job!
        
       | barnabees wrote:
       | How does this compare to Amethyst or Piston?
        
         | _cart wrote:
         | (author here)
         | 
         | Here is a link to a conversation we had about this in the
         | Amethyst community: https://community.amethyst.rs/t/bevy-
         | engine-addressing-the-e...
        
       | mrmonkeyman wrote:
       | Nice engine, but Rust's edit-compile-test-cycle is more like 5
       | minutes than 5 seconds which, to me, is ridiculous for game dev
       | which by its nature demands more and faster experimentation than
       | other lines of work.
        
       | jokethrowaway wrote:
       | That's a great pace of changes!
       | 
       | For my use case, Bevy web (and mobile is nice too) support would
       | mean switching from Godot, 100%.
       | 
       | It will be interesting to see if cross platform support will
       | trickle down to amethyst (I think they share the gfx upstream),
       | who is currently migrating to a faster ECS library (legion).
       | 
       | Exciting times!
        
         | runevault wrote:
         | Isn't Legion more different then just faster? Last I heard the
         | big change was switching to an archetype based ECS which gains
         | speed in some scenarios but does worse if you regularly
         | add/remove components (so temporary effects are just a
         | component you add for a brief time then remove).
        
       ___________________________________________________________________
       (page generated 2020-11-03 23:00 UTC)