Yangi boshlanuvchilar uchun o'yinlarda tarmoq modeli haqida

Yangi boshlanuvchilar uchun o'yinlarda tarmoq modeli haqida
So'nggi ikki hafta davomida men o'yinim uchun onlayn vosita ustida ishlayapman. Bundan oldin men o'yinlarda tarmoq haqida hech narsa bilmasdim, shuning uchun men ko'plab maqolalarni o'qib chiqdim va barcha tushunchalarni tushunish va o'z tarmoq dvigatelimni yozish imkoniyatiga ega bo'lish uchun juda ko'p tajribalar qildim.

Ushbu qo'llanmada men siz bilan o'z o'yin dvigatelingizni yozishdan oldin o'rganishingiz kerak bo'lgan turli xil tushunchalarni, shuningdek ularni o'rganish uchun eng yaxshi manbalar va maqolalarni baham ko'rmoqchiman.

Umuman olganda, tarmoq arxitekturasining ikkita asosiy turi mavjud: peer-to-peer va mijoz-server. Peer-to-peer (p2p) arxitekturasida ma'lumotlar har qanday bog'langan o'yinchilar juftligi o'rtasida uzatiladi, mijoz-server arxitekturasida esa ma'lumotlar faqat o'yinchilar va server o'rtasida uzatiladi.

Ba'zi o'yinlarda peer-to-peer arxitekturasi hali ham qo'llanilsa-da, mijoz-server standart hisoblanadi: uni amalga oshirish osonroq, kichikroq kanal kengligi talab qiladi va aldashdan himoya qilishni osonlashtiradi. Shuning uchun, ushbu qo'llanmada biz mijoz-server arxitekturasiga e'tibor qaratamiz.

Xususan, bizni avtoritar serverlar eng ko'p qiziqtiradi: bunday tizimlarda server har doim to'g'ri. Misol uchun, agar o'yinchi o'zini koordinatalarda (10, 5) deb hisoblasa va server unga (5, 3) ekanligini aytsa, mijoz o'z o'rnini o'rinbosar emas, balki server tomonidan xabar qilingani bilan almashtirishi kerak. aksincha. Nufuzli serverlardan foydalanish firibgarlarni aniqlashni osonlashtiradi.

Tarmoqli o'yin tizimlari uchta asosiy komponentdan iborat:

  • Transport protokoli: mijozlar va server o'rtasida ma'lumotlar qanday uzatiladi.
  • Ilova protokoli: mijozlardan serverga va serverdan mijozlarga nima uzatiladi va qanday formatda.
  • Ilova mantig'i: uzatilgan ma'lumotlar mijoz va server holatini yangilash uchun qanday ishlatiladi.

Har bir qismning rolini va ular bilan bog'liq muammolarni tushunish juda muhimdir.

Transport protokoli

Birinchi qadam server va mijozlar o'rtasida ma'lumotlarni tashish uchun protokolni tanlashdir. Buning uchun ikkita Internet protokoli mavjud: TCP ΠΈ UDP. Lekin siz ulardan biri asosida o'zingizning transport protokolingizni yaratishingiz yoki ulardan foydalanadigan kutubxonadan foydalanishingiz mumkin.

TCP va UDP ni solishtirish

TCP va UDP ikkalasiga asoslanadi IP. IP paketni manbadan qabul qiluvchiga o'tkazishga imkon beradi, lekin yuborilgan paket ertami-kechmi qabul qiluvchiga etib borishiga, unga kamida bir marta etib borishiga va paketlar ketma-ketligi to'g'ri kelishiga kafolat bermaydi. buyurtma. Bundan tashqari, paket faqat qiymat bilan berilgan cheklangan miqdordagi ma'lumotlarni o'z ichiga olishi mumkin MTU.

UDP - bu IP-ning ustidagi nozik bir qatlam. Shuning uchun u bir xil cheklovlarga ega. Bundan farqli o'laroq, TCP juda ko'p xususiyatlarga ega. Bu xatolarni tekshirish bilan ikkita tugun o'rtasida ishonchli, tartibli ulanishni ta'minlaydi. Demak, TCP juda qulay va boshqa ko'plab protokollarda qo'llaniladi, masalan. HTTP, FTP ΠΈ SMTP. Ammo bu xususiyatlarning barchasi narxga ega: kechikish.

