ืฉืคึผื™ืœ ื–ืฉืึทื•ื•ืขืจ ืื™ืŸ 24 ืฉืขื”: ื“ืขืจืคืึทืจื•ื ื’ ืคื•ืŸ ืคึผืขืจื–ืขื ืœืขืš ืึทื ื˜ื•ื•ื™ืงืœื•ื ื’

ืฉืคึผื™ืœ ื–ืฉืึทื•ื•ืขืจ ืื™ืŸ 24 ืฉืขื”: ื“ืขืจืคืึทืจื•ื ื’ ืคื•ืŸ ืคึผืขืจื–ืขื ืœืขืš ืึทื ื˜ื•ื•ื™ืงืœื•ื ื’

ืื™ืŸ ื“ืขื ืึทืจื˜ื™ืงืœ ืื™ืš ื•ื•ืขืœ ืจืขื“ืŸ ื•ื•ืขื’ืŸ ืžื™ื™ืŸ ืคืขืจื–ืขื ืœืขื›ืข ื“ืขืจืคืึทืจื•ื ื’ ืคื•ืŸ ื“ืขื•ื•ืขืœืึธืคึผื™ื ื’ ืึท ืงืœื™ื™ืŸ ืฉืคึผื™ืœ ืื™ืŸ ืจื•ืกื˜. ืขืก ื”ืึธื˜ ื’ืขื ื•ืžืขืŸ ื•ื•ืขื’ืŸ 24 ืฉืขื” ืฆื• ืฉืึทืคึฟืŸ ืึท ืืจื‘ืขื˜ืŸ ื•ื•ืขืจืกื™ืข (ืื™ืš ืžืขืจืกื˜ื ืก ื’ืขืืจื‘ืขื˜ ืื™ืŸ ื“ื™ ื™ื•ื•ื ื™ื ื’ื– ืึธื“ืขืจ ืื•ื™ืฃ ื•ื•ื™ืงืขื ื“ื–). ื“ืขืจ ืฉืคึผื™ืœ ืื™ื– ื•ื•ื™ื™ึทื˜ ืคื•ืŸ ืคืึทืจื˜ื™ืง, ืึธื‘ืขืจ ืื™ืš ื˜ืจืึทื›ื˜ืŸ ื“ื™ ื“ืขืจืคืึทืจื•ื ื’ ื•ื•ืขื˜ ื–ื™ื™ืŸ ืจื™ื•ื•ืึธืจื“ื™ื ื’. ืื™ืš ื•ื•ืขื˜ ื˜ื™ื™ืœืŸ ื•ื•ืึธืก ืื™ืš ื’ืขืœืขืจื ื˜ ืื•ืŸ ืขื˜ืœืขื›ืข ืึทื‘ื–ืขืจื•ื•ื™ื™ืฉืึทื ื– ืื™ืš ื’ืขืžืื›ื˜ ื‘ืฉืขืช ื‘ื ื™ืŸ ื“ื™ ืฉืคึผื™ืœ ืคึฟื•ืŸ ืงืจืึทืฆืŸ.

Skillbox ืจืขืงืึทืžืขื ื“ื–: ืฆื•ื•ื™ื™-ื™ืึธืจ ืคึผืจืึทืงื˜ื™ืฉ ืงื•ืจืก "ืื™ืš ื‘ื™ืŸ ืึท ืคึผืจืึธ ื•ื•ืขื‘ ื“ืขื•ื•ืขืœืึธืคึผืขืจ".

ืžื™ืจ ื“ืขืจืžืึธื ืขืŸ ืื™ืจ: ืคึฟืึทืจ ืึทืœืข ืœื™ื™ืขื ืขืจ ืคื•ืŸ "ื”ื‘ืจ" - ืึท ืึทืจืึธืคึผืจืขื›ืขื ืขืŸ ืคื•ืŸ 10 ืจื•ื‘ืœ ื•ื•ืขืŸ ืื™ืจ ืคืึทืจืฉืจื™ื™ึทื‘ืŸ ืื™ืŸ ืงื™ื™ืŸ ืกืงื™ืœื‘ืึธืงืก ืงื•ืจืก ื ื™ืฆืŸ ื“ื™ ืคึผืขืจืžืึธื•ืฉืึทื ืึทืœ ืงืึธื“ "ื”ื‘ืจ".

ืคืืจื•ื•ืืก ืจื•ืกื˜?

ืื™ืš ื”ืึธื‘ ืื•ื™ืกื“ืขืจื•ื•ื™ื™ืœื˜ ื“ืขื ืฉืคึผืจืึทืš ื•ื•ื™ื™ึทืœ ืื™ืš ื”ืึธื‘ืŸ ื’ืขื”ืขืจื˜ ืึท ืคึผืœืึทืฅ ืคื•ืŸ ื’ื•ื˜ ื–ืื›ืŸ ื•ื•ืขื’ืŸ ืื™ื ืื•ืŸ ืื™ืš ื–ืขืŸ ืขืก ื•ื•ืขืจืŸ ืžืขืจ ืื•ืŸ ืžืขืจ ืคืึธืœืงืก ืื™ืŸ ืฉืคึผื™ืœ ืึทื ื˜ื•ื•ื™ืงืœื•ื ื’. ืื™ื™ื“ืขืจ ืื™ืš ืฉืจื™ื™ื‘ืŸ ื“ืขื ืฉืคึผื™ืœ, ืื™ืš ื”ืื˜ ื‘ื™ืกืœ ื“ืขืจืคืึทืจื•ื ื’ ื“ืขื•ื•ืขืœืึธืคึผื™ื ื’ ืคึผืฉื•ื˜ ืึทืคึผืœืึทืงื™ื™ืฉืึทื ื– ืื™ืŸ ืจื•ืกื˜. ื“ืึธืก ืื™ื– ื’ืขื•ื•ืขืŸ ืคึผื•ื ืงื˜ ื’ืขื ื•ื’ ืฆื• ื’ืขื‘ืŸ ืžื™ืจ ืึท ื’ืขืคื™ืœ ืคื•ืŸ ืคืจื™ื™ื”ื™ื™ื˜ ื‘ืฉืขืช ืฉืจื™ื™ื‘ืŸ ื“ืขื ืฉืคึผื™ืœ.

