"Rwy'n gwybod nad wyf yn gwybod dim" Socrates
I bwy: Ar gyfer gweithwyr proffesiynol TG nad ydyn nhw'n malio dim am ddatblygwyr eraill ac sydd eisiau chwarae eu gemau eu hunain!
Ynglŷn â beth: Sut i ddechrau ysgrifennu gemau yn C/C++, os oes angen i chi wneud hynny'n sydyn!
Pam ddylech chi ddarllen hwn: Nid datblygu apiau yw fy arbenigedd i, ond rwy'n ceisio codio bob wythnos oherwydd fy mod i wrth fy modd â gemau!
Helô, fy enw i yw Rwy'n arbenigwr DevOps yn Luxoft. Er nad datblygu apiau yw fy arbenigedd, rwy'n dal i geisio codio bob wythnos oherwydd fy mod i wrth fy modd â gemau!
Mae diwydiant gemau cyfrifiadurol yn enfawr, a dywedir ei fod hyd yn oed yn fwy na'r diwydiant ffilm heddiw. Mae gemau wedi cael eu hysgrifennu ers dechrau cyfrifiadura, gan ddefnyddio dulliau datblygu sy'n gymhleth ac yn sylfaenol yn ôl safonau heddiw. Dros amser, dechreuodd peiriannau gemau ymddangos gyda graffeg, ffiseg a sain wedi'u rhaglennu ymlaen llaw. Mae'r peiriannau hyn yn caniatáu i ddatblygwyr ganolbwyntio ar ddatblygu'r gêm ei hun a pheidio â phoeni am ei sylfaen. Ond gyda'r peiriannau hyn, mae datblygwyr yn dod yn "ddall" ac yn cael eu diraddio. Mae cynhyrchu gemau ei hun yn cael ei israddio i linell gydosod. Ac mae maint yn dechrau drechu ansawdd.
Ar yr un pryd, pan rydyn ni'n chwarae gemau pobl eraill, rydyn ni'n cael ein cyfyngu'n gyson gan y lleoliadau, y plotiau, y cymeriadau, a mecanweithiau gemau y mae pobl eraill wedi'u creu. Felly sylweddolais fod...
…mae’r amser wedi dod i greu fy mydoedd fy hun, dan fy rheolaeth i yn unig. Bydoedd lle’r wyf i’n Dad, y Mab, a’r Ysbryd Glân!
Ac rwy'n credu'n ddiffuant, trwy ysgrifennu eich injan gêm eich hun a gêm arno, y byddwch chi'n gallu agor eich llygaid, glanhau eich ffenestri, ac uwchraddio'ch talwrn, gan ddod yn rhaglennwr mwy profiadol a chyflawn.
Yn yr erthygl hon, byddaf yn ceisio egluro sut y dechreuais ysgrifennu gemau bach yn C/C++, beth yw'r broses ddatblygu, a sut rwy'n dod o hyd i amser ar gyfer fy hobi yng nghanol amserlen brysur. Mae'n oddrychol ac yn disgrifio proses cychwyn unigol. Mae'n stori am anwybodaeth a ffydd, am fy safbwynt personol ar y byd ar hyn o bryd. Mewn geiriau eraill, "Nid yw'r weinyddiaeth yn gyfrifol am eich meddyliau personol!"
Ymarfer
"Mae gwybodaeth heb ymarfer yn ddiwerth, mae ymarfer heb wybodaeth yn beryglus" Confucius
Fy llyfr nodiadau yw fy mywyd!
Felly, yn ymarferol, gallaf ddweud, i mi, fod popeth yn dechrau gyda llyfr nodiadau. Rwy'n ei ddefnyddio nid yn unig ar gyfer ysgrifennu fy nhasgau dyddiol i lawr, ond hefyd ar gyfer lluniadu, rhaglennu, llunio siartiau llif, a datrys problemau, gan gynnwys problemau mathemateg. Defnyddiwch lyfr nodiadau bob amser ac ysgrifennwch mewn pensil yn unig. Mae'n lân, yn gyfleus, ac yn ddibynadwy, yn fy marn i.

