DevOps C++ da "Yakin dafa abinci", ko Yadda na fara rubuta wasanni yayin cin abinci

"Na san cewa ban san kome ba" Socrates

Ga wane: ga mutanen IT waɗanda ba su damu da duk masu haɓakawa ba kuma suna son yin wasannin su!

Game da menene: yadda ake fara rubuta wasanni a C/C++ idan kuna buƙata!

Me ya sa za ku karanta wannan: Ci gaban App ba ƙwararren aikina bane, amma ina ƙoƙarin yin lamba kowane mako. Domin ina son wasanni!

Sannu Sunana Shin Andrey Grankin, Ni DevOps ne a Luxoft. Ci gaban aikace-aikacen ba ƙwarewa ba ne na aiki na, amma ina ƙoƙarin yin code kowane mako. Domin ina son wasanni!

Masana'antar wasannin kwamfuta tana da girma, har ma da jita-jita a yau fiye da masana'antar fim. An rubuta wasannin tun farkon haɓakar kwamfutoci, ta hanyar amfani da, ta tsarin zamani, hadaddun hanyoyin ci gaba na asali. Bayan lokaci, injinan wasan sun fara bayyana tare da shirye-shiryen zane-zane, kimiyyar lissafi, da sauti. Suna ba ku damar mayar da hankali kan ci gaban wasan da kansa kuma kada ku damu game da tushe. Amma tare da su, tare da injuna, masu haɓakawa "suka makanta" kuma suna lalata. Ana sanya ainihin samar da wasanni akan na'urar jigilar kaya. Kuma yawan samarwa ya fara rinjaye akan ingancinsa.

A lokaci guda kuma, lokacin yin wasannin sauran mutane, koyaushe ana iyakance mu ta wurare, makirci, haruffa, injiniyoyin wasan da sauran mutane suka fito da su. Don haka na gane cewa ...

…Lokaci ya yi da za ku ƙirƙiri duniyar ku, ƙarƙashin ni kaɗai. Duniya inda ni ne Uba, da Ɗa, da Ruhu Mai Tsarki!

Kuma na yi imani da gaske cewa ta hanyar rubuta injin wasan ku da wasa da shi, za ku iya cire takalmanku, goge tagogi da haɓaka ɗakin ku, ku zama ƙwararrun ƙwararrun shirye-shirye.

A cikin wannan labarin zan yi ƙoƙari in gaya muku yadda na fara rubuta ƙananan wasanni a C / C ++, menene tsarin ci gaba da kuma inda na sami lokaci don sha'awa a cikin yanayi mai aiki. Abu ne na zahiri kuma yana bayyana tsarin farawa mutum ɗaya. Material game da jahilci da imani, game da hotona na sirri na duniya a halin yanzu. A wasu kalmomi, "Gwamnatin ba ta da alhakin kwakwalwar ku!".

Yi aiki

"Ilimi ba tare da aiki ba bashi da amfani, aiki ba tare da ilimi ba yana da haɗari." Confucius

Littafin rubutu na shine rayuwata!


Don haka, a aikace, zan iya cewa komai a gare ni yana farawa da littafin rubutu. Ina rubuta ba kawai ayyukana na yau da kullun a can ba, har ma da zana, tsarawa, tsara taswirar tafiya da magance matsaloli, gami da na lissafi. Yi amfani da faifan rubutu koyaushe kuma rubuta da fensir kawai. Yana da tsabta, dadi kuma abin dogaro, IMHO.

DevOps C++ da "Yakin dafa abinci", ko Yadda na fara rubuta wasanni yayin cin abinci
Littafin rubutu na (riga ya cika). Wannan shine yadda abin yake. Ya ƙunshi ayyukan yau da kullun, ra'ayoyi, zane-zane, zane-zane, mafita, ajiyar baƙar fata, lamba, da sauransu.

A wannan mataki, na yi nasarar kammala ayyuka guda uku (wannan yana cikin fahimtar "ƙarshe", saboda kowane samfurin za a iya haɓaka shi ba tare da ƙarewa ba).

  • Aikin 0: wannan sigar Architect Demo 3D ce da aka rubuta a cikin C # ta amfani da injin wasan Unity. Don dandamali na macOS da Windows.
  • Wasan 1: wasan wasan bidiyo Sauƙaƙan Snake (wanda kowa ya sani da "Macijiya") don Windows. an rubuta ta C.
  • Wasan 2: wasan bidiyo game Crazy Tanks (wanda kowa ya sani da "Tankuna"), an riga an rubuta shi cikin C ++ (ta amfani da azuzuwan) da kuma ƙarƙashin Windows.