ืคืืจื•ื•ืืก ื“ื™ ืฉืคึผื™ืœ ืื•ืŸ ื•ื•ืึธืก ืžื™ืŸ ืคื•ืŸ ืฉืคึผื™ืœ?

ืžืึทื›ืŸ ืฉืคึผื™ืœืขืจื™ื™ึท ืื™ื– ืฉืคึผืึทืก! ืื™ืš ื•ื•ื™ื ื˜ืฉืŸ ืขืก ื–ืขื ืขืŸ ื’ืขื•ื•ืขืŸ ืžืขืจ ืกื™ื‘ื•ืช, ืึธื‘ืขืจ ืคึฟืึทืจ "ื”ื™ื™ื" ืคึผืจืึทื“ื–ืฉืขืงืก ืื™ืš ืงืœื™ื™ึทื‘ืŸ ื˜ืขืžืขืก ื•ื•ืึธืก ื–ืขื ืขืŸ ื ื™ืฉื˜ ืฆื• ืขื ื’ ืฉื™ื™ึทื›ื•ืช ืฆื• ืžื™ื™ืŸ ืจืขื’ื•ืœืขืจ ืึทืจื‘ืขื˜. ื•ื•ืึธืก ืฉืคึผื™ืœ ืื™ื– ื“ืึธืก? ืื™ืš ื’ืขื•ื•ืืœื˜ ืฆื• ืžืึทื›ืŸ ืขืคึผืขืก ื•ื•ื™ ืึท ื˜ืขื ื™ืก ืกื™ืžื™ืึทืœื™ื™ื˜ืขืจ ื•ื•ืึธืก ืงืึทืžื‘ื™ื™ื ื– ืกื™ื˜ื™ืขืก ืกืงื™ืœื™ื ืขืก, ื–ืึธืึธืœืึธื’ื™ืฉืขืจ ื’ืึธืจื˜ืŸ ื˜ื™ืงืึธืึธืŸ, ื˜ื•ืจืžืข ืึทืจื˜ืฉื™ื˜ืขืงื˜ ืื•ืŸ ื˜ืขื ื™ืก ื–ื™ืš. ืื™ืŸ ืึทืœื’ืขืžื™ื™ืŸ, ืขืก ืื™ื– ื’ืขื•ื•ืขืŸ ืึท ืฉืคึผื™ืœ ื•ื•ืขื’ืŸ ืึท ื˜ืขื ื™ืก ืึทืงืึทื“ืขืžื™ ื•ื•ื• ืžืขื ื˜ืฉืŸ ืงื•ืžืขืŸ ืฆื• ืฉืคึผื™ืœืŸ.

ื˜ืขื›ื ื™ืฉ ื˜ืจื™ื™ื ื™ื ื’

ืื™ืš ื’ืขื•ื•ืืœื˜ ืฆื• ื ื•ืฆืŸ Rust, ืึธื‘ืขืจ ืื™ืš ื”ืื˜ ื ื™ืฉื˜ ื•ื•ื™ืกืŸ ืคึผื•ื ืงื˜ ื•ื•ื™ ืคื™ืœ ื’ืจืึทื•ื ื“ื•ื•ืขืจืง ืขืก ื•ื•ืึธืœื˜ ื ืขืžืขืŸ ืฆื• ืึธื ื”ื™ื™ื‘ืŸ. ืื™ืš ื”ืื˜ ื ื™ืฉื˜ ื•ื•ืขืœืŸ ืฆื• ืฉืจื™ื™ึทื‘ืŸ ืคึผื™ืงืกืขืœ ืฉืึทื“ืขืจื– ืื•ืŸ ื ื•ืฆืŸ ืฉืœืขืคึผืŸ-n-ื“ืจืึธืคึผ, ืึทื–ื•ื™ ืื™ืš ืื™ื– ื’ืขื•ื•ืขืŸ ืงื•ืงืŸ ืคึฟืึทืจ ื“ื™ ืžืขืจืกื˜ ืคืœืขืงืกืึทื‘ืึทืœ ืกืึทืœื•ืฉืึทื ื–.

ืื™ืš ื’ืขืคึฟื•ื ืขืŸ ื ื•ืฆื™ืง ืจืขืกื•ืจืกืŸ ื•ื•ืึธืก ืื™ืš ื˜ื™ื™ืœืŸ ืžื™ื˜ ืื™ืจ:

ืื™ืš ื™ืงืกืคึผืœืึธืจื“ ืขื˜ืœืขื›ืข ืจื•ืกื˜ ืฉืคึผื™ืœ ืขื ื“ื–ืฉืึทื ื–, ืœืขืกืึธืฃ ื˜ืฉื•ื–ื™ื ื’ ืคึผื™ืกื˜ืึธืŸ ืื•ืŸ ggez. ืื™ืš ื”ืึธื‘ ื–ื™ื™ ื’ืขืคึฟื•ื ืขืŸ ื‘ืฉืขืช ืืจื‘ืขื˜ืŸ ืื•ื™ืฃ ืึท ืคืจื™ืขืจื“ื™ืงืŸ ืคึผืจื•ื™ืขืงื˜. ืื™ืŸ ื“ื™ ืกื•ืฃ, ืื™ืš ืื•ื™ืกื“ืขืจื•ื•ื™ื™ืœื˜ ggez ื•ื•ื™ื™ึทืœ ืขืก ื’ืขื•ื•ืขืŸ ืžืขืจ ืคึผืึทืกื™ืง ืคึฟืึทืจ ื™ืžืคึผืœืึทืžืขื ื™ื ื’ ืึท ืงืœื™ื™ืŸ 2 ื“ ืฉืคึผื™ืœ. ื“ื™ ืžืึทื“ื–ืฉืึทืœืขืจ ืกื˜ืจื•ืงื˜ื•ืจ ืคื•ืŸ ืคึผื™ืกื˜ืึธืŸ ืื™ื– ืฆื• ืงืึธืžืคึผืœื™ืฆื™ืจื˜ ืคึฟืึทืจ ืึท ืึธื ื”ื™ื™ื‘ืขืจ ื“ืขื•ื•ืขืœืึธืคึผืขืจ (ืึธื“ืขืจ ืขืžืขืฆืขืจ ื•ื•ืึธืก ืึทืจื‘ืขื˜ ืžื™ื˜ ืจื•ืกื˜ ืคึฟืึทืจ ื“ื™ ืขืจืฉื˜ืขืจ ืžืึธืœ).

