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!