Aikin 0. Gine-gine Demo

  • Dandali: Windows (Windows 7, 10), Mac OS (OS X El Capitan v. 10.11.6)
  • Harshe: C#
  • Injin wasa: Unity
  • Wahayi: Darin Lile
  • Wurin ajiya: GitHub

DevOps C++ da "Yakin dafa abinci", ko Yadda na fara rubuta wasanni yayin cin abinci
3D Scene Architect Demo

An fara aiwatar da aikin na farko ba a cikin C/C++ ba, amma a cikin C # ta amfani da injin wasan Unity. Wannan injin bai kasance mai buƙata akan kayan masarufi ba kamar ba na gaskiya ba Engine, kuma ya zama mini sauƙin shigarwa da amfani. Ban yi la'akari da wasu injuna ba.

Manufar Unity a gare ni ba shine haɓaka wani nau'in wasa ba. Ina son ƙirƙirar yanayin 3D tare da wani nau'in hali. Shi, ko kuma ita (Na tsara yarinyar da nake ƙauna =) dole ne ta motsa da mu'amala da duniyar waje. Yana da mahimmanci kawai don fahimtar menene Haɗin kai, menene tsarin ci gaba, da irin ƙoƙarin da ake buƙata don ƙirƙirar wani abu. Wannan shi ne yadda aka haifi aikin Architect Demo (sunan an ƙirƙira shi kusan daga bijimi). Shirye-shirye, ƙirar ƙira, raye-raye, rubutu da rubutu sun ɗauke ni wataƙila wata biyu na aikin yau da kullun.

Na fara da bidiyon koyawa akan YouTube kan yadda ake ƙirƙirar ƙirar 3D a ciki blender. Blender babban kayan aiki ne na kyauta don ƙirar ƙirar 3D (da ƙari) wanda baya buƙatar shigarwa. Kuma a nan wani gigita ya jira ni ... Sai dai itace cewa yin tallan kayan kawa, rayarwa, texturing ne manyan daban-daban batutuwa a kan abin da za ka iya rubuta littattafai. Wannan gaskiya ne musamman ga haruffa. Don yin samfurin yatsu, hakora, idanu da sauran sassan jiki, kuna buƙatar sanin ilimin jiki. Yaya aka tsara tsokar fuska? Yaya mutane ke motsawa? Dole ne in "saka" kasusuwa cikin kowane hannu, kafa, yatsa, ƙuƙumma!

Samfuran clavicle, ƙarin levers kashi, don rayarwa ya yi kama da na halitta. Bayan irin waɗannan darussan, za ku fahimci babban aikin da masu ƙirƙirar fina-finai masu rairayi suke yi, kawai don ƙirƙirar bidiyo na 30 seconds. Amma fina-finan 3D suna ɗaukar awoyi! Kuma a sa'an nan muka fito daga sinimomi da kuma ce wani abu kamar: "Ta, a shitty zane mai ban dariya / movie! Da sun yi mafi kyau…” Wawaye!

Kuma wani abu guda game da shirye-shirye a cikin wannan aikin. Kamar yadda ya bayyana, mafi ban sha'awa a gare ni shi ne na lissafi. Idan kun gudanar da yanayin (haɗi zuwa wurin ajiya a cikin bayanin aikin), za ku lura cewa kamara tana juyawa a kusa da halin yarinyar a cikin wani yanki. Don tsara irin wannan jujjuyawar kamara, dole ne in fara lissafin ma'auni na ma'aunin matsayi a kan da'irar (2D), sannan a kan sphere (3D). Abin ban dariya shi ne cewa na tsani lissafi a makaranta kuma na san shi da raguwa. Wani bangare, mai yiwuwa, saboda a makaranta kawai ba sa bayyana muku yadda ake amfani da wannan ilimin lissafi a rayuwa. Amma idan kun shagaltu da burin ku, kuyi mafarki, to hankali ya washe, ya bayyana! Kuma kun fara fahimtar ayyuka masu rikitarwa azaman kasada mai ban sha'awa. Kuma sai ku yi tunani: "To, me yasa *masoyi * masanin lissafi ya kasa faɗi inda za'a iya jingina waɗannan dabarun?".

