24 рдШрдгреНрдЯрд╛рдорд╛ рд░рд╕реНрдЯ рдЦреЗрд▓реНрджреИ: рд╡реНрдпрдХреНрддрд┐рдЧрдд рд╡рд┐рдХрд╛рд╕ рдЕрдиреБрднрд╡

24 рдШрдгреНрдЯрд╛рдорд╛ рд░рд╕реНрдЯ рдЦреЗрд▓реНрджреИ: рд╡реНрдпрдХреНрддрд┐рдЧрдд рд╡рд┐рдХрд╛рд╕ рдЕрдиреБрднрд╡

рдпрд╕ рд▓реЗрдЦрдорд╛ рдо рд░рд╕реНрдЯрдорд╛ рд╕рд╛рдиреЛ рдЦреЗрд▓ рд╡рд┐рдХрд╛рд╕ рдЧрд░реНрдиреЗ рдореЗрд░реЛ рд╡реНрдпрдХреНрддрд┐рдЧрдд рдЕрдиреБрднрд╡рдХреЛ рдмрд╛рд░реЗрдорд╛ рдХреБрд░рд╛ рдЧрд░реНрдиреЗрдЫреБред рдХрд╛рдо рдЧрд░реНрдиреЗ рд╕рдВрд╕реНрдХрд░рдг рд╕рд┐рд░реНрдЬрдирд╛ рдЧрд░реНрди рд▓рдЧрднрдЧ 24 рдШрдгреНрдЯрд╛ рд▓рд╛рдЧреНрдпреЛ (рдореИрд▓реЗ рдкреНрд░рд╛рдп: рд╕рд╛рдБрдЭ рд╡рд╛ рд╕рдкреНрддрд╛рд╣рдиреНрддрдорд╛ рдХрд╛рдо рдЧрд░реЗрдВ)ред рдЦреЗрд▓ рд╕рдорд╛рдкреНрдд рд╣реБрди рдЯрд╛рдврд╛ рдЫ, рддрд░ рдорд▓рд╛рдИ рд▓рд╛рдЧреНрдЫ рдХрд┐ рдЕрдиреБрднрд╡ рдЗрдирд╛рдорджрд╛рдпреА рд╣реБрдиреЗрдЫред рд╕реНрдХреНрд░реНрдпрд╛рдЪрдмрд╛рдЯ рдЦреЗрд▓ рдирд┐рд░реНрдорд╛рдг рдЧрд░реНрджрд╛ рдореИрд▓реЗ рд╕рд┐рдХреЗрдХрд╛ рдХреБрд░рд╛рд╣рд░реВ рд░ рдХреЗрд╣реА рдЕрд╡рд▓реЛрдХрдирд╣рд░реВ рд╕рд╛рдЭрд╛ рдЧрд░реНрдиреЗрдЫреБред

Skillbox рд╕рд┐рдлрд╛рд░рд┐рд╕ рдЧрд░реНрджрдЫ: рджреБрдИ рд╡рд░реНрд╖реЗ рд╡реНрдпрд╛рд╡рд╣рд╛рд░рд┐рдХ рдкрд╛рдареНрдпрдХреНрд░рдо "рдо рдПрдХ рдкреНрд░реЛ рд╡реЗрдм рд╡рд┐рдХрд╛рд╕рдХрд░реНрддрд╛ рд╣реБрдБ".

рд╣рд╛рдореА рд╕рдореНрдЭрд╛рдЙрдБрдЫреМрдВ: рд╕рдмреИ Habr рдкрд╛рдардХрд╣рд░реВрдХрд╛ рд▓рд╛рдЧрд┐ - Habr рдкреНрд░реЛрдореЛ рдХреЛрдб рдкреНрд░рдпреЛрдЧ рдЧрд░реА рдХреБрдиреИ рдкрдирд┐ Skillbox рдкрд╛рдареНрдпрдХреНрд░рдордорд╛ рднрд░реНрдирд╛ рдЧрд░реНрджрд╛ резреж,режрежреж рд░реВрдмрд▓ рдЫреБрдЯред

рдЦрд┐рдпрд╛ рдХрд┐рди ?

рдореИрд▓реЗ рдпреЛ рднрд╛рд╖рд╛ рд░реЛрдЬреЗрдХреЛ рдЫреБ рдХрд┐рдирднрдиреЗ рдореИрд▓реЗ рдпрд╕рдХреЛ рдмрд╛рд░реЗрдорд╛ рдзреЗрд░реИ рд░рд╛рдореНрд░рд╛ рдХреБрд░рд╛рд╣рд░реВ рд╕реБрдиреЗрдХреЛ рдЫреБ рд░ рдо рдпрд╕рд▓рд╛рдИ рдЦреЗрд▓ рд╡рд┐рдХрд╛рд╕рдорд╛ рдмрдврд┐ рд▓реЛрдХрдкреНрд░рд┐рдп рднрдПрдХреЛ рджреЗрдЦреНрдЫреБред рдЦреЗрд▓ рд▓реЗрдЦреНрдиреБ рдЕрдШрд┐, рдорд╕рдБрдЧ рд░рд╕реНрдЯрдорд╛ рд╕рд╛рдзрд╛рд░рдг рдЕрдиреБрдкреНрд░рдпреЛрдЧрд╣рд░реВ рд╡рд┐рдХрд╛рд╕ рдЧрд░реНрдиреЗ рдереЛрд░реИ рдЕрдиреБрднрд╡ рдерд┐рдпреЛред рдпреЛ рдЦреЗрд▓ рд▓реЗрдЦреНрджрд╛ рдорд▓рд╛рдИ рд╕реНрд╡рддрдиреНрддреНрд░рддрд╛рдХреЛ рднрд╛рд╡рдирд╛ рджрд┐рди рдкрд░реНрдпрд╛рдкреНрдд рдерд┐рдпреЛред

рдЦреЗрд▓ рдХрд┐рди рд░ рдХрд╕реНрддреЛ рдЦреЗрд▓ ?

