Change engine tagline from "a refreshingly simple data-driven engine written in Rust"
I mentioned this in this review comment, which @cart said he was open to doing.
Our current tagline is "Bevy is a refreshingly simple data-driven game engine". Let's break that down!
Refreshingly simple
My major complaint is that I'm not sure that "refreshingly simple" is true these days, especially for devs coming from other languages and paradigms.
Instead, I would prefer if we could focus on one or two of:
- modular or flexible
- code-first
- fast
- refactorable? I think this is really valuable, but doesn't exactly roll-off the tongue
- ECS-first??
Data-driven
No one knows what this means. In theory, this means "you can change behavior by modifying assets on disk". Which is great! And a goal we have! But it's not a reality today.
The other problem is that this is easily confused with "data-oriented", which means "designed in a way that is performant because of smart data layout". This is what an ECS does, but it's also jargon.
Game engine
I mean, technically :p A lot of our users aren't making games! It's still a guiding star though.
People also get mad because "you can't have a game engine without an editor", but I think they're just wrong.
Written in Rust
People gripe about this ("it's about the product, not the technology used to make it!!"), but I think it's important to communicate this upfront, because Rust is what they're going to be writing.
My current winner:
"Bevy is a flexible, code-first game engine written in Rust".
New favorite: "Bevy: a game engine that lets you build anything."
"code-first", while definitely true currently and likely to be true going forward, doesn't feel like the right focus, given our "visual editor" ambitions.
First thoughts are mostly around focusing on empowering people, which I think is the underlying goal of the rest of the items.
"A modular engine built with Rust, empowering everyone to build games"
I don't think we should claim code-first. I think when people here that they're going to go "oh, so the editor is second class" (in the future where we have a usable editor).
I'll also throw out the fact that Bevy is increasing an "app framework", not just a game engine. I've been sneaking in "app framework" into the tagline in recent posts: "Bevy is a refreshingly simple data-driven game engine and app framework built in Rust"
But I also think we need the exact phrase "game engine" in the tag line or we risk being miscategorized, both by search engines and people.
I've been playing with "Bevy: the everything engine" in my head for awhile, but I think that verges on both hubris and not saying enough.
"everything" and "anything" feel very vague for a tagline, which is mostly going to be interacting with people who have no idea what bevy is capable of or is designed to do.
Maybe the word "extensible" to highlight the flexibility / modularity that comes from user code being similar to engine code.
Jumping in late but might I add "Bevy - Your engine, your way"
Bevy is all about modularity, building your game and engine in tandem to really build something your own. Having a tagline that properly highlights that, as well as one that isn't quite in the face leans the prospective dev to go "oh? what's this?" Godot is the "open source engine™" Unreal is the "movie maker engine™" Unity is the "mobile game engine™"
But no other engine comes close to bevy's flexibility and modularity.
The "Your engine" part also taps into the aspects of how game and engine dev are one in the same in bevy and also how bevy is a fully non profit engine, its a engine that can be yours
My key terms would probably be: Free, modular, and hackable, in that order.
I think the term "game engine" needs to be prioritized, probably by limiting the number of other compound descriptors (currently we show up on github if you search for "data-driven" or "refreshingly simple" but not "game engine").
Notes from Discord, quoting bits that I found insightful and don't want to lose:
- "code-first also is kind of solidifying the notion that we dont have an editor in a way that will feel more permanent to ppl, like an intentional choice. like we dont want one"
- " modularity isnt really a selling point. it is more a method by which we accomplish flexiblility, which is really one of our strengths"
- "like, this tagline is the first thing people see, its the guiding star and what we strive for. if we say we're code first and for rust programmers, thats gonna drive people away (which, i dont think is what we want)"
- "I will say that I really like calling bevy empowering especially because I think it's accurate and that's also how rust describes itself."
- " I like "Delightful""
- " this could be the title of anyone's game engine youtube video 😅"
" this could be the title of anyone's game engine youtube video 😅"
This was me, and the higher level point I was trying to convey is that a tagline that could apply to anyone's game engine (even if just the UE/Unity/Godot group) is not going to be useful as a tagline for Bevy because its undifferentiated. for example: "reimagining game development" could apply to any engine, even some random two week youtube project and thus contains no useful guiding information for making Bevy decisions in the future.
I think Empowerment is a uniquely Bevy trait comparatively, from the way Rust promotes itself, to the way Bevy uses working groups, to the gpu apis that range from raw wgpu to nannou-high-level (in the near future), and its even true in the future goals like editor work to empower more people. It is present in the project structure, APIs, and future work.
Which extends to being able to make directional decisions like "should we put a bunch of effort into providing better tools for artists?". Yes; because it is the project's stance to empower people. (An alternative choice in that question would be "no, because it is for programmers who can write code", which wouldn't align with Bevy's ethos).
So right now I land on "game engine" and "empowering" as the major key phrases for the next tagline. It would be nice to fit "game engine and associated tools like ldtk, particle editors, etc that can be used anywhere" but I can't think of a succinct way to phrase that and I think "game engine" is currently important even though many people use it for game-engine adjacent use cases.
Variations on a theme focused on "target audience":
Bevy is a game engine for unusual, ambitious projects.
Bevy is a Rust game engine that empowers you to build ambitious projects, no matter how weird they might be.
I would like for the tagline to be as short and to the point as the current one we have right now. Unity has had either a tagline or a mission of "democratizing game development", and while I wouldn't say they've been particularly successful in, nor do we have such corporate doublespeak, but I like that it's short but declares their goals explicitly in a very terse way.
To follow the last two points of "empowerment" and "ambitious projects": "Empowering your most ambitious game ideas" or something about bringing your most ambitious game ideas to life.
At risk of having a "I'd like to interject for a moment" moment, I like Wikipedia's description of Linux not as "a operating system" but a "family of operating systems". Much like that, I would suggest that Bevy is not a singular game engine but a "Bevy of game engines" from all possible permutations of plugins we, and the ecosystem, provide. I'm half-joking with this, but this doesn't sound like that bad of an idea. 🤣
I don't have a snappy one-liner to offer, but I can give some specific points that I believe are core to Bevy in the way I use it. These are the key concepts that were true for me since the beginning and will probably stay true for the future of Bevy, at least for me.
- modularity/hackability: I can change almost everything about how the engine works without forking it or touching internals. Notably, this means it's very easy to add ugly hacks so that I'm no longer blocked in my work if something doesn't work upstream. I realize "you can fix our bugs" is not exactly a selling point, haha. But for me it's very important that I'm almost never facing a wall with Bevy, there's always a workaround.
- flexibility in application: I use Bevy for game development, scientific simulation, and rudimentary desktop apps, and Bevy works wonderfully for all these use-cases. My knowledge is super transferable between application domains.
- fun: working with Bevy is plain enjoyable. The API isn't bending over backwards, the debugging experience is nice, there's no weird legacy cruft, the modularity allows you to only keep small portions of your logic in your head at a time.
- ecs/data oriented/not OOP: no big insight, I just like the ECS a lot. Probably directly feeds into the points about modularity, flexibility, and fun.
- friendly/open: Bevy is not a faceless conglomerate, but an incredibly welcoming and friendly community of people, most of which have really fast response times. If I have a big/complicated problem with a feature, I can usually get an in-depth friendly answer from the person who implemented it in like 24h. That feeds again into the point above about never hitting a wall. This also encompasses the strong open-source culture Bevy fosters.
Some things that I personally would not emphasize:
- speed: I very quickly hit performance bottlenecks in the renderer
- simplicity: lol
- complete newcomer friendliness: in Bevy, you often have to reinvent the wheel for features other engines have builtin or extensive plugin support
- code-first: true, but not something we should aspire to keep
- empowering: true again, but I just heard that term too much from venture capital software people. To me "empowering" reads like "we didn't know what to put, but this sounds good to investors". But that might just be me, others here seem to like it :)
- Rust: not the point, and arguably we are a specific dialect of Rust anyways, not the everyday kind of Rust
- bird puns: "bevy" is a very rare word for non-native speakers, let's not lean into it too much. Yes, there's a definition nearby, but you shouldn't need a dictionary to understand the tagline.
- experimental/niche: I think Bevy sometimes tends to be a bit too self-deprecatory in its description. You can definitely do production-ready stuff with Bevy.
If you throw these terms together, you get something like
"Bevy is a free, friendly and flexible game engine, empowering everyone to create something they love"
(I like alliteration)
The things that drew me to bevy are niche things
- Rust, the language I'm most proficient in and has the ecosystem I have been burnt by the least.
- ECS is an answer to "how do we build apps in rust when we don't have decades of OOP gui architecture to lean on."
Then what's made me stick around:
- best complexity management I've ever dealt with in software engineering. Introducing new work rarely has knock-on effects.
- rust ecosystem. Can just "cargo add typst" then figure out how to wire things up.
- active care about direction of the engine, listening to people's needs (even if the solutions are often active research projects).
Complexity management is the thing that, from experience and ongoing work, is the thing that keeps me using this and is a foot in the door for convincing others.
If I were to lean on anything specific it'd be 1. the modern features available to users 2. the way complexity stays manageable. Also something about "fun." I'd stay away from "code-first" for the same reasons that have been stated: there's ambitions of visual editing, which would come across stifled or second-class if "code-first" gets stated.
First probably should be mentioned that this is a game engine and that it can be used to build something else:
Bevy is a game engine and app (creation) framework/tool ...
then we can mention that it's free and open source (who doesn't like free and open source?):
... It is free and open ...
after this we can mention that it's build in Rust and uses ECS to not scare users with specifics early if they aren't familiar with these technologies or prefer something else:
... built/written in Rust. It's ECS based/focused and built in Rust.
ECS can be clickable and lead to Bevy website where we explain what ECS is.
"A modern, high performance engine for games and graphical simulations, built in Rust with love"
We've already mentioned the fact that people are motivated to come to Bevy because of Rust, but we should also ask why they are motivated to work in Rust, because those motivations will overlap:
- Creators who care about quality and robustness
- Want to take advantage of the power of Rust's types
- Are tired of the legacy cruft of C++ and other languages
I believe we should focus on emphasizing Rust rather than the architecture design itself, since most people (myself included) are drawn to Rust game engines because they're dealing with the numerous legacy problems that come with C++.
Well, let's first consider the purpose of taglines and what then makes a good tagline in that context. Generally they exist to express the "mission", the "intent", the "purpose", the "why us?" of the thing they are attached to. Like any good turn of phrase, a tagline is usually short yet deep, telling us the purpose with as little and simple words as we reasonably can. Sweet and simple. So what is Bevy's purpose? Its mission? Why does Bevy exist, why do we build and use it when Godot and Unity and Unreal and Gamemaker and Fyrox and so many others exist?
A good place to look into this is the "Why Build Bevy" section of the "Introducing Bevy" article. Let me rephrase and distill this in a way I understand it (but please read the original article yourself for full understanding.).
Those tenets held therewithin are that a game engine should be Free (as in Freedom) and Open Source for that the people in this day and age find monopolies and those without their best interests rife at the head of developing the tools they use. That also for the people the tool should be productive; to be fast to compile and run. What better language for that than Rust? And if Rust is so good to build the engine with, then why not use it with the engine to make the apps as well, giving it a common understandable backbone from end to end. If we are to care about intelligibility, then let us care about complexity through and through so that a fresh programmer could, with reasonable effort, both write a game and modify the engine itself without much problems. A graphical editor should be provided for the many things that work best with that method over code, and if an editor is useful and wanted then let us write it with the engine itself to keep ourselves understanding the users perspectives and needs. It must be data driven for usability and speed.
What can we take away from that in regards to the purpose? Not just that "editor is good, rust is good, data driven is good, simple is good, FOSS is good". We can see a certain focus line show up when discussing FOSS being what is good for the developers, how it must be fast to compile and run for the developers, that it should all be in a common language to aid the developers at all levels, that it should be simple to make it easier on the developers. Even when we move to the specific technologies this line is still present, why else would we want to write the editor in the engine to make sure the engine is actually good to use?
It can be said that the core behind Bevy's founding, its purpose, is to be a game engine that is for the developers first, app and engine. It ain't about Rust being great (tho it is), or that ECS is the main selling point (Cart admits in the post that ECS could be replaced by other data driven ways and it shows in the original tagline). And as a user, I feel that. The charm of Bevy over other game engines to me is that it feels genuinely developer friendly in its design and community, that there is easy jumping over from games to engine and back to games when developing. Compared to Godot where just reading the engine code left me feeling unconfident I could actually change anything there due to the separation of languages, or the closed source and proprietary nature of Unreal and Unity.
Admittedly I'm blanking on good taglines that focus on this right now, but I feel recognizing this facet, that Bevy seems to have been built with developers first in mind at its core, is a good place to start.
EDIT: Reading back on this and seeing the phrasing I used in "the developers first, app and engine" made me think "Developers first, in games and engine" or some variation thereupon could be a good start.
I'll also submit "A fast, free, and flexible game engine" because people seemed to like it on discord.