DevOps C++ ak "kwizin lagè", oswa Ki jan mwen te kòmanse ekri jwèt pandan m ap manje

"Mwen konnen mwen pa konnen anyen" Socrates

Pou ki moun: pou IT moun ki krache sou tout devlopè yo epi ki vle jwe jwèt yo!

Konsènan kisa: ki jan yo kòmanse ekri jwèt nan C/C++ si ou bezwen li!

Poukisa ou ta dwe li sa a: Devlopman app se pa espesyalite travay mwen, men mwen eseye kòd chak semèn. Paske mwen renmen jwèt!

Bonjou non mwen se Andrey Grankin, Mwen se yon DevOps nan Luxoft. Devlopman aplikasyon se pa espesyalite travay mwen, men mwen eseye kòd chak semèn. Paske mwen renmen jwèt!

Endistri a jwèt sou òdinatè se gwo, menm plis rimè jodi a pase endistri fim nan. Jwèt yo te ekri depi nan konmansman an nan devlopman nan òdinatè, lè l sèvi avèk, pa estanda modèn, metòd devlopman konplèks ak debaz yo. Apre yon tan, motè jwèt yo te kòmanse parèt ak grafik deja pwograme, fizik, ak son. Yo pèmèt ou konsantre sou devlopman nan jwèt la tèt li epi yo pa deranje sou fondasyon li yo. Men, ansanm ak yo, ak motè yo, devlopè yo "ale avèg" ak degrade. Se pwodiksyon an anpil nan jwèt mete sou CONVEYOR la. Ak kantite pwodiksyon an kòmanse domine sou bon jan kalite li yo.

An menm tan an, lè w ap jwe jwèt lòt moun, nou toujou limite pa kote, konplo, karaktè, mekanik jwèt ke lòt moun te vini ak. Se konsa, mwen reyalize ke...

… li lè pou kreye monn pwòp ou yo, sijè a sèlman mwen. Monn kote mwen ye Papa a, ak Pitit la, ak Sentespri a!

Apre sa, mwen sensèman kwè ke lè w ekri pwòp motè jwèt ou ak yon jwèt sou li, ou pral kapab louvri je ou, siye fenèt yo ak ponpe kabin ou a, vin tounen yon pwogramè ki gen plis eksperyans ak entegral.

Nan atik sa a mwen pral eseye di ou ki jan mwen te kòmanse ekri ti jwèt nan C / C ++, ki sa ki pwosesis devlopman ak ki kote mwen jwenn tan pou yon plezi nan yon anviwònman okipe. Li se subjectif ak dekri pwosesis la nan yon kòmansman endividyèl. Materyèl sou inyorans ak lafwa, sou foto pèsonèl mwen nan mond lan nan moman an. Nan lòt mo, "Administrasyon an pa responsab pou sèvo pèsonèl ou!".

Pratike

"Konesans san pratik se initil, pratik san konesans se danjere." Confucius

Kaye mwen se lavi mwen!


Se konsa, nan pratik, mwen ka di ke tout bagay pou mwen kòmanse ak yon kaye. Mwen ekri non sèlman travay mwen chak jou la, men tou, desine, pwograme, konsepsyon organigram ak rezoud pwoblèm, ki gen ladan yo matematik. Toujou sèvi ak yon notepad epi ekri sèlman ak yon kreyon. Li pwòp, konfòtab ak serye, IMHO.

DevOps C++ ak "kwizin lagè", oswa Ki jan mwen te kòmanse ekri jwèt pandan m ap manje
Kaye mwen (deja ranpli). Sa a se ki jan li sanble. Li gen travay chak jou, lide, desen, dyagram, solisyon, kontablite nwa, kòd, ak sou sa.

Nan etap sa a, mwen jere yo ranpli twa pwojè (sa a se nan konpreyansyon mwen sou "finalite", paske nenpòt pwodwi ka devlope relativman infini).

  • Pwojè 0: sa a se yon sèn 3D Demo Achitek ekri an C # lè l sèvi avèk motè jwèt Unity la. Pou platfòm macOS ak Windows.
  • Jwèt 1: jwèt konsole Senp Snake (tout moun konnen kòm "Snake") pou Windows. ekri nan C.
  • Jwèt 2: jwèt konsole Crazy Tanks (tout moun konnen kòm "Tank"), ki deja ekri nan C ++ (itilize klas) epi tou anba Windows.