рдЦреЗрд▓рд╣рд░реВ рдмрдирд╛рдЙрди рд░рдорд╛рдЗрд▓реЛ рдЫ! рдо рдЪрд╛рд╣рдиреНрдЫреБ рдХрд┐ рддреНрдпрд╣рд╛рдБ рдердк рдХрд╛рд░рдгрд╣рд░реВ рдерд┐рдП, рддрд░ "рдШрд░" рдкрд░рд┐рдпреЛрдЬрдирд╛рд╣рд░реВрдХрд╛ рд▓рд╛рдЧрд┐ рдо рдореЗрд░реЛ рдирд┐рдпрдорд┐рдд рдХрд╛рдорд╕рдБрдЧ рдзреЗрд░реИ рдирдЬрд┐рдХ рдирд░рд╣реЗрдХреЛ рд╡рд┐рд╖рдпрд╣рд░реВ рдЫрд╛рдиреНрдЫреБред рдпреЛ рдХрд╕реНрддреЛ рдЦреЗрд▓ рд╣реЛ? рдо рдПрдХ рдЯреЗрдирд┐рд╕ рд╕рд┐рдореНрдпреБрд▓реЗрдЯрд░ рдЬрд╕реНрддреИ рдХреЗрд╣рд┐ рдмрдирд╛рдЙрди рдЪрд╛рд╣рдиреНрдереЗрдВ рдЬрд╕рд▓реЗ рд╕рд┐рдЯреА рд╕реНрдХрд╛рдЗрд▓рд╛рдЗрдиреНрд╕, рдЪрд┐рдбрд┐рдпрд╛рдЦрд╛рдирд╛ рдЯрд╛рдЗрдХреБрди, рдЬреЗрд▓ рдЖрд░реНрдХрд┐рдЯреЗрдХреНрдЯ рд░ рдЯреЗрдирд┐рд╕ рдЖрдлреИрдВрд▓рд╛рдИ рдЬреЛрдбреНрджрдЫред рд╕рд╛рдорд╛рдиреНрдпрддрдпрд╛, рдпреЛ рдЯреЗрдирд┐рд╕ рдПрдХреЗрдбреЗрдореА рдХреЛ рдмрд╛рд░реЗ рдорд╛ рдПрдХ рдЦреЗрд▓ рд╣реЛ рдЬрд╣рд╛рдБ рдорд╛рдиреНрдЫреЗ рдЦреЗрд▓реНрди рдЖрдЙрдБрдЫрдиреНред

рдкреНрд░рд╛рд╡рд┐рдзрд┐рдХ рддрд╛рд▓рд┐рдо

рдо Rust рдкреНрд░рдпреЛрдЧ рдЧрд░реНрди рдЪрд╛рд╣рдиреНрдереЗрдВ, рддрд░ рдорд▓рд╛рдИ рдерд╛рд╣рд╛ рдерд┐рдПрди рдХрд┐ рдпрд╕рд▓реЗ рд╕реБрд░реБ рдЧрд░реНрди рдХрддрд┐ рдЖрдзрд╛рд░рднреВрдд рдХрд╛рдо рд▓рд┐рдиреНрдЫред рдо рдкрд┐рдХреНрд╕реЗрд▓ рд╢реЗрдбрд░рд╣рд░реВ рд▓реЗрдЦреНрди рд░ рдбреНрд░реНрдпрд╛рдЧ-рдПрди-рдбреНрд░рдк рдкреНрд░рдпреЛрдЧ рдЧрд░реНрди рдЪрд╛рд╣рдиреНрди, рддреНрдпрд╕реИрд▓реЗ рдо рд╕рдмреИрднрдиреНрджрд╛ рд▓рдЪрд┐рд▓реЛ рд╕рдорд╛рдзрд╛рдирд╣рд░реВ рдЦреЛрдЬреНрджреИ рдерд┐рдПрдБред

рдореИрд▓реЗ рддрдкрд╛рдИрд╕рдБрдЧ рд╕рд╛рдЭреЗрджрд╛рд░реА рдЧрд░реНрдиреЗ рдЙрдкрдпреЛрдЧреА рд╕реНрд░реЛрддрд╣рд░реВ рдлреЗрд▓рд╛ рдкрд╛рд░реЗрдВ:

рдореИрд▓реЗ рдзреЗрд░реИ рд░рд╕реНрдЯ рдЧреЗрдо рдЗрдиреНрдЬрд┐рдирд╣рд░реВ рдЕрдиреНрд╡реЗрд╖рдг рдЧрд░реЗрдВ, рдЕрдиреНрддрддрдГ рдкрд┐рд╕реНрдЯрди рд░ ggez рдЫрдиреМрдЯ рдЧрд░реНрджреИред рдЕрдШрд┐рд▓реНрд▓реЛ рдкрд░рд┐рдпреЛрдЬрдирд╛рдорд╛ тАЛтАЛрдХрд╛рдо рдЧрд░реНрджрд╛ рдореИрд▓реЗ рдЙрдиреАрд╣рд░реВрд▓рд╛рдИ рднреЗрдЯреЗрдВред рдЕрдиреНрддрдорд╛, рдореИрд▓реЗ ggez рд░реЛрдЬреЗрдВ рдХрд┐рдирднрдиреЗ рдпреЛ рд╕рд╛рдиреЛ 2D рдЦреЗрд▓ рд▓рд╛рдЧреВ рдЧрд░реНрдирдХреЛ рд▓рд╛рдЧрд┐ рдЕрдзрд┐рдХ рдЙрдкрдпреБрдХреНрдд рджреЗрдЦрд┐рдиреНрдЫред рдкрд┐рд╕реНрдЯрдирдХреЛ рдореЛрдбреНрдпреБрд▓рд░ рд╕рдВрд░рдЪрдирд╛ рдиреМрд╕рд┐рдЦрд┐рдпрд╛ рд╡рд┐рдХрд╛рд╕рдХрд░реНрддрд╛ (рд╡рд╛ рдкрд╣рд┐рд▓реЛ рдкрдЯрдХ рд░рд╕реНрдЯрд╕рдБрдЧ рдХрд╛рдо рдЧрд░реНрдиреЗ рд╡реНрдпрдХреНрддрд┐) рдХреЛ рд▓рд╛рдЧрд┐ рдзреЗрд░реИ рдЬрдЯрд┐рд▓ рдЫред

рдЦреЗрд▓ рд╕рдВрд░рдЪрдирд╛