Ushbu funktsiyalar nima uchun kechikishga olib kelishi mumkinligini tushunish uchun TCP qanday ishlashini tushunishimiz kerak. Yuboruvchi tugun paketni qabul qiluvchi tugunga uzatganda, u tasdiq (ACK) olishni kutadi. Agar ma'lum vaqtdan keyin u uni qabul qilmasa (paket yoki tasdiq yo'qolganligi sababli yoki boshqa sabablarga ko'ra), u paketni qayta yuboradi. Bundan tashqari, TCP paketlarning to'g'ri tartibda qabul qilinishini kafolatlaydi, shuning uchun yo'qolgan paket olinmaguncha, boshqa barcha paketlarni, hatto qabul qiluvchi host tomonidan qabul qilingan bo'lsa ham, qayta ishlash mumkin emas.

Ammo siz tasavvur qilganingizdek, ko'p o'yinchi o'yinlarida kechikish juda muhim, ayniqsa FPS kabi aksiyalarga boy janrlarda. Shuning uchun ko'pgina o'yinlar o'z protokoli bilan UDP dan foydalanadi.

Mahalliy UDP-ga asoslangan protokol turli sabablarga ko'ra TCP ga qaraganda samaraliroq bo'lishi mumkin. Masalan, u ba'zi paketlarni ishonchli, boshqalarni esa ishonchsiz deb belgilashi mumkin. Shu sababli, ishonchsiz paket qabul qiluvchiga etib boradimi, buning ahamiyati yo'q. Yoki u bir nechta ma'lumotlar oqimini qayta ishlashi mumkin, shunda bitta oqimdagi yo'qolgan paket qolgan oqimlarni sekinlashtirmaydi. Misol uchun, o'yinchi kiritish uchun mavzu va suhbat xabarlari uchun boshqa mavzu bo'lishi mumkin. Agar shoshilinch bo'lmagan chat xabari yo'qolsa, u shoshilinch kirishni sekinlashtirmaydi. Yoki xususiy protokol video o'yin muhitida samaraliroq bo'lishi uchun TCP dan farqli ravishda ishonchlilikni amalga oshirishi mumkin.

Shunday qilib, agar TCP juda ko'p so'rasa, biz UDP asosida o'z transport protokolimizni yaratamiz?

Bu biroz murakkabroq. TCP o'yin tarmoq tizimlari uchun deyarli suboptimal bo'lsa ham, u sizning maxsus o'yiningiz uchun juda yaxshi ishlashi va qimmatli vaqtingizni tejashi mumkin. Misol uchun, navbatga asoslangan o'yin yoki faqat LAN tarmoqlarida o'ynash mumkin bo'lgan o'yin uchun kechikish muammo bo'lmasligi mumkin, bu erda kechikish va paketlarni yo'qotish Internetga qaraganda ancha past bo'ladi.

Ko'pgina muvaffaqiyatli o'yinlar, jumladan World of Warcraft, Minecraft va Terraria, TCP-dan foydalanadi. Biroq, aksariyat FPSlar o'zlarining UDP-ga asoslangan protokollaridan foydalanadilar, shuning uchun biz ular haqida quyida ko'proq gaplashamiz.

Agar siz TCP dan foydalanishga qaror qilsangiz, uning o'chirilganligiga ishonch hosil qiling Nagle algoritmi, chunki u yuborishdan oldin paketlarni buferlaydi, bu esa kechikishni oshiradi.

Ko'p o'yinchi o'yinlari kontekstida UDP va TCP o'rtasidagi farqlar haqida ko'proq bilish uchun siz Glenn Fiedlerning maqolasini o'qishingiz mumkin. UDP va boshqalar TCP.

O'z protokoli

Shunday qilib, siz o'zingizning transport protokolingizni yaratmoqchimisiz, lekin qaerdan boshlashni bilmayapsizmi? Omadingiz bor, chunki Glenn Fidler bu haqda ikkita ajoyib maqola yozgan. Ularda siz juda ko'p aqlli fikrlarni topasiz.

Birinchi maqola O'yin dasturchilari uchun tarmoq 2008 yil, ikkinchisidan osonroq, O'yin tarmog'i protokolini yaratish 2016 yil. Men eskisidan boshlashni tavsiya qilaman.

Glenn Fiedler UDP asosidagi maxsus protokoldan foydalanishning katta tarafdori ekanligini unutmang. Va uning maqolalarini o'qib chiqqandan so'ng, siz TCPning video o'yinlarda jiddiy kamchiliklari borligi haqidagi fikrini qabul qilasiz va siz o'zingizning protokolingizni amalga oshirishni xohlaysiz.