DevOps C++ da "Yakin dafa abinci", ko Yadda na fara rubuta wasanni yayin cin abinci
Ƙididdigar ƙididdiga don ƙididdige madaidaitan ma'ana a kan da'irar da kuma kan yanki (daga littafin rubutu na)

Wasan 1

  • Dandali: Windows (an gwada shi akan Windows 7, 10)
  • Harshe: Ina tsammanin an rubuta shi cikin tsarki C
  • Injin wasa: Windows console
  • Wahayi: javidx9
  • Wurin ajiya: GitHub

DevOps C++ da "Yakin dafa abinci", ko Yadda na fara rubuta wasanni yayin cin abinci
Wasan maciji mai sauki

Yanayin 3D ba wasa ba ne. Bugu da kari, yin samfura da raya abubuwan 3D (musamman haruffa) yana da tsayi da wahala. Bayan wasa tare da Unity, na gane cewa dole ne in ci gaba, ko kuma in fara, daga asali. Wani abu mai sauƙi da sauri, amma a lokaci guda na duniya, don fahimtar ainihin tsarin wasanni.

Kuma menene muke da sauki da sauri? Haka ne, console da 2D. Fiye da daidai, har ma da na'ura wasan bidiyo da alamomi. Har ila yau, na fara neman wahayi akan Intanet (gaba ɗaya, na ɗauki Intanet a matsayin mafi juyin juyi da haɗari na karni na XNUMXst). Na tono bidiyo na wani mai shirye-shirye wanda ya yi na'ura mai kwakwalwa Tetris. Kuma a cikin kamannin wasansa, ya yanke shawarar yanke "maciji". Daga bidiyon, na koyi game da muhimman abubuwa guda biyu - madauki na wasan (tare da ayyuka / sassa na asali guda uku) da fitarwa zuwa buffer.

Madauki na wasan na iya kama wani abu kamar haka:

int main()
   {
      Setup();
      // a game loop
      while (!quit)
      {
          Input();
          Logic();
          Draw();
          Sleep(gameSpeed);  // game timing
      }
      return 0;
   }

Lambar tana ba da cikakken aikin () gaba ɗaya. Kuma zagayowar wasan yana farawa bayan sharhin da ya dace. Akwai ayyuka na asali guda uku a cikin madauki: Input(), Logic(), Draw(). Da farko, shigar da bayanai Input (yafi sarrafa maɓallai), sannan sarrafa bayanan da aka shigar da Logic, sannan nunawa akan allon - Zana. Kuma haka kowane frame. Ana yin raye-raye ta wannan hanyar. Kamar zane-zane. Yawancin lokaci sarrafa bayanan shigarwa yana ɗaukar mafi yawan lokaci kuma, gwargwadon yadda na sani, yana ƙayyade ƙimar firam ɗin wasan. Amma a nan aikin Logic() yana da sauri sosai. Don haka, ƙimar firam ɗin dole ne a sarrafa shi ta hanyar aikin Barci () tare da siginar SpeedSpeed ​​​​, wanda ke ƙayyade wannan ƙimar.

DevOps C++ da "Yakin dafa abinci", ko Yadda na fara rubuta wasanni yayin cin abinci
sake zagayowar wasan. Shirye-shiryen maciji a cikin littafin rubutu

Idan kuna haɓaka wasan wasan bidiyo na alama, to nuna bayanai akan allon ta amfani da fitowar rafi na yau da kullun ba zai yi aiki ba - yana da hankali sosai. Don haka, dole ne a aiwatar da fitarwa a cikin buffer allo. Da sauri da sauri kuma wasan zai yi aiki ba tare da glitches ba. A gaskiya, ban fahimci mene ne ma'aunin allo da yadda yake aiki ba. Amma zan ba da misali na lamba a nan, kuma watakila wani a cikin sharhi zai iya bayyana halin da ake ciki.

Samun buffer allo (idan zan iya faɗi haka):

// create screen buffer for drawings
   HANDLE hConsole = CreateConsoleScreenBuffer(GENERIC_READ | GENERIC_WRITE, 0,
 							   NULL, CONSOLE_TEXTMODE_BUFFER, NULL);
   DWORD dwBytesWritten = 0;
   SetConsoleActiveScreenBuffer(hConsole);