рдореИрд▓реЗ рдкрд░рд┐рдпреЛрдЬрдирд╛рдХреЛ рд╡рд╛рд╕реНрддреБрдХрд▓рд╛рдХреЛ рдмрд╛рд░реЗрдорд╛ рд╕реЛрдЪреНрджреИ рдХреЗрд╣реА рд╕рдордп рдмрд┐рддрд╛рдПрдБред рдкрд╣рд┐рд▓реЛ рдЪрд░рдг "рднреВрдорд┐", рдорд╛рдиреНрдЫреЗ рд░ рдЯреЗрдирд┐рд╕ рдХреЛрд░реНрдЯ рдмрдирд╛рдЙрди рдЫред рдЬрдирддрд╛рд▓реЗ рдЕрджрд╛рд▓рддрдорд╛ рдХреБрд░реНрдиреБрдкрд░реЗрдХреЛ рдЫ ред рдЦреЗрд▓рд╛рдбреАрд╣рд░реВрд╕рдБрдЧ рд╕рдордпрд╕рдБрдЧреИ рд╕реБрдзрд╛рд░ рдЧрд░реНрдиреЗ рдХреНрд╖рдорддрд╛ рд╣реБрдиреБрдкрд░реНрдЫред рд╕рд╛рдереИ, рддреНрдпрд╣рд╛рдБ рдПрдХ рд╕рдореНрдкрд╛рджрдХ рд╣реБрдиреБрдкрд░реНрдЫ рдЬрд╕рд▓реЗ рддрдкрд╛рдИрдВрд▓рд╛рдИ рдирдпрд╛рдБ рд╡реНрдпрдХреНрддрд┐ рд░ рдЕрджрд╛рд▓рддрд╣рд░реВ рдердкреНрди рдЕрдиреБрдорддрд┐ рджрд┐рдиреНрдЫ, рддрд░ рдпреЛ рдЕрдм рдирд┐рдГрд╢реБрд▓реНрдХ рдЫреИрдиред

рд╕рдмреИ рдХреБрд░рд╛ рд╕реЛрдЪреЗрд░ рдХрд╛рдордорд╛ рд▓рд╛рдЧреЗрдБ ред

рдЦреЗрд▓ рдирд┐рд░реНрдорд╛рдг

рд╢реБрд░реБрд╡рд╛рдд: рд╕рд░реНрдХрд▓ рд░ рдПрдмреНрд╕реНрдЯреНрд░реНрдпрд╛рдХреНрд╢рди

рдореИрд▓реЗ ggez рдмрд╛рдЯ рдЙрджрд╛рд╣рд░рдг рд▓рд┐рдПрдБ рд░ рд╕реНрдХреНрд░рд┐рдирдорд╛ рд╕рд░реНрдХрд▓ рдкрд╛рдПрдБред рдЕрджреНрднреБрдд! рдЕрдм рдХреЗрд╣рд┐ рд╕рд╛рд░рд╣рд░реВред рдореИрд▓реЗ рд╕реЛрдЪреЗрдВ рдХрд┐ рдЦреЗрд▓ рд╡рд╕реНрддреБрдХреЛ рд╡рд┐рдЪрд╛рд░рдмрд╛рдЯ рдЯрд╛рдврд╛ рд░рд╣рдиреБ рд░рд╛рдореНрд░реЛ рд╣реБрдиреЗрдЫред рдпрд╣рд╛рдБ рдЙрд▓реНрд▓реЗрдЦ рдЧрд░рд┐рдП рдЕрдиреБрд╕рд╛рд░ рдкреНрд░рддреНрдпреЗрдХ рд╡рд╕реНрддреБ рд░реЗрдиреНрдбрд░ рд░ рдЕрджреНрдпрд╛рд╡рдзрд┐рдХ рд╣реБрдиреБрдкрд░реНрдЫ:

// the game object trait
trait GameObject {
    fn update(&mut self, _ctx: &mut Context) -> GameResult<()>;
    fn draw(&mut self, ctx: &mut Context) -> GameResult<()>;
}
 
// a specific game object - Circle
struct Circle {
    position: Point2,
}
 
 impl Circle {
    fn new(position: Point2) -> Circle {
        Circle { position }
    }
}
impl GameObject for Circle {
    fn update(&mut self, _ctx: &mut Context) -> GameResult<()> {
        Ok(())
    }
    fn draw(&mut self, ctx: &mut Context) -> GameResult<()> {
        let circle =
            graphics::Mesh::new_circle(ctx, graphics::DrawMode::Fill, self.position, 100.0, 2.0)?;
 
         graphics::draw(ctx, &circle, na::Point2::new(0.0, 0.0), 0.0)?;
        Ok(())
    }
}

рдХреЛрдбрдХреЛ рдпреЛ рдЯреБрдХреНрд░рд╛рд▓реЗ рдорд▓рд╛рдИ рд╡рд╕реНрддреБрд╣рд░реВрдХреЛ рд░рд╛рдореНрд░реЛ рд╕реВрдЪреА рджрд┐рдпреЛ рдЬреБрди рдореИрд▓реЗ рд╕рдорд╛рди рд░реВрдкрдорд╛ рд░рд╛рдореНрд░реЛ рд▓реБрдкрдорд╛ рдЕрджреНрдпрд╛рд╡рдзрд┐рдХ рд░ рд░реЗрдиреНрдбрд░ рдЧрд░реНрди рд╕рдХреНрдЫреБред

mpl event::EventHandler for MainState {
    fn update(&mut self, context: &mut Context) -> GameResult<()> {
        // Update all objects
        for object in self.objects.iter_mut() {
            object.update(context)?;
        }
 
        Ok(())
    }
 
    fn draw(&mut self, context: &mut Context) -> GameResult<()> {
        graphics::clear(context);
 
        // Draw all objects
        for object in self.objects.iter_mut() {
            object.draw(context)?;
        }
 
        graphics::present(context);
 
        Ok(())
    }
}

main.rs рдЖрд╡рд╢реНрдпрдХ рдЫ рдХрд┐рдирднрдиреЗ рдпрд╕рд▓реЗ рдХреЛрдбрдХрд╛ рд╕рдмреИ рд▓рд╛рдЗрдирд╣рд░реВ рд╕рдорд╛рд╡реЗрд╢ рдЧрд░реНрджрдЫред рдореИрд▓реЗ рдлрд╛рдЗрд▓рд╣рд░реВ рдЕрд▓рдЧ рдЧрд░реНрди рд░ рдбрд╛рдЗрд░реЗрдХреНрдЯрд░реА рд╕рдВрд░рдЪрдирд╛рд▓рд╛рдИ рдЕрдиреБрдХреВрд▓рди рдЧрд░реНрди рдереЛрд░реИ рд╕рдордп рдмрд┐рддрд╛рдПрдБред рдпреЛ рдкрдЫрд┐ рдпреЛ рдЬрд╕реНрддреЛ рджреЗрдЦрд┐рдиреНрдереНрдпреЛ:
рд╕реНрд░реЛрддрд╣рд░реВ -> рдпреЛ рд╣реЛ рдЬрд╣рд╛рдБ рд╕рдмреИ рд╕рдореНрдкрддреНрддрд┐рд╣рд░реВ рдЫрдиреН (рдЫрд╡рд┐рд╣рд░реВ)
src
- рд╕рдВрд╕реНрдерд╛рд╣рд░реВ
тАФ game_object.rs
тАФ рд╕рд░реНрдХрд▓.rs
- main.rs -> рдореБрдЦреНрдп рд▓реВрдк