Agar siz tarmoqqa yangi bo'lsangiz, o'zingizga yaxshilik qiling va TCP yoki kutubxonadan foydalaning. O'zingizning transport protokolingizni muvaffaqiyatli amalga oshirish uchun siz oldindan ko'p narsalarni o'rganishingiz kerak.

Tarmoq kutubxonalari

Agar sizga TCP dan samaraliroq narsa kerak bo'lsa, lekin o'z protokolingizni amalga oshirish va ko'p tafsilotlarga kirishish bilan bog'liq qiyinchiliklarni boshdan kechirishni istamasangiz, siz tarmoq kutubxonasidan foydalanishingiz mumkin. Ularning ko'pi bor:

Men ularning hammasini sinab ko'rmadim, lekin men ENetni afzal ko'raman, chunki undan foydalanish oson va ishonchli. Bundan tashqari, unda aniq hujjatlar va yangi boshlanuvchilar uchun qo'llanma mavjud.

Tashish protokoli: Xulosa

Xulosa qilish uchun: ikkita asosiy transport protokoli mavjud: TCP va UDP. TCP juda ko'p foydali xususiyatlarga ega: ishonchlilik, paket tartibini saqlash, xatolarni aniqlash. UDP bularning barchasiga ega emas, lekin TCP o'z tabiatiga ko'ra kechikishni oshirdi, bu ba'zi o'yinlar uchun qabul qilinishi mumkin emas. Ya'ni, past kechikishni ta'minlash uchun siz UDP asosida o'z protokolingizni yaratishingiz yoki UDP-da transport protokolini amalga oshiradigan va ko'p o'yinchi video o'yinlar uchun moslashtirilgan kutubxonadan foydalanishingiz mumkin.

TCP, UDP va kutubxona o'rtasidagi tanlov bir necha omillarga bog'liq. Birinchidan, o'yin ehtiyojlaridan: past kechikish kerakmi? Ikkinchidan, dastur protokoli talablaridan: unga ishonchli protokol kerakmi? Keyingi qismda ko'rib turganimizdek, ishonchsiz protokol juda mos keladigan dastur protokolini yaratish mumkin. Va nihoyat, siz tarmoq dvigatelini ishlab chiquvchining tajribasini ham hisobga olishingiz kerak.

Menda ikkita maslahat bor:

  • Ilovaning qolgan qismidan transport protokolini iloji boricha ko'proq ajratib oling, shunda uni barcha kodni qayta yozmasdan osongina almashtirish mumkin.
  • Haddan tashqari optimallashtirmang. Agar siz tarmoq bo'yicha mutaxassis bo'lmasangiz va sizga maxsus UDP-ga asoslangan transport protokoli kerak yoki yo'qligiga ishonchingiz komil bo'lmasa, TCP yoki ishonchlilikni ta'minlovchi kutubxonadan boshlashingiz, keyin esa unumdorlikni sinab ko'rishingiz va o'lchashingiz mumkin. Agar muammolar yuzaga kelsa va siz sabab transport protokoli ekanligiga ishonchingiz komil bo'lsa, o'zingizning transport protokolingizni yaratish vaqti keldi.

Ushbu qismning oxirida sizga o'qishni tavsiya qilaman Ko'p o'yinchi o'yin dasturlashiga kirish Bu erda muhokama qilingan ko'plab mavzularni o'z ichiga olgan Brayan Huk tomonidan.

Ilova protokoli

Endi biz mijozlar va server o'rtasida ma'lumot almashishimiz mumkin, biz qanday ma'lumotlarni va qaysi formatda uzatishni hal qilishimiz kerak.

Klassik sxema shundan iboratki, mijozlar serverga kirish yoki harakatlarni yuborishadi va server joriy o'yin holatini mijozlarga yuboradi.

Server to'liq holatni emas, balki pleyer yaqinida joylashgan ob'ektlar bilan filtrlangan holatni yuboradi. U buni uchta sababga ko'ra qiladi. Birinchidan, to'liq holat yuqori chastotada uzatish uchun juda katta bo'lishi mumkin. Ikkinchidan, mijozlar asosan vizual va audio ma'lumotlarga qiziqishadi, chunki o'yin mantig'ining aksariyati o'yin serverida simulyatsiya qilingan. Uchinchidan, ba'zi o'yinlarda o'yinchi ma'lum ma'lumotlarni bilishi shart emas, masalan, dushmanning xaritaning boshqa tomonidagi pozitsiyasi, aks holda u paketlarni hidlashi va uni o'ldirish uchun qaerga borishni aniq bilishi mumkin.