ืฉืคึผื™ืœ ืกื˜ืจื•ืงื˜ื•ืจ

ืื™ืš ืคืืจื‘ืจืื›ื˜ ืึท ื‘ื™ืกืœ ืฆื™ื™ื˜ ืฆื• ื˜ืจืึทื›ื˜ืŸ ื•ื•ืขื’ืŸ ื“ื™ ืึทืจืงืึทื˜ืขืงื˜ืฉืขืจ ืคื•ืŸ ื“ื™ ืคึผืจื•ื™ืขืงื˜. ื“ืขืจ ืขืจืฉื˜ืขืจ ืฉืจื™ื˜ ืื™ื– ืฆื• ืžืึทื›ืŸ ื“ื™ "ืœืึทื ื“", ืžืขื ื˜ืฉืŸ ืื•ืŸ ื˜ืขื ื™ืก ืงืึธืจืฅ. ืžืข ืŸ ื“ืืจ ืฃ ื–ื™ ืš ืืจื•ืžื’ืฒ ืŸ ืื™ ืŸ ื“ ื™ ื’ืขืจื™ื›ื˜ ืŸ ืื• ืŸ ืฐืืจื˜ืŸ . ืคึผืœื™ื™ึทืขืจืก ืžื•ื–ืŸ ื”ืึธื‘ืŸ ืกืงื™ืœื– ื•ื•ืึธืก ืคึฟืึทืจื‘ืขืกืขืจืŸ ืžื™ื˜ ืฆื™ื™ื˜. ืคึผืœื•ืก, ืขืก ื–ืึธืœ ื–ื™ื™ืŸ ืึท ืจืขื“ืึทืงื˜ืึธืจ ื•ื•ืึธืก ืึทืœืึทื•ื– ืื™ืจ ืฆื• ืœื™ื™ื’ืŸ ื ื™ื™ึทืข ืžืขื ื˜ืฉืŸ ืื•ืŸ ืงืึธืจืฅ, ืึธื‘ืขืจ ื“ืึธืก ืื™ื– ื ื™ื˜ ืžืขืจ ืคืจื™ื™.

ืื™ืš ื”ืึธื‘ ืึทืœืฅ ื“ื•ืจื›ื’ืขืงืึธื›ื˜, ื”ืึธื‘ ืื™ืš ื’ืขื˜ืึธืŸ ืฆื• ืึทืจื‘ืขื˜ืŸ.

ืฉืคึผื™ืœ ืฉืึทืคื•ื ื’

ืึธื ื”ื™ื™ื‘: ืงืจื™ื™ื–ืŸ ืื•ืŸ ืึทื‘ืกื˜ืจืึทืงืฆื™ืขืก

ืื™ืš ื”ืื‘ ื’ืขื ื•ืžืขืŸ ื ื‘ื™ื™ืฉืคื™ืœ ืคื•ืŸ 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 ืื™ื– ื ื™ื™ื˜ื™ืง ื•ื•ื™ื™ึทืœ ืขืก ื›ึผื•ืœืœ ืึทืœืข ื“ื™ ืฉื•ืจื•ืช ืคื•ืŸ ืงืึธื“. ืื™ืš ืคืืจื‘ืจืื›ื˜ ืึท ื‘ื™ืกืœ ืฆื™ื™ื˜ ืกืขืคึผืขืจื™ื™ื˜ื™ื ื’ ื“ื™ ื˜ืขืงืขืก ืื•ืŸ ืึธืคึผื˜ื™ืžื™ื–ื™ื ื’ ื“ื™ ื•ื•ืขื’ื•ื•ื™ื™ึทื–ืขืจ ืกื˜ืจื•ืงื˜ื•ืจ. ืื–ื•ื™ ื”ืื˜ ืขืก ืื•ื™ืกื’ืขื–ืขืŸ ื ืื›ื“ืขื:
ืจืขืกื•ืจืกืŸ -> ื“ืึธืก ืื™ื– ื•ื•ื• ืึทืœืข ื“ื™ ืึทืกืขืฅ ื–ืขื ืขืŸ (ื‘ื™ืœื“ืขืจ)
ืกืจืง
- ืขื ื˜ื™ื˜ื™ื–
โ€” game_object.rs
โ€” ืงืจื™ื™ึทื–.ืจืก
โ€” main.rs -> ื”ื•ื™ืคึผื˜ ืฉืœื™ื™ืฃ

ืžืขื ื˜ืฉืŸ, ืคืœืึธืจื– ืื•ืŸ ื‘ื™ืœื“ืขืจ

ื“ืขืจ ื•ื•ื™ื™ึทื˜ืขืจ ืฉืจื™ื˜ ืื™ื– ืฆื• ืฉืึทืคึฟืŸ ืึท ืžืขื ื˜ืฉ ืฉืคึผื™ืœ ื›ื™ื™ืคืขืฅ ืื•ืŸ ืœืึธื“ืŸ ื‘ื™ืœื“ืขืจ. ืึทืœืฅ ื–ืึธืœ ื–ื™ื™ืŸ ื’ืขื‘ื•ื™ื˜ ืื•ื™ืฃ ื“ื™ ื™ืงืขืจ ืคื•ืŸ 32 * 32 ื˜ื™ื™ืœื–.