рдорд╛рдиреНрдЫреЗ, рднреБрдЗрдБ рд░ рдЫрд╡рд┐рд╣рд░реВ

рдЕрд░реНрдХреЛ рдЪрд░рдг рдПрдХ рд╡реНрдпрдХреНрддрд┐ рдЦреЗрд▓ рд╡рд╕реНрддреБ рд╕рд┐рд░реНрдЬрдирд╛ рдЧрд░реНрди рд░ рдЫрд╡рд┐рд╣рд░реВ рд▓реЛрдб рдЧрд░реНрди рд╣реЛред рд╕рдмреИ 32 * 32 рдЯрд╛рдЗрд▓реНрд╕ рдХреЛ рдЖрдзрд╛рд░ рдорд╛ рдирд┐рд░реНрдорд╛рдг рдЧрд░рд┐рдиреБ рдкрд░реНрдЫред

24 рдШрдгреНрдЯрд╛рдорд╛ рд░рд╕реНрдЯ рдЦреЗрд▓реНрджреИ: рд╡реНрдпрдХреНрддрд┐рдЧрдд рд╡рд┐рдХрд╛рд╕ рдЕрдиреБрднрд╡

рдЯреЗрдирд┐рд╕ рдХреЛрд░реНрдЯ

рдЯреЗрдирд┐рд╕ рдХреЛрд░реНрдЯрд╣рд░реВ рдХрд╕реНрддреЛ рджреЗрдЦрд┐рдиреНрдЫрдиреН рднрдиреЗрд░ рдЕрдзреНрдпрдпрди рдЧрд░реЗрдкрдЫрд┐, рдореИрд▓реЗ рддрд┐рдиреАрд╣рд░реВрд▓рд╛рдИ 4*2 рдЯрд╛рдЗрд▓рд╣рд░реВрдмрд╛рдЯ рдмрдирд╛рдЙрдиреЗ рдирд┐рд░реНрдгрдп рдЧрд░реЗрдВред рдкреНрд░рд╛рд░рдореНрднрдорд╛, рдпреЛ рдЖрдХрд╛рд░рдХреЛ рдЫрд╡рд┐ рдмрдирд╛рдЙрди рд╡рд╛ 8 рдЕрд▓рдЧ рдЯрд╛рдЗрд▓рд╣рд░реВ рд╕рдБрдЧреИ рд░рд╛рдЦреНрди рд╕рдореНрднрд╡ рдерд┐рдпреЛред рддрд░ рддреНрдпрд╕рдкрдЫрд┐ рдореИрд▓реЗ рдорд╣рд╕реБрд╕ рдЧрд░реЗрдВ рдХрд┐ рдХреЗрд╡рд▓ рджреБрдИрд╡рдЯрд╛ рдЕрджреНрд╡рд┐рддреАрдп рдЯрд╛рдЗрд▓рд╣рд░реВ рдЪрд╛рд╣рд┐рдиреНрдЫ, рд░ рдпрд╣рд╛рдБ рдХрд┐рди рдЫред

рдХреБрд▓рдорд╛ рд╣рд╛рдореАрд╕рдБрдЧ рддреНрдпрд╕реНрддрд╛ рджреБрдИрд╡рдЯрд╛ рдЯрд╛рдЗрд▓рд╣рд░реВ рдЫрдиреН: рез рд░ реиред

рдЕрджрд╛рд▓рддрдХреЛ рдкреНрд░рддреНрдпреЗрдХ рдЦрдгреНрдбрдорд╛ рдЯрд╛рдЗрд▓ 1 рд╡рд╛ рдЯрд╛рдЗрд▓ 2 рд╣реБрдиреНрдЫред рддрд┐рдиреАрд╣рд░реВрд▓рд╛рдИ рд╕рд╛рдорд╛рдиреНрдп рд░реВрдкрдорд╛ рд░рд╛рдЦреНрди рд╕рдХрд┐рдиреНрдЫ рд╡рд╛ 180 рдбрд┐рдЧреНрд░реА рдлреНрд▓рд┐рдк рдЧрд░реНрди рд╕рдХрд┐рдиреНрдЫред

24 рдШрдгреНрдЯрд╛рдорд╛ рд░рд╕реНрдЯ рдЦреЗрд▓реНрджреИ: рд╡реНрдпрдХреНрддрд┐рдЧрдд рд╡рд┐рдХрд╛рд╕ рдЕрдиреБрднрд╡

рдЖрдзрд╛рд░рднреВрдд рдирд┐рд░реНрдорд╛рдг (рд╡рд┐рдзрд╛рдирд╕рднрд╛) рдореЛрдб

рдореИрд▓реЗ рд╕рд╛рдЗрдЯрд╣рд░реВ, рд╡реНрдпрдХреНрддрд┐рд╣рд░реВ рд░ рдирдХреНрд╕рд╛рд╣рд░реВрдХреЛ рд░реЗрдиреНрдбрд░рд┐рдЩ рдкреНрд░рд╛рдкреНрдд рдЧрд░реНрди рд╡реНрдпрд╡рд╕реНрдерд┐рдд рдЧрд░реЗрдкрдЫрд┐, рдореИрд▓реЗ рдорд╣рд╕реБрд╕ рдЧрд░реЗрдВ рдХрд┐ рдЖрдзрд╛рд░рднреВрдд рдЕрд╕реЗрдореНрдмреНрд▓реА рдореЛрдб рдкрдирд┐ рдЖрд╡рд╢реНрдпрдХ рдЫред рдореИрд▓реЗ рдпрд╕рд▓рд╛рдИ рдпрд╕рд░реА рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдЧрд░реЗрдВ: рдЬрдм рдмрдЯрди рдерд┐рдЪрд┐рдиреНрдЫ, рд╡рд╕реНрддреБ рдЪрдпрди рдЧрд░рд┐рдиреНрдЫ, рд░ рдХреНрд▓рд┐рдХрд▓реЗ рдпрд╕рд▓рд╛рдИ рдЗрдЪреНрдЫрд┐рдд рд╕реНрдерд╛рдирдорд╛ рд░рд╛рдЦреНрдЫред рддреНрдпрд╕реЛрднрдП, рдмрдЯрди 1 рд▓реЗ рддрдкрд╛рдИрдВрд▓рд╛рдИ рдЕрджрд╛рд▓рдд рдЪрдпрди рдЧрд░реНрди рдЕрдиреБрдорддрд┐ рджрд┐рдиреНрдЫ, рд░ рдмрдЯрди 2 рд▓реЗ рддрдкрд╛рдИрдВрд▓рд╛рдИ рдЦреЗрд▓рд╛рдбреА рдЪрдпрди рдЧрд░реНрди рдЕрдиреБрдорддрд┐ рджрд┐рдиреНрдЫред