Fitarwa kai tsaye zuwa allon takamaiman layin layi (layin nuna maki):

// draw the score
   WriteConsoleOutputCharacter(hConsole, scoreLine, GAME_WIDTH, {2,3}, &dwBytesWritten);

A ka'idar, babu wani abu mai rikitarwa a cikin wannan wasan, yana gani a gare ni misali mai kyau na wasan matakin shiga. An rubuta lambar a cikin fayil ɗaya kuma an tsara shi cikin ayyuka da yawa. Babu darasi, babu gado. Kai da kanka zaka iya ganin komai a cikin lambar tushe na wasan ta zuwa wurin ajiya akan GitHub.

Wasan 2 Mahaukatan Tankuna

DevOps C++ da "Yakin dafa abinci", ko Yadda na fara rubuta wasanni yayin cin abinci
Wasan Mahaukata Tankuna

Buga haruffa zuwa na'ura wasan bidiyo mai yiwuwa shine abu mafi sauƙi da zaku iya juya zuwa wasa. Amma sai wata matsala ta bayyana: haruffan suna da tsayi daban-daban da nisa (tsawo ya fi fadi). Don haka, komai zai yi kama da rashin daidaituwa, kuma motsi ƙasa ko sama zai yi kama da sauri fiye da motsi hagu ko dama. Wannan tasirin yana da sananne sosai a cikin "Snake" (Wasanni 1). "Tankuna" (Wasanni 2) ba su da irin wannan koma baya, tunda an tsara abubuwan da aka fitar a can ta hanyar zanen pixels na allo tare da launuka daban-daban. Kuna iya cewa na rubuta renderer. Gaskiya ne, wannan ya riga ya ɗan ƙara rikitarwa, kodayake ya fi ban sha'awa.

Don wannan wasan, zai isa ya bayyana tsarina don nuna pixels akan allon. Ina ganin wannan shine babban bangare na wasan. Kuma duk abin da za ku iya fito da kanku.

Don haka, abin da kuke gani akan allon saitin nau'ikan rectangular masu motsi ne kawai.

DevOps C++ da "Yakin dafa abinci", ko Yadda na fara rubuta wasanni yayin cin abinci
Saitin Rectangle

Kowane rectangle yana wakilta da matrix da ke cike da lambobi. Af, zan iya haskaka nuance ɗaya mai ban sha'awa - duk matrices a cikin wasan an tsara su azaman tsararru mai girma ɗaya. Ba mai girma biyu ba, amma mai girma ɗaya! Tsari mai girma ɗaya sun fi sauƙi da sauri don aiki da su.

DevOps C++ da "Yakin dafa abinci", ko Yadda na fara rubuta wasanni yayin cin abinci
Misalin matrix na tankin wasan

DevOps C++ da "Yakin dafa abinci", ko Yadda na fara rubuta wasanni yayin cin abinci
Wakilin matrix tankin wasan a matsayin tsararru mai girma ɗaya

DevOps C++ da "Yakin dafa abinci", ko Yadda na fara rubuta wasanni yayin cin abinci
Ƙarin misalan misali na matrix ta hanyar tsararru mai girma ɗaya

Amma samun dama ga abubuwan da ke cikin tsararru yana faruwa ne a cikin madauki biyu, kamar dai ba mai girma ba ne, amma tsararru mai girma biyu. Anyi wannan saboda har yanzu muna aiki tare da matrices.

DevOps C++ da "Yakin dafa abinci", ko Yadda na fara rubuta wasanni yayin cin abinci
Matsa jeri mai girma ɗaya a cikin madauki biyu. Y shine ID na jere, X shine ID na shafi

Lura cewa maimakon abubuwan gano matrix na yau da kullun i, j, Ina amfani da masu gano x da y. Don haka, ga alama a gare ni, ya fi faranta ido da kuma bayyana ga kwakwalwa. Bugu da ƙari, irin wannan bayanin yana ba da damar aiwatar da matrices ɗin da aka yi amfani da su a kan madaidaitan gatura na hoto mai girma biyu.

