Networking Question

Vēlies radīt spēli, bet nezini ar ko sākt? Sperot pirmos soļus, vari meklēt padomu šeit
Message
Author
CodeWolf
Posts: 119
Joined: 10 Dec 2010, 19:10
Location: LV-Riga-Marupe

Re: Networking Question

#21 Post by CodeWolf » 15 Jan 2012, 04:19

tāpat outputā rādās pie x,y,z nulles :?
//OpenGL

bubu
Guru
Guru
Posts: 398
Joined: 07 Dec 2010, 11:54

Re: Networking Question

#22 Post by bubu » 15 Jan 2012, 09:30

Kādā veidā tajā vietā, kur tu nolasi datus, tu zini, ka nosūtītie dati ir sizeof(buffer2) izmērā?

Code: Select all

bsIn.Read(buffer2,sizeof(buffer2));
Varbūt tika nosūtīti tikai 3 baiti. Varbūt 4.
Vajag nolasīt tikai tik, cik tika sūtīti.

Padebugo. Nevajag zīlēt tējas biezumos. Paskaties mainīgo vērtības. Kā tās mainās izpildot kodu pa rindiņai.

CodeWolf
Posts: 119
Joined: 10 Dec 2010, 19:10
Location: LV-Riga-Marupe

Re: Networking Question

#23 Post by CodeWolf » 16 Jan 2012, 17:08

Hmm itka nosvēru paku pirms sūtišanas rādijās 5biti.. iekš klienta nolasitāja izmērā arī ieliku 5ci
Dati tika nosutiti (: bet ar samērā lielu nobīdi..
ID tika pareizi nosūtīts bet pārējie +/- 15
Image
Man liekas ka problēma vartētu būt tajā ka ID=intu
un parejas pozicijas ar floatu , tāpēc viņš kaut kā nepareizi saģenerē viņas?
//OpenGL

bubu
Guru
Guru
Posts: 398
Joined: 07 Dec 2010, 11:54

Re: Networking Question

#24 Post by bubu » 16 Jan 2012, 18:41

CodeWolf wrote:tāpēc viņš kaut kā nepareizi saģenerē viņas?
Kā mums to zināt? Kamon, te nav zīlēšas salons. Paņem rokā debugeri, saliec breikpointus un skaties mainīgo vērtības - gan nosūtot, gan saņemot.
Vispirms paskaties kā tu pārvēt floatu par intu ar iepriekšējo metodi - padomā, vai iegūtais ints satur jēdzīgu vērtību (tb korektu). Un tad skaties kā šis ints pārvēršas par bitiem. To pašu atkārto un pārbaudi otrā galā - pie saņemšanas.
Nav jau teikts arī, ka es tev tos koda gabalus uzrakstīju korekti - es tos nekompilēju un netestēju, bet tepat forumā uzrakstīju.

CodeWolf
Posts: 119
Joined: 10 Dec 2010, 19:10
Location: LV-Riga-Marupe

Re: Networking Question

#25 Post by CodeWolf » 18 Jan 2012, 00:27

hmm sataisiju..
nosutu un saņemu datus samērā precīzi.. To vai strādā ta samazināšana vai ne ir grūti teikt..jo lidz 9 klientiem uz 1 pc ar serveri sāk nedaudz atpalikt serveris un noraustities.. domajams ka tas ir lena neta dēļ , vai arī tas ka esmu atvēris 9 klientus uz viena pc... (+ nevarēju pec BreakPointiem pateikt jo man kautkas nav ar c++ , viņš nokaras debugojot ar BP)
Nedaudz velak pamanīju to ka ja pozicijas ir mazakas par 0 vai >1024 tad vnk pozicijas pazud..(nu tas varbut paliek bet pats spraits nozuud) tad atcerejos par to ko bubu rakstija iepriekš..(par to precizitati) itkā uzrakstit izdodas.. bet ka nolasīt.. nevaru saprast tur no char ņemt jeb kautkā skaitīt kopā X+Y+Z.. ?

bubu kods

Code: Select all

pakete = readInt();//Te
xi = pakete & ((1<<10)-1);
yi = (pakete>>10) & ((1<<10)-1);
zi = (pakete>>20) & ((1<<10)-1);
x = xi/10.0f;
y = yi/10.0f;
z = zi/10.0f;
---

Code: Select all

bsIn.Read(buf,5);
			bufPos=0;
			client_id = readBits(10); 
			x = readBits(10); 
			y = readBits(10); 
			z = readBits(10); 
//OpenGL

bubu
Guru
Guru
Posts: 398
Joined: 07 Dec 2010, 11:54

Re: Networking Question

#26 Post by bubu » 18 Jan 2012, 06:35

Ja serveris un klients ir uz viena datora, tad tīkla ātrums neko neietekmē, jo visa pakešu sūtīšana nemaz netiek līdz tīkla kartei. OS visu datu nodošanu izdara pati caur atmiņu.

User avatar
vecais_dumais_laacis
Guru
Guru
Posts: 109
Joined: 06 Dec 2010, 18:48
Contact:

Re: Networking Question

#27 Post by vecais_dumais_laacis » 18 Jan 2012, 09:55

vispaar jau incanti veerot datu bitu sipshanu njemot veeraa ka peec visa spriezhot izstaas ka network kods vai taa apstraade ir galiigaa pakaljaa
imho optimizaacijai stipri par agru

piem. caropiai neizmantoju nekaadu bitu kompreseeshanu - paaris simti useru mieriigi griezaas un traffiks nebija iipashi liels
...un ja bites buutu laachi...

CodeWolf
Posts: 119
Joined: 10 Dec 2010, 19:10
Location: LV-Riga-Marupe

Re: Networking Question

#28 Post by CodeWolf » 19 Jan 2012, 01:58

hmh..
Tas tā varētu būt.. jo reāli veidoju to ka pats to saprotu vai ari to no ka var atrast minimalo source..(ja neka cita nav)..
Un nēsmu spečaks c++ , kuru pārzinu tikai vajadzību līmenī.. Tāpēc jau šeit griežos ar jautājumiem/problēmām pēc palīdzības..
kānekā šeit taču ir LV Gamedev lapa nevis kautkāda kodētāju forums.. kur katrs grib izcelties ar savu māku programmēšanas jomā..
Zinu ka brīžiem ir tāda velme lai kāds pasaka kautko priekšā - jeb kā saka - "ar karoti ieliek mutē -bet nu pats es nekadigi to nevaru atrst..google esmu izmeklejies "ņigu ,ņagu" dažnedāžādus source kodus meklejis un no atrastā daļam kautko veidojis kopā..
Pie šī klienta un servera būšanas liekas ka jau strādāju kadus 3 mēnešus.. sāku ar TCP winsocketiem.. tad domāju ka labāk būtu pāriet uz kādu gatavu + atru un kvalitativu biblioteiku -kā RakNet..
Tad skatijos viņu pamācības.. kā vienm ,parādīta tiek tikai kautkāda darbība un tas kurā tiek kautkas ievadīts nav aprakstīts kas un kā.. nākas vien zīlēt un meklēt atbildi.. bet diemžēl to atrast neizdodas..
Tā pat arī jautāju skolā pasniedzējiem par Baitu dalīšanu.. Vienigais ko viņi atbildēja bija tas ka tas ir kautkas dzirdēts.. un kad parādīju bubu kodu nedaudz kautko sāka stāstīt par kautkādu komatu pārcelšanu .. kura beigas bija noprotams ka viņš nesaprot bubu rakstīto..

Tā beigu beigās nonācu pie bubu koda ...
Un esmu iestrēdzis pie pozīciju dalīšanas
Ja pareizi sapratu viņš skaitli saliek vienā paketē un nosuta kur pēctam tas tiek atkal sadalīts..
kods strāda.. bet vienīgā problēma ir tāda ka pozicija.x>= ar 100 tad viņš reseto to atkal uz 0..
un tā visu laiku, "tu kusties uz priekšu" -> klients otrpus servera arī - > brīdi kad sasniedz 100 iedaļu -> klients otrpus servera manis sutito poziciju atkal reseto uz 1.
kā lai atrisina šo problēmu..?
//OpenGL

bubu
Guru
Guru
Posts: 398
Joined: 07 Dec 2010, 11:54

Re: Networking Question

#29 Post by bubu » 19 Jan 2012, 02:32

CodeWolf wrote:Tad skatijos viņu pamācības.. kā vienm ,parādīta tiek tikai kautkāda darbība un tas kurā tiek kautkas ievadīts nav aprakstīts kas un kā.. nākas vien zīlēt un meklēt atbildi..
Tā arī ir saucas programmēšana. Tikai parasti "zīlēt" vārda vietā lieto "lasīt vēl un vēl, pamēģināt vienkāršus piemērus, palasīt un saprast sourci". Un tā nu tas notiek - vienmēr kautko jaunu iemācoties, tas nekad nebeidzas.
bet vienīgā problēma ir tāda ka pozicija.x>= ar 100 tad viņš reseto to atkal uz 0..
Varbūt tāpēc, ka tu kā max vērtību tai Packet::write metodei nodod 100? Es tur iepriekš teicu, ka tas tas dabosies ja ir min un max vērtības. Citādi pakošana būs daudz sarežģītāka, kad nav zināmas min un max vērtības.

Programmas raksta tā:
1) uzraksta kodu
2) salabo kodu lai tas kompilētos
3) salabo kodu lai tas kompilētos un strādātu pareizi
4) optimizē kodu, lai strādātu labi un ātri