ืฉืคึผื™ืœ ื–ืฉืึทื•ื•ืขืจ ืื™ืŸ 24 ืฉืขื”: ื“ืขืจืคืึทืจื•ื ื’ ืคื•ืŸ ืคึผืขืจื–ืขื ืœืขืš ืึทื ื˜ื•ื•ื™ืงืœื•ื ื’

ื˜ืขื ื™ืก ืงืึธืจืฅ

ื ืึธืš ื’ืขืœืขืจื ื˜ ื•ื•ื™ ื˜ืขื ื™ืก ืงืึธืจืฅ ืงื•ืงืŸ ื•ื•ื™, ืื™ืš ื‘ืึทืฉืœืึธืกืŸ ืฆื• ืžืึทื›ืŸ ื–ื™ื™ ืคื•ืŸ 4 * 2 ื˜ื™ื™ืœื–. ื˜ื›ื™ืœืขืก, ืขืก ืื™ื– ื’ืขื•ื•ืขืŸ ืžืขื’ืœืขืš ืฆื• ืžืึทื›ืŸ ืึท ื‘ื™ืœื“ ืคื•ืŸ ื“ืขื ื’ืจื™ื™ืก, ืึธื“ืขืจ ืฆื• ืฉื˜ืขืœืŸ ืฆื•ื–ืึทืžืขืŸ 8 ื‘ืึทื–ื•ื ื“ืขืจ ื˜ื™ื™ืœื–. ืึธื‘ืขืจ ื“ืขืžืึธืœื˜ ืื™ืš ืื™ื™ื ื’ืขื–ืขืŸ ืึทื– ื‘ืœื•ื™ื– ืฆื•ื•ื™ื™ ื™ื™ื ืฆื™ืง ืงืึทื›ืœ ื–ืขื ืขืŸ ื“ืืจืฃ, ืื•ืŸ ื“ืึธ ืก ื•ื•ืึธืก.

ืื™ืŸ ื’ืึทื ืฅ ืžื™ืจ ื”ืึธื‘ืŸ ืฆื•ื•ื™ื™ ืึทื–ืึท ื˜ื™ื™ืœื–: 1 ืื•ืŸ 2.

ื™ืขื“ืขืจ ืึธืคึผื˜ื™ื™ืœื•ื ื’ ืคื•ืŸ ื“ื™ ืคึผืœืึทืฅ ื‘ืืฉื˜ื™ื™ื˜ ืคื•ืŸ ืงืึทื›ืœ 1 ืึธื“ืขืจ ืงืึทื›ืœ 2. ื–ื™ื™ ืงืขื ืขืŸ ื–ื™ื™ืŸ ื’ืขืœื™ื™ื’ื˜ ื•ื•ื™ ื ืึธืจืžืึทืœ ืึธื“ืขืจ ืคืœื™ืคึผื˜ 180 ื“ื™ื’ืจื™ื–.

ืฉืคึผื™ืœ ื–ืฉืึทื•ื•ืขืจ ืื™ืŸ 24 ืฉืขื”: ื“ืขืจืคืึทืจื•ื ื’ ืคื•ืŸ ืคึผืขืจื–ืขื ืœืขืš ืึทื ื˜ื•ื•ื™ืงืœื•ื ื’

ื™ืงืขืจื“ื™ืง ืงืึทื ืกื˜ืจืึทืงืฉืึทืŸ (ืคึฟืึทืจื–ืึทืžืœื•ื ื’) ืžืึธื“ืข

ื ืึธืš ืื™ืš ื’ืขืจืื˜ืŸ ืฆื• ื“ืขืจื’ืจื™ื™ื›ืŸ ืจืขื ื“ืขืจื™ื ื’ ืคื•ืŸ ื–ื™ื™ื˜ืœืขืš, ืžืขื ื˜ืฉืŸ ืื•ืŸ ืžืึทืคึผืก, ืื™ืš ืื™ื™ื ื’ืขื–ืขืŸ ืึทื– ืึท ื™ืงืขืจื“ื™ืง ืคึฟืึทืจื–ืึทืžืœื•ื ื’ ืžืึธื“ืข ืื™ื– ืื•ื™ืš ื“ืืจืฃ. ืื™ืš ื™ืžืคึผืœืึทืžืขื ืึทื“ ืขืก ื•ื•ื™ ื“ืึธืก: ื•ื•ืขืŸ ื“ื™ ืงื ืขืคึผืœ ืื™ื– ื’ืขื“ืจื™ืงื˜, ื“ื™ ื›ื™ื™ืคืขืฅ ืื™ื– ืื•ื™ืกื’ืขืงืœื™ื‘ืŸ, ืื•ืŸ ื“ื™ ืงืœื™ืง ืฉื˜ืขืœืŸ ืขืก ืื™ืŸ ื“ื™ ื’ืขื‘ืขื˜ืŸ ืึธืจื˜. ืึทื–ื•ื™, ืงื ืขืคึผืœ 1 ืึทืœืึทื•ื– ืื™ืจ ืฆื• ืื•ื™ืกืงืœื™ื™ึทื‘ืŸ ืึท ืคึผืœืึทืฅ, ืื•ืŸ ืงื ืขืคึผืœ 2 ืึทืœืึทื•ื– ืื™ืจ ืฆื• ืื•ื™ืกืงืœื™ื™ึทื‘ืŸ ืึท ืฉืคึผื™ืœืขืจ.

