Ludens Rust in XXIV horas: personali experientia

Ludens Rust in XXIV horas: personali experientia

In hoc articulo loquar de usu personali evolvendi lusum parvum in Rust. Circiter XXIV horas ad versionem laborantem (I maxime laboravi in ​​vesperis vel in weekends). Ludus tibique perfecto est ex, at puto adipisci praemia. Quod didici ac nonnullas observationes quas feci communicabo dum ludum de integro construam.

Skillbox commendat: Duo annorum cursum "Pro elit sum".

admonemus; omnibus legentibus "Habr" - discount 10 rublorum cum scribendo in quavis Skillbox utens "Habr" codice promotivo.

Quid Rust?

Linguam hanc elegi, quia multa bona de illa audivi et magis magisque popularem in ludo progressionem fieri video. Antequam ludum scriberem, parum expertus sum usus simplex applicationes in Rust developing. Hoc tantum erat, ut libertatem mihi daret dum ludum scribebat.

Cur ludus et quod genus ludi?

Ludis faciendis est iocus! Plures rationes opto, sed ad "domum" incepta eligo argumenta quae non nimis arcte cum labore meo iusto coniuncta sunt. Quis ludus est? Aliquid facere volui sicut tennis simulator qui coniungit Civitates Skylines, Zoo Tycoon, Architectum carcerem et ipsum tennis. In genere evenit ut ludus circa tennis academiae ubi homines ludere solent.

technicam

Rubigine uti volui, sed prorsus nesciebam quantum solius inciperet. pixel shaders scribere nolui et drag-n-stilla utor, sic solutiones flexibiles quaerebam.

utilia inveni, quae tecum communico;

Plures machinis Rust ludum exploravi, tandem Piston et ggez eligens. Eos incidi dum in opere priore operando. In fine, ggez elegi, quia aptior videbatur ad exsequendam ludum 2D parvum. Piston modularis structura nimis implicata est pro elit novitio (vel aliquis qui Rust primum laborat).

Ludus compages

Aliquid tempus exegi de architectura cogitationis. Primus gradus est "terra", homines et curias tennis facere. Homines circa iudicia versantur et exspectant. Solers nisl tempus habere meliorem. Plus debet esse editor qui permittit ut novos homines et curias addat, sed hoc iam liberum non est.

Per omnia cogitans, opus habui.

Ludus creationis

Initium: Circuli et Abstractiones

Exemplum tuli e ggez et circulo in velo accepi. Mirabile! Abstracta autem quaedam. Putavi pulchrum esse ab idea obiecti ludi abstrahere. Unumquodque objectum reddendum et renovandum est ut hic dictum est.

// 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(())
    }
}

Hoc fragmentum codicis mihi dedit pulchrum indicem rerum quae potui renovare et reddere in ansa aeque lepida.

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 necesse est quod omnes lineas in codice contineat. Aliquantum temporis exegi ut lima dividerem et structuram directorii optimizing. Hoc est quod postea vidi simile;
opes -> hoc est ubi omnia bona sunt (images)
src
- entia
- game_object.rs
- circle.rs
- main.rs -> principalis loop

Populus, tabulata et imagines

Proximus gradus est creare personam ludum obiectum et imagines onus. Omnia aedificari debent ex tegulis 32*32.

Ludens Rust in XXIV horas: personali experientia

tennis atriis

Postquam pervestigavi quid tennis curiae simile videretur, constitui eas ex 4*2 tegulis facere. Initio potuit imaginem magnitudinis eius facere, vel 8 separatas tegulas contexere. Sed tunc intellexi solum duas tegulas unicas esse necessarias, et hic ob rem.

In summa duas tales tegulas habemus: I et II.

Quaelibet atrij sectio constat tegularum 1 vel tegularum 2. Poni possunt ut normales vel flipped 180 gradus.

Ludens Rust in XXIV horas: personali experientia

Basic construction (ecclesia) modus

Postquam ad redditionem locorum, hominum et tabularum potui, intellexi modum conventus fundamentalis etiam necessarius esse. Hoc sic implevi: cum globulum expressum est, obiectum eligitur, et strepita in loco desiderato collocat. Itaque, button 1 sino te atrium eligere, et ipsum 2 sino te lusorem eligere.