рддрд░ рд╣рд╛рдореАрд▓реЗ рдЕрдЭреИ рдкрдирд┐ 1 рд░ 2 рдХреЛ рдЕрд░реНрде рдХреЗ рд╣реЛ рднрдиреЗрд░ рд╕рдореНрдЭрдиреБ рдЖрд╡рд╢реНрдпрдХ рдЫ, рддреНрдпрд╕реИрд▓реЗ рдореИрд▓реЗ рдХреБрди рд╡рд╕реНрддреБ рдЪрдпрди рдЧрд░рд┐рдПрдХреЛ рдерд┐рдпреЛ рднрдиреЗрд░ рд╕реНрдкрд╖реНрдЯ рдЧрд░реНрдирдХреЛ рд▓рд╛рдЧрд┐ рддрд╛рд░рдлреНрд░реЗрдо рдердкреЗрдХреЛ рдЫреБред рдпреЛ рдЬрд╕реНрддреЛ рджреЗрдЦрд┐рдиреНрдЫред

24 рдШрдгреНрдЯрд╛рдорд╛ рд░рд╕реНрдЯ рдЦреЗрд▓реНрджреИ: рд╡реНрдпрдХреНрддрд┐рдЧрдд рд╡рд┐рдХрд╛рд╕ рдЕрдиреБрднрд╡

рд╡рд╛рд╕реНрддреБрдХрд▓рд╛ рд░ рд░рд┐рдлреНрдпрд╛рдХреНрдЯрд░рд┐рдВрдЧ рдкреНрд░рд╢реНрдирд╣рд░реВ

рдЕрдм рдорд╕рдБрдЧ рдзреЗрд░реИ рдЦреЗрд▓ рд╡рд╕реНрддреБрд╣рд░реВ рдЫрдиреН: рдорд╛рдирд┐рд╕рд╣рд░реВ, рдЕрджрд╛рд▓рдд рд░ рднреБрдЗрдБрд╣рд░реВред рддрд░ рддрд╛рд░рдлреНрд░реЗрдорд╣рд░реВ рдХрд╛рдо рдЧрд░реНрдирдХрд╛ рд▓рд╛рдЧрд┐, рдкреНрд░рддреНрдпреЗрдХ рд╡рд╕реНрддреБ рдирд┐рдХрд╛рдпрд▓рд╛рдИ рд╡рд╕реНрддреБрд╣рд░реВ рдЖрдлреИ рдкреНрд░рджрд░реНрд╢рди рдореЛрдбрдорд╛ рдЫрдиреН рд╡рд╛ рдЫреИрдирдиреН, рд╡рд╛ рдлреНрд░реЗрдо рдорд╛рддреНрд░ рдХреЛрд░рд┐рдПрдХреЛ рдЫ рднрдиреА рдмрддрд╛рдЙрди рдЖрд╡рд╢реНрдпрдХ рдЫред рдпреЛ рдзреЗрд░реИ рд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рдЫреИрдиред

рдорд▓рд╛рдИ рд▓рд╛рдЧреНрдереНрдпреЛ рдХрд┐ рд╡рд╛рд╕реНрддреБрдХрд▓рд╛рд▓рд╛рдИ рдХреЗрд╣рд┐ рд╕реАрдорд┐рддрддрд╛рд╣рд░реВ рдкреНрд░рдХрдЯ рдЧрд░реНрдиреЗ рддрд░рд┐рдХрд╛рдорд╛ рдкреБрдирд░реНрд╡рд┐рдЪрд╛рд░ рдЧрд░реНрди рдЖрд╡рд╢реНрдпрдХ рдЫ:

  • рдЖрдлреИрд▓рд╛рдИ рд░реЗрдиреНрдбрд░ рдЧрд░реНрдиреЗ рд░ рдЕрджреНрдпрд╛рд╡рдзрд┐рдХ рдЧрд░реНрдиреЗ рдирд┐рдХрд╛рдп рд╣реБрдиреБ рдПрдХ рд╕рдорд╕реНрдпрд╛ рд╣реЛ рдХрд┐рдирднрдиреЗ рддреНрдпреЛ рдирд┐рдХрд╛рдпрд▓реЗ рдХреЗ рд░реЗрдиреНрдбрд░ рдЧрд░реНрдиреБрдкрд░реНрдЫ рднрдиреЗрд░ "рдЬрд╛рдиреНрди" рд╕рдХреНрд╖рдо рд╣реБрдиреЗ рдЫреИрди - рдЫрд╡рд┐ рд░ рддрд╛рд░рдлреНрд░реЗрдо;
  • рд╡реНрдпрдХреНрддрд┐рдЧрдд рд╕рдВрд╕реНрдерд╛рд╣рд░реВ (рдЙрджрд╛рд╣рд░рдгрдХрд╛ рд▓рд╛рдЧрд┐, is_build_mode рдЧреБрдг рд╡рд╛ рд╡реНрдпрд╡рд╣рд╛рд░ рд░реЗрдиреНрдбрд░рд┐рдЩ) рдмреАрдЪ рдЧреБрдгрд╣рд░реВ рд░ рд╡реНрдпрд╡рд╣рд╛рд░ рдЖрджрд╛рдирдкреНрд░рджрд╛рди рдЧрд░реНрди рдЙрдкрдХрд░рдгрдХреЛ рдЕрднрд╛рд╡ред рдпреЛ рд╡рд┐рд░рд╛рд╕рдд рдкреНрд░рдпреЛрдЧ рдЧрд░реНрди рд╕рдореНрднрд╡ рд╣реБрдиреЗрдЫ, рдпрджреНрдпрдкрд┐ рдпрд╕рд▓рд╛рдИ Rust рдорд╛ рд▓рд╛рдЧреВ рдЧрд░реНрди рдХреБрдиреИ рдЙрдЪрд┐рдд рддрд░рд┐рдХрд╛ рдЫреИрдиред рдорд▓рд╛рдИ рд╕рд╛рдБрдЪреНрдЪреИ рдЪрд╛рд╣рд┐рдиреЗ рдХреБрд░рд╛ рд▓реЗрдЖрдЙрдЯ рдерд┐рдпреЛ;
  • рдорд╛рдирд┐рд╕рд╣рд░реВрд▓рд╛рдИ рдЕрджрд╛рд▓рддрдорд╛ рдирд┐рдпреБрдХреНрдд рдЧрд░реНрди рдирд┐рдХрд╛рдпрд╣рд░реВ рдмреАрдЪрдХреЛ рдЕрдиреНрддрд░рдХреНрд░рд┐рдпрд╛рдХреЛ рд▓рд╛рдЧрд┐ рдПрдЙрдЯрд╛ рдЙрдкрдХрд░рдг рдЖрд╡рд╢реНрдпрдХ рдерд┐рдпреЛ;
  • рд╕рдВрд╕реНрдерд╛рд╣рд░реВ рдЖрдлреИрдВ рдбреЗрдЯрд╛ рд░ рддрд░реНрдХрдХреЛ рдорд┐рд╢реНрд░рдг рдерд┐рдП рдЬреБрди рдЪрд╛рдБрдбреИ рдирд┐рдпрдиреНрддреНрд░рдг рдмрд╛рд╣рд┐рд░ рдЧрдпреЛред