Yanzu game da pixels, launi da nuni. Ana amfani da aikin StretchDIBits ( Header: windows.h; Library: gdi32.lib) don fitarwa. Daga cikin wasu abubuwa, ana wucewa zuwa wannan aikin: na'urar da aka nuna hoton (a cikin akwati na, wannan shine na'ura mai kwakwalwa ta Windows), abubuwan da aka fara nuna hoton, fadinsa / tsawo, da hoton. kanta a cikin sigar bitmap (bitmap), wakilta ta hanyar tsararrun bytes. Bitmap azaman tsararrun bytes!

Ayyukan StretchDIBits () a wurin aiki:

// screen output for game field
   StretchDIBits(
               deviceContext,
               OFFSET_LEFT, OFFSET_TOP,
               PMATRIX_WIDTH, PMATRIX_HEIGHT,
               0, 0,
               PMATRIX_WIDTH, PMATRIX_HEIGHT,
               m_p_bitmapMemory, &bitmapInfo,
               DIB_RGB_COLORS,
               SRCCOPY
               );

Ana keɓance ƙwaƙwalwar ajiya a gaba don wannan bitmap ta amfani da aikin VirtualAlloc(). Wato, ana adana adadin bytes da ake buƙata don adana bayanai game da dukkan pixels, waɗanda za a nuna su akan allon.

Ƙirƙirar m_p_bitmapMemory bitmap:

// create bitmap
   int bitmapMemorySize = (PMATRIX_WIDTH * PMATRIX_HEIGHT) * BYTES_PER_PIXEL;
   void* m_p_bitmapMemory = VirtualAlloc(0, bitmapMemorySize, MEM_COMMIT, PAGE_READWRITE);

Kusan magana, bitmap ya ƙunshi saitin pixels. Kowane bytes hudu a cikin tsararru shine pixel RGB. Byte ɗaya akan ƙimar ja, byte ɗaya akan ƙimar koren (G), da kuma byte ɗaya akan kowace launin shuɗi (B). Ƙari ga haka, akwai byte ɗaya a kowane indent. Waɗannan launuka uku - Red / Green / Blue (RGB) - suna gauraye da juna a cikin nau'i daban-daban - kuma ana samun sakamakon pixel launi.

Yanzu, kuma, kowane rectangle, ko abun wasa, ana wakilta shi da matrix lamba. Duk waɗannan abubuwan wasan ana sanya su cikin tarin. Sannan ana sanya su a filin wasa, suna yin babban matrix na lamba ɗaya. Na tsara kowace lamba a cikin matrix zuwa takamaiman launi. Misali, lamba 8 shudi ne, lamba 9 rawaya ce, lamba 10 kuma launin toka ne, da sauransu. Don haka, zamu iya cewa muna da matrix na filin wasa, inda kowane lamba wani nau'in launi ne.

Don haka, muna da matrix na lambobi na gaba ɗaya filin wasa a gefe ɗaya da bitmap don nuna hoton a ɗayan. Ya zuwa yanzu, bitmap ɗin "ba komai" - har yanzu bai ƙunshi bayani game da pixels na launi da ake so ba. Wannan yana nufin cewa mataki na ƙarshe zai kasance don cika bitmap tare da bayani game da kowane pixel dangane da matrix na filin wasa. Misalin misali na irin wannan canji yana cikin hoton da ke ƙasa.

DevOps C++ da "Yakin dafa abinci", ko Yadda na fara rubuta wasanni yayin cin abinci
Misali na cike bitmap (Pixel matrix) tare da bayanai dangane da Digital matrix na filin wasa (fididdigar launi ba su dace da fihirisar wasan ba)

Zan kuma gabatar da wani yanki na ainihin lambar daga wasan. Madaidaicin launi Index a kowane juzu'i na madauki an ba shi ƙima (launi mai launi) daga matrix na filin wasa (mainDigitalMatrix). Sannan ana rubuta launi da kanta zuwa madaidaicin launi bisa maƙasudin. Bugu da ari, sakamakon launi ya kasu kashi ja, kore da shuɗi (RGB). Kuma tare da indent (pixelPadding), ana rubuta wannan bayanin zuwa pixel akai-akai, yana yin hoton launi a cikin bitmap.

Lambar tana amfani da masu nuni da ayyukan bitwise, waɗanda ke da wahalar fahimta. Don haka ina ba ku shawara ku karanta daban a wani wuri yadda irin wannan tsarin ke aiki.

Cika bitmap tare da bayani dangane da matrix na filin wasa:

// set pixel map variables
   int colorIndex;
   COLORREF color;
   int pitch;
   uint8_t* p_row;
 
   // arrange pixels for game field
   pitch = PMATRIX_WIDTH * BYTES_PER_PIXEL;     // row size in bytes
   p_row = (uint8_t*)m_p_bitmapMemory;       //cast to uint8 for valid pointer arithmetic
   							(to add by 1 byte (8 bits) at a time)   
   for (int y = 0; y < PMATRIX_HEIGHT; ++y)
   {
       uint32_t* p_pixel = (uint32_t*)p_row;
       for (int x = 0; x < PMATRIX_WIDTH; ++x)
       {
           colorIndex = mainDigitalMatrix[y * PMATRIX_WIDTH + x];
           color = Utils::GetColor(colorIndex);
           uint8_t blue = GetBValue(color);
           uint8_t green = GetGValue(color);
           uint8_t red = GetRValue(color);
           uint8_t pixelPadding = 0;
 
           *p_pixel = ((pixelPadding << 24) | (red << 16) | (green << 8) | blue);
           ++p_pixel;
       }
       p_row += pitch;
   }

Dangane da hanyar da aka bayyana a sama, an ƙirƙiri hoto ɗaya (frame) a cikin wasan Crazy Tanks kuma ana nunawa akan allon a aikin Zana (). Bayan yin rijistar maɓallai a cikin aikin Input() da sarrafa su na gaba a cikin aikin Logic(), an ƙirƙiri sabon hoto (frame). Gaskiya, abubuwan wasan na iya samun matsayi daban-daban akan filin wasa kuma, saboda haka, an zana su a wani wuri daban. Wannan shine yadda rayarwa (motsi) ke faruwa.

A ka'idar (idan ba ku manta da wani abu ba), fahimtar madauki na wasan daga wasan farko ("Macijiya") da tsarin nuna pixels akan allon daga wasan na biyu ("Tankuna") shine duk abin da kuke buƙatar rubuta kowane. na wasanninku na 2D don Windows. Mara sauti! 😉 Sauran sassan kuwa tashi ne kawai.

Hakika, wasan "Tankuna" an tsara shi fiye da rikitarwa fiye da "Snake". Na riga na yi amfani da yaren C++, wato, na kwatanta abubuwan wasa daban-daban tare da azuzuwan. Na ƙirƙiri tarin kaina - kuna iya ganin lambar a cikin masu kai/Box.h. A hanyar, tarin ya fi dacewa yana da ƙwaƙwalwar ƙwaƙwalwa. Abubuwan da aka yi amfani da su. Aiki tare da ƙwaƙwalwar ajiya. Dole ne in ce littafin ya taimake ni sosai. Farkon C++ Ta Hanyar Shirye-shiryen Wasan. Wannan babban farawa ne ga masu farawa a cikin C++. Yana da ƙarami, mai ban sha'awa kuma yana da tsari sosai.

An ɗauki kimanin watanni shida don haɓaka wannan wasan. Na yi rubutu musamman a lokacin abincin rana da abubuwan ciye-ciye a wurin aiki. Kitchen ofis ya zauna, ya taka abinci ya rubuta code. Ko a gida don abincin dare. Don haka na sami irin wannan "yakin dafa abinci". Kamar koyaushe, na yi amfani da littafin rubutu na rayayye, kuma an haifi duk abubuwan da suka dace a ciki.

A ƙarshen ɓangaren aikace-aikacen, zan ciro ƴan sikanin littafin rubutu na. Don nuna ainihin abin da nake rubutawa, zane, ƙidayawa, tsarawa…

DevOps C++ da "Yakin dafa abinci", ko Yadda na fara rubuta wasanni yayin cin abinci
Tsarin hoton tanki. Kuma ma'anar pixels nawa kowane tanki yakamata ya mamaye akan allon

DevOps C++ da "Yakin dafa abinci", ko Yadda na fara rubuta wasanni yayin cin abinci
Ƙididdigar algorithm da ƙididdiga don jujjuyawar tanki a kusa da axis

DevOps C++ da "Yakin dafa abinci", ko Yadda na fara rubuta wasanni yayin cin abinci
Jadawalin tarin nawa (wanda ke da zubin ƙwaƙwalwar ajiya, mai yuwuwa). An ƙirƙiri tarin azaman Lissafin Haɗi