Pwojè 0 Achitek Demo

  • Platfòm: Windows (Windows 7, 10), Mac OS (OS X El Capitan v. 10.11.6)
  • Lang: C#
  • Motè jwèt: Inite
  • Enspirasyon: Darrin Lile
  • Depo: GitHub

DevOps C++ ak "kwizin lagè", oswa Ki jan mwen te kòmanse ekri jwèt pandan m ap manje
3D sèn achitek Demo

Premye pwojè a te aplike pa nan C/C++, men nan C# lè l sèvi avèk motè jwèt Inite. Motè sa a pa t 'tankou egzijan sou pyès ki nan konpitè kòm Reyèl Engine, epi tou li te sanble m 'pi fasil enstale ak itilize. Mwen pa t 'konsidere lòt motè.

Objektif la nan Inite pou mwen pa t 'yo devlope yon kalite jwèt. Mwen te vle kreye yon sèn 3D ak kèk kalite karaktè. Li, oswa pito Li (mwen modle ti fi a mwen te renmen ak =) te oblije deplase ak kominike ak mond lan deyò. Li te sèlman enpòtan yo konprann ki sa Inite ye, ki sa pwosesis devlopman an ye, ak konbyen efò li pran pou kreye yon bagay. Se konsa pwojè Demo Achitèk la te fèt (non an te envante preske nan bouk la). Programming, modélisation, animation, texturing te pran m' pwobableman de mwa travay chak jou.

Mwen te kòmanse ak videyo leson patikilye sou YouTube sou kòman yo kreye modèl 3D nan Melanjeur. Blender se yon gwo zouti gratis pou modèl 3D (ak plis ankò) ki pa mande pou enstalasyon. Ak isit la yon chòk ap tann mwen ... Li sanble ke modèl, animasyon, teksti se gwo sijè separe sou ki ou ka ekri liv. Sa a se laverite espesyalman pou karaktè yo. Pou modèl dwèt, dan, je ak lòt pati nan kò a, w ap bezwen konesans nan anatomi. Ki jan misk figi yo ranje? Ki jan moun deplase? Mwen te oblije "mete" zo nan chak bra, janm, dwèt, je!

Modèl klavikul la, levye zo adisyonèl, se konsa ke animasyon an sanble natirèl. Apre leson sa yo, ou reyalize sa yon gwo travay kreyatè fim anime yo fè, jis yo kreye 30 segonn nan videyo. Men, fim 3D dire pou èdtan! Apre sa, nou soti nan teyat yo epi di yon bagay tankou: "Ta, yon desen anime / fim kaka! Yo te ka fè pi byen...” Moun fou!

Ak yon lòt bagay sou pwogramasyon nan pwojè sa a. Kòm li te tounen soti, pati ki pi enteresan pou mwen te youn nan matematik. Si ou kouri sèn nan (lyen nan depo a nan deskripsyon pwojè a), ou pral remake ke kamera a wotasyon alantou karaktè ti fi a nan yon esfè. Pou pwograme tankou yon wotasyon kamera, mwen te oblije premye kalkile kowòdone yo nan pwen an pozisyon sou sèk la (2D), ak Lè sa a, sou esfè a (3D). Bagay la komik se ke mwen te rayi matematik nan lekòl la ak te konnen li ak yon mwens. An pati, pwobableman, paske nan lekòl yo tou senpleman pa eksplike w ki jan lanfè matematik sa a aplike nan lavi. Men, lè ou obsede ak objektif ou, rèv, Lè sa a, lide a se otorize, revele! Epi ou kòmanse wè travay konplèks kòm yon avanti enteresan. Lè sa a, ou panse: "Oke, poukisa * mezanmi * matematisyen pa t 'kapab nòmalman di ki kote fòmil sa yo ka apiye?".

DevOps C++ ak "kwizin lagè", oswa Ki jan mwen te kòmanse ekri jwèt pandan m ap manje
Kalkil fòmil pou kalkile kowòdone yon pwen sou yon sèk ak sou yon esfè (ki soti nan kaye mwen an)

Jwèt 1

  • Platfòm: Windows (teste sou Windows 7, 10)
  • Lang: Mwen panse ke li te ekri nan pi C
  • Motè jwèt: Windows konsole
  • Enspirasyon: javidx9
  • Depo: GitHub

DevOps C++ ak "kwizin lagè", oswa Ki jan mwen te kòmanse ekri jwèt pandan m ap manje
Senp koulèv jwèt