Seriyalashtirish

Birinchi qadam, biz yubormoqchi bo'lgan ma'lumotlarni (kirish yoki o'yin holatini) uzatish uchun mos formatga aylantirishdir. Bu jarayon deyiladi ketma-ketlashtirish.

Darhol aqlga kelgan fikr JSON yoki XML kabi odam o'qiy oladigan formatdan foydalanishdir. Ammo bu mutlaqo samarasiz bo'ladi va kanalning ko'p qismini behuda sarflaydi.

Buning o'rniga ikkilik formatdan foydalanish tavsiya etiladi, bu ancha ixchamroqdir. Ya'ni, paketlar faqat bir necha baytdan iborat bo'ladi. Bu erda bir muammoni ko'rib chiqish kerak bayt tartibi, bu turli kompyuterlarda farq qilishi mumkin.

Ma'lumotlarni ketma-ketlashtirish uchun siz kutubxonadan foydalanishingiz mumkin, masalan:

Kutubxona ko'chma arxivlarni yaratishi va endilik haqida qayg'urishiga ishonch hosil qiling.

Muqobil yechim - uni o'zingiz amalga oshirish; bu unchalik qiyin emas, ayniqsa kodingizga ma'lumotlarga asoslangan yondashuvdan foydalansangiz. Bundan tashqari, u kutubxonadan foydalanganda har doim ham imkoni bo'lmagan optimallashtirishlarni amalga oshirish imkonini beradi.

Glenn Fidler seriallashtirish haqida ikkita maqola yozgan: Paketlarni o'qish va yozish ΠΈ Seriyalashtirish strategiyalari.

Siqish

Mijozlar va server o'rtasida uzatiladigan ma'lumotlar miqdori kanalning o'tkazish qobiliyati bilan cheklangan. Ma'lumotni siqish sizga har bir suratda ko'proq ma'lumot uzatish, yangilanish chastotasini oshirish yoki kanal talablarini kamaytirish imkonini beradi.

Bitli qadoqlash

Birinchi texnika - bit qadoqlash. Bu kerakli qiymatni tavsiflash uchun zarur bo'lgan bitlarning aniq sonini ishlatishdan iborat. Misol uchun, agar sizda 16 xil qiymatga ega bo'lgan enum bo'lsa, unda butun bayt (8 bit) o'rniga atigi 4 bitdan foydalanishingiz mumkin.

Glenn Fiedler buni maqolaning ikkinchi qismida qanday amalga oshirishni tushuntiradi Paketlarni o'qish va yozish.

Bitli qadoqlash, ayniqsa, keyingi bo'limning mavzusi bo'lgan namuna olish bilan yaxshi ishlaydi.

Namuna olish

Namuna olish qiymatni kodlash uchun mumkin bo'lgan qiymatlarning faqat kichik to'plamidan foydalanadigan yo'qotilgan siqish usuli. Diskretizatsiyani amalga oshirishning eng oson yo'li suzuvchi nuqta raqamlarini yaxlitlashdir.

Glenn Fiedler (yana!) o'z maqolasida namuna olishni amalda qanday qo'llashni ko'rsatadi Suratni siqish.

Siqish algoritmlari

Keyingi texnika yo'qotishsiz siqish algoritmlari bo'ladi.

Menimcha, siz bilishingiz kerak bo'lgan uchta eng qiziqarli algoritmlar:

  • Huffman kodlash Oldindan hisoblangan kod bilan, bu juda tez va yaxshi natijalar berishi mumkin. U Quake3 tarmoq dvigatelida paketlarni siqish uchun ishlatilgan.
  • zlib ma'lumotlar hajmini hech qachon oshirmaydigan umumiy maqsadli siqish algoritmidir. Qanday ko'rish mumkin shu yerda, u turli ilovalarda ishlatilgan. Bu holatlarni yangilash uchun ortiqcha bo'lishi mumkin. Ammo serverdan mijozlarga aktivlar, uzun matnlar yoki hududni yuborish kerak bo'lsa foydali bo'lishi mumkin.
  • Yugurish uzunliklarini nusxalash - Bu, ehtimol, eng oddiy siqish algoritmi, lekin u ma'lum turdagi ma'lumotlar uchun juda samarali va zlib dan oldin oldindan ishlov berish bosqichi sifatida ishlatilishi mumkin. Bu, ayniqsa, ko'plab qo'shni elementlar takrorlanadigan plitkalar yoki voksellardan tashkil topgan erni siqish uchun javob beradi.

Delta siqish

Oxirgi siqish texnikasi delta siqishdir. Bu faqat joriy o'yin holati va mijoz tomonidan qabul qilingan oxirgi holat o'rtasidagi farqlar uzatilishidan iborat.

U birinchi marta Quake3 tarmoq dvigatelida ishlatilgan. Uni qanday ishlatishni tushuntiradigan ikkita maqola:

Glenn Fidler ham maqolasining ikkinchi qismida undan foydalangan Suratni siqish.

Shifrlash

Bundan tashqari, mijozlar va server o'rtasida ma'lumot uzatishni shifrlashingiz kerak bo'lishi mumkin. Buning bir qancha sabablari bor:

  • maxfiylik/maxfiylik: xabarlarni faqat qabul qiluvchi o'qiy oladi va tarmoqni hidlagan boshqa hech kim ularni o'qiy olmaydi.
  • autentifikatsiya: o'yinchi rolini o'ynashni istagan kishi uning kalitini bilishi kerak.
  • Cheatning oldini olish: zararli o'yinchilar uchun o'zlarining firibgarlik paketlarini yaratish ancha qiyin bo'ladi, ular shifrlash sxemasini qayta ishlab chiqarishlari va kalitni topishlari kerak (har bir ulanishda o'zgaradi).