рдореИрд▓реЗ рдХреЗрд╣рд┐ рдердк рдЕрдиреБрд╕рдиреНрдзрд╛рди рдЧрд░реЗ рд░ рд╡рд╛рд╕реНрддреБрдХрд▓рд╛ рдкрддреНрддрд╛ рд▓рдЧрд╛рдП ECS - рдЗрдХрд╛рдИ рдШрдЯрдХ рдкреНрд░рдгрд╛рд▓реА, рдЬреБрди рд╕рд╛рдорд╛рдиреНрдпрддрдпрд╛ рдЦреЗрд▓рд╣рд░реВрдорд╛ рдкреНрд░рдпреЛрдЧ рдЧрд░рд┐рдиреНрдЫред рдпрд╣рд╛рдБ ECS рдХреЛ рдлрд╛рдЗрджрд╛рд╣рд░реВ рдЫрдиреН:

  • рдбреЗрдЯрд╛ рддрд░реНрдХрдмрд╛рдЯ рдЕрд▓рдЧ рдЧрд░рд┐рдПрдХреЛ рдЫ;
  • рд╡рд┐рд░рд╛рд╕рддрдХреЛ рд╕рдЯреНрдЯрд╛ рд╕рдВрд░рдЪрдирд╛;
  • рдбрд╛рдЯрд╛ рдХреЗрдиреНрджреНрд░рд┐рдд рд╡рд╛рд╕реНрддреБрдХрд▓рд╛ред

ECS рддреАрди рдЖрдзрд╛рд░рднреВрдд рдЕрд╡рдзрд╛рд░рдгрд╛рд╣рд░реБ рджреНрд╡рд╛рд░рд╛ рд╡рд┐рд╢реЗрд╖рддрд╛ рдЫ:

  • рд╕рдВрд╕реНрдерд╛рд╣рд░реВ - рд╡рд╕реНрддреБрдХреЛ рдкреНрд░рдХрд╛рд░ рдЬреБрди рдкрд╣рд┐рдЪрд╛рдирдХрд░реНрддрд╛рд▓реЗ рдмреБрдЭрд╛рдЙрдБрдЫ (рдпреЛ рдПрдХ рдЦреЗрд▓рд╛рдбреА, рдмрд▓, рд╡рд╛ рдЕрд░реВ рдХреЗрд╣рд┐ рд╣реБрди рд╕рдХреНрдЫ);
  • рдЕрд╡рдпрд╡рд╣рд░реВ - рд╕рдВрд╕реНрдерд╛рд╣рд░реВ рддрд┐рдиреАрд╣рд░реВрдмрд╛рдЯ рдмрдиреЗрдХрд╛ рдЫрдиреНред рдЙрджрд╛рд╣рд░рдг - рд░реЗрдиреНрдбрд░рд┐рдЩ рдХрдореНрдкреЛрдиреЗрдиреНрдЯ, рд╕реНрдерд╛рди рд░ рдЕрдиреНрдпред рдпреА рдбрд╛рдЯрд╛ рдЧреЛрджрд╛рдорд╣рд░реВ рд╣реБрдиреН;
  • рдкреНрд░рдгрд╛рд▓реАрд╣рд░реВ - рддрд┐рдиреАрд╣рд░реВ рджреБрд╡реИ рд╡рд╕реНрддреБ рд░ рдХрдореНрдкреЛрдиреЗрдиреНрдЯрд╣рд░реВ рдкреНрд░рдпреЛрдЧ рдЧрд░реНрдЫрдиреН, рд╕рд╛рдереИ рд╡реНрдпрд╡рд╣рд╛рд░ рд░ рддрд░реНрдХ рд╕рдорд╛рд╡реЗрд╢ рдЧрд░реНрджрдЫ рдЬреБрди рдпрд╕ рдбреЗрдЯрд╛рдорд╛ рдЖрдзрд╛рд░рд┐рдд рд╣реБрдиреНрдЫред рдПрдЙрдЯрд╛ рдЙрджрд╛рд╣рд░рдг рд░реЗрдиреНрдбрд░рд┐рдЩ рдкреНрд░рдгрд╛рд▓реА рд╣реЛ рдЬреБрди рд░реЗрдиреНрдбрд░рд┐рдЩ рдХрдореНрдкреЛрдиреЗрдиреНрдЯрд╣рд░реВ рднрдПрдХрд╛ рд╕рдмреИ рдирд┐рдХрд╛рдпрд╣рд░реВ рдорд╛рд░реНрдлрдд рджреЛрд╣реЛрд░рд┐рдиреНрдЫ рд░ рд░реЗрдиреНрдбрд░рд┐рдЩ рдЧрд░реНрдЫред