ืึธื‘ืขืจ ืžื™ืจ ื ืึธืš ื“ืึทืจืคึฟืŸ ืฆื• ื’ืขื“ืขื ืงืขืŸ ื•ื•ืึธืก 1 ืื•ืŸ 2 ืžื™ื™ื ืขืŸ, ืึทื–ื•ื™ ืื™ืš ืฆื•ื’ืขื’ืขื‘ืŸ ืึท ื•ื•ื™ืจืขืคืจืึทืžืข ืฆื• ืžืึทื›ืŸ ืขืก ืงืœืึธืจ ื•ื•ืึธืก ื“ื™ ื›ื™ื™ืคืขืฅ ืื™ื– ืื•ื™ืกื’ืขืงืœื™ื‘ืŸ. ื“ืึธืก ืื™ื– ื•ื•ืึธืก ืขืก ืงื•ืงื˜ ื•ื•ื™.

ืฉืคึผื™ืœ ื–ืฉืึทื•ื•ืขืจ ืื™ืŸ 24 ืฉืขื”: ื“ืขืจืคืึทืจื•ื ื’ ืคื•ืŸ ืคึผืขืจื–ืขื ืœืขืš ืึทื ื˜ื•ื•ื™ืงืœื•ื ื’

ืึทืจืงืึทื˜ืขืงื˜ืฉืขืจ ืื•ืŸ ืจืขืคืึทืงื˜ืึธืจื™ื ื’ ืฉืืœื•ืช

ืื™ืฆื˜ ืื™ืš ื”ืึธื‘ืŸ ืขื˜ืœืขื›ืข ืฉืคึผื™ืœ ืึทื‘ื“ื–ืฉืขืงืฅ: ืžืขื ื˜ืฉืŸ, ืงืึธืจืฅ ืื•ืŸ ืคืœืึธืจื–. ืึธื‘ืขืจ, ื›ึผื“ื™ ื•ื•ื™ืจืขืคืจืึทืžืขืก ื–ืึธืœ ืึทืจื‘ืขื˜ืŸ, ื“ืึทืจืฃ ืžืขืŸ ื–ืึธื’ืŸ ื™ืขื“ืŸ ืึธื‘ื™ืขืงื˜ ืขื ื˜ื™ื˜ื™ ืฆื™ ื“ื™ ืึทื‘ื“ื–ืฉืขืงืฅ ื–ื™ืš ื–ืขื ืขืŸ ืื™ืŸ ื“ืขืžืึทื ืกื˜ืจื™ื™ืฉืึทืŸ ืžืึธื“ืข, ืึธื“ืขืจ ืฆื™ ืึท ืจืึทื ืื™ื– ืคืฉื•ื˜ ืฆื™ืขืŸ. ื“ืึธืก ืื™ื– ื ื™ืฉื˜ ื–ื™ื™ืขืจ ื‘ืึทืงื•ื•ืขื.

ืขืก ื’ืขื•ื•ืขืŸ ืฆื• ืžื™ืจ ืึทื– ื“ื™ ืึทืจืงืึทื˜ืขืงื˜ืฉืขืจ ื“ืืจืฃ ืฆื• ื–ื™ื™ืŸ ืจื™ื˜ืจื™ื™ื ื“ ืื™ืŸ ืึท ื•ื•ืขื’ ื•ื•ืึธืก ืื ื˜ืคืœืขืงื˜ ืขื˜ืœืขื›ืข ืœื™ืžื™ื˜ื™ื™ืฉืึทื ื–:

  • ื”ืึธื‘ืŸ ืึทืŸ ืขื ื˜ื™ื˜ื™ ื•ื•ืึธืก ืจืขื ื“ืขืจื– ืื•ืŸ ื“ืขืจื”ื™ื™ึทื ื˜ื™ืงื˜ ื–ื™ืš ืื™ื– ืึท ืคึผืจืึธื‘ืœืขื ื•ื•ื™ื™ึทืœ ื“ื™ ืขื ื˜ื™ื˜ื™ ื•ื•ืขื˜ ื ื™ืฉื˜ ืงืขื ืขืŸ ืฆื• "ื•ื•ื™ืกืŸ" ื•ื•ืึธืก ืขืก ืื™ื– ื’ืขืžื™ื™ื ื˜ ืฆื• ืจืขื ื“ืขืจืŸ - ืึท ื‘ื™ืœื“ ืื•ืŸ ืึท ื•ื•ื™ืจืขืคืจืึทืžืข;
  • ืคืขืœืŸ ืคื•ืŸ ืึท ื’ืขืฆื™ื™ึทื’ ืคึฟืึทืจ ื™ืงืกื˜ืฉื™ื™ื ื“ื–ืฉื™ื ื’ ืคึผืจืึธืคึผืขืจื˜ื™ืขืก ืื•ืŸ ื ืึทื˜ื•ืจ ืฆื•ื•ื™ืฉืŸ ื™ื—ื™ื“ ืขื ื˜ื™ื˜ื™ื– (ืœืžืฉืœ, ื“ื™ is_build_mode ืคืึทืจืžืึธื’ ืึธื“ืขืจ ื ืึทื˜ื•ืจ ืจืขื ื“ืขืจื™ื ื’). ืขืก ื•ื•ืึธืœื˜ ื–ื™ื™ืŸ ืžืขื’ืœืขืš ืฆื• ื ื•ืฆืŸ ื™ืจื•ืฉื”, ื›ืึธื˜ืฉ ืขืก ืื™ื– ืงื™ื™ืŸ ื’ืขื”ืขืจื™ืง ื•ื•ืขื’ ืฆื• ื™ื ืกื˜ืจื•ืžืขื ื˜ ืขืก ืื™ืŸ ืจื•ืกื˜. ื•ื•ืึธืก ืื™ืš ื˜ืึทืงืข ื“ืืจืฃ ืื™ื– ื“ื™ ืื•ื™ืกืœื™ื™ื’;
  • ืึท ื’ืขืฆื™ื™ึทื’ ืคึฟืึทืจ ื™ื ื˜ืขืจืึทืงืฉืึทืŸ ืฆื•ื•ื™ืฉืŸ ืขื ื˜ื™ื˜ื™ื– ืื™ื– ื“ืืจืฃ ืฆื• ื‘ืึทืฉื˜ื™ืžืขืŸ ืžืขื ื˜ืฉืŸ ืฆื• ืงืึธืจืฅ;
  • ื“ื™ ืขื ื˜ื™ื˜ื™ื– ื–ื™ืš ื–ืขื ืขืŸ ื’ืขื•ื•ืขืŸ ืึท ื’ืขืžื™ืฉ ืคื•ืŸ ื“ืึทื˜ืŸ ืื•ืŸ ืœืึธื’ื™ืง ื•ื•ืึธืก ื’ืขืฉื•ื•ื™ื ื“ ื’ืึทื˜ ืื•ื™ืก ืคื•ืŸ ืงืึธื ื˜ืจืึธืœ.