Buning uchun kutubxonadan foydalanishni qat'iy tavsiya qilaman. foydalanishni taklif qilaman libsodyum, chunki u ayniqsa sodda va mukammal o'quv qo'llanmalariga ega. O'quv qo'llanmasi ayniqsa qiziqarli kalit almashinuvi, bu har bir yangi ulanish bilan yangi kalitlarni yaratish imkonini beradi.

Ariza bayonnomasi: Xulosa

Bu bizning ariza protokolimizni yakunlaydi. Men siqishni butunlay ixtiyoriy ekanligiga ishonaman va uni ishlatish qarori faqat o'yin va kerakli tarmoqli kengligiga bog'liq. Shifrlash, menimcha, majburiy, lekin birinchi prototipda siz usiz ham qilishingiz mumkin.

Ilova mantig'i

Biz endi mijoz holatini yangilay olamiz, lekin kechikish bilan bogβ€˜liq muammolar yuzaga kelishi mumkin. O'yinchi, kiritishni tugatgandan so'ng, o'yin holatining dunyoga qanday ta'sir qilganini ko'rish uchun serverdan yangilanishini kutishi kerak.

Bundan tashqari, ikkita davlat yangilanishi o'rtasida dunyo butunlay statikdir. Agar davlat yangilanish tezligi past bo'lsa, unda harakatlar juda chayqaladi.

Ushbu muammoning ta'sirini kamaytirishning bir nechta usullari mavjud va men ularni keyingi bo'limda ko'rib chiqaman.

Kechikishlarni yumshatish texnikasi

Ushbu bo'limda tasvirlangan barcha texnikalar ketma-ketlikda batafsil muhokama qilinadi Tez sur'atda ko'p o'yinchi Gabriel Gambetta. Men ushbu ajoyib maqolalar turkumini o'qishni tavsiya qilaman. Shuningdek, u ushbu usullarning amalda qanday ishlashini ko'rish imkonini beruvchi interaktiv demoni o'z ichiga oladi.

Birinchi usul serverdan javob kutmasdan kirish natijasini to'g'ridan-to'g'ri qo'llashdir. U deyiladi mijoz tomonidan prognozlash. Biroq, mijoz serverdan yangilanish olganida, uning bashorati to'g'ri ekanligini tekshirishi kerak. Agar bunday bo'lmasa, u serverdan olgan narsasiga ko'ra o'z holatini o'zgartirishi kerak, chunki server avtoritardir. Bu usul birinchi marta Quakeda qo'llanilgan. Bu haqda ko'proq maqolada o'qishingiz mumkin Quake Engine kodini ko'rib chiqish Fabien Sanglars [tarjima Habreda].

