-
Notifications
You must be signed in to change notification settings - Fork 66
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Bevy book revamp: quickstart games and a community-powered Bevy book #23
Conversation
Including several important ones that had to be ruled out.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Looks great!
Amazing work creating the outline of the chapters and just all around. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
This will fix sub-list error in the book chapter list.
Co-authored-by: Federico Rinaldi <gisquerin@gmail.com>
Co-authored-by: Federico Rinaldi <gisquerin@gmail.com>
Co-authored-by: Federico Rinaldi <gisquerin@gmail.com>
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I love this! I'm sold on the general structure and I really appreciate that you have stepped up to facilitate this effort.
rfcs/quick-start-book.md
Outdated
1. Have a clear topic, and give a high-level overview of the subtopics it is going to cover and how they fit together. | ||
2. Be broken down into several sections / pages to focus on detailed topics. | ||
1. These should have simple, minimal examples explaining how that functionality works. | ||
3. Conclude with a compilable and playable example game in a **Bringing it together: {GAME NAME}** section that integrates these topics in a cohesive way. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I have some concerns about "Bringing it together: {GAME NAME}":
- Not all sections will feed well into consolidated example games
- Writing a "complete game tutorial" for each section is a lot of work for authors
- Reading/following a "complete game tutorial" for each section is a lot of work for readers
- Building complete games without pulling in "content dependencies from future sections" will be a challenge. Ex: the "A Bevy of Birds" game will likely want to move the birds, but to do that we'll need to pull in
Time
, which hasn't been covered yet - Some sections are clearly tailored around building a thing rather than topical organization. The "Graphics and Assets" section covers Transforms, Hierarchy, 2D (sprites), Assets, Cameras, etc. As we build more features in each of those categories, this section will either balloon in size / scope, or we will need to create new sections (which makes it harder to find content based on topic).
- Quick Start Games already fill a similar niche (although not identical). Quick Start Games aren't allowed to assume prior knowledge. I think adding "advanced" tutorials that call out prerequisite knowledge would help us fill the "bringing it all together" niche without burdening Bevy Book structure.
I'm currently biased toward the following changes:
- Remove the "bringing it all together" requirement from sections in favor of small / minimal illustrative examples introduced organically for each concept.
- Add an "advanced tutorials" concept to cover the "bringing it all together" niche. We could even link to these tutorials from relevant Bevy Book sections.
- Give each category/engine pillar its own section. Ex: Getting Started, ECS, Assets, 2D, 3D, UI, Input, Time, Plugins, States, Testing, Rendering. In the interest of Bevy Book flow / not burdening users with advanced concepts too early, we could add "advanced" versions of each section near the end (ex:
2. ECS ... 8. Advanced ECS
)
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I agree with these changes. I think we can get a much nicer flow if we're not forced to include cohesive examples throughout (or a strictly linear book order).
The advanced examples sound great; it would be wonderful to be able to assume existing knowledge and focus in on more complex features and workflows.
I'll do my best to refactor this now.
@cart I've refactored this as you requested in #23 (comment). Summary:
|
Some thoughts about advanced topicsWhat about if we add an Appendix or last book section (i.e. a group of chapters) dedicated to covering advanced topics instead of scattering them around the book? I think it's a good idea because a beginner won't need this knowledge during their first read, but they may need it later, after they've started their work. I know that those chapters/sections are labeled, but they still create a "bubble" that has to be manually skipped and that ruins continuity (there are so many ECS advanced sections that they can make an entire chapter by their own 😄). Advanced topic segregation may also help instructors and learners to point to or find the right resource. Do some advanced sections really fit into the book?Bleeding how-to guidesI noticed that the titles of many advanced sections do not refer to topics, but to practical guides to accomplish a particular goal, i.e. how-to guides. In fact some titles could be rendered like "How to render to a texture", "How to write your own shader", "How to deploy on Android". I think they should belong outside of the book, to make them more discoverable, and to not bother the reader that just wants to have an overview of the project with something like: "Hey, do you wanna know how to draw a cube onto a texture?". I think that for the moment, examples are a good place for those guides, even if a dedicated section on the website may be more appropriate in the future. Bleeding reference docsWe also need to be careful that we don't end up writing API docs in the book. I obviously can't tell precisely from the book summary, but looks like some sections of the ECS chapter, especially the advanced ones, are going a bit too much into a rabbit hole. As a rule of thumb, structuring the sections of a chapter around the structure of the codebase should be a warning flag. We can always link to docs when appropriate though. The righteous onesOther sections, however, are genuine topics and deserve to be explained and stay in the book. |
Those are all totally fair critiques @Nilirad; I've had the same thoughts myself. Advanced chaptersThe problem with moving these out into their own chapters, or into an appendix, is that it dramatically worsens the usability of the book as a reference material. You're going to want to look under ECS; not have to check if it's arbitrarily decided to be advanced or basic. TopicsSo, here are the sections (quick link) that I've included that I think are questionable; feedback on each of these would be helpful:
|
I've cleaned up the topic list as discussed above :) In particular, I've added a "performance optimization" chapter for some of these topics, which helps collect them into a useful location towards the end of the book that beginners will naturally skip. @cart, I think I've addressed all of your comments and I'd like to get a basic version of this out for 0.6 to improve the new user experience. My expectation is that I should be able to write one quick start example (almost certainly Breakout) and all of those book topics done at a basic level over the next few weeks. Advanced examples and more quick start examples can wait IMO; they're nice to have but not essential. |
We should really have a section to talk about animation, or how to integrate a third party library, since people will have to do that a lot |
My feeling is that there are several areas where this is likely to be true for a while: animation, physics, audio and networking all spring to mind. I'd prefer to avoid discussing specific 3rd party integrations here to reduce maintenance burden and make sure we leave space for new solutions to catch on as they arise. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I think we're honing in on a solid structure! I know you're chomping at the bit to get started, so I'll try to provide more immediate responses this review round.
Bundles can go into the Commands chapter
I think this is good to go! Congrats on being the first merged RFC! I've updated the file name to include the PR number based on the discussion in #4. |
We should update the README to account for this policy. I'll get to that eventually if nobody else does, but it is fair game if anyone wants it :) |
Rendered
This RFC discusses how we can improve the Bevy Book to include more content and better target the needs of our users.
The most important idea here is to split the users into two paths:
The first group will use one of several Quick Start guides, while the second group will follow an enhanced version of the Bevy Book.
This RFC outlines how that should work in practice, and provides a helpful set of style guides for this content to ensure we have a consistent authorial voice while allowing much more open contributions.