ืื™ืš ื”ืื˜ ืขื˜ืœืขื›ืข ืžืขืจ ืคืึธืจืฉื•ื ื’ ืื•ืŸ ื“ื™ืกืงืึทื•ื•ืขืจื“ ื“ื™ ืึทืจืงืึทื˜ืขืงื˜ืฉืขืจ ECS - ืขื ื˜ื™ื˜ื™ ืงืึธืžืคึผืึธื ืขื ื˜ ืกื™ืกื˜ืขื, ื•ื•ืึธืก ืื™ื– ืึธืคื˜ ื’ืขื ื™ืฆื˜ ืื™ืŸ ืฉืคึผื™ืœืขืจื™ื™ึท. ื“ืึธ ื–ืขื ืขืŸ ื“ื™ ื‘ืขื ืขืคื™ืฅ ืคื•ืŸ ECS:

  • ื“ืึทื˜ืŸ ื–ืขื ืขืŸ ืืคื’ืขืฉื™ื™ื“ื˜ ืคื•ืŸ ืœืึธื’ื™ืง;
  • ื–ืึทืฅ ืึทื ืฉื˜ืึธื˜ ืคื•ืŸ ื™ืจื•ืฉื”;
  • ื“ืึทื˜ืŸ-ืกืขื ื˜ืจื™ืง ืึทืจืงืึทื˜ืขืงื˜ืฉืขืจ.

ECS ืื™ื– ืงืขืจืึทืงื˜ืขืจื™ื™ื–ื“ ื“ื•ืจืš ื“ืจื™ื™ ื™ืงืขืจื“ื™ืง ืงืึทื ืกืขืคึผืก:

  • ืขื ื˜ื™ื˜ื™ื– - ื“ืขืจ ื˜ื™ืคึผ ืคื•ืŸ ื›ื™ื™ืคืขืฅ ืฆื• ื•ื•ืึธืก ื“ื™ ืื™ื“ืขื ื˜ื™ืคื™ืฆื™ืจื˜ ืจืขืคืขืจืก ืฆื• (ืขืก ืงืขืŸ ื–ื™ื™ืŸ ืึท ืฉืคึผื™ืœืขืจ, ืึท ืคึผื™ืœืงืข ืึธื“ืขืจ ืขืคึผืขืก ืึทื ื“ืขืจืฉ);
  • ืงืึทืžืคึผืึธื•ื ืึทื ืฅ - ืขื ื˜ื™ื˜ื™ื– ื–ืขื ืขืŸ ืงืึทืžืคึผืจื™ื™ื–ื“ ืคื•ืŸ ื–ื™ื™. ื‘ื™ื™ึทืฉืคึผื™ืœ - ืจืขื ื“ืขืจื™ื ื’ ืงืึธืžืคึผืึธื ืขื ื˜, ืœืึธื•ืงื™ื™ืฉืึทื ื– ืื•ืŸ ืื ื“ืขืจืข. ื“ืืก ื–ืขื ืขืŸ ื“ืึทื˜ืŸ ื•ื•ืขืจื›ืึทื•ื–ื™ื–;
  • ืกื™ืกื˜ืขืžืขืŸ - ื–ื™ื™ ื ื•ืฆืŸ ื‘ื™ื™ื“ืข ืึทื‘ื“ื–ืฉืขืงืฅ ืื•ืŸ ืงืึทืžืคึผืึธื•ื ืึทื ืฅ, ืคึผืœื•ืก ืึทื ื˜ื”ืึทืœื˜ืŸ ื ืึทื˜ื•ืจ ืื•ืŸ ืœืึธื’ื™ืง ื•ื•ืึธืก ื–ืขื ืขืŸ ื‘ืื–ื™ืจื˜ ืื•ื™ืฃ ื“ื™ ื“ืึทื˜ืŸ. ื ื‘ื™ื™ืฉืคึผื™ืœ ืื™ื– ืึท ืจืขื ื“ืขืจื™ื ื’ ืกื™ืกื˜ืขื ื•ื•ืึธืก ื™ื˜ืขืจื™ื™ืฅ ื“ื•ืจืš ืึทืœืข ืขื ื˜ื™ื˜ื™ื– ืžื™ื˜ ืจืขื ื“ืขืจื™ื ื’ ืงืึทืžืคึผืึธื•ื ืึทื ืฅ ืื•ืŸ ื˜ื•ื˜ ื“ื™ ืจืขื ื“ืขืจื™ื ื’.