Sèn nan 3D se pa yon jwèt. Anplis de sa, modèl ak anime objè 3D (sitou karaktè) se long ak difisil. Apre m fin jwe ak Unity, mwen reyalize ke mwen te oblije kontinye, oswa pito kòmanse, soti nan baz yo. Yon bagay ki senp epi vit, men an menm tan an mondyal, yo konprann estrikti nan anpil nan jwèt.

Ak sa nou genyen senp ak vit? Sa a dwat, konsole ak 2D. Plis jisteman, menm konsole a ak senbòl. Ankò, mwen te kòmanse chèche enspirasyon sou entènèt la (an jeneral, mwen konsidere entènèt la envansyon ki pi revolisyonè ak pi danjere nan XNUMXyèm syèk la). Mwen fouye yon videyo sou yon pwogramè ki te fè konsole Tetris. Ak nan resanblans jwèt li a, li te deside koupe "koulèv la". Soti nan videyo a, mwen te aprann sou de bagay fondamantal - bouk nan jwèt (ak twa fonksyon debaz / pati) ak pwodiksyon nan tanpon an.

Bouk jwèt la ta ka sanble yon bagay tankou sa a:

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

Kòd la prezante tout fonksyon prensipal () an konnye a. Ak sik jwèt la kòmanse apre kòmantè ki koresponn lan. Gen twa fonksyon debaz nan bouk la: Antre (), Lojik (), Trase (). Premyèman, antre done Antre (sitou kontwòl sou frap), Lè sa a, trete done yo antre Lojik, Lè sa a, montre sou ekran an - Trase. Se konsa, chak ankadreman. Animasyon kreye nan fason sa a. Se tankou desen anime. Anjeneral trete done yo opinyon pran plis tan epi, osi lwen ke mwen konnen, detèmine pousantaj la ankadreman nan jwèt la. Men, isit la fonksyon an lojik () trè vit. Se poutèt sa, to ankadreman an dwe kontwole pa fonksyon Sleep() ak paramèt gameSpeed ​​​​, ki detèmine pousantaj sa a.

DevOps C++ ak "kwizin lagè", oswa Ki jan mwen te kòmanse ekri jwèt pandan m ap manje
sik jwèt. Programmation koulèv nan notepad

Si w ap devlope yon jwèt konsole senbolik, Lè sa a, montre done sou ekran an lè l sèvi avèk pwodiksyon kouran an abityèl 'cout' pa pral travay - li trè dousman. Se poutèt sa, pwodiksyon an dwe te pote soti nan tanpon ekran an. Se konsa, pi vit ak jwèt la ap travay san pepen. Yo dwe onèt, mwen pa byen konprann ki sa yon tanpon ekran se ak ki jan li fonksyone. Men, mwen pral bay yon egzanp kòd isit la, e petèt yon moun nan kòmantè yo pral kapab klarifye sitiyasyon an.

Jwenn tanpon ekran an (si mwen ka di sa):

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

Pwodiksyon dirèk sou ekran yon sèten liy scoreLine (liy pou montre nòt):

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

Nan teyori, pa gen anyen konplike nan jwèt sa a, li sanble m 'yon bon egzanp nan yon jwèt nivo antre. Kòd la ekri nan yon sèl dosye ak ranje nan plizyè fonksyon. Pa gen klas, pa gen eritaj. Ou menm ou ka wè tout bagay nan kòd sous jwèt la lè w ale nan depo a sou GitHub.

Jwèt 2 fou tank

DevOps C++ ak "kwizin lagè", oswa Ki jan mwen te kòmanse ekri jwèt pandan m ap manje
Jwèt Fou tank

Enprime karaktè nan konsole a se pwobableman bagay ki pi senp ou ka vire nan yon jwèt. Men, Lè sa a, yon pwoblèm parèt: karaktè yo gen diferan wotè ak lajè (wotè a pi gran pase lajè a). Kidonk, tout bagay pral parèt disproporsyone, epi deplase desann oswa moute pral sanble pi vit pase deplase agoch ​​oswa dwa. Efè sa a trè aparan nan "Snake" (jwèt 1). "Tank" (jwèt 2) pa gen tankou yon dezavantaj, depi pwodiksyon an gen òganize pa pentire piksèl ekran yo ak koulè diferan. Ou ta ka di mwen te ekri yon rann. Vrè, sa a se deja yon ti kras pi konplike, byenke pi plis enteresan.

