Zymartu Games
Zymartu Games
  • 5
  • 91 948
Bevy 0.12 Beginner Tutorial Series - Ep 5 - State, Events, and Run Conditions
Welcome to the latest episode in our 'Bevy Basics: Game Development Essentials in Bevy' series.
This episode focuses on the coordination, execution, and communication of systems in Bevy and covers Bevy's intermediate APIs for managing game logic. We will cover state, events, and run conditions!
Series Playlist:
czcams.com/play/PL2wAo2qwCxGDp9fzBOTy_kpUTSwM1iWWd.html
You can find the GitHub source code for this episode and future episodes here:
💻 github.com/marcelchampagne/bevy-basics.
In this episode, we cover the following topics:
00:00 Introduction
00:19 Agenda / Episode Summary
00:39 Recap
01:00 Overview - State, Events, and Run Conditions
01:50 State Overview
02:37 State Transitions
03:26 Adding State to Your Bevy App
04:14 Accessing and Changing States
05:08 Events Overview
05:43 Adding Events to Your Bevy App
06:00 Reading and Writing Events
07:27 Run Conditions Overview
07:57 How To Use Run Conditions
09:31 Benefits of Run Conditions
10:05 Code Example - Setup
10:45 Code Example - Adding GameState for Pause Functionality
13:06 Code Example - Halting System Execution With Run Conditions
14:43 Code Example - Defining Collision Event & Health/Damage Components
16:28 Code Example - Updating Collision Systems To Use Events
18:21 Code Example - Ordering Collision Systems & Registering Events
19:43 Code Example - Adding Health/Damage Components to Entities
21:34 Code Example - Despawning Dead Entities
22:05 Code Example - Reviewing Collision Detection Code Diff
23:22 Code Example - Reviewing GameState Code Diff
23:40 Code Example - Implementing GameOver With State Transitions
26:28 Code Example - Final Results
26:50 Future Topics
26:57 Play Test Our Game!
27:11 Thanks for Watching!
This course aims to provide you with a swift and comprehensive overview of the fundamentals of Bevy, laying a solid foundation for your game development journey. While this series is designed to be accessible to programmers at all levels, those who have worked through the first half of 'The Rust Programming Language' will find it especially beneficial. No prior experience in game development is required.
While the frequency of future videos may not be as high going forward, we are committed to maintaining the quality you've come to expect, and we hope to continue delivering high-quality content as time allows.
I sincerely hope you find this series enjoyable and informative. Don’t forget to subscribe to the channel to stay updated on future videos!
📚📚📚
For additional learning resources, please check out:
🦀 The Rust Book: doc.rust-lang.org/book/
🎮 The Official Bevy Website: bevyengine.org/
📖 Bevy Cheat Book: bevy-cheatbook.github.io/
Socials:
linktr.ee/ZymartuGames
ZymartuGames
zhlédnutí: 6 795

Video

Bevy 0.12 Beginner Tutorial Series - Ep 4 - Schedules, System Ordering, SystemSets, and Flush Points
zhlédnutí 9KPřed 9 měsíci
Welcome to the latest episode in our 'Bevy Basics: Game Development Essentials in Bevy' series. In this episode, we delve deep into crucial topics of schedules, system ordering, SystemSets, and flush points. This episode is packed with comprehensive and current insights, ensuring that you can gain the most up-to-date knowledge on effectively managing schedules and system ordering within Bevy. S...
Bevy 0.12 Beginner Tutorial Series - Ep 3 - User Input, Collisions, ECS APIs & Asset Handling
zhlédnutí 17KPřed 9 měsíci
Welcome to 'Bevy Basics: Game Development Essentials in Bevy.' This episode expands the code example and covers various common ECS patterns in Bevy, asset handling, user input, collisions, and more! If you haven't seen the first two episodes yet, you can find the first episode here: czcams.com/video/B6ZFuYYZCSY/video.html. Series Playlist: czcams.com/play/PL2wAo2qwCxGDp9fzBOTy_kpUTSwM1iWWd.html...
Bevy 0.12 Beginner Tutorial Series - Ep 2 - 3D Basics, Resources, and Organizing Code!
zhlédnutí 23KPřed 10 měsíci
Welcome to 'Bevy Basics: Game Development Essentials in Bevy.' This episode covers 3D basics, resources, and organizing code! If you haven't seen the first episode yet, you can find it here: czcams.com/video/B6ZFuYYZCSY/video.html. Series Playlist: czcams.com/play/PL2wAo2qwCxGDp9fzBOTy_kpUTSwM1iWWd.html You can find the GitHub source code for this episode and future episodes here: 💻 github.com/...
Bevy 0.12 Beginner Tutorial Series - Ep 1 - ECS & Core Concepts
zhlédnutí 37KPřed 10 měsíci
Welcome to 'Bevy Basics: Game Development Essentials in Bevy.' My name is Marcel, and I’m a former Googler and senior software engineer. This course aims to provide you with a swift and comprehensive overview of the fundamentals of Bevy, laying a solid foundation for your game development journey. While this series is designed to be accessible to programmers at all levels, those who have worked...