рдпрд╕рд▓рд╛рдИ рдЕрдзреНрдпрдпрди рдЧрд░реЗрдкрдЫрд┐, рдпреЛ рд╕реНрдкрд╖реНрдЯ рднрдпреЛ рдХрд┐ ECS рд▓реЗ рдирд┐рдореНрди рд╕рдорд╕реНрдпрд╛рд╣рд░реВ рд╕рдорд╛рдзрд╛рди рдЧрд░реНрджрдЫ:

  • рдкреНрд░рдгрд╛рд▓реАрдЧрдд рд░реВрдкрдорд╛ рд╕рдВрд╕реНрдерд╛рд╣рд░реВрд▓рд╛рдИ рд╡реНрдпрд╡рд╕реНрдерд┐рдд рдЧрд░реНрди рдЙрддреНрддрд░рд╛рдзрд┐рдХрд╛рд░рдХреЛ рд╕рдЯреНрдЯрд╛ рд▓реЗрдЖрдЙрдЯ рдкреНрд░рдпреЛрдЧ рдЧрд░реНрджреИ;
  • рдирд┐рдпрдиреНрддреНрд░рдг рдкреНрд░рдгрд╛рд▓реА рдорд╛рд░реНрдлрдд рдХреЛрдб рдЬрдореНрдмрд▓рдмрд╛рдЯ рдЫреБрдЯрдХрд╛рд░рд╛ рдкрд╛рдЙрди;
  • рд╡рд╛рдпрд░рдлреНрд░реЗрдо рддрд░реНрдХрд▓рд╛рдИ рдЙрд╣реА рдард╛рдЙрдБрдорд╛ рд░рд╛рдЦреНрди is_build_mode рдЬрд╕реНрддрд╛ рд╡рд┐рдзрд┐рд╣рд░реВ рдкреНрд░рдпреЛрдЧ рдЧрд░реНрджреИ - рд░реЗрдиреНрдбрд░рд┐рдЩ рдкреНрд░рдгрд╛рд▓реАрдорд╛ред

ECS рд▓рд╛рдЧреВ рдЧрд░реЗрдкрдЫрд┐ рдпрд╕реНрддреЛ рднрдПрдХреЛ рд╣реЛ ред

рд╕реНрд░реЛрддрд╣рд░реВ -> рдпреЛ рд╣реЛ рдЬрд╣рд╛рдБ рд╕рдмреИ рд╕рдореНрдкрддреНрддрд┐рд╣рд░реВ рдЫрдиреН (рдЫрд╡рд┐рд╣рд░реВ)
src
- рдЕрд╡рдпрд╡рд╣рд░реВ
тАФposition.rs
тАФ person.rs
тАФ tennis_court.rs
тАФ floor.rs
- wireframe.rs
тАФ mouse_tracked.rs
- рд╕реНрд░реЛрддрд╣рд░реВ
тАФmouse.rs
- рдкреНрд░рдгрд╛рд▓реАрд╣рд░реВ
тАФ rendering.rs
- constants.rs
тАФ utils.rs
- world_factory.rs -> рд╡рд┐рд╢реНрд╡ рдХрд╛рд░рдЦрд╛рдирд╛ рдХрд╛рд░реНрдпрд╣рд░реВ
- main.rs -> рдореБрдЦреНрдп рд▓реВрдк

рд╣рд╛рдореА рдорд╛рдирд┐рд╕рд╣рд░реВрд▓рд╛рдИ рдЕрджрд╛рд▓рддрдорд╛ рдирд┐рдпреБрдХреНрдд рдЧрд░реНрдЫреМрдВ

ECS рд▓реЗ рдЬреАрд╡рдирд▓рд╛рдИ рд╕рдЬрд┐рд▓реЛ рдмрдирд╛рдПрдХреЛ рдЫред рдЕрдм рдорд╕рдБрдЧ рд╕рдВрд╕реНрдерд╛рд╣рд░реВрдорд╛ рдбрд╛рдЯрд╛ рдердкреНрдиреЗ рд░ рддреНрдпрд╕ рдбрд╛рдЯрд╛рдорд╛ рдЖрдзрд╛рд░рд┐рдд рддрд░реНрдХ рдердкреНрдиреЗ рд╡реНрдпрд╡рд╕реНрдерд┐рдд рддрд░рд┐рдХрд╛ рдерд┐рдпреЛред рд░ рдпрд╕рд▓реЗ, рдмрд╛рд░реАрдорд╛, рдЕрджрд╛рд▓рддрд╣рд░реВ рдмреАрдЪ рдорд╛рдирд┐рд╕рд╣рд░реВрдХреЛ рд╡рд┐рддрд░рдг рд╡реНрдпрд╡рд╕реНрдерд┐рдд рдЧрд░реНрди рд╕рдореНрднрд╡ рдмрдирд╛рдпреЛред

рдореИрд▓реЗ рдХреЗ рдЧрд░реЗрдБ:

  • рд╡реНрдпрдХреНрддрд┐рд▓рд╛рдИ рддреЛрдХрд┐рдПрдХреЛ рдЕрджрд╛рд▓рддрдХреЛ рдмрд╛рд░реЗрдорд╛ рдбреЗрдЯрд╛ рдердкрд┐рдпреЛ;
  • Tenniscourt рдорд╛ рд╡рд┐рддрд░рд┐рдд рдорд╛рдирд┐рд╕рд╣рд░реВ рдмрд╛рд░реЗ рдбрд╛рдЯрд╛ рдердкрд┐рдпреЛ;
  • CourtChoosingSystem рдердкрд┐рдпреЛ, рдЬрд╕рд▓реЗ рддрдкрд╛рдИрдВрд▓рд╛рдИ рдорд╛рдирд┐рд╕рд╣рд░реВ рд░ рдЕрджрд╛рд▓рддрд╣рд░реВ рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдЧрд░реНрди, рдЙрдкрд▓рдмреНрдз рдЕрджрд╛рд▓рддрд╣рд░реВ рдкрддреНрддрд╛ рд▓рдЧрд╛рдЙрди рд░ рдЙрдиреАрд╣рд░реВрд▓рд╛рдИ рдЦреЗрд▓рд╛рдбреАрд╣рд░реВ рд╡рд┐рддрд░рдг рдЧрд░реНрди рдЕрдиреБрдорддрд┐ рджрд┐рдиреНрдЫ;
  • рдПрдХ Person MovementSystem рдердкрд┐рдпреЛ, рдЬрд╕рд▓реЗ рдЕрджрд╛рд▓рддрдорд╛ рддреЛрдХрд┐рдПрдХрд╛ рдорд╛рдирд┐рд╕рд╣рд░реВрд▓рд╛рдИ рдЦреЛрдЬреНрдЫ, рд░ рдпрджрд┐ рддрд┐рдиреАрд╣рд░реВ рддреНрдпрд╣рд╛рдБ рдЫреИрдирдиреН рднрдиреЗ, рддреНрдпрд╕рдкрдЫрд┐ рдорд╛рдирд┐рд╕рд╣рд░реВрд▓рд╛рдИ рдЙрдиреАрд╣рд░реВрд▓рд╛рдИ рдЖрд╡рд╢реНрдпрдХ рдкрд░реНрдиреЗ рдард╛рдЙрдБрдорд╛ рдкрдард╛рдЙрдБрджрдЫред