Sed adhuc meminisse oportet quid 1 et 2 significent, ideo filum adieci, ut utram rem delectus declararet. Hoc est quod videtur.

Ludens Rust in XXIV horas: personali experientia

Architectura et quaestiones refactoring

Nunc mihi plura ludi obiecta sunt: ​​homines, curias et tabulata. Sed ut ad wireframes operetur, dicendum est unumquodque entitatis objectae, sive res ipsae sint in demonstratione modus, sive corpus simpliciter ducatur. Hoc non est valde commodum.

Mihi visum est architecturae opus esse recogitandum quodam modo, qui limitationes quasdam patefecit;

  • Habens aliquid quod ipsum reddit et updates, quaestio est quia illa entitas "cognoscere" non poterit quid reddere fingitur - imaginem et filum;
  • defectus instrumenti ad permutandas proprietates et mores inter singulas entias (exempli gratia, modus proprietatis vel morum reddendi). Possibile est uti hereditate, quamvis non sit modus ad efficiendum eam in Rust. Quod quidem opus erat at arcu;
  • instrumentum ad commercium entium opus erat ut homines iudiciis assignarent;
  • entia ipsa erant mixtura notitiae et logicae, quae cito e potestate obtinuit.

Plura egi investigationes et architecturae repertae ECS - Entity Component Systemqui vulgo in ludis utuntur. Hic sunt beneficia ECS;

  • notitia a logica separata est;
  • compositionem pro hereditate;
  • notitia architecturae-centricae.

ECS notatur tribus notionibus fundamentalibus;

  • entia -- the type of object that the identificans refers to (poterat esse lusor, globus aut aliquid aliud);
  • tium - entia conficiuntur ex iis. Exemplum - red- component, locis et aliis. Haec sunt data apothecae;
  • systemata - tum obiecti et partes utuntur, plus mores et logicam continent quae hac notitia nituntur. Exemplum est ratio reddendi, quae per omnia entia redditio componitur et facit per reddendom.

Postquam eam investigavit, apparuit ECS quaestiones sequentes solvere;

  • pro hereditate utens layout rerum ordinandi systemice;
  • codicem destruendi conturbant per systemata imperium;
  • modi utendi sicut is_aedificandi modus est ut logicam technicam rationem eodem loco contineat - in systemate reddendo.

Hoc est quod factum est post EXsequendam ECS.

opes -> hoc est ubi omnia bona sunt (images)
src
- components
-position.rs
- person.rs
- tennis_court.rs
- floor.rs
- wireframe.rs
- mouse_tracked.rs
- opes
-muse.rs
- systemata
- rendering.rs
- constants.rs
- utilis.rs
- world_factory.rs -> mundi officina munera
- main.rs -> principalis loop

Dedimus homines ad fora

ECS vitam faciliorem fecit. Nunc systematicam viam habui notitias entibus addere et logicam ex illa notitia addere. Idque vicissim effecit ut distributio hominum in iudiciis componeretur.

Quid enim feci:

  • addita notitia de iudiciis personis assignatis;
  • addita notitia de TennisCourt distributis;
  • adiecit CourtChoosingSystem, quod permittit ut homines et iudicia analysi, curias promptos deprehendas et histriones illis distribuas;
  • adiecit PersonMovementSystem, quod spectat homines ad curias assignatos, et si non sunt ibi, tunc mittit homines ubi necesse est esse.

Ludens Rust in XXIV horas: personali experientia

quoquo

Ego vere fruendum opus in hoc ludo simplici. Quin etiam gaudeo, quod Rubigine usus sum, ut scriberem, quod;

  • Rubigo tibi dat quod opus est;
  • habet documenta praeclara, Rubigo satis elegans;
  • constantia frigus;
  • ad exquisita, describenda vel alia similia, quae saepe in C egi, uti non debes;
  • Optiones sunt facillime utendi et tractandi errores optime;
  • Si consilium compilari potuit, 99% temporis agit, et prorsus ut debet. Compilator errorem epistulae quas puto optimas esse quas vidi.

Ludus progressus in Rust incipit. Sed iam est stabilis et magna communitas operans ut Rust omnibus patefaciat. Ideo futura aspicio linguae cum spe, eventus operis communis exspectantes.

Skillbox commendat:

Source: www.habr.com