Pou jwèt sa a, li pral ase yo dekri sistèm mwen an pou montre piksèl sou ekran an. Mwen panse ke sa a se pati prensipal la nan jwèt la. Ak tout lòt bagay ou ka vini ak tèt ou.

Se konsa, sa ou wè sou ekran an se jis yon seri rektang ki gen koulè pal k ap deplase.

DevOps C++ ak "kwizin lagè", oswa Ki jan mwen te kòmanse ekri jwèt pandan m ap manje
Rektang ansanm

Chak rektang reprezante pa yon matris ki ranpli ak nimewo. By wout la, mwen ka mete aksan sou yon sèl nuans enteresan - tout matris yo nan jwèt la yo pwograme kòm yon etalaj yon sèl dimansyon. Pa de dimansyon, men yon sèl dimansyon! Etalaj ki genyen yon dimansyon yo pi fasil ak pi vit pou travay avèk yo.

DevOps C++ ak "kwizin lagè", oswa Ki jan mwen te kòmanse ekri jwèt pandan m ap manje
Yon egzanp yon matris tank jwèt

DevOps C++ ak "kwizin lagè", oswa Ki jan mwen te kòmanse ekri jwèt pandan m ap manje
Reprezante Matris la nan yon tank jwèt ak yon etalaj yon sèl dimansyon

DevOps C++ ak "kwizin lagè", oswa Ki jan mwen te kòmanse ekri jwèt pandan m ap manje
Yon egzanp plis ilistratif nan yon reprezantasyon matris pa yon etalaj yon sèl dimansyon

Men, aksè nan eleman yo nan etalaj la rive nan yon bouk doub, kòm si li pa t 'yon yon dimansyon, men yon etalaj ki genyen de dimansyon. Sa fèt paske nou toujou ap travay ak matris.

DevOps C++ ak "kwizin lagè", oswa Ki jan mwen te kòmanse ekri jwèt pandan m ap manje
Travèse yon etalaj ki genyen yon dimansyon nan yon bouk doub. Y se ID ranje a, X se ID kolòn

Tanpri sonje ke olye pou yo idantifyan matris abityèl yo i, j, mwen itilize idantifyan yo x ak y. Se konsa, li sanble m ', plis plezi nan je a ak pi klè nan sèvo a. Anplis de sa, yon notasyon konsa fè li posib byen pwojte matris yo itilize sou aks kowòdone yo nan yon imaj ki genyen de dimansyon.

Koulye a, sou piksèl, koulè ak ekspozisyon. Fonksyon StretchDIBits (Header: windows.h; Bibliyotèk: gdi32.lib) yo itilize pou pwodiksyon an. Pami lòt bagay, sa ki annapre yo pase nan fonksyon sa a: aparèy sou ki montre imaj la (nan ka mwen an, sa a se konsole Windows la), kowòdone yo nan kòmansman an nan montre imaj la, lajè / wotè li yo, ak imaj la. tèt li nan fòm yon bitmap (bitmap), reprezante pa yon etalaj de bytes. Bitmap kòm yon etalaj de bytes!

Fonksyon StretchDIBits() nan travay la:

// 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
               );

Yo bay memwa davans pou bitmap sa a lè l sèvi avèk fonksyon VirtualAlloc(). Sa vle di, kantite bytes ki nesesè yo rezève pou sere enfòmasyon sou tout piksèl, ki pral parèt sou ekran an.

Kreye yon bitmap m_p_bitmapMemory:

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

Apeprè pale, yon bitmap konsiste de yon seri piksèl. Chak kat byte nan etalaj la se yon pixel RGB. Yon byte pou chak valè wouj, yon byte pou chak valè vèt (G), ak yon byte pou chak koulè ble (B). Anplis de sa, gen yon byte pou chak indent. Twa koulè sa yo - Wouj / Vèt / Ble (RGB) - yo melanje youn ak lòt nan pwopòsyon diferan - ak koulè pixel ki kapab lakòz yo jwenn.

Koulye a, ankò, chak rektang, oswa objè jwèt, reprezante pa yon matris nimewo. Tout bagay sa yo jwèt yo mete nan yon koleksyon. Lè sa a, yo mete yo sou jaden an ap jwe, fòme yon gwo matris nimerik. Mwen te trase chak nimewo nan matris la nan yon koulè espesifik. Pou egzanp, nimewo 8 la se ble, nimewo 9 la se jòn, nimewo 10 la se gri fonse, ak sou sa. Kidonk, nou ka di ke nou gen yon matris nan jaden an jwe, kote chak nimewo se yon kalite koulè.