Komentáře

  • @hearteyedgirl
    @hearteyedgirl Před 16 dny

    in bevy 0.14.1 Color::rgb(red: u8, green: u8, blue: u8) -> Color is deprecated, use Color::srgb(red: f32, green: f32, blue: f32) -> Color instead

  • @gnomehost
    @gnomehost Před 16 dny

    brilliant! very clever explanations, congrats

  • @gnomehost
    @gnomehost Před 16 dny

    Thank you @Zymartu! Very very clean explanations. I've learned a LOT about ECS desig pattern!!

  • @Kilian-ce2wg
    @Kilian-ce2wg Před 23 dny

    Hey keep em coming! Your videos are great

  • @Kilian-ce2wg
    @Kilian-ce2wg Před 23 dny

    Awesome video. keep this series going!

  • @Eekhoornz
    @Eekhoornz Před 26 dny

    Great vid!, fyi you have a small spelling error in the thumbnail: Pratice

  • @NH-ij8dz
    @NH-ij8dz Před 26 dny

    Awesome stuff.

  • @zoltanfinta8999
    @zoltanfinta8999 Před měsícem

    If you are using Bevy >= 0.13 then add_state is renamed to init_state.

  • @Reaper9225
    @Reaper9225 Před měsícem

    Your vids are 🦆-ing awesome. Very easy to understand and helpful af.

  • @berboko3081
    @berboko3081 Před měsícem

    Awesome tutorial, thanks a lot dude :D

  • @vrealzhou
    @vrealzhou Před měsícem

    app.add_state() has been renamed to app.init_state() since Bevy 0.13

  • @flwi
    @flwi Před měsícem

    Awesome series! I appreciate the effort you put in to create this gem. Hopefully you'll find time and energy to continue it. Good luck with your game-development!

  • @flwi
    @flwi Před měsícem

    Haha - love the graphic explaining the flush points @7:00 :D Great video - love this series! I learn so much since you have an excellent teaching style!

  • @flwi
    @flwi Před měsícem

    What a joy to code along. Feels very structured and I often already (kinda) know what to do next. Very well paced. Edit: Just finished this episode. I think the game will crash if the spaceship goes beyond DESPAWN_DISTANCE.

  • @flwi
    @flwi Před měsícem

    Holy smokes - you are a really talented tutor! Your series is _very_ easy to follow along and you already squashed some brain-bugs I had due to a lack of understanding (looking_at you, camera) ;-)

  • @flwi
    @flwi Před měsícem

    That's a _very_ nice introduction! Well done 🎉

  • @dadlord689
    @dadlord689 Před měsícem

    This one showed how to use events like events and not like some resource. So you can make system to be run only if event was sent!

  • @Rust_go_java
    @Rust_go_java Před měsícem

    It is so nice and to the point, please create additional videos ?

  • @battleofmushrooms
    @battleofmushrooms Před 2 měsíci

    Great tutorials! Hope to see new episodes soon😅

  • @CjqNslXUcM
    @CjqNslXUcM Před 2 měsíci

    I hope you eventually find the time to continue this series. It's been a great help and really sets the standard for bevy tutorials.

  • @parkernilson
    @parkernilson Před 2 měsíci

    This series has been a HUGE help. Thank you so much!

  • @parkernilson
    @parkernilson Před 3 měsíci

    I love it!!

  • @JReuben111
    @JReuben111 Před 3 měsíci

    This is great - is there per chance a written version of this tutorial series ?

  • @tomjim4089
    @tomjim4089 Před 3 měsíci

    when will have a further tutorials especially the 0.13 have released,you are the only recent video so far,another are too old

  • @michaelschneider729
    @michaelschneider729 Před 3 měsíci

    Great tutorial so far. But I have one little problem: I can't find the Asteroid.glb file in the linked asset bundle. Does anyone know a fitting alternative?

    • @tomjim4089
      @tomjim4089 Před 3 měsíci

      download from the link below the video

  • @thygrrr
    @thygrrr Před 3 měsíci

    I don't see how these loosey-goosey labels are in the Spirit of Rust. These appear like a very vague (if flexible!) and unreliable way to maintain your system order. But spotting conflicts or reasons why a system runs too late appears difficult.

  • @thygrrr
    @thygrrr Před 3 měsíci

    Not a fan of Bevy, nor Rust, but this is still a good series. (I'm here to spy, I maintain an ECS for C# :-))

  • @lucd9642
    @lucd9642 Před 3 měsíci

    In Bevy 0.13, add_state is renamed to init_state

  • @Tom2savoi
    @Tom2savoi Před 3 měsíci

    Super useful series of tutorials ! About 38:06 since the spaceship is currently also targeted by the despawn query, making the app panic when it gets too far away off the center of the screen, and that could be fixed by just targeting the asteroids using "With<Asteroid>" in that system or even better make a component to tag every despawnable entity and target that like "With<Despawnable>" right ?

  • @accumulator4825
    @accumulator4825 Před 4 měsíci

    This tutorial was awesome. Really appreciate it, thank you!

  • @user-pu6ow5il4g
    @user-pu6ow5il4g Před 4 měsíci

    Thought we were checking different documents of bevy-render as they are different. And yes, you were checking bevy_render 0.11.3, not as the title suggested 0.12.

  • @HAL_NlNETH0USAND
    @HAL_NlNETH0USAND Před 4 měsíci

    The Space keypress has a Velocity::new(-transform.forward() * ... if you get Direction3d and not a Vec3 you can deref the Direction3d to a vec3

  • @lilinnalinna
    @lilinnalinna Před 4 měsíci

    How is your game development going?

  • @k0tigrun
    @k0tigrun Před 4 měsíci

    Amazing. Hope you will find capacity to record more videos any time soon

  • @Tornado-3p9
    @Tornado-3p9 Před 4 měsíci

    The only improvement for this tutorial series that I can think of is to change the default fps to 30 max. That way I can watch the videos on any older hardware and even on my big TV in high resolution (while following the tutorial on my laptop). Anything over 30fps does not make sense on youtube if there are no fast movements. On CZcams, high resolution is almost always more important than framerate (and sound is often more important than video quality but you are already doing well there).

  • @Tornado-3p9
    @Tornado-3p9 Před 4 měsíci

    I am really hyped to find a useful tutorial series about bevy engine. Thanks for the good work.

  • @ZeroCadence
    @ZeroCadence Před 4 měsíci

    I’ve been writing notes and following along. Thank you for this series, though I’ve been learning rust, the abstractions in bevy is tough to wrap your head around. The documentation is something I haven’t quite figured out so thank you. For myself and others, bevy is a great way to learn rust. This is keeping me engaged in my rust journey

  • @itstheceo7
    @itstheceo7 Před 4 měsíci

    wonderful tutorial series, and i hope your game is coming along nicely too!

  • @sunofabeach9424
    @sunofabeach9424 Před 4 měsíci

    please finish the tutorial, you have covered almost all basics of the engine and you have done a great job

  • @sunofabeach9424
    @sunofabeach9424 Před 4 měsíci

    7:47 bug fuel right there

  • @jugibur2117
    @jugibur2117 Před 4 měsíci

    Thanks for your effort, a great way to start mit Rust and Bevy. I'm just wondering why you use "... in query.iter_mut()" here, because only the position is mutating in my eyes not the query itself.

  • @sunofabeach9424
    @sunofabeach9424 Před 4 měsíci

    bevy 0.13 is out, redo the whole series

  • @dabunnisher29
    @dabunnisher29 Před 4 měsíci

    This explains ECS very well. Thank you! Got me subscribed.

  • @HAL_NlNETH0USAND
    @HAL_NlNETH0USAND Před 4 měsíci

    Is it a Bevy 0.13. issue? I don't see the model, just the background.

  • @noxyu3m
    @noxyu3m Před 4 měsíci

    Please back to your videos, such a great start!

  • @Christobanistan
    @Christobanistan Před 4 měsíci

    I had to add a build.rs script (in root, not src) to make the assets copy into the target directory. Here's my code: use std::{ env, fs, path::{Path, PathBuf}, }; /// A helper function for recursively copying a directory. fn copy_dir<P, Q>(from: P, to: Q) where P: AsRef<Path>, Q: AsRef<Path>, { let to = to.as_ref().to_path_buf(); for path in fs::read_dir(from).unwrap() { let path = path.unwrap().path(); let to = to.clone().join(path.file_name().unwrap()); if path.is_file() { fs::copy(&path, to).unwrap(); } else if path.is_dir() { if !to.exists() { fs::create_dir(&to).unwrap(); } copy_dir(&path, to); } else { /* Skip other content */ } } } fn copy_dir_to_output(source_dir: &str) { // Command sent to cargo println!("cargo::rerun-if-changed={}", source_dir); // Request the output directory let out = env::var("PROFILE").unwrap(); let out = PathBuf::from(format!("target/{}/{}", out, source_dir)); // If it is already in the output directory, delete it and start over if out.exists() { fs::remove_dir_all(&out).unwrap(); } // Create the out directory fs::create_dir(&out).unwrap(); // Copy the directory copy_dir(source_dir, &out); } fn main() { copy_dir_to_output("assets"); }

    • @Christobanistan
      @Christobanistan Před 4 měsíci

      Also, this is literally the first Rust code I ever wrote and half of it is ChatGPT. So don't blame me for mistakes.

    • @waitingfortakeoff
      @waitingfortakeoff Před 4 měsíci

      @@Christobanistan chatgpt is notoriously bad at writing code, I'd suggest going through some basic rust stuff first unfortunately, there won't be any shortcuts.

    • @waitingfortakeoff
      @waitingfortakeoff Před 4 měsíci

      that being said, is your assets folder in the root or in src? there was a mistake in the video (mentioned by the author) that the assets were originally in the wrong directory

    • @Christobanistan
      @Christobanistan Před 4 měsíci

      @@waitingfortakeoff Yeah, I had to check it thoroughly, always do. But yeah assets was in the root, not src. Should this be automatic somehow? Some Bevy convention that automatically adds to the build process? I am working through a set of Bevy 0.12 tutorials on YT. It's at least helping me learn the syntax, which is surprisingly obtuse. I don't understand why the need to use :: so damned much. But the real learning curve is all the 'helper' crap they piled in. But still having fun. So happy to be getting off C#.

    • @waitingfortakeoff
      @waitingfortakeoff Před 4 měsíci

      @@Christobanistan no youll just need to manually move it in your file explorer, if it is in the root bevy seems to automagically handle it.

  • @waitingfortakeoff
    @waitingfortakeoff Před 4 měsíci

    Worth noting that the Asteroid and Missile assets no longer exist in the linked asset pack, I'm just shooting astronauts at planets for now 😆

  • @Christobanistan
    @Christobanistan Před 4 měsíci

    Moves so fast (and text so small) that I can't read WTF you're doing.

  • @luizalbertolausdarosa6819
    @luizalbertolausdarosa6819 Před 4 měsíci

    I am very new to rust and data oriented programing. I would like to know why use these simple structs like // struct Acceleration { value: Vec3 } //, that has a single propriety? Why not a tuple? Something like this // struct Acceleration(Vec3) //, any one knows if there is an advantage on any of these aproachs? My JS mind thinks the tuple version would de more memory compact and have one less dereference for reading/writing its content.

  • @jakobflocke134
    @jakobflocke134 Před 4 měsíci

    Very good intruduction