24 рдШрдгреНрдЯрд╛рдорд╛ рд░рд╕реНрдЯ рдЦреЗрд▓реНрджреИ: рд╡реНрдпрдХреНрддрд┐рдЧрдд рд╡рд┐рдХрд╛рд╕ рдЕрдиреБрднрд╡

рд╕рдВрдХреНрд╖реЗрдк рд╣реБрдБрджреИ

рдорд▓рд╛рдИ рдпреЛ рд╕рд░рд▓ рдЦреЗрд▓рдорд╛ рдХрд╛рдо рдЧрд░реНрди рд╕рд╛рдБрдЪреНрдЪреИ рдЖрдирдиреНрдж рд▓рд╛рдЧреНрдпреЛред рдпрд╕рдмрд╛рд╣реЗрдХ, рдо рдЦреБрд╕реА рдЫреБ рдХрд┐ рдореИрд▓реЗ рдпрд╕рд▓рд╛рдИ рд▓реЗрдЦреНрди рд░рд╕реНрдЯ рдкреНрд░рдпреЛрдЧ рдЧрд░реЗ, рдХрд┐рдирднрдиреЗ:

  • рдЦрд┐рдпрд╛рд▓реЗ рддрдкрд╛рдИрд▓рд╛рдИ рдЪрд╛рд╣рд┐рдиреЗ рдХреБрд░рд╛ рджрд┐рдиреНрдЫ;
  • рдпрд╕рдорд╛ рдЙрддреНрдХреГрд╖реНрдЯ рджрд╕реНрддрд╛рд╡реЗрдЬ рдЫ, рд░рд╕реНрдЯ рдПрдХрджрдо рд╕реБрд░реБрдЪрд┐рдкреВрд░реНрдг рдЫ;
  • рд╕реНрдерд┐рд░рддрд╛ рд░рд╛рдореНрд░реЛ рдЫ;
  • рддрдкрд╛рдИрдВрд▓реЗ рдХреНрд▓реЛрдирд┐рдЩ, рдкреНрд░рддрд┐рд▓рд┐рдкрд┐ рд╡рд╛ рдЕрдиреНрдп рд╕рдорд╛рди рдХрд╛рд░реНрдпрд╣рд░реВрдХреЛ рд╕рд╣рд╛рд░рд╛ рд▓рд┐рдиреБ рдкрд░реНрджреИрди, рдЬреБрди рдореИрд▓реЗ рдкреНрд░рд╛рдпрдГ C++ рдорд╛ рдЧрд░реЗрдВ;
  • рд╡рд┐рдХрд▓реНрдкрд╣рд░реВ рдкреНрд░рдпреЛрдЧ рдЧрд░реНрди рдзреЗрд░реИ рд╕рдЬрд┐рд▓реЛ рдЫрдиреН рд░ рддреНрд░реБрдЯрд┐рд╣рд░реВ рдзреЗрд░реИ рд░рд╛рдореНрд░реЛрд╕рдБрдЧ рд╣реНрдпрд╛рдиреНрдбрд▓ рдЧрд░реНрдиреБрд╣реЛрд╕реН;
  • рдпрджрд┐ рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХрдореНрдкрд╛рдЗрд▓ рдЧрд░реНрди рд╕рдХреНрд╖рдо рдерд┐рдпреЛ, рддрдм 99% рд╕рдордп рдпреЛ рдХрд╛рдо рдЧрд░реНрджрдЫ, рд░ рдареНрдпрд╛рдХреНрдХреИ рдЬрд╕реНрддреИ рдпреЛ рдЧрд░реНрдиреБрдкрд░реНрдЫред рдорд▓рд╛рдИ рд▓рд╛рдЧреНрдЫ рдХрдореНрдкрд╛рдЗрд▓рд░ рддреНрд░реБрдЯрд┐ рд╕рдиреНрджреЗрд╢рд╣рд░реВ рдореИрд▓реЗ рджреЗрдЦреЗрдХреЛ рдЙрддреНрддрдо рд╣реЛред

Rust рдорд╛ рдЦреЗрд▓ рд╡рд┐рдХрд╛рд╕ рднрд░реНрдЦрд░ рд╕реБрд░реБ рднрдПрдХреЛ рдЫред рддрд░ рддреНрдпрд╣рд╛рдБ рдкрд╣рд┐рд▓реЗ рдиреИ рдПрдХ рд╕реНрдерд┐рд░ рд░ рдкрд░реНрдпрд╛рдкреНрдд рдареВрд▓реЛ рд╕рдореБрджрд╛рдп рд░рд╕реНрдЯ рд╕рдмреИрд▓рд╛рдИ рдЦреЛрд▓реНрди рдХрд╛рдо рдЧрд░рд┐рд░рд╣реЗрдХреЛ рдЫред рддрд╕рд░реНрде, рдо рднрд╛рд╖рд╛рдХреЛ рднрд╡рд┐рд╖реНрдпрд▓рд╛рдИ рдЖрд╢рд╛рд╡рд╛рджреА рд╕рд╛рде рд╣реЗрд░реНрдЫреБ, рд╣рд╛рдореНрд░реЛ рд╕рд╛рдЭрд╛ рдХрд╛рдордХреЛ рдирддрд┐рдЬрд╛рдХреЛ рдкреНрд░рддреАрдХреНрд╖рд╛ рдЧрд░реНрджреИред

Skillbox рд╕рд┐рдлрд╛рд░рд┐рд╕ рдЧрд░реНрджрдЫ:

рд╕реНрд░реЛрдд: www.habr.com

рдПрдХ рдЯрд┐рдкреНрдкрдгреА рдердкреНрди