Se konsa, nou gen yon matris nimerik nan tout jaden an jwe sou yon bò ak yon bitmap pou montre imaj la sou lòt la. Jiskaprezan, bitmap la "vid" - li poko gen enfòmasyon sou piksèl koulè vle a. Sa vle di ke dènye etap la pral ranpli bitmap la ak enfòmasyon sou chak pixel ki baze sou matris nimerik jaden an ap jwe. Yon egzanp ilistrasyon transfòmasyon sa a se nan foto ki anba a.

DevOps C++ ak "kwizin lagè", oswa Ki jan mwen te kòmanse ekri jwèt pandan m ap manje
Yon egzanp ranpli yon bitmap (Pixel matris) ak enfòmasyon ki baze sou matris la nimerik (Digital matris) nan jaden an jwe (endis koulè pa matche ak endis yo nan jwèt la)

Mwen pral prezante tou yon moso nan kòd reyèl nan jwèt la. ColorIndex varyab nan chak iterasyon nan bouk la bay yon valè (endèks koulè) ki soti nan matris nimerik nan jaden an jwe (mainDigitalMatrix). Lè sa a, koulè a ​​li menm ekri nan varyab koulè a ​​ki baze sou endèks la. Pli lwen, koulè ki kapab lakòz la divize an rapò wouj, vèt ak ble (RGB). Epi ansanm ak indent la (pixelPadding), enfòmasyon sa a ekri sou pixel la plizyè fwa, fòme yon imaj koulè nan bitmap la.

Kòd la sèvi ak endikasyon ak operasyon bit, ki ka difisil pou konprann. Se konsa, mwen konseye w li separeman yon kote ki jan estrikti sa yo travay.

Ranpli yon bitmap ak enfòmasyon ki baze sou matris nimerik jaden an jwe:

// 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;
   }

Dapre metòd ki dekri pi wo a, se yon foto (ankadreman) ki fòme nan jwèt la Crazy Tanks epi parèt sou ekran an nan Draw() fonksyon an. Apre anrejistreman frap nan fonksyon an Input() ak pwosesis ki vin apre yo nan fonksyon an lojik () , yon nouvo foto (ankadreman) fòme. Se vre, objè jwèt yo ka deja gen yon pozisyon diferan sou teren an ap jwe epi, kòmsadwa, yo trase nan yon kote ki diferan. Men ki jan animasyon (mouvman) rive.

Nan teyori (si ou pa bliye anyen), konprann bouk jwèt la soti nan premye jwèt la ("Snake") ak sistèm pou montre piksèl sou ekran an soti nan dezyèm jwèt la ("Tank") se tout sa ou bezwen ekri nenpòt. nan jwèt 2D ou pou Windows. San son! 😉 Rès pati yo se jis yon vòl anpenpan.

Natirèlman, jwèt la "Tank" fèt pi konplike pase "koulèv la". Mwen deja itilize langaj C++, se sa ki, mwen dekri diferan objè jwèt ak klas yo. Mwen te kreye pwòp koleksyon mwen - ou ka wè kòd la nan headers/Box.h. By wout la, koleksyon an gen plis chans gen yon koule memwa. Itilize endikasyon. Te travay ak memwa. Mwen dwe di ke liv la te ede m anpil. Kòmanse C++ Atravè pwogramasyon jwèt. Sa a se yon bon kòmansman pou débutan nan C++. Li ti, enteresan e byen òganize.

Li te pran apeprè sis mwa pou devlope jwèt sa a. Mwen te ekri sitou pandan manje midi ak ti goute nan travay. Li te chita nan kwizin nan biwo a, stomped sou manje ak ekri kòd. Oswa lakay ou pou dine. Se konsa, mwen te resevwa tankou "lagè kwizin". Kòm toujou, mwen aktivman itilize yon kaye, ak tout bagay konseptyèl yo te fèt nan li.

Nan fen pati pratik la, mwen pral rale kèk eskanè nan kaye mwen an. Pou montre sa egzakteman mwen t ap ekri, desine, konte, konsepsyon...

DevOps C++ ak "kwizin lagè", oswa Ki jan mwen te kòmanse ekri jwèt pandan m ap manje
Konsepsyon imaj tank la. Ak definisyon an nan konbyen piksèl chak tank ta dwe okipe sou ekran an