DevOps C++ da "Yakin dafa abinci", ko Yadda na fara rubuta wasanni yayin cin abinci
Kuma waɗannan yunƙurin banza ne na murƙushe bayanan ɗan adam a cikin wasan

Ka'idar

"Ko tafiyar mil dubu ta fara da matakin farko" (hikimar kasar Sin ta tsohuwa)

Mu matsa daga aiki zuwa ka'idar! Ta yaya kuke samun lokaci don sha'awar ku?

  1. Ƙayyade ainihin abin da kuke so (kas, wannan shine mafi wuya).
  2. Saita abubuwan fifiko.
  3. Ka yi hadaya da duk “mafi girman kai” don kare fifiko mafi girma.
  4. Matsa zuwa ga burin ku kowace rana.
  5. Kada ku yi tsammanin za a sami sa'o'i biyu ko uku na lokacin kyauta don sha'awa.

A gefe guda, kuna buƙatar ƙayyade abin da kuke so kuma ku ba da fifiko. A gefe guda, yana yiwuwa a watsar da wasu lokuta / ayyuka don goyon bayan waɗannan abubuwan da suka fi dacewa. A wasu kalmomi, dole ne ku sadaukar da duk abin da ke "m". Na ji wani wuri cewa a rayuwa ya kamata a sami matsakaicin manyan ayyuka guda uku. Sa'an nan kuma za ku iya magance su ta hanya mafi kyau. Kuma ƙarin ayyuka / kwatance za su fara cika masara. Amma wannan duka, mai yiwuwa, na zahiri ne kuma na mutum ɗaya.

Akwai wata ƙa'idar zinare: kar a taɓa samun 0% rana! Na koyi game da shi a cikin labarin wani mai haɓaka indie. Idan kuna aiki akan wani aiki, to kuyi wani abu game da shi kowace rana. Kuma ba komai nawa kuke samu. Rubuta kalma ɗaya ko layi ɗaya na lamba, kalli bidiyon koyawa guda ɗaya, ko guduma ƙusa ɗaya a cikin allo - kawai yi wani abu. Mafi wahala shine farawa. Da zarar kun fara, tabbas za ku yi ɗan fiye da yadda kuke so. Don haka za ku ci gaba da matsawa zuwa ga burin ku kuma, kuyi imani da ni, da sauri. Bayan haka, babban birki akan kowane abu shine jinkirtawa.

Kuma yana da mahimmanci a tuna cewa kada ku yi la'akari da watsi da '' sawdust '' na lokaci kyauta a cikin minti 5, 10, 15, jira wasu manyan "gijiyoyin" na tsawon sa'a daya ko biyu. Kuna tsaye a layi? Yi tunani game da wani abu don aikinku. Shin kuna hawan hawan hawa? Rubuta wani abu a cikin littafin rubutu. Kuna cin abinci a bas? To, karanta wani labarin. Yi amfani da kowace dama. Dakatar da kallon kyanwa da karnuka akan YouTube! Kada ku yi rikici da kwakwalwar ku!

Kuma na karshe. Idan, bayan karanta wannan labarin, kuna son ra'ayin ƙirƙirar wasanni ba tare da amfani da injunan wasan ba, to ku tuna da sunan Casey Muratori. Wannan mutumin yana da Yanar gizo. A cikin "kallon -> EPISODES na baya" zaku sami koyaswar bidiyo na ban mamaki kyauta akan yadda ake ƙirƙirar wasan ƙwararru daga karce. Kuna iya ƙarin koyo a cikin Intro zuwa C guda biyar don darussan Windows fiye da shekaru biyar na karatu a jami'a (wani ya rubuta game da wannan a cikin sharhin ƙarƙashin bidiyon).

Casey ya kuma bayyana cewa ta hanyar haɓaka injin wasan ku, zaku sami kyakkyawar fahimtar kowane injin da ke akwai. A cikin duniyar tsarin, inda kowa ke ƙoƙarin sarrafa kansa, za ku koyi yadda ake ƙirƙira, ba amfani ba. Fahimtar ainihin yanayin kwamfutoci. Kuma za ku zama ƙwararren ƙwararren ƙwararren mai tsara shirye-shirye - pro.

Sa'a a kan hanyar da kuka zaɓa! Kuma bari mu sa duniya ta zama ƙwararru.

Author: Grankin Andrey, DevOps



source: www.habr.com