Fy llyfr nodiadau (sydd eisoes wedi'i lenwi). Dyma sut olwg sydd arno. Mae'n cynnwys tasgau bob dydd, syniadau, lluniadau, diagramau, atebion, cadw llyfrau du, cod, ac yn y blaen.
Ar y cam hwn, rydw i wedi llwyddo i gwblhau tri phrosiect (dyma fy nealltwriaeth i o "gyflawnder", gan y gellir datblygu unrhyw gynnyrch yn gymharol ddiddiwedd).
- Prosiect 0: Golygfa 3D o Architect Demo yw hon, wedi'i hysgrifennu yn C# gan ddefnyddio injan gêm Unity. Ar gyfer llwyfannau macOS и Windows.
- Gêm 1: gêm consol Simple Snake (a adnabyddir i bawb fel "Snake") o dan WindowsYsgrifennwyd yn C.
- Gêm 2: gêm consol Crazy Tanks (a adnabyddir i bawb fel "Tanks"), wedi'i hysgrifennu yn C++ (gan ddefnyddio dosbarthiadau) a hefyd o dan Windows.
Prosiect 0. Demo Pensaer
- Platfform: Windows (Windows 7, 10), Mac OS (OS X El Capitan v. 10.11.6)
- Iaith: C#
- Peiriant Gêm:
- Ysbrydoliaeth:
- Ystorfa:

Demo Pensaer Golygfeydd 3D
Gweithredwyd y prosiect cyntaf nid yn C/C++, ond yn C# gan ddefnyddio injan gêm Unity. Nid oedd yr injan hon mor heriol ar galedwedd ag , ac roeddwn i hefyd yn ei chael hi'n haws i'w osod a'i ddefnyddio. Wnes i ddim ystyried peiriannau eraill.
Fy nod gydag Unity oedd ddim datblygu gêm. Roeddwn i eisiau creu golygfa 3D gyda chymeriad. Roedd rhaid iddo fe, neu yn hytrach Hi (modelais y ferch roeddwn i'n swyno amdani =) symud a rhyngweithio â'r byd o'i gwmpas. Yr unig beth pwysig oedd deall Unity, ei broses ddatblygu, a faint o ymdrech sydd ei angen i greu rhywbeth. Dyna sut y ganwyd y prosiect Architect Demo (roedd yr enw bron yn un ar hap). Cymerodd rhaglennu, modelu, animeiddio a gweadu ddau fis o waith dyddiol i mi, yn ôl pob tebyg.
Dechreuais gyda fideos hyfforddi ar YouTube ar greu modelau 3D yn Mae Blender yn offeryn rhagorol am ddim ar gyfer modelu 3D (a mwy), heb fod angen ei osod. Ac yma cefais fy synnu... Mae'n ymddangos bod modelu, animeiddio a gweadu yn bynciau enfawr ynddynt eu hunain, pynciau a allai lenwi llyfrau cyfan. Mae hyn yn arbennig o wir am gymeriadau. I fodelu bysedd, dannedd, llygaid a rhannau eraill o'r corff, bydd angen dealltwriaeth drylwyr o anatomeg arnoch. Sut mae cyhyrau'r wyneb wedi'u strwythuro? Sut mae pobl yn symud? Roedd yn rhaid i mi "fewnosod" esgyrn i bob braich, coes, bys a phalangau!
Mae modelu asgwrn cefn ac esgyrn lifer ychwanegol yn gwneud i'r animeiddiad edrych yn naturiol. Ar ôl gwersi fel y rhain, rydych chi'n sylweddoli faint o waith mae gwneuthurwyr ffilmiau animeiddiedig yn ei wneud i greu 30 eiliad o fideo. Mae ffilmiau 3D yn oriau o hyd! Ac yna rydyn ni'n cerdded allan o'r theatrau ac yn dweud pethau fel, "Am gartŵn/ffilm ofnadwy! Gallen nhw fod wedi gwneud yn well..." Ffyliaid!
Ac un peth arall am y rhaglennu yn y prosiect hwn. Mae'n debyg mai'r rhan fwyaf diddorol i mi oedd y mathemateg. Os byddwch chi'n rhedeg yr olygfa (mae'r ddolen i'r storfa yn nisgrifiad y prosiect), fe sylwch chi fod y camera'n cylchdroi o amgylch cymeriad y ferch ar sffêr. I raglennu'r cylchdro camera hwn, roedd yn rhaid i mi gyfrifo cyfesurynnau'r pwynt safle ar gylch (2D) yn gyntaf, ac yna ar sffêr (3D). Y peth mwyaf doniol yw fy mod i'n casáu mathemateg yn yr ysgol ac prin y cefais C- ynddi. Yn rhannol, mae'n debyg, oherwydd nad ydyn nhw'n egluro i chi sut mae'r mathemateg hon yn berthnasol i fywyd. Ond pan fyddwch chi'n obsesiynol â'ch nod, mae eich breuddwyd, eich meddwl yn clirio, yn agor! Ac rydych chi'n dechrau gweld problemau cymhleth fel antur gyffrous. Ac yna rydych chi'n meddwl, "Pam na allai fy athro mathemateg *hoff* fod wedi egluro'n iawn ble gellir defnyddio'r fformwlâu hyn?"

Cyfrifo fformiwlâu ar gyfer cyfrifo cyfesurynnau pwynt ar gylch ac ar sffêr (o fy llyfr nodiadau)
Gêm 1. Neidr Syml
- Platfform: Windows (wedi'i brofi ar Windows 7, 10)
- Iaith: Dw i'n meddwl iddo ei ysgrifennu mewn C pur
- Peiriant Gêm: y consol Windows
- Ysbrydoliaeth:
- Ystorfa:

Gêm Neidr Syml
Nid gêm yw golygfa 3D. Ar ben hynny, mae modelu ac animeiddio gwrthrychau 3D (yn enwedig cymeriadau) yn cymryd llawer o amser ac yn anodd. Ar ôl chwarae o gwmpas gydag Unity, sylweddolais fod angen i mi barhau, neu yn hytrach, dechrau o'r pethau sylfaenol. Rhywbeth syml a chyflym, ond eto'n gynhwysfawr, er mwyn deall hanfodion gemau.
Beth sy'n syml ac yn gyflym? Dyna'n union, consol a 2D. Yn fwy manwl gywir, consol a symbolau. Troais at y rhyngrwyd unwaith eto am ysbrydoliaeth (rwy'n gyffredinol yn ystyried y rhyngrwyd fel y ddyfais fwyaf chwyldroadol a pheryglus yn yr 21ain ganrif). Des i o hyd i fideo o raglennydd yn gwneud Tetris yn seiliedig ar gonsol. Penderfynais wneud gêm "Neidr" yn seiliedig ar ei gêm. O'r fideo, dysgais ddau beth sylfaenol: dolen y gêm (gyda thri swyddogaeth/rhan sylfaenol) ac allbwn i'r byffer.
Gallai dolen y gêm edrych fel hyn:
int main()
{
Setup();
// a game loop
while (!quit)
{
Input();
Logic();
Draw();
Sleep(gameSpeed); // game timing
}
return 0;
}
Mae'r cod yn cyflwyno'r swyddogaeth main() gyfan ar unwaith. Mae dolen y gêm yn dechrau ar ôl y sylw cyfatebol. Mae'r ddolen yn cynnwys tair swyddogaeth sylfaenol: Input(), Logic(), a Draw(). Yn gyntaf, caiff data ei fewnbynnu (Input) (monitro pwyso allweddi yn bennaf), yna caiff y mewnbwn ei brosesu (Logic), ac yna ei allbynnu i'r sgrin (Draw). Mae'r broses hon yn digwydd bob ffrâm. Dyma sut mae animeiddiad yn cael ei greu, fel mewn cartwnau wedi'u tynnu â llaw. Fel arfer, prosesu data mewnbwn sy'n cymryd y mwyaf o amser ac, hyd y gwn i, mae'n pennu cyfradd ffrâm y gêm. Ond yma, mae Logic() yn gweithredu'n gyflym iawn. Felly, mae'r gyfradd ffrâm yn cael ei rheoli gan y swyddogaeth Sleep() gyda'r paramedr gameSpeed, sy'n pennu'r gyfradd hon.

Dolen Gêm: Rhaglennu Neidr yn Notepad
Os ydych chi'n datblygu gêm gonsol sy'n seiliedig ar gymeriadau, allwch chi ddim allbynnu data i'r sgrin gan ddefnyddio'r allbwn ffrwd 'cout' rheolaidd—mae'n araf iawn. Felly, mae angen i chi allbynnu i glustog sgrin. Mae hyn yn llawer cyflymach a bydd y gêm yn rhedeg heb broblemau. A dweud y gwir, dydw i ddim yn deall yn iawn beth yw glustog sgrin na sut mae'n gweithio. Ond byddaf yn rhoi enghraifft cod i chi yma, ac efallai y gall rhywun yn y sylwadau daflu rhywfaint o oleuni ar hyn.
Cael y byffer sgrin (os gallwch chi ei alw'n hynny):
// create screen buffer for drawings
HANDLE hConsole = CreateConsoleScreenBuffer(GENERIC_READ | GENERIC_WRITE, 0,
NULL, CONSOLE_TEXTMODE_BUFFER, NULL);
DWORD dwBytesWritten = 0;
SetConsoleActiveScreenBuffer(hConsole);
Allbwn uniongyrchol i'r sgrin o linell sgôr benodol (llinell arddangos sgôr):
// draw the score
WriteConsoleOutputCharacter(hConsole, scoreLine, GAME_WIDTH, {2,3}, &dwBytesWritten);
Does dim byd cymhleth am y gêm hon, ac rwy'n credu ei bod yn enghraifft dda ar gyfer lefel mynediad. Mae'r cod wedi'i ysgrifennu mewn un ffeil ac wedi'i drefnu'n sawl swyddogaeth. Does dim dosbarthiadau nac etifeddiaeth. Gallwch weld popeth drosoch eich hun yng nghod ffynhonnell y gêm trwy ymweld â storfa GitHub.
Gêm 2. Tanciau Gwallgof
- Platfform: Windows (wedi'i brofi ar Windows 7, 10)
- Iaith: C + +
- Peiriant Gêm: y consol Windows
- Ysbrydoliaeth: llyfr
- Ystorfa:

Gêm Tanciau Crazy
Allbynnu cymeriadau i'r consol yw'r peth symlaf y gallwch chi ei droi'n gêm, mae'n debyg. Ond yna mae problem: mae gan y cymeriadau wahanol uchderau a lledau (maen nhw'n dalach nag ydyn nhw'n lled). Mae hyn yn gwneud i bopeth edrych yn anghymesur, ac mae symud i fyny neu i lawr yn teimlo'n llawer cyflymach na symud i'r chwith neu'r dde. Mae'r effaith hon yn amlwg iawn yn Snake (Gêm 1). Nid oes gan Tanks (Gêm 2) y broblem hon, gan fod ei allbwn wedi'i drefnu trwy liwio picseli'r sgrin. Gallech ddweud fy mod i wedi ysgrifennu rendrwr. Yn wir, mae ychydig yn fwy cymhleth, ond yn llawer mwy diddorol.
Ar gyfer y gêm hon, mae'n ddigon disgrifio fy system ar gyfer arddangos picseli ar y sgrin. Rwy'n ystyried hyn yn graidd y gêm. Gallwch chi feddwl am y gweddill eich hun.
Felly, yr hyn a welwch ar y sgrin yw set o betryalau aml-liw symudol yn unig.

Set o betryalau
Mae pob petryal yn cael ei gynrychioli gan fatrics sy'n llawn rhifau. Gyda llaw, gallaf dynnu sylw at un manylyn diddorol: mae pob matrics yn y gêm wedi'i raglennu fel araeau un dimensiwn. Nid dau ddimensiwn, ond un dimensiwn! Mae araeau un dimensiwn yn llawer haws ac yn gyflymach i weithio gyda nhw.

Enghraifft o fatrics tanc gêm

Cynrychiolaeth o fatrics tanc y gêm fel arae un dimensiwn

Enghraifft fwy gweledol o gynrychioli matrics fel arae un dimensiwn
Ond mae mynediad i elfennau'r arae yn digwydd mewn dolen ddwbl, fel pe bai'n arae dau ddimensiwn yn hytrach nag un un dimensiwn. Mae hyn oherwydd ein bod ni'n gweithio gyda matricsau, wedi'r cyfan.

Yn croesi arae un dimensiwn mewn dolen ddwbl. Y yw'r dynodwr rhes, X yw'r dynodwr colofn.
Noder: yn lle'r dynodwyr matrics arferol i a j, rwy'n defnyddio'r dynodwyr x ac y. Rwy'n credu bod hyn yn fwy pleserus i'r llygad ac yn haws i'r ymennydd ei ddeall. Ar ben hynny, mae'r nodiant hwn yn caniatáu taflunio'r matricsau a ddefnyddir yn gyfleus ar echelinau cyfesurynnau delwedd dau ddimensiwn.
Nawr am bicseli, lliw, ac allbwn sgrin. Ar gyfer allbwn, defnyddir y ffwythiant StretchDIBits (Pennawd: windows.h; Llyfrgell: gdi32.lib). Ymhlith pethau eraill, mae'r ffwythiant hwn yn cael ei basio'r canlynol: y ddyfais y mae'r ddelwedd yn cael ei hallbynnu iddi (yn fy achos i, y consol). Windows), cyfesurynnau cychwyn arddangosfa'r ddelwedd, ei lled/uchder, a'r ddelwedd ei hun fel map bit a gynrychiolir gan arae beit. Map bit fel arae beit!
Y ffwythiant StretchDIBits() ar waith:
// 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
);
Mae cof ar gyfer y bitmap hwn yn cael ei ddyrannu ymlaen llaw gan ddefnyddio'r ffwythiant VirtualAlloc(). Mae hyn yn golygu bod y nifer gofynnol o beitiau wedi'u cadw i storio gwybodaeth am yr holl bicseli a fydd yn cael eu harddangos ar y sgrin yn ddiweddarach.
Creu'r map bit 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);
Yn fras, mae bitmap yn cynnwys set o bicseli. Mae pob pedwar beit yn yr arae yn bicsel RGB. Mae un beit ar gyfer y gwerth lliw coch, un beit ar gyfer y lliw gwyrdd (G), ac un beit ar gyfer y lliw glas (B). Mae un beit ar ôl hefyd ar gyfer padio. Mae'r tri lliw hyn—Coch/Gwyrdd/Glas (RGB)—yn cael eu cymysgu gyda'i gilydd mewn cyfrannau amrywiol i gynhyrchu'r lliw picsel sy'n deillio o hynny.
Nawr, i ailadrodd, mae pob petryal, neu wrthrych gêm, yn cael ei gynrychioli gan fatrics rhifiadol. Mae'r holl wrthrychau gêm hyn yn cael eu rhoi mewn casgliad ac yna'u trefnu o amgylch bwrdd y gêm, gan ffurfio un matrics rhifiadol mawr. Rwyf wedi cysylltu pob rhif yn y matrics â lliw penodol. Er enghraifft, mae'r rhif 8 yn cyfateb i las, y rhif 9 i felyn, y rhif 10 i lwyd tywyll, ac yn y blaen. Felly, gallwn ddweud bod gennym fatrics o fwrdd y gêm, lle mae pob rhif yn cynrychioli lliw.
Felly, mae gennym fatrics rhifiadol o'r bwrdd gêm cyfan ar un ochr a map bit ar gyfer arddangos y ddelwedd ar yr ochr arall. Ar hyn o bryd, mae'r map bit yn "wag"—nid yw eto'n cynnwys gwybodaeth am y picseli o'r lliw a ddymunir. Mae hyn yn golygu mai'r cam olaf yw llenwi'r map bit â gwybodaeth am bob picsel yn seiliedig ar fatrics rhifiadol y bwrdd gêm. Dangosir enghraifft glir o'r trawsnewidiad hwn yn y ddelwedd isod.

Enghraifft o lenwi bitmap (matrics picsel) gyda gwybodaeth yn seiliedig ar fatrics digidol y cae chwarae (nid yw'r mynegeion lliw yn cyfateb i'r mynegeion yn y gêm)
Byddaf hefyd yn darparu darn o god gwirioneddol o'r gêm. Mae'r newidyn colorIndex yn cael gwerth (mynegai lliw) o fatrics rhifol maes y gêm (mainDigitalMatrix) ym mhob iteriad dolen. Yna mae'r newidyn lliw yn cael ei neilltuo'r lliw yn seiliedig ar y mynegai hwn. Yna caiff y lliw sy'n deillio o hyn ei rannu'n gymhareb coch, gwyrdd a glas (RGB). Mae'r wybodaeth hon, ynghyd â'r padio (pixelPadding), yn cael ei hysgrifennu i bob picsel, gan ffurfio delwedd lliw yn y map bit.
Mae'r cod yn defnyddio pwyntyddion a gweithrediadau bitwise, a all fod yn anodd eu deall. Felly rwy'n argymell gwneud rhywfaint o ddarllen ychwanegol ar sut mae'r adeiladweithiau hyn yn gweithio.
Llenwi'r bitmap gyda gwybodaeth yn seiliedig ar fatrics rhifiadol y cae chwarae:
// 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;
}
Gan ddefnyddio'r dull a ddisgrifiwyd uchod, cynhyrchir un ddelwedd (ffrâm) yn Crazy Tanks a'i harddangos ar y sgrin gan ddefnyddio'r ffwythiant Draw(). Ar ôl i drawiadau allweddi gael eu cofrestru yn y ffwythiant Input() ac yna eu prosesu yn y ffwythiant Logic(), cynhyrchir delwedd (ffrâm) newydd. Fodd bynnag, gall gwrthrychau gêm gael eu lleoli'n wahanol ar y cae chwarae nawr ac, felly, eu llunio mewn lleoliad gwahanol. Dyma sut mae animeiddio (symudiad) yn digwydd.
Mewn theori (os nad ydw i wedi anghofio dim), deall dolen y gêm o'r gêm gyntaf (Snake) a'r system arddangos picsel o'r ail gêm (Tanks) yw'r cyfan sydd ei angen arnoch chi i ysgrifennu unrhyw gêm 2D eich hun. WindowsDim sain! 😉 Dim ond ffantasi yw gweddill y rhannau.
Wrth gwrs, mae'r gêm "Tanks" yn llawer mwy cymhleth i'w hadeiladu na "Snake". Defnyddiais C++, a oedd yn golygu fy mod i wedi defnyddio dosbarthiadau i ddisgrifio gwahanol wrthrychau gêm. Creais fy nghasgliad fy hun—gallwch weld y cod yn headers/Box.h. Gyda llaw, mae'n fwyaf tebygol bod gan y casgliad gollyngiad cof. Defnyddiais bwyntyddion a gweithiais gyda chof. Rhaid i mi ddweud bod y llyfr yn ddefnyddiol iawn. Dechrau C++ Trwy Raglennu GemauMae hwn yn ddechrau gwych i ddechreuwyr C++. Mae'n fyr, yn ddiddorol, ac wedi'i drefnu'n dda.
Cymerodd tua chwe mis i mi ddatblygu'r gêm hon. Ysgrifennais hi yn bennaf yn ystod cinio a byrbrydau yn y gwaith. Byddwn i'n eistedd yng nghegin y swyddfa, yn sathru ar nwyddau bwyd, ac yn ysgrifennu cod. Neu byddwn i'n bwyta cinio gartref. Dyna sut y cefais y "rhyfeloedd cegin" hyn. Fel bob amser, gwnes i ddefnydd helaeth o lyfr nodiadau, ac yno y ganwyd yr holl syniadau cysyniadol.
I gloi’r rhan ymarferol, byddaf yn rhannu ychydig o sganiau o fy llyfr nodiadau. I ddangos beth yn union ysgrifennais i lawr, lluniais, cyfrifais, a ddyluniais…

Dylunio delweddau tanciau. A phenderfynu faint o bicseli y dylai pob tanc eu meddiannu ar y sgrin.

Cyfrifo'r algorithm a'r fformiwlâu ar gyfer cylchdro tanc o amgylch ei echelin

Cynllun sgematig fy nghasgliad (yr un gyda'r gollyngiad cof, yn fwyaf tebygol). Mae'r casgliad wedi'i greu fel Rhestr Gysylltiedig.

Ac mae'r rhain yn ymdrechion ofer i atodi deallusrwydd artiffisial i'r gêm.
Теория
“Mae hyd yn oed taith o fil o filltiroedd yn dechrau gydag un cam.” (Doethineb Tsieineaidd hynafol)
Symudwn o ymarfer i ddamcaniaeth! Sut allwch chi ddod o hyd i amser ar gyfer eich hobi?
- Penderfynwch beth rydych chi wir ei eisiau (yn anffodus, dyma'r rhan anoddaf).
- Gosodwch flaenoriaethau.
- Aberthu'r holl "ychwanegol" o blaid blaenoriaethau uwch.
- Symudwch tuag at eich nodau bob dydd.
- Peidiwch ag aros nes bod gennych ddwy neu dair awr o amser rhydd ar gyfer hobi.
Ar y naill law, mae angen i chi ddiffinio beth rydych chi ei eisiau a gosod blaenoriaethau. Ar y llaw arall, efallai y bydd yn rhaid i chi roi'r gorau i rai prosiectau neu weithgareddau o blaid y blaenoriaethau hyn. Mewn geiriau eraill, bydd yn rhaid i chi aberthu'r holl "ddiangenrheidiol". Clywais yn rhywle y dylech chi gael uchafswm o dri phrif weithgaredd yn eich bywyd. Yna byddwch chi'n gallu eu gwneud yn fwyaf effeithiol. Bydd prosiectau neu weithgareddau ychwanegol yn dod yn llethol. Ond mae hyn i gyd yn ôl pob tebyg yn oddrychol ac yn unigol.
Mae rheol aur: peidiwch byth â chael diwrnod 0%! Dysgais amdani mewn erthygl gan ddatblygwr annibynnol. Os ydych chi'n gweithio ar brosiect, gwnewch rywbeth amdano bob dydd. Ac nid oes ots faint rydych chi'n ei wneud. Ysgrifennwch un gair neu un llinell o god, gwyliwch un tiwtorial, neu morthwyliwch un hoelen i mewn i fwrdd—gwnewch rywbeth. Y rhan anoddaf yw dechrau arni. Unwaith y byddwch chi'n gwneud hynny, mae'n debyg y byddwch chi'n gwneud ychydig mwy nag yr oeddech chi'n bwriadu. Fel hyn, byddwch chi'n symud yn gyson tuag at eich nod, a chredwch fi, yn gyflym iawn. Wedi'r cyfan, y prif rwystr i bob ymdrech yw gohirio.
Ac mae'n bwysig cofio peidio â thanbrisio nac anwybyddu'r "blawd llif" 5, 10, neu 15 munud hynny neu aros am "boncyffion" mwy sy'n para awr neu ddwy. Yn sefyll mewn ciw? Meddyliwch am rywbeth am eich prosiect. Mynd ar y grisiau symudol? Ysgrifennwch rywbeth i lawr. Mynd ar y bws? Gwych, darllenwch erthygl. Manteisiwch ar bob cyfle. Stopiwch wylio cathod a chŵn ar YouTube! Peidiwch â llenwi'ch meddwl!
Ac yn olaf, os ar ôl darllen yr erthygl hon roeddech chi'n hoffi'r syniad o greu gemau heb ddefnyddio peiriannau gemau, yna cofiwch yr enw Casey Muratori. Mae gan y dyn hwn Yn yr adran "Gwylio -> PENNODAU BLAENOROL", fe welwch diwtorialau fideo gwych am ddim ar greu gêm broffesiynol o'r dechrau. Cyflwyniad i C am bum gwers Windows Efallai y byddwch chi'n dysgu mwy nag y byddech chi mewn pum mlynedd o brifysgol (ysgrifennodd rhywun am hyn yn y sylwadau o dan y fideo).
Mae Casey hefyd yn egluro, drwy ddatblygu eich peiriant gêm eich hun, y byddwch yn deall unrhyw beiriannau presennol yn well. Mewn byd o fframweithiau, lle mae popeth yn cael ei awtomeiddio, byddwch yn dysgu creu, nid dim ond defnyddio. Byddwch yn deall natur gyfrifiaduron. Byddwch hefyd yn dod yn rhaglennwr llawer mwy galluog ac aeddfed—yn broffesiynol.
Pob lwc ar eich llwybr dewisol! A gadewch i ni wneud y byd yn lle mwy proffesiynol.
Awdur: , Datblygwyr
Ffynhonnell: hab.com
