rpr Posted December 8, 2015 Report Posted December 8, 2015 codez + briedi, vai tad pats tcp/udp protokols nenodrošina sava veida checksummošanu vai arī domā, ka vinam ātrāks / otram lēnāks inets un ieguvējs ir tas, kam ātrāks? Quote
Kavacky Posted December 8, 2015 Report Posted December 8, 2015 Jā, par to, ka ieguvējs ir tas, kuram pings un packetloss mazāks. Quote
briedis Posted December 8, 2015 Report Posted December 8, 2015 Te interesants gabals: https://developer.valvesoftware.com/wiki/Source_Multiplayer_Networking Tāpēc arī rodas jautājumi, kā codez šī lietas risināja. Quote
codez Posted December 9, 2015 Author Report Posted December 9, 2015 Šajā projektā nekāda lielā gudrība nav izmantota. Klients saņem datus un interpolē vērtības no iepriekšējiem stāvokļiem. Šūnas kustās salīdzinoši lēni, tāpēc pietiek ar vienkārši darbību sūtīšanu serverim un stāvokļu saņemšanu atpakaļ. Vienīgā ātrā darbība ir kameras kustināšana, bet tā kā kameras stāvoklis neietekmē spēles stāvokli, tad tas vis notiek klienta pusē un serverim netiek pat sūtīts. Ja ir lagains tīkls, tad principā gameplay-jā to uzreiz var just, ka kustības aiztures. Nesen taisīju arī "first person" eksperimentu un tur jau 100-200ms lags rada sliktu gameplay, tāpēc eksperimentēju ar tā saukto "lag compensation" metodi. Ideja ir tāda, ka paralēli darbību sūtīšanai serverim, visas darbības simulē arī klienta pusē un, kad serveris it atsūtījis jauno validēto stāvokli, klients ir ticis parasti 2 - 5 simulācijas soļus uz priekšu, tāpēc visas šo soļu darbības glabājas buferī un pie jauna stāvokļa no servera, tiek pārsimulēta visa ķēde līdz šim brīdim. Ja klienta puses un servera puses algoritmi ir vienādi, tad pārsimulācija parasti dod to pašu rezultātu. Rezultāts sāk atšķirties, ja servera puses simulācijā iejaucās cita lietotāja darbības, kuras pirmais klients vēl nav saņēmis. Šajā gadījumā pēc pārrēķināšanas gala vērtība var nedaudz atšķirties, tāpēc ar interpolāciju vairākos kadros pietuvina šo vērtību. Mana steka gadījumā man nācās daļu simulācijas algoritma, kurš notiek arī klienta pusē, pārrakstīt no Scalas uz Javascriptu. Šajā aspektā nodejs ir neliela priekšrocība pār Scalu, lai gan tīri teorētiski Scalai ir bibliotēkas, kas māk Scala kodu pārvērst Javascriptā. Ar "lag compensation" metodi, principā pārvietošanās pa pasauli, neietekmējot gameplay, var notikt arī ar vairākas sekundes pazudušu konekciju. Quote
codez Posted May 7, 2016 Author Report Posted May 7, 2016 (edited) Pēc pus gada rezultāti ir šādi. Pagaidām katru mēnesi ir gandrīz miljons unikālo apmeklētāju ar tendenci nedaudz pieaugt. Youtube 15k subscraiberu, FB 26k šāres un 14k komentāri. Spēle ievietota vairāk kā 500 spēļu direktorijās no kurām nāk aptuveni puse trafika, piemēram, http://slitherio.org/games/agario3d.html, http://www.minijuegos.com/juego/agario-3d Edited May 7, 2016 by codez Quote
codez Posted May 8, 2016 Author Report Posted May 8, 2016 Drošvien. Tur ir klasiskā google adsense - pagaidām neko labāku (kas maksā vairāk) neesmu atradis. Quote
e-remit Posted May 9, 2016 Report Posted May 9, 2016 codez, tev slither.io 3D versija nav padomā? Nevienu reklāmu neredzu, vai tas dēļ atbloka? Tu saproti, ka tu šādi apzodz codezu! Tiešām ceri, ka šādai rīcībai nebūs sekas? ;) Quote
jurchiks Posted May 9, 2016 Report Posted May 9, 2016 Velns, tas slither.io ir bremzīgs... Tāda sajūta, ka feedback peles kustībai notiek tikai pēc vismaz 200 ms. Quote
e-remit Posted May 9, 2016 Report Posted May 9, 2016 Jā, tā ir tās spēles bēda, bet brīžos, kad nebremzē, interesantāka par agar.io. Tāpēc jau cerība, ka codez uztaisīs labāk :) Quote
codez Posted May 9, 2016 Author Report Posted May 9, 2016 codez, tev slither.io 3D versija nav padomā? Ir, ir, tieši tagad arī taisu 3D versiju. Citā topikā, kur runāju par ģeometrijas ģenerācijas algoritmu, runa bija tieši par 3D čūskas ģeometrijas ģenerēšanu un efektīvu kustināšanu izmantojot skeletu un šeiderus. Quote
codez Posted May 9, 2016 Author Report Posted May 9, 2016 P.S. Te neliels ieskats tajā, kas jau gatavs: Quote
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.