ื ืึธืš ืœืขืจื ืขืŸ ืขืก, ืขืก ืื™ื– ื’ืขื•ื•ืืจืŸ ืงืœืึธืจ ืึทื– ECS ืกืึทืœื•ื•ื– ื“ื™ ืคืืœื’ืขื ื“ืข ืคึผืจืึธื‘ืœืขืžืก:

  • ื ื™ืฆืŸ ืื•ื™ืกืœื™ื™ื’ ืึทื ืฉื˜ืึธื˜ ืคื•ืŸ ื™ืจื•ืฉื” ืฆื• ืึธืจื’ืึทื ื™ื–ื™ืจืŸ ืขื ื˜ื™ื˜ื™ื– ืกื™ืกื˜ืขืžื™ืงืœื™;
  • ื‘ืึทืงื•ืžืขืŸ ื‘ืึทืคืจื™ื™ึทืขืŸ ืคื•ืŸ ืงืึธื“ ื“ื–ืฉืึทืžื‘ืึทืœ ื“ื•ืจืš ืงืึธื ื˜ืจืึธืœ ืกื™ืกื˜ืขืžืขืŸ;
  • ื ื™ืฆืŸ ืžืขื˜ื”ืึธื“ืก ื•ื•ื™ is_build_mode ืฆื• ื”ืึทืœื˜ืŸ ื“ื™ ื•ื•ื™ืจืขืคืจืึทืžืข ืœืึธื’ื™ืง ืื™ืŸ ื“ืขืจ ื–ืขืœื‘ื™ืงืขืจ ืึธืจื˜ - ืื™ืŸ ื“ื™ ืจืขื ื“ืขืจื™ื ื’ ืกื™ืกื˜ืขื.

ื“ืึธืก ืื™ื– ื•ื•ืึธืก ื’ืขื˜ืจืืคืŸ ื ืึธืš ื™ืžืคึผืœืึทืžืขื ื™ื ื’ ECS.

ืจืขืกื•ืจืกืŸ -> ื“ืึธืก ืื™ื– ื•ื•ื• ืึทืœืข ื“ื™ ืึทืกืขืฅ ื–ืขื ืขืŸ (ื‘ื™ืœื“ืขืจ)
ืกืจืง
- ืงืึทืžืคึผืึธื•ื ืึทื ืฅ
โ€”ืคืื–ื™ืฆื™ืข.ืจืก
โ€” ืžืขื ื˜ืฉ.ืจืก
โ€” ื˜ืขื ื™ืก_ืงืึธื•ืจื˜.ืจืก
โ€” ืฉื˜ืึธืง.ืจืก
- wireframe.rs
โ€” mouse_tracked.rs
- ืจืขืกื•ืจืกืŸ
โ€”ืžื•ื™ื–.ืจืก
- ืกื™ืกื˜ืขืžืขืŸ
โ€” ืจืขื ื“ืขืจื™ื ื’.ืจืก
โ€” ืงืขืกื™ื™ื“ืขืจื“ื™ืง.ืจืก
โ€” ื ื™ืฆื•ืœ.ืจืก
โ€” world_factory.rs -> ื•ื•ืขืœื˜ ืคืึทื‘ืจื™ืง ืคืึทื ื’ืงืฉืึทื ื–
โ€” main.rs -> ื”ื•ื™ืคึผื˜ ืฉืœื™ื™ืฃ

ืžื™ืจ ื‘ืึทืฉื˜ื™ืžืขืŸ ืžืขื ื˜ืฉืŸ ืฆื• ื“ื™ ืงืึธืจืฅ

ECS ื”ืื˜ ื’ืขืžืื›ื˜ ืœืขื‘ืŸ ื’ืจื™ื ื’ืขืจ. ืื™ืฆื˜ ืื™ืš ื’ืขื”ืื˜ ืึท ืกื™ืกื˜ืขืžืึทื˜ื™ืฉ ื•ื•ืขื’ ืฆื• ืœื™ื™ื’ืŸ ื“ืึทื˜ืŸ ืฆื• ืขื ื˜ื™ื˜ื™ื– ืื•ืŸ ืœื™ื™ื’ืŸ ืœืึธื’ื™ืง ื‘ืื–ื™ืจื˜ ืื•ื™ืฃ ื“ื™ ื“ืึทื˜ืŸ. ืื• ืŸ ื“ื ืก ื”ื ื˜ ื–ื™ ืš ื’ืขืžืื› ื˜ ืฆ ื• ืืจื’ืื ื™ื–ื™ืจ ืŸ ื“ ื™ ืคืืจื˜ืฒืœื•ื  ื’ ืคื• ืŸ ืžืขื ื˜ืฉ ืŸ ืฆืฐื™ืฉ ืŸ ื“ ื™ ื’ืขืจื™ื›ื˜ืŸ .

ื•ื•ืืก ื”ืื‘ ืื™ืš ื’ืขื˜ื•ืŸ:

  • ืฆื•ื’ืขื’ืขื‘ืŸ ื“ืึทื˜ืŸ ื•ื•ืขื’ืŸ ืึทืกื™ื™ื ื“ ืงืึธืจืฅ ืฆื• ืžืขื ื˜ืฉ;
  • ืฆื•ื’ืขื’ืขื‘ืŸ ื“ืึทื˜ืŸ ื•ื•ืขื’ืŸ ืคื•ื ืื ื“ืขืจื’ืขื˜ื™ื™ืœื˜ ืžืขื ื˜ืฉืŸ ืฆื• TennisCourt;
  • ืฆื•ื’ืขื’ืขื‘ืŸ CourtChoosingSystem, ื•ื•ืึธืก ืึทืœืึทื•ื– ืื™ืจ ืฆื• ืคื•ื ืึทื ื“ืขืจืงืœื™ื™ึทื‘ืŸ ืžืขื ื˜ืฉืŸ ืื•ืŸ ืงืึธืจืฅ, ื“ืขื˜ืขืงื˜ ืคืึทืจืึทื ืขืŸ ืงืึธืจืฅ ืื•ืŸ ืคืึทืจืฉืคึผืจื™ื™ื˜ืŸ ืคึผืœื™ื™ึทืขืจืก ืฆื• ื–ื™ื™;
  • ืฆื•ื’ืขื’ืขื‘ืŸ ืึท ืคึผืขืจืกืึธื ืžืึธื•ื•ืขืžืขื ื˜ ืกื™ืกื˜ืขื, ื•ื•ืึธืก ื–ื•ื›ื˜ ืคึฟืึทืจ ืžืขื ื˜ืฉืŸ ืึทืกื™ื™ื ื“ ืฆื• ื“ื™ ืงืึธืจืฅ, ืื•ืŸ ืื•ื™ื‘ ื–ื™ื™ ื–ืขื ืขืŸ ื ื™ืฉื˜ ื“ืึธืจื˜, ืฉื™ืงื˜ ืžืขื ื˜ืฉืŸ ื•ื•ื• ื–ื™ื™ ื“ืึทืจืคึฟืŸ ืฆื• ื–ื™ื™ืŸ.

