Introduction

Good evening my dear witches! Welcome to the book, where I hope to guide you through the vast world of computer magicks.

Firstly let me start by giving you a forewarning. This book is extremely experimental in every way possible. Programming is a well-trodden field but this book chooses to teach it in a very unconventional way. The programming language of choice for this book is one that you will see people advice against using as a first language, and also the game engine we will be using is still in early stages of development and will continue to evolve and change. This means that with Bevy changes this book will adapt to those changes, which although fine for me, a shaky ground might not be your cup of tea especially if you read this over a long period of time.

Why?

So why? Why should you learn in this unconventional way? Well you see, I believe that Rust itself is not actually hard to learn. In contrast, I believe Rust is one of the easiest, if not the easiest, languages to learn first. See because of the differences between programming languages, which at times are very vast, when someone learns a language and then learns a different one, a good part of what they are doing is unlearning concepts from their first language. A pattern you might have observed in your life is that when someone knows how to do things one way, they tend to find it difficult to accept that there might be a different, possibly even better, way of doing the same thing if they found no problem in their particular way and especially if they invested a lot of time learning or perfecting that way.
I believe this is especially true for people learning Rust as a second or third programming language. Rust takes some fairly unique stances on ideas and methodology that could be confusing to people used to other methodologies.

What about Bevy? Why the choice of such an unconventional game engine that is still in early days? Besides my belief that you will see Bevy everywhere in few years because it's really good, I also feel the same way towards Bevy as I do Rust. It's hard to teach it as a second game engine or to someone who learnt a different language first because it also has a fairly unique stance on how games should be made.

Finally there are career reasons not to start with Rust and Bevy, as they are in their early days you will find fewer jobs asking for Rust than for example if you were to learn JavaScript or Python. There are also less game development jobs than for example web development ones, and even amongst those few the ones that will be okay with your knowledge of Bevy and lack of experience in other engines are not likely to be many, at least for the time being.

Alternative Recommendations

With all of that out of way, if you're slightly spooked by any of this or think this is probably not the best place for you to start your journey, I have recommendations for you!
If your concern is the experimental nature above all else and your goal with learning programming is making fun and creative things (including games of course!), I strongly recommend Daniel Shiffman's "Start learning here" and "Nature of Code 2". You will be in good hands, the best really! {TODO: Mention second edition book once it's published}
Meanwhile if your concern is the game engine or the language being a bit unconventional but you still wanna learn game development, then I would recommend GDQuest's "Getting started with Godot in 2021" and their "Learn GDScript from Zero" interactive learning experience. {TODO: I wish to recommend a more full free course more prominently as an alternative to this free forever book and although those two are free they don't look like full courses as the full ones seem paid :<}
Finally if you prefer something more career oriented within game development, I have no idea what to suggest! {TODO: get advice from people who started here on their own without college etc}

What you need

The only thing you really need for this book is some kind of non-mobile computer (Windows, MacOS or Linux). That's literally it! This book will start you from the very very beginning. And if you're not interested in that you will have the chance to skip the Hexes that teach those early programming concepts.

Structure and pace

This book is divided into Hexes that teach an overarching part of what you need to know for game development with Rust and Bevy. And the Hexes are divided into Chapters that teach a particular idea within that part of game development. And finally, each Chapter consists of a group of Fragments, each Fragment represents a digestible part of a Chapter that's meant to roughly take less than an hour of your time. If you are familiar with a Hex or even a Chapter within a Hex you're free to skip it. However, if you're not, the book is very linear and each Hex depends on the previous, same for Chapters within the Hexes.
Every Fragment starts with a variation of "Good evening witches" to incentivize you to read it at your own pace even if it's at night after a long day of work or school, if you have the energy for it. Everyone deserves to learn and we owe it to each other to accommodate our busy schedules.

Warmest welcome ❤️

If after the book literally telling you not to read it, you are still here, welcome my friend! I am personally invested in any person who would like to learn from this book, if you are learning from it and have any questions, suggestions or need any help please feel free to reach out to me on Mastodon, Discord or GitHub. {TODO: The Discord link will expire in 30 days I have to figure out community mode to actually properly generate a permanent link}

Without further ado, let's learn out first hex!

Chapter 1