Tu esi izlaidis 3 punktu, un uzreiz ķēries pie 4-tā. Tā nedari. Izdari vispirms 3 punktu. Uzraksti visvienkāršāko kautko, kas strādā labi. Pēc tam tikai sāc drusku pa druskai optimizēt no 4-tā punkta.

CodeWolf
Posts: 119
Joined: 10 Dec 2010, 19:10
Location: LV-Riga-Marupe

Re: Networking Question

#30 Post by CodeWolf » 20 Jan 2012, 22:45

Zinu zinu , tā arī parasti daru , katru lietu pie kuras apstājos.. pārbaudu meklēju tajās pašas lapās un ja tas neizdodas tad mekleju globāli..
Jā bet kāda jēga uzkodēt stabili -Paveikt lielu darbu pie tā kuru pēctam ir jāpārtaisa.. Es vienkārši gribu stiprus pamatus spēlei. jo pārsvārā visa sūtīšana balstīsies uz paketiem un ir nepieciešamība pēc daudz packetiem..

Lasot iepriekš tevis doto source īsti nesaprotu šo te vietu (jeb pēdējo komentāru)

Code: Select all

int tmp = (int)((value - min) / precision);
    int bitcnt = log2((max - min) / precision);

    // te saglabā no tmp bitcnt bitus buferī
Vienkārši liekas ka te tagat ir vairāki un dažādi kodi un tie nestiķējas kopa..
Kāda ir bitcnt nozīme..?
+ ko dos tās -100 ;100 vērtību piešķiršana ?
vienk liekas ka tas veido tādu kā loop funkciju tikai kāda tai ir nozīme.?
//OpenGL

Post Reply

Return to “Iesācējiem / For beginners”