{"id":29846,"date":"2019-10-31T21:32:19","date_gmt":"2019-10-31T18:32:19","guid":{"rendered":"https:\/\/prohoster.info\/blog\/igra-na-rust-za-24-chasa-lichnyj-opyt-razrabotki\/"},"modified":"2019-10-31T21:32:19","modified_gmt":"2019-10-31T18:32:19","slug":"igra-na-rust-za-24-chasa-lichnyj-opyt-razrabotki","status":"publish","type":"post","link":"https:\/\/prohoster.info\/sq\/blog\/igra-na-rust-za-24-chasa-lichnyj-opyt-razrabotki","title":{"rendered":"Loj\u00eb n\u00eb Rust brenda 24 or\u00ebve: p\u00ebrvoja ime personale e zhvillimit","gt_translate_keys":[{"key":"rendered","format":"text"}]},"content":{"rendered":"<p><img decoding=\"async\" alt=\"Loj\u00eb n\u00eb Rust brenda 24 or\u00ebve: p\u00ebrvoja ime personale e zhvillimit\" src=\"\/wp-content\/uploads\/2019\/03\/ea25406c43ac90ce2e33e290168d1083.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nN\u00eb k\u00ebt\u00eb artikull, do t\u00eb flas p\u00ebr p\u00ebrvoj\u00ebn time personale n\u00eb zhvillimin e nj\u00eb loje t\u00eb vog\u00ebl me Rust. Nd\u00ebrsa krijova versionin funksional, m\u00eb mori rreth 24 or\u00eb (kryesisht punova n\u00eb mbr\u00ebmje ose gjat\u00eb fundjav\u00ebs). Loja \u00ebsht\u00eb ende larg p\u00ebrfundimit, por mendoj se p\u00ebrvoja do t\u00eb jet\u00eb e dobishme. Do t\u00eb tregoj se \u00e7far\u00eb kam m\u00ebsuar dhe disa v\u00ebzhgime t\u00eb b\u00ebra gjat\u00eb nd\u00ebrtimit t\u00eb loj\u00ebs nga zero.<br \/>\n<noindex><a rel=\"nofollow\" name=\"habracut\"><\/a><\/noindex><\/p>\n<blockquote><p><b>Skillbox rekomandon:<\/b> Kurs praktik dyvje\u00e7ar <noindex><a rel=\"nofollow\" href=\"https:\/\/iamwebdev.skillbox.ru\/?utm_source=skillbox.media&amp;utm_medium=habr.com&amp;utm_campaign=WEBDEVPRO&amp;utm_content=articles&amp;utm_term=rust24\">Un\u00eb jam zhvillues web PRO<\/a><\/noindex>.<\/p>\n<p><b>Kujtojm\u00eb:<\/b> <i>p\u00ebr t\u00eb gjith\u00eb lexuesit e \"Habra\" \u2014 zbritje prej 10,000 rublej p\u00ebr regjistrimin n\u00eb \u00e7do kurs Skillbox me kodin promocional \"Habr\".<\/i><\/p><\/blockquote>\n<p><\/p>\n<h3>Pse Rust?<\/h3>\n<p>\nZgjodha k\u00ebt\u00eb gjuh\u00eb sepse kam d\u00ebgjuar shum\u00eb t\u00eb mira p\u00ebr t\u00eb dhe shoh se po b\u00ebhet gjithnj\u00eb e m\u00eb popullore n\u00eb fush\u00ebn e zhvillimit t\u00eb loj\u00ebrave. Para se t\u00eb shkruaja loj\u00ebn, kisha nj\u00eb p\u00ebrvoj\u00eb t\u00eb vog\u00ebl n\u00eb zhvillimin e aplikacioneve t\u00eb thjeshta me Rust. Kjo ishte pik\u00ebrisht e mjaftueshme p\u00ebr t\u00eb ndjer\u00eb nj\u00eb liri t\u00eb caktuar gjat\u00eb shkruarjes s\u00eb loj\u00ebs.<\/p>\n<h3>Pse loja dhe \u00e7far\u00eb loje?<\/h3>\n<p>\nKrijimi i loj\u00ebrave \u00ebsht\u00eb arg\u00ebtues! Do doja t\u00eb kishte m\u00eb shum\u00eb arsye, por p\u00ebr projektet \u00absht\u00ebpiake\u00bb, zgjedh tema q\u00eb nuk jan\u00eb shum\u00eb t\u00eb lidhura me pun\u00ebn time t\u00eb zakonshme. \u00c7far\u00eb loje? D\u00ebshiroja t\u00eb b\u00ebja di\u00e7ka si nj\u00eb simulues tenisi, ku kombinohen Cities Skylines, Zoo Tycoon, Prison Architect dhe vet\u00eb tenisi. N\u00eb p\u00ebrgjith\u00ebsi, ndihesha se kisha krijuar nj\u00eb loj\u00eb p\u00ebr nj\u00eb akademi tenisi, ku njer\u00ebzit vijn\u00eb p\u00ebr t\u00eb luajtur.<\/p>\n<h3>P\u00ebrgatitja teknike<\/h3>\n<p>\nD\u00ebshiroja t\u00eb p\u00ebrdor Rust, por nuk e dija sakt\u00ebsisht se sa \u00abnga zero\u00bb do t\u00eb duhej t\u00eb filloja pun\u00ebn. Nuk doja t\u00eb shkruaja shader piksel\u00ebsh dhe t\u00eb p\u00ebrdorja drag-and-drop, prandaj k\u00ebrkoja zgjidhje sa m\u00eb fleksibile.<\/p>\n<p>Gjeta disa burime t\u00eb dobishme q\u00eb po i ndaj me ju:<\/p>\n<ul>\n<li><noindex><a rel=\"nofollow\" href=\"http:\/\/arewegameyet.com\/\">Are we game yet<\/a><\/noindex> \u2014 nj\u00eb list\u00eb e elementeve t\u00eb nevojshme p\u00ebr zhvillimin e loj\u00ebrave me Rust;<\/li>\n<li><noindex><a rel=\"nofollow\" href=\"https:\/\/www.reddit.com\/r\/rust_gamedev\">Subreddit-i p\u00ebr zhvillimin e loj\u00ebrave me Rust;<\/a><\/noindex><\/li>\n<li><noindex><a rel=\"nofollow\" href=\"https:\/\/kenney.nl\">Art piksel t\u00eb lir\u00eb.<\/a><\/noindex><\/li>\n<\/ul>\n<p>\nStudova disa motor\u00eb loj\u00ebrash Rust, duke e zgjedhur p\u00ebrfundimisht Piston dhe ggez. I takova k\u00ebto nd\u00ebrsa punoja n\u00eb projektin e m\u00ebparsh\u00ebm. N\u00eb fund, zgjodha ggez, pasi m\u00eb dukej m\u00eb e p\u00ebrshtatshme p\u00ebr realizimin e nj\u00eb loje t\u00eb vog\u00ebl 2D. Strukturimi modular i Piston \u00ebsht\u00eb shum\u00eb i komplikuar p\u00ebr nj\u00eb zhvillues fillestar (apo p\u00ebr dik\u00eb q\u00eb punon p\u00ebr her\u00eb t\u00eb par\u00eb me Rust).<\/p>\n<h3>Struktura e loj\u00ebs<\/h3>\n<p>\nKaluova pak koh\u00eb duke menduar p\u00ebr arkitektur\u00ebn e projektit. Hapi i par\u00eb \u2014 t\u00eb krijoja \u00abtokat\u00bb, njer\u00ebzit dhe kortet e tenisit. Njer\u00ebzit duhet t\u00eb l\u00ebvizin n\u00ebp\u00ebr kurte dhe t\u00eb presin. Lojtar\u00ebt duhet t\u00eb ken\u00eb aft\u00ebsi q\u00eb p\u00ebrmir\u00ebsohen me kalimin e koh\u00ebs. Gjithashtu, duhet t\u00eb ket\u00eb nj\u00eb redaktor q\u00eb lejon shtimin e njer\u00ebzve dhe korteve, por kjo tashm\u00eb nuk \u00ebsht\u00eb falas.<\/p>\n<p>Pasi mendova gjith\u00e7ka, fillova pun\u00ebn. <\/p>\n<h3>Krijimi i nj\u00eb loje<\/h3>\n<p>\n<b>Fillimi: rrethana dhe abstraksione<\/b><\/p>\n<p>Mora nj\u00eb shembull nga ggez dhe arrita nj\u00eb rreth n\u00eb ekran. Ma \u00e7udit! Tani disa abstraksione. M\u00eb dukej e dobishme t\u00eb shk\u00ebputesha nga ideja e objektit t\u00eb loj\u00ebs. \u00c7do objekt duhet t\u00eb jet\u00eb i renderuar dhe i p\u00ebrdit\u00ebsuar, si\u00e7 \u00ebsht\u00eb parashikuar k\u00ebtu:<\/p>\n<pre><code class=\"rust\">\/\/ the game object trait\ntrait GameObject {\n    fn update(&amp;mut self, _ctx: &amp;mut Context) -&gt; GameResult&lt;()&gt;;\n    fn draw(&amp;mut self, ctx: &amp;mut Context) -&gt; GameResult&lt;()&gt;;\n}\n \n\/\/ a specific game object - Circle\nstruct Circle {\n    position: Point2,\n}\n \n impl Circle {\n    fn new(position: Point2) -&gt; Circle {\n        Circle { position }\n    }\n}\nimpl GameObject for Circle {\n    fn update(&amp;mut self, _ctx: &amp;mut Context) -&gt; GameResult&lt;()&gt; {\n        Ok(())\n    }\n    fn draw(&amp;mut self, ctx: &amp;mut Context) -&gt; GameResult&lt;()&gt; {\n        let circle =\n            graphics::Mesh::new_circle(ctx, graphics::DrawMode::Fill, self.position, 100.0, 2.0)?;\n \n         graphics::draw(ctx, &amp;circle, na::Point2::new(0.0, 0.0), 0.0)?;\n        Ok(())\n    }\n}<\/code><\/pre>\n<p>\nKy pjes\u00eb kodi m\u00eb lejon t\u00eb kem nj\u00eb list\u00eb t\u00eb shk\u00eblqyer objektesh, t\u00eb cilat mund t'i p\u00ebrdit\u00ebsoj dhe t'i renderoj n\u00eb nj\u00eb cik\u00ebl po aq t\u00eb shk\u00eblqyer.<\/p>\n<pre><code class=\"rust\">mpl event::EventHandler p\u00ebr MainState {\n    fn update(&amp;mut self, context: &amp;mut Context) -&gt; GameResult&lt;()&gt; {\n        \/\/ P\u00ebrdit\u00ebso t\u00eb gjitha objektet\n        p\u00ebr objekt n\u00eb self.objects.iter_mut() {\n            objekt.update(context)?;\n        }\n \n        Ok(())\n    }\n \n    fn draw(&amp;mut self, context: &amp;mut Context) -&gt; GameResult&lt;()&gt; {\n        graphics::clear(context);\n \n        \/\/ Vizato t\u00eb gjitha objektet\n        p\u00ebr objekt n\u00eb self.objects.iter_mut() {\n            objekt.draw(context)?;\n        }\n \n        graphics::present(context);\n \n        Ok(())\n    }\n}<\/code><\/pre>\n<p>\nmain.rs \u00ebsht\u00eb e nevojshme sepse aty ndodhen t\u00eb gjitha rreshtat e kodit. Kalova pak koh\u00eb p\u00ebr t\u00eb ndar\u00eb skedar\u00ebt dhe optimizuar struktur\u00ebn e dosjeve. K\u00ebshtu dukej pas k\u00ebsaj:<br \/>\n<i>resources -&gt; k\u00ebtu ndodhen t\u00eb gjitha asetet (imazhet)<br \/>\nsrc<br \/>\n \u2014 entitetet<br \/>\n \u2014 game_object.rs<br \/>\n \u2014 circle.rs<br \/>\n \u2014 main.rs -&gt; cikli kryesor<\/i><\/p>\n<p><b>Njer\u00ebzit, katet dhe imazhet<\/b><\/p>\n<p>Hapi tjet\u00ebr \u2014 krijimi i objektit t\u00eb loj\u00ebs Person dhe ngarkimi i imazheve. T\u00eb gjitha duhet t\u00eb ndodhin n\u00eb baz\u00eb t\u00eb pllakatave me madh\u00ebsi 32*32.<\/p>\n<p><img decoding=\"async\" alt=\"Loj\u00eb n\u00eb Rust brenda 24 or\u00ebve: p\u00ebrvoja ime personale e zhvillimit\" src=\"\/wp-content\/uploads\/2019\/03\/265ed79e6784ef0180cfdc5aa8d96a4c.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n <br \/>\n<b>Kortet e tenisit<\/b><\/p>\n<p>Duke studiuar se si duken kortet e tenisit, vendosa t'i b\u00ebj ato nga pllakat 4*2. Fillimisht, mund t\u00eb b\u00ebja nj\u00eb imazh t\u00eb till\u00eb ose t\u00eb p\u00ebrb\u00ebja bashk\u00eb 8 pllaka t\u00eb ve\u00e7anta. Por pastaj e kuptova se nevojiten vet\u00ebm dy pllakat unike, dhe ja pse.<\/p>\n<p>Kemi dy pllaka t\u00eb tilla: 1 dhe 2.<\/p>\n<p>\u00c7do seksion i kortit p\u00ebrb\u00ebhet nga pllaka 1 ose pllaka 2. Ato mund t\u00eb vendosen si zakonisht ose t\u00eb kthehen 180 grad\u00eb.<\/p>\n<p><img decoding=\"async\" alt=\"Loj\u00eb n\u00eb Rust brenda 24 or\u00ebve: p\u00ebrvoja ime personale e zhvillimit\" src=\"\/wp-content\/uploads\/2019\/03\/90d07caea0dee8673ada5d44963ab347.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n <br \/>\n<b>Rejimi kryesor i nd\u00ebrtimit (montimit)<\/b><\/p>\n<p>Pasi arrita t\u00eb realizoj renderimin e fushave, njer\u00ebzve dhe hartave, kuptova se nevojitej gjithashtu nj\u00eb rejim baz\u00eb nd\u00ebrtimi. E realizova k\u00ebshtu: kur shtypet butoni \u2014 objekti zgjidhet, dhe klikimi e vendos at\u00eb n\u00eb vendin e d\u00ebshiruar. Pra, butoni 1 lejon t\u00eb zgjidhet korti, nd\u00ebrsa butoni 2 lejon t\u00eb zgjidhet lojtari.<\/p>\n<p>Por duhet ta mbajtur mend se \u00e7far\u00eb p\u00ebrfaq\u00ebsojn\u00eb 1 dhe 2, prandaj shtova nj\u00eb wireframe p\u00ebr t\u00eb qart\u00ebsuar se cili objekt \u00ebsht\u00eb i zgjedhur. K\u00ebshtu duket.<\/p>\n<p><img decoding=\"async\" alt=\"Loj\u00eb n\u00eb Rust brenda 24 or\u00ebve: p\u00ebrvoja ime personale e zhvillimit\" src=\"\/wp-content\/uploads\/2019\/03\/09b92828fb9b8d4bfa5d5178ca99613c.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n <br \/>\n<b>Pyetje mbi arkitektur\u00ebn dhe rifaktorizimin<\/b><\/p>\n<p>Tani kam kam kam kam kam. Por t\u00eb punuaren e wireframes, \u00e7do entitet objekti duhet t\u00eb informohet n\u00ebse vet\u00eb objektet jan\u00eb n\u00eb modin p\u00ebr t\u00eb treguar, apo vet\u00ebm \u00ebsht\u00eb vizatuar nj\u00eb korniz\u00eb. Kjo nuk \u00ebsht\u00eb shum\u00eb e p\u00ebrshtatshme.<\/p>\n<p>M\u00eb duket se duhet t\u00eb rishqyrtohet arkitektura n\u00eb m\u00ebnyr\u00eb q\u00eb t\u00eb evidentohen disa kufizime:<\/p>\n<ul>\n<li>prania e nj\u00eb entiteti q\u00eb tregon dhe p\u00ebrdit\u00ebson veten \u2014 \u00ebsht\u00eb nj\u00eb problem, sepse ky entitet nuk do t\u00eb jet\u00eb n\u00eb gjendje t\u00eb \"kuptoj\u00eb\" se \u00e7far\u00eb duhet t\u00eb renderizoj\u00eb \u2014 imazhin ose wireframe-in;<\/li>\n<li>mungesa e nj\u00eb instrumenti p\u00ebr ndarjen e pronave dhe sjelljes midis entiteteve t\u00eb ve\u00e7anta (shembuj \u2014 pron\u00ebsia is_build_mode ose vizatimi i sjelljes). Do t\u00eb ishte e mundur t\u00eb p\u00ebrdorej trash\u00ebgimia, megjith\u00ebse n\u00eb Rust nuk ka nj\u00eb m\u00ebnyr\u00eb normale p\u00ebr ta realizuar at\u00eb. Ajo q\u00eb m\u00eb duhej v\u00ebrtet \u2014 ishte kompozita;<\/li>\n<li>nj\u00eb instrument p\u00ebr nd\u00ebrveprimin e entiteteve gjithashtu ishte i nevojsh\u00ebm, p\u00ebr t\u00eb caktuar njer\u00ebzit n\u00eb fusha;<\/li>\n<li>vet\u00eb entitetet p\u00ebrb\u00ebnin nj\u00eb p\u00ebrzierje t\u00eb t\u00eb dh\u00ebnave dhe logjik\u00ebs, gj\u00eb q\u00eb shum\u00eb shpejt dilte jasht\u00eb kontrollit.<\/li>\n<\/ul>\n<p><\/p>\n<blockquote><p><i>Kam b\u00ebr\u00eb nj\u00eb studim t\u00eb m\u00ebtejsh\u00ebm dhe kam zbuluar arkitektur\u00ebn <noindex><a rel=\"nofollow\" href=\"https:\/\/en.wikipedia.org\/wiki\/Entity_component_system\">ECS \u2014 Sistemi i Komponent\u00ebve t\u00eb Entiteteve<\/a><\/noindex>, i cili zakonisht p\u00ebrdoret n\u00eb loj\u00ebra. Ja p\u00ebrfitimet e ECS:<\/p>\n<ul>\n<li>t\u00eb dh\u00ebnat ndahen nga logjika;<\/li>\n<li>kompozita n\u00eb vend t\u00eb trash\u00ebgimis\u00eb;<\/li>\n<li>arkitektur\u00eb e fokusuar n\u00eb t\u00eb dh\u00ebna.<\/li>\n<\/ul>\n<p><\/i><\/p><\/blockquote>\n<p>\nP\u00ebr ECS, karakterizohen tre koncepte baz\u00eb:<\/p>\n<ul>\n<li>entitetet \u2014 nj\u00eb tip objekti, ndaj t\u00eb cilit referohet nj\u00eb identifikues (kjo mund t\u00eb jet\u00eb nj\u00eb lojtar, nj\u00eb top ose di\u00e7ka tjet\u00ebr);<\/li>\n<li>komponent\u00ebt \u2014 nga t\u00eb cil\u00ebt p\u00ebrb\u00ebhen entitetet. Shembuj \u2014 komponenti i renderimit, pozita dhe t\u00eb tjera. K\u00ebto jan\u00eb depo t\u00eb dh\u00ebnash;<\/li>\n<li>sistemet \u2014 ato p\u00ebrdorin si objektet ashtu edhe komponent\u00ebt, p\u00ebrve\u00e7se p\u00ebrmbajn\u00eb sjellje dhe logjik\u00eb q\u00eb bazohen n\u00eb k\u00ebto t\u00eb dh\u00ebna. Shembull \u2014 sistemi i renderimit, i cili shqyrton t\u00eb gjith\u00eb entitetet me komponent\u00eb p\u00ebr renderim dhe merret me vizatimin.<\/li>\n<\/ul>\n<p>\nPas studimit doli se ECS zgjidh k\u00ebto probleme:<\/p>\n<ul>\n<li>aplikaimi i kompozit\u00ebs n\u00eb vend t\u00eb trash\u00ebgimis\u00eb p\u00ebr organizimin sistematik t\u00eb entiteteve; <\/li>\n<li>zhb\u00ebrja e kaosit t\u00eb kodit p\u00ebrmes sistemeve t\u00eb menaxhimit; <\/li>\n<li>p\u00ebrdorimi i metodave si is_build_mode p\u00ebr t\u00eb mbajtur logjik\u00ebn e wireframe-it n\u00eb t\u00eb nj\u00ebjtin vend \u2014 n\u00eb sistemin e renderimit.<\/li>\n<\/ul>\n<p>\nJa \u00e7far\u00eb u arrit pas integrimit t\u00eb ECS.<\/p>\n<p><i>resources -&gt; k\u00ebtu ndodhen t\u00eb gjitha asetet (imazhet)<br \/>\nsrc<br \/>\n \u2014 komponent\u00eb<br \/>\n \u2014 position.rs<br \/>\n \u2014 person.rs<br \/>\n \u2014 tennis_court.rs<br \/>\n \u2014 floor.rs<br \/>\n \u2014 wireframe.rs<br \/>\n \u2014 mouse_tracked.rs<br \/>\n \u2014 burime<br \/>\n \u2014 mouse.rs<br \/>\n \u2014 sisteme<br \/>\n \u2014 rendering.rs<br \/>\n \u2014 constants.rs<br \/>\n \u2014 utils.rs<br \/>\n \u2014 world_factory.rs -&gt; funksionet e fabrik\u00ebs s\u00eb bot\u00ebs<br \/>\n \u2014 main.rs -&gt; cikli kryesor<\/i><\/p>\n<h3>Caktojm\u00eb njer\u00ebzit n\u00eb fusha<\/h3>\n<p>\nECS e b\u00ebri jet\u00ebn m\u00eb t\u00eb leht\u00eb. Tani kisha nj\u00eb rrug\u00eb sistematike p\u00ebr t\u00eb shtuar t\u00eb dh\u00ebna n\u00eb entitete dhe p\u00ebr t\u00eb shtuar logjik\u00ebn e bazuar n\u00eb k\u00ebto t\u00eb dh\u00ebna. Kjo, nga ana tjet\u00ebr, leht\u00ebsoi shp\u00ebrndarjen e njer\u00ebzve n\u00eb fusha.<\/p>\n<p>Ajo q\u00eb b\u00ebra:<\/p>\n<ul>\n<li>shtova t\u00eb dh\u00ebnat p\u00ebr fusha t\u00eb caktuara n\u00eb Person;<\/li>\n<li>shtova t\u00eb dh\u00ebna p\u00ebr njer\u00ebzit e shp\u00ebrndar\u00eb n\u00eb TennisCourt;<\/li>\n<li>shtova CourtChoosingSystem, e cila lejon analizimin e njer\u00ebzve dhe fushave, identifikimin e fushave t\u00eb disponueshme dhe shp\u00ebrndarjen e lojtar\u00ebve atje;<\/li>\n<li>shtova sistemin PersonMovementSystem, i cili k\u00ebrkon njer\u00ebzit e caktuar n\u00eb fusha, dhe n\u00ebse ata nuk jan\u00eb aty, i d\u00ebrgon njer\u00ebzit atje ku duhet.<\/li>\n<\/ul>\n<p>\n<img decoding=\"async\" alt=\"Loj\u00eb n\u00eb Rust brenda 24 or\u00ebve: p\u00ebrvoja ime personale e zhvillimit\" src=\"\/wp-content\/uploads\/2019\/03\/f2e4632de2cb9d1c3ec7c9d9310b8170.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n <\/p>\n<h3>P\u00ebrmbledhje<\/h3>\n<p>\nM\u00eb p\u00eblqeu shum\u00eb t\u00eb punoj mbi k\u00ebt\u00eb loj\u00eb t\u00eb thjesht\u00eb. Gjithashtu, jam e k\u00ebnaqur q\u00eb e shkrova at\u00eb n\u00eb Rust, sepse:<\/p>\n<ul>\n<li>Rust ju jep at\u00eb q\u00eb ju nevojitet;<\/li>\n<li>ka dokumentacion t\u00eb shk\u00eblqyer, Rust \u00ebsht\u00eb shum\u00eb elegant;<\/li>\n<li>q\u00ebndrueshm\u00ebria \u2014 \u00ebsht\u00eb e shk\u00eblqyer;<\/li>\n<li>nuk \u00ebsht\u00eb e nevojshme t\u00eb mb\u00ebshtetesha n\u00eb klonim, kopjim ose veprime t\u00eb tjera t\u00eb ngjashme, q\u00eb un\u00eb shpesh b\u00ebja n\u00eb C++;<\/li>\n<li>Options jan\u00eb shum\u00eb t\u00eb dobishme p\u00ebr pun\u00eb, gjithashtu trajtojn\u00eb mjaft mir\u00eb gabimet;<\/li>\n<li>n\u00ebse projekti u kompilua me sukses, n\u00eb 99% ai funksionon ashtu si\u00e7 duhet. Mesazhet e gabimit t\u00eb kompilatorit, mendoj se jan\u00eb m\u00eb t\u00eb mirat q\u00eb kam par\u00eb.<\/li>\n<\/ul>\n<p>\nZhvillimi i loj\u00ebrave n\u00eb Rust sapo ka filluar. Por tashm\u00eb ekziston nj\u00eb komunitet i q\u00ebndruesh\u00ebm dhe mjaft i madh q\u00eb punon p\u00ebr ta hapur Rust p\u00ebr t\u00eb gjith\u00eb. Prandaj, shikoj me optimiz\u00ebm t\u00eb ardhmen e gjuh\u00ebs, duke pritur me padurim rezultatet e pun\u00ebs son\u00eb t\u00eb p\u00ebrbashk\u00ebt.<\/p>\n<blockquote><p><b>Skillbox rekomandon:<\/b><\/p>\n<ul>\n<li>Kurs online <noindex><a rel=\"nofollow\" href=\"https:\/\/skillbox.ru\/frontend-developer\/?utm_source=skillbox.media&amp;utm_medium=habr.com&amp;utm_campaign=FRENDEV&amp;utm_content=articles&amp;utm_term=rust24\">\u00abProfesionisti frontend zhvillues\u00bb<\/a><\/noindex>.<\/li>\n<li>Kurs praktik <noindex><a rel=\"nofollow\" href=\"https:\/\/skillbox.ru\/agima\/?utm_source=skillbox.media&amp;utm_medium=habr.com&amp;utm_campaign=AGIMA&amp;utm_content=articles&amp;utm_term=rust24\">\u00abProgramues i celular\u00ebve PRO\u00bb<\/a><\/noindex>.<\/li>\n<li>Kurs praktik nj\u00ebvje\u00e7ar <noindex><a rel=\"nofollow\" href=\"https:\/\/skillbox.ru\/php\/?utm_source=skillbox.media&amp;utm_medium=habr.com&amp;utm_campaign=PHPDEV&amp;utm_content=articles&amp;utm_term=rust24\">\u00abPHP zhvillues nga 0 n\u00eb PRO\u00bb<\/a><\/noindex>.<\/li>\n<\/ul>\n<p>\n<\/p><\/blockquote>\n<p>Burimi: <a content=\"nofollow\" rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/company\/skillbox\/blog\/444364\/\">habr.com<\/a><\/p>","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"excerpt":{"rendered":"<p>\u0412 \u044d\u0442\u043e\u0439 \u0441\u0442\u0430\u0442\u044c\u0435 \u044f \u0440\u0430\u0441\u0441\u043a\u0430\u0436\u0443 \u043e \u043b\u0438\u0447\u043d\u043e\u043c \u043e\u043f\u044b\u0442\u0435 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0438 \u043d\u0435\u0431\u043e\u043b\u044c\u0448\u043e\u0439 \u0438\u0433\u0440\u044b \u043d\u0430 Rust. \u041d\u0430 \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u0435 \u0440\u0430\u0431\u043e\u0447\u0435\u0439 \u0432\u0435\u0440\u0441\u0438\u0438 \u0443\u0448\u043b\u043e \u043e\u043a\u043e\u043b\u043e 24 \u0447\u0430\u0441\u043e\u0432 (\u043f\u0440\u0435\u0438\u043c\u0443\u0449\u0435\u0441\u0442\u0432\u0435\u043d\u043d\u043e \u044f \u0440\u0430\u0431\u043e\u0442\u0430\u043b\u0430 \u043f\u043e \u0432\u0435\u0447\u0435\u0440\u0430\u043c \u0438\u043b\u0438 \u043d\u0430 \u0432\u044b\u0445\u043e\u0434\u043d\u044b\u0445). \u0418\u0433\u0440\u0430 \u0435\u0449\u0435 \u0434\u0430\u043b\u0435\u043a\u0430 \u043e\u0442 \u0437\u0430\u0432\u0435\u0440\u0448\u0435\u043d\u0438\u044f, \u043d\u043e \u044f \u0434\u0443\u043c\u0430\u044e, \u0447\u0442\u043e \u043e\u043f\u044b\u0442 \u0431\u0443\u0434\u0435\u0442 \u043f\u043e\u043b\u0435\u0437\u043d\u044b\u043c. \u042f \u0440\u0430\u0441\u0441\u043a\u0430\u0436\u0443, \u0447\u0435\u043c\u0443 \u043d\u0430\u0443\u0447\u0438\u043b\u0430\u0441\u044c, \u0438 \u043e \u043d\u0435\u043a\u043e\u0442\u043e\u0440\u044b\u0445 \u043d\u0430\u0431\u043b\u044e\u0434\u0435\u043d\u0438\u044f\u0445, \u0441\u0434\u0435\u043b\u0430\u043d\u043d\u044b\u0445 \u043f\u0440\u0438 \u043f\u043e\u0441\u0442\u0440\u043e\u0435\u043d\u0438\u0438 \u0438\u0433\u0440\u044b \u0441 \u043d\u0443\u043b\u044f. [&hellip;]<\/p>\n","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[],"tags":[],"class_list":["post-29846","post","type-post","status-publish","format-standard","hentry"],"aioseo_notices":[],"aioseo_head":"\n\t\t<!-- All in One SEO 5.0.0.1 - aioseo.com -->\n\t<meta name=\"description\" content=\"\u0412 \u044d\u0442\u043e\u0439 \u0441\u0442\u0430\u0442\u044c\u0435 \u044f \u0440\u0430\u0441\u0441\u043a\u0430\u0436\u0443 \u043e \u043b\u0438\u0447\u043d\u043e\u043c \u043e\u043f\u044b\u0442\u0435.\" \/>\n\t<meta name=\"robots\" content=\"max-image-preview:large\" \/>\n\t<meta name=\"author\" content=\"Yuri Gagarin\"\/>\n\t<link rel=\"canonical\" href=\"https:\/\/prohoster.info\/sq\/blog\/igra-na-rust-za-24-chasa-lichnyj-opyt-razrabotki\" \/>\n\t<meta name=\"generator\" content=\"All in One SEO (AIOSEO) 5.0.0.1\" \/>\n\t\t<meta property=\"og:locale\" content=\"sq_AL\" \/>\n\t\t<meta property=\"og:site_name\" content=\"ProHoster | \u041a\u0443\u043f\u0438\u0442\u044c \u043d\u0430\u0434\u0435\u0436\u043d\u044b\u0439 \u0445\u043e\u0441\u0442\u0438\u043d\u0433 \u0434\u043b\u044f \u0441\u0430\u0439\u0442\u043e\u0432 \u0441 \u0437\u0430\u0449\u0438\u0442\u043e\u0439 \u043e\u0442 DDoS, VPS VDS \u0441\u0435\u0440\u0432\u0435\u0440\u044b\" \/>\n\t\t<meta property=\"og:type\" content=\"article\" \/>\n\t\t<meta property=\"og:title\" content=\"\ud83e\udd47\u0418\u0433\u0440\u0430 \u043d\u0430 Rust \u0437\u0430 24 \u0447\u0430\u0441\u0430: \u043b\u0438\u0447\u043d\u044b\u0439 \u043e\u043f\u044b\u0442 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0438 | ProHoster\" \/>\n\t\t<meta property=\"og:description\" content=\"\u0412 \u044d\u0442\u043e\u0439 \u0441\u0442\u0430\u0442\u044c\u0435 \u044f \u0440\u0430\u0441\u0441\u043a\u0430\u0436\u0443 \u043e \u043b\u0438\u0447\u043d\u043e\u043c \u043e\u043f\u044b\u0442\u0435.\" \/>\n\t\t<meta property=\"og:url\" content=\"https:\/\/prohoster.info\/sq\/blog\/igra-na-rust-za-24-chasa-lichnyj-opyt-razrabotki\" \/>\n\t\t<meta property=\"og:image\" content=\"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg\" \/>\n\t\t<meta property=\"og:image:secure_url\" content=\"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg\" \/>\n\t\t<meta property=\"og:image:width\" content=\"350\" \/>\n\t\t<meta property=\"og:image:height\" content=\"350\" \/>\n\t\t<meta property=\"article:published_time\" content=\"2019-10-31T18:32:19+00:00\" \/>\n\t\t<meta property=\"article:modified_time\" content=\"2019-10-31T18:32:19+00:00\" \/>\n\t\t<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/prohoster\" \/>\n\t\t<meta property=\"article:author\" content=\"https:\/\/www.facebook.com\/prohoster\" \/>\n\t\t<!-- All in One SEO -->\n\n","aioseo_head_json":{"title":"\ud83e\udd47Loj\u00eb n\u00eb Rust p\u00ebr 24 or\u00eb: p\u00ebrvoja ime personale e zhvillimit | ProHoster","description":"N\u00eb k\u00ebt\u00eb artikull do t\u00eb flas p\u00ebr p\u00ebrvoj\u00ebn time personale.","canonical_url":"https:\/\/prohoster.info\/sq\/blog\/igra-na-rust-za-24-chasa-lichnyj-opyt-razrabotki","robots":"max-image-preview:large","keywords":"","webmasterTools":{"miscellaneous":""},"schema":null,"og:locale":"sq_AL","og:site_name":"ProHoster | \u041a\u0443\u043f\u0438\u0442\u044c \u043d\u0430\u0434\u0435\u0436\u043d\u044b\u0439 \u0445\u043e\u0441\u0442\u0438\u043d\u0433 \u0434\u043b\u044f \u0441\u0430\u0439\u0442\u043e\u0432 \u0441 \u0437\u0430\u0449\u0438\u0442\u043e\u0439 \u043e\u0442 DDoS, VPS VDS \u0441\u0435\u0440\u0432\u0435\u0440\u044b","og:type":"article","og:title":"\ud83e\udd47\u0418\u0433\u0440\u0430 \u043d\u0430 Rust \u0437\u0430 24 \u0447\u0430\u0441\u0430: \u043b\u0438\u0447\u043d\u044b\u0439 \u043e\u043f\u044b\u0442 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0438 | ProHoster","og:description":"\u0412 \u044d\u0442\u043e\u0439 \u0441\u0442\u0430\u0442\u044c\u0435 \u044f \u0440\u0430\u0441\u0441\u043a\u0430\u0436\u0443 \u043e \u043b\u0438\u0447\u043d\u043e\u043c \u043e\u043f\u044b\u0442\u0435.","og:url":"https:\/\/prohoster.info\/sq\/blog\/igra-na-rust-za-24-chasa-lichnyj-opyt-razrabotki","og:image":"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg","og:image:secure_url":"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg","og:image:width":350,"og:image:height":350,"article:published_time":"2019-10-31T18:32:19+00:00","article:modified_time":"2019-10-31T18:32:19+00:00","article:publisher":"https:\/\/www.facebook.com\/prohoster","article:author":"https:\/\/www.facebook.com\/prohoster"},"aioseo_meta_data":{"post_id":"29846","title":null,"description":null,"keywords":null,"keyphrases":null,"primary_term":null,"canonical_url":null,"og_title":null,"og_description":null,"og_object_type":"default","og_image_type":"default","og_image_url":null,"og_image_width":null,"og_image_height":null,"og_image_custom_url":null,"og_image_custom_fields":null,"og_video":null,"og_custom_url":null,"og_article_section":null,"og_article_tags":null,"twitter_use_og":false,"twitter_card":"default","twitter_image_type":"default","twitter_image_url":null,"twitter_image_custom_url":null,"twitter_image_custom_fields":null,"twitter_title":null,"twitter_description":null,"schema":{"blockGraphs":[],"customGraphs":[],"default":{"data":{"Article":[],"Course":[],"Dataset":[],"FAQPage":[],"Movie":[],"Person":[],"Product":[],"ProductReview":[],"Car":[],"Recipe":[],"Service":[],"SoftwareApplication":[],"WebPage":[]},"graphName":"Article","isEnabled":true},"graphs":[]},"schema_type":null,"schema_type_options":null,"pillar_content":false,"robots_default":true,"robots_noindex":false,"robots_noarchive":false,"robots_nosnippet":false,"robots_nofollow":false,"robots_noimageindex":false,"robots_noodp":false,"robots_notranslate":false,"robots_max_snippet":null,"robots_max_videopreview":null,"robots_max_imagepreview":"large","priority":null,"frequency":null,"local_seo":null,"seo_analyzer_scan_date":"2026-01-20 22:43:19","breadcrumb_settings":null,"limit_modified_date":false,"reviewed_by":null,"ai":null,"created":"2021-03-01 03:47:36","updated":"2026-01-20 22:43:19","focus_keyword":null,"additional_keywords":null,"truseo_locale":null},"gt_translate_keys":[{"key":"link","format":"url"}],"_links":{"self":[{"href":"https:\/\/prohoster.info\/sq\/wp-json\/wp\/v2\/posts\/29846","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/prohoster.info\/sq\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/prohoster.info\/sq\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/prohoster.info\/sq\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/prohoster.info\/sq\/wp-json\/wp\/v2\/comments?post=29846"}],"version-history":[{"count":0,"href":"https:\/\/prohoster.info\/sq\/wp-json\/wp\/v2\/posts\/29846\/revisions"}],"wp:attachment":[{"href":"https:\/\/prohoster.info\/sq\/wp-json\/wp\/v2\/media?parent=29846"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prohoster.info\/sq\/wp-json\/wp\/v2\/categories?post=29846"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prohoster.info\/sq\/wp-json\/wp\/v2\/tags?post=29846"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}