DevOps C++ ak "kwizin lagè", oswa Ki jan mwen te kòmanse ekri jwèt pandan m ap manje
Kalkil algorithm la ak fòmil pou wotasyon tank la alantou aks li yo

DevOps C++ ak "kwizin lagè", oswa Ki jan mwen te kòmanse ekri jwèt pandan m ap manje
Dyagram nan koleksyon mwen an (yon sèl la ki gen koule nan memwa, gen plis chans). Koleksyon an kreye kòm yon Lis Linked

DevOps C++ ak "kwizin lagè", oswa Ki jan mwen te kòmanse ekri jwèt pandan m ap manje
Ak sa yo se tantativ initil vis entèlijans atifisyèl nan jwèt la

Teyori

"Menm yon vwayaj de mil mil kòmanse ak premye etap la" (Ansyen bon konprann Chinwa)

Ann pase nan pratik nan teyori! Ki jan ou jwenn tan pou plezi ou a?

  1. Detèmine sa ou vle reyèlman (ay, sa a se pi difisil la).
  2. Mete priyorite.
  3. Skrifis tout "superflu" pou dedomajman pou pi gwo priyorite.
  4. Avanse nan objektif ou chak jou.
  5. Pa atann ke pral gen de oswa twa èdtan nan tan lib pou yon plezi.

Sou yon bò, ou bezwen detèmine sa ou vle ak priyorite. Nan lòt men an, li posib abandone kèk ka / pwojè an favè priyorite sa yo. Nan lòt mo, ou pral oblije sakrifye tout bagay "superflu". Mwen tande yon kote ke nan lavi ta dwe gen yon maksimòm de twa aktivite prensipal yo. Lè sa a, ou pral kapab fè fas ak yo nan pi bon fason posib. Ak lòt pwojè/direksyon yo pral kòmanse twò chaje ridicule. Men, sa a se tout, pwobableman, subjectif ak endividyèl.

Gen yon sèten règ an lò: pa janm gen yon jou 0%! Mwen te aprann sou li nan yon atik pa yon pwomotè endepandan. Si w ap travay sou yon pwojè, Lè sa a, fè yon bagay sou li chak jou. Epi li pa enpòtan konbyen lajan ou fè. Ekri yon mo oswa yon liy kòd, gade yon videyo leson patikilye, oswa mato yon klou nan tablo a-jis fè yon bagay. Pati ki pi difisil la se kòmanse. Yon fwa ou kòmanse, ou pral pwobableman fè yon ti kras plis pase ou te vle. Se konsa, ou pral toujou ap deplase nan direksyon pou objektif ou epi, kwè m ', trè vit. Apre yo tout, fren prensipal la sou tout bagay se procrastination.

Epi li enpòtan sonje ke ou pa ta dwe underestimate ak inyore gratis "syur la" nan tan nan 5, 10, 15 minit, rete tann pou kèk gwo "mòso bwa" ki dire yon èdtan oswa de. Èske w kanpe nan liy? Panse osijè de yon bagay pou pwojè ou. Èske w ap monte èskalator la? Ekri yon bagay nan yon kaye. Ou manje nan bis la? Oke, li kèk atik. Sèvi ak tout opòtinite. Sispann gade chat ak chen sou YouTube! Pa dezòd ak sèvo ou!

Ak dènye a. Si, apre ou fin li atik sa a, ou te renmen lide pou kreye jwèt san yo pa itilize motè jwèt, Lè sa a, sonje non Casey Muratori. Nèg sa a genyen sit entènèt. Nan seksyon "gade -> EPIZOD ANVAN" ou pral jwenn etonan leson patikilye videyo gratis sou kòman yo kreye yon jwèt pwofesyonèl nan grate. Ou ka aprann plis nan senk leson Intro to C pou Windows pase nan senk ane etid nan inivèsite a (yon moun te ekri sou sa a nan kòmantè yo anba videyo a).

Casey eksplike tou ke lè w devlope pwòp motè jwèt ou a, w ap gen yon pi bon konpreyansyon sou nenpòt motè ki egziste deja. Nan mond lan nan kad, kote tout moun ap eseye otomatize, ou pral aprann ki jan yo kreye, pa itilize. Konprann nati a nan òdinatè yo. Epi ou pral tou vin yon pwogramè pi entelijan ak matirite - yon pwofesyonèl.

Bon chans sou chemen ou chwazi a! Epi ann fè mond lan pi pwofesyonèl.

Author: Grankin Andrey, DevOps



Sous: www.habr.com