ืฉืคึผื™ืœ ื–ืฉืึทื•ื•ืขืจ ืื™ืŸ 24 ืฉืขื”: ื“ืขืจืคืึทืจื•ื ื’ ืคื•ืŸ ืคึผืขืจื–ืขื ืœืขืš ืึทื ื˜ื•ื•ื™ืงืœื•ื ื’

ืกื•ืžืžื™ื ื’ ืึทืจื•ื™ืฃ

ืื™ืš ื˜ืึทืงืข ื™ื ื“ื–ืฉื•ื™ื“ ืืจื‘ืขื˜ืŸ ืื•ื™ืฃ ื“ืขื ืคึผืฉื•ื˜ ืฉืคึผื™ืœ. ื“ืขืจืฆื•, ืื™ืš ื‘ื™ืŸ ืฆื•ืคืจื™ื“ืŸ ืึทื– ืื™ืš ื’ืขื•ื•ื™ื™ื ื˜ ืจื•ืกื˜ ืฆื• ืฉืจื™ื™ึทื‘ืŸ ืขืก, ื•ื•ื™ื™ึทืœ:

  • ื–ืฉืึทื•ื•ืขืจ ื’ื™ื˜ ืื™ืจ ื•ื•ืึธืก ืื™ืจ ื“ืึทืจืคึฟืŸ;
  • ืขืก ื”ืื˜ ื•ื™ืกื’ืขืฆื™ื™ื›ื ื˜ ื“ืึทืงื™ื•ืžืขื ื˜ื™ื™ืฉืึทืŸ, ื–ืฉืึทื•ื•ืขืจ ืื™ื– ื’ืึทื ืฅ ืขืœืขื’ืึทื ื˜;
  • ืงืึธื ืกื™ืกื˜ืขื ืกื™ ืื™ื– ืงื™ืœ;
  • ืื™ืจ ื˜ืึธืŸ ื ื™ื˜ ื”ืึธื‘ืŸ ืฆื• ืจื™ื–ืึธืจื˜ ืฆื• ืงืœืึธื•ื ื™ื ื’, ืงืึทืคึผื™ื™ื ื’ ืึธื“ืขืจ ืื ื“ืขืจืข ืขื ืœืขืš ืึทืงืฉืึทื ื–, ื•ื•ืึธืก ืื™ืš ืึธืคื˜ ื’ืขื˜ืืŸ ืื™ืŸ C ++;
  • ืึธืคึผืฆื™ืขืก ื–ืขื ืขืŸ ื–ื™ื™ืขืจ ื’ืจื™ื ื’ ืฆื• ื ื•ืฆืŸ ืื•ืŸ ืฉืขืคึผืŸ ืขืจืจืึธืจืก ื–ื™ื™ืขืจ ื’ื•ื˜;
  • ืื•ื™ื‘ ื“ื™ ืคึผืจื•ื™ืขืงื˜ ืื™ื– ื’ืขื•ื•ืขืŸ ื‘ื™ื›ื•ืœืช ืฆื• ื–ื™ื™ืŸ ืงืึทืžืคึผื™ื™ืœื“, ืขืก ืึทืจื‘ืขื˜ 99% ืคื•ืŸ ื“ื™ ืฆื™ื™ื˜ ืื•ืŸ ืคึผื•ื ืงื˜ ื•ื•ื™ ืขืก ื–ืึธืœ. ืื™ืš ื˜ืจืึทื›ื˜ืŸ ื“ื™ ืงืึทืžืคึผื™ื™ืœืขืจ ื˜ืขื•ืช ืึทืจื˜ื™ืงืœืขืŸ ื–ืขื ืขืŸ ื“ื™ ื‘ืขืกื˜ืขืจ ืื™ืš ื•ื•ืข ื’ืขื–ืขืŸ.

ืฉืคึผื™ืœ ืึทื ื˜ื•ื•ื™ืงืœื•ื ื’ ืื™ืŸ Rust ืื™ื– ื ืึธืจ ืึธื ื”ื™ื™ื‘. ืื‘ืขืจ ืขืก ืื™ื– ืฉื•ื™ืŸ ืึท ืกื˜ืึทื‘ื™ืœ ืื•ืŸ ื’ืึทื ืฅ ื’ืจื•ื™ืก ืงื”ืœ ืืจื‘ืขื˜ืŸ ืฆื• ืขืคืขื ืขืŸ ืจืึทืกื˜ ืคึฟืึทืจ ืึทืœืขืžืขืŸ. ื“ืขืจื™ื‘ืขืจ ืงื•ืง ืื™ืš ืื•ื™ืฃ ื“ืขืจ ืฆื•ืงื•ื ืคึฟื˜ ืคื•ืŸ ื“ืขืจ ืฉืคึผืจืึทืš ืžื™ื˜ ืึธืคึผื˜ื™ืžื™ื–ื, ืงื•ืง ืคืึธืจื•ื™ืก ืฆื• ื“ื™ ืจืขื–ื•ืœื˜ืึทื˜ืŸ ืคื•ืŸ ืื•ื ื“ื–ืขืจ ืคึผืจืึธืกื˜ ืึทืจื‘ืขื˜.

Skillbox ืจืขืงืึทืžืขื ื“ื–:

ืžืงื•ืจ: www.habr.com

ืœื™ื™ื’ืŸ ืึท ื‘ืึทืžืขืจืงื•ื ื’