Texnikalarning ikkinchi to'plami boshqa ob'ektlarning ikkita holat yangilanishi orasidagi harakatini yumshatish uchun ishlatiladi. Ushbu muammoni hal qilishning ikki yo'li mavjud: interpolyatsiya va ekstrapolyatsiya. Interpolyatsiya holatida oxirgi ikki holat olinadi va biridan ikkinchisiga o'tish ko'rsatiladi. Uning kamchiligi shundaki, u kichik kechikishlarni keltirib chiqaradi, chunki mijoz har doim o'tmishda nima bo'lganini ko'radi. Ekstrapolyatsiya - bu mijoz tomonidan qabul qilingan oxirgi holatga asoslanib, ob'ektlar hozir qayerda bo'lishi kerakligini bashorat qilishdir. Uning kamchiligi shundaki, agar ob'ekt harakat yo'nalishini butunlay o'zgartirsa, u holda prognoz va haqiqiy pozitsiya o'rtasida katta xato bo'ladi.

Faqat FPSda foydali bo'lgan eng yangi, eng ilg'or texnika kechikish kompensatsiyasi. Kechikish kompensatsiyasidan foydalanganda, server nishonga o'q uzganda mijozning kechikishlarini hisobga oladi. Misol uchun, agar o'yinchi o'z ekranida bosh zarbasini bajargan bo'lsa, lekin aslida ularning nishoni kechikish tufayli boshqa joyda bo'lsa, kechikish tufayli o'yinchini o'ldirish huquqidan voz kechish adolatsiz bo'ladi. Shunday qilib, server o'yinchi o'z ekranida ko'rgan narsasini taqlid qilish va o'q va nishon o'rtasidagi to'qnashuvni tekshirish uchun o'yinchi o'q uzgan paytga vaqtni orqaga qaytaradi.

Glenn Fidler (har doimgidek!) 2004 yilda maqola yozgan Tarmoq fizikasi (2004), unda u server va mijoz o'rtasida fizika simulyatsiyalarini sinxronlashtirish uchun asos yaratdi. 2014 yilda u yangi turkum maqolalar yozdi Tarmoq fizikasi, unda fizika simulyatsiyalarini sinxronlashtirishning boshqa usullari tasvirlangan.

Valve wiki-da ikkita maqola mavjud, Manba multiplayer tarmoq ΠΈ Mijoz/server ichidagi o'yin protokolini loyihalash va optimallashtirishda kechikishlarni qoplash usullari kechikishlar uchun kompensatsiyani hisobga olgan holda.

Aldashning oldini olish

Aldashning oldini olishning ikkita asosiy usuli mavjud.

Birinchisi: firibgarlar uchun zararli paketlarni yuborishni qiyinlashtirish. Yuqorida aytib o'tilganidek, buni amalga oshirishning yaxshi usuli shifrlashdir.

Ikkinchidan: avtoritar server faqat buyruqlar/kirish/harakatlarni qabul qilishi kerak. Mijoz ma'lumotlarni yuborishdan tashqari serverdagi holatni o'zgartira olmasligi kerak. Keyin, server har safar ma'lumotni qabul qilganda, uni ishlatishdan oldin uning haqiqiyligini tekshirishi kerak.

Ilova mantig'i: xulosa

Men sizga yuqori kechikishlar va past yangilanish tezligini taqlid qilish usulini qo'llashni tavsiya qilaman, shunda hatto mijoz va server bitta kompyuterda ishlayotgan bo'lsa ham, yomon sharoitlarda o'yiningizning harakatini sinab ko'rishingiz mumkin. Bu kechikishlarni tekislash usullarini amalga oshirishni sezilarli darajada soddalashtiradi.

Boshqa foydali manbalar

Agar siz tarmoq modellari bo'yicha boshqa manbalarni o'rganmoqchi bo'lsangiz, ularni bu yerda topishingiz mumkin:

  • Glenn Fiedlerning blogi - uning butun blogi o'qishga arziydi, u erda juda ko'p ajoyib maqolalar mavjud. u Tarmoq texnologiyalari bo'yicha barcha maqolalar to'plangan.
  • Ajoyib o'yin tarmog'i by M. Fotih MAR - onlayn video o'yin dvigatellari haqidagi maqolalar va videolarning to'liq ro'yxati.
  • Π’ r/gamedev subredditining wiki Bundan tashqari, juda ko'p foydali havolalar mavjud.

Manba: www.habr.com

a Izoh qo'shish