Ku ciyaarista Rust gudaha 24 saacadood: waayo-aragnimada horumarinta shakhsi ahaaneed
Maqaalkan waxaan ka hadli doonaa waayo-aragnimadayda shakhsi ahaaneed ee horumarinta ciyaarta yar ee Rust. Waxay qaadatay ilaa 24 saacadood in la abuuro nooca shaqada (badanaa waxaan shaqayn jiray fiidkii ama maalmaha fasaxa ah). Ciyaartu way ka fog tahay in la dhammeeyo, laakiin waxaan filayaa in khibraddu ay noqon doonto mid faa'iido leh. Waxaan la wadaagi doonaa wixii aan bartay iyo indha-indhayn aan sameeyay markii aan ciyaarta ka soo dhisayay meel eber ah.
Waxaan rabay inaan isticmaalo Rust, laakiin maan garanayn inta ay le'eg tahay shaqada aasaasiga ah ee ay qaadanayso bilawga. Ma aanan rabin in aan qoro shader pixels oo aan isticmaalo jiid-n-Drop, markaa waxaan raadinayay xalalka ugu dabacsan.
Waxaan helay ilo waxtar leh oo aan kula wadaagayo:
Waxaan sahamiyay dhowr matoorro ciyaarta Rust ah, ugu dambeyntii waxaan doortay Piston iyo ggez. Waxaan la kulmay iyaga oo ka shaqeynaya mashruuc hore. Dhammaadkii, waxaan doortay ggez sababtoo ah waxay u muuqatay mid ku habboon hirgelinta ciyaar yar oo 2D ah. Qaab dhismeedka qaabdhismeedka Piston aad ayuu u adag yahay horumariyaha cusub (ama qof la shaqeynaya Rust markii ugu horeysay).
Qaab dhismeedka ciyaarta
Waxa aan wakhti ku qaatay in aan ka fikiro qaab dhismeedka mashruuca. Talaabada ugu horeysa waa in la sameeyo "dhul", dad iyo garoon tennis. Dadku waa inay ku wareegaan maxkamadaha oo ay sugaan. Ciyaartoyda waa in ay lahaadaan xirfado horumaraya waqti ka dib. Intaa waxaa dheer, waa inuu jiraa tifaftire kuu oggolaanaya inaad ku darto dad cusub iyo maxkamado, laakiin tani hadda bilaash maaha.
Markii aan wax walba ka fikiray, waxaan shaqo galay.
Ciyaar abuur
Bilawga: Goobo-wareegyo iyo Qoraallo
Waxaan tusaale ka soo qaatay ggez oo waxaan ka helay goobaabin shaashadda. Cajiib! Hadda qaar ka mid ah qoraallada. Waxaan u maleeyay inay fiicnaan lahayd in laga fogaado fikradda shay ciyaarta. Shay kasta waa in la sameeyaa oo la cusboonaysiiyaa sida halkan lagu sheegay:
// 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(())
}
}
Qaybtan koodka ah ayaa i siisay liis wanaagsan oo walxood oo aan dib u cusbooneysiin karo oo aan ku bixin karo si siman oo fiican.
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 waa lagama maarmaan sababtoo ah waxay ka kooban tahay dhammaan khadadka koodka. Waxaan ku qaatay waqti yar kala saarista faylasha iyo hagaajinta qaab dhismeedka hagaha. Tani waa sida ay u ekaatay intaas ka dib: kheyraadka -> tani waa meesha dhammaan hantida ay taal (sawiro)
src
- hay'adaha
- game_object.rs
- goobaab.rs
- main.rs -> loop ugu weyn
Dadka, sagxadaha iyo sawirada
Talaabada xigta waa in la abuuro shayga ciyaarta qofka oo la raro sawiro. Wax walba waa in lagu dhisaa iyadoo lagu salaynayo 32*32 tiles.
Maxkamadaha Tennis
Ka dib markii aan bartay sida ay u egyihiin maxkamadaha teniska, waxaan go'aansaday inaan ka sameeyo 4 * 2 tiles. Markii hore, waxaa suurtagal ah in la sameeyo sawirka cabbirkan, ama in la isku daro 8 tiles oo kala duwan. Laakin markaas waxaan gartay in loo baahan yahay labo talefoon oo gaar ah, waana tan sababta.
Guud ahaan waxaan haynaa laba tiles sida: 1 iyo 2.
Qayb kasta oo ka mid ah maxkamada waxay ka kooban tahay tile 1 ama foorno 2. Waxay u goglan karaan si caadi ah ama loo rogi karaa 180 darajo.
Habka dhismaha aasaasiga ah (ururka).
Ka dib markii aan ku guuleystey in aan gaaro samaynta goobaha, dadka iyo khariidadaha, waxaan xaqiiqsaday in habka aasaasiga ah ee shirarka loo baahan yahay. Waxaan u hirgeliyey sidan: marka badhanka la riixo, shayga ayaa la doortaa, gujiskuna wuxuu dhigayaa meesha la rabo. Markaa, badhanka 1 wuxuu kuu ogolaanayaa inaad doorato maxkamad, badhanka 2 wuxuu kuu ogolaanayaa inaad doorato ciyaaryahan.
Laakin wali waxaan u baahanahay inaan xasuusanno macnaha 1 iyo 2, sidaa darteed waxaan ku daray fiilo-frame si aan u caddeeyo shayga la doortay. Tani waa sida ay u egtahay.
Qaab dhismeedka iyo su'aalaha dib u habeynta
Hadda waxaan haystaa dhowr walxood oo ugaadha ah: dad, maxkamado iyo dabaqyo. Laakin si ay fiilooyinku u shaqeeyaan, shay kastaa waxa uu u baahan yahay in loo sheego in shayada laftoodu ay ku jiraan qaabka bandhiga, ama in firam si fudud loo sawiray. Tani maaha mid aad u habboon.
Waxay iila muuqatay in qaab-dhismeedku uu u baahan yahay in dib loogu fakaro si loo muujiyo xaddidaadyo:
Lahaanshaha koox wax soo saarta oo dib u cusbooneysiisa lafteeda waa dhibaato sababtoo ah kooxdaasi ma awoodi doonto inay "ogto" waxa ay tahay inay bixiso - sawir iyo xargo;
la'aanta qalab lagu isweydaarsado hantida iyo habdhaqanka ka dhexeeya hay'adaha gaarka ah (tusaale ahaan, is_build_mode hantida ama samaynta habdhaqanka). Waa suurtagal in la isticmaalo dhaxalka, inkastoo aysan jirin hab ku habboon oo lagu hirgeliyo Rust. Waxa aan runtii u baahnaa waxay ahayd qaabka;
qalab loogu talagalay isdhexgalka ka dhexeeya hay'adaha ayaa loo baahan yahay si dadka loogu meeleeyo maxkamadaha;
ECS ayaa nolosha ka dhigtay mid fudud. Hadda waxaan haystay hab habaysan oo aan xogta ugu daro hay'adaha oo aan ugu daro caqli-gal ku salaysan xogtaas. Taasina, waxay suurtagelisay in la abaabulo qaybinta dadka ee maxkamadaha.
Maxaan sameeyay:
xogta lagu daray ee ku saabsan maxkamadaha loo xilsaaray Qofka;
xogta lagu daray dadka loo qaybiyey TennisCourt;
ku daray CourtChoosingSystem, kaas oo kuu ogolaanaya inaad falanqeyso dadka iyo maxkamadaha, ogaatid maxkamadaha la heli karo oo aad u qaybiso ciyaartoyda;
waxaa lagu daray PersonMovementSystem, kaas oo raadiya dadka loo xilsaaray maxkamadaha, haddii aysan halkaas joogin, u dirta dadka halka ay u baahan yihiin.
Soo koobid
Runtii aad ayaan ugu riyaaqay ka shaqaynta ciyaartan fudud. Intaa waxaa dheer, waan ku faraxsanahay inaan u adeegsaday Rust si aan u qoro, sababtoo ah:
Uma baahnid inaad miciin bido cloning, koobiyeynta ama falalka kale ee la midka ah, kuwaas oo aan inta badan ku sameeyay C ++;
Ikhtiyaarada aad bay u fududahay in la isticmaalo oo si fiican loo xalliyo khaladaadka;
Haddii mashruuca la awoodi karo in la soo ururiyo, ka dibna 99% wakhtiga uu shaqeeyo, iyo sida saxda ah. Waxaan u maleynayaa in fariimaha qaladka isku-darka ay yihiin kuwa ugu wanaagsan ee aan arkay.
Horumarinta ciyaarta ee Rust ayaa hadda bilaabanaysa. Laakin waxaa horeyba u jirtay bulsho degan oo cadaalad ah oo ka shaqaynaysa inay qof walba u furto miridhku. Sidaa darteed, waxaan mustaqbalka afka ku eegayaa rajo wanaagsan, anigoo rajaynaya natiijada shaqadayada guud.