Jump to content

[REZOLVAT] Intrebare optimizare


SmockxD
 Share

Recommended Posts

  • Username :Smock
  • Problema întâlnită:Sunt curios ce as putea face in legatura cu optimizarea pe server.Doresc sa nu mi cada serverul.
  • Detalii despre problemă: am spus mai sus
  • Ce ai încercat să faci înainte să postezi?:-
  • Cod sursa (recomandat pastebin.com) : -
  • Alte detalii :Va multumesc.
Link to comment
Share on other sites

Chiar daca ai avea un gamemode optimizat, oricum ar putea avea o portiune de cod ce face ca serverul sa pice. Instaleaza plugin-ul crashdetect, poate reusesti sa gasesti cauza.

 

Ontopic:

  • nu crea string-uri mari, doar 128 de caractere pot fi afisate pe 1 rand din chat;
  • for(new x; x < MAX_PLAYERS; i++) - acest loop va face 1000 de iteratii, chiar daca pe server sunt doar 5 jucatori, foloseste foreach-ul in acest caz;
  • incearca sa inlocuiesti array-urile cu variabile normale, ex: new Float:pPos[3] il poti inlocui cu new Float:pPos1, Float:pPos2, Float:pPos3, nu mereu un cod scris mai usor/rapid e mai eficient decat unul scris mai "greu";
  • opreste loop-urile la momentul potrivit, iti voi da un exemplu din gamemode-ul meu:

image.png.e780474be6e551d7eacaf7a77180d8c6.png

Dupa cate vezi, odata ce jucatorul a intrat intr-un HQ, loop-ul a fost oprit, de ce? Pentru ca daca jucatorul va fi la intrarea/iesirea HQ-ului factiunii cu ID-ul 1 insa am in total 20 de factiuni,  s-ar mai face inca 19 iteratii aiurea.

  • in loc de mysql_query foloseste mysql_tquery deoarece, daca ai trimite un query catre DB folosind prima varianta serverul va trebui sa astepte pana cand s-ar executa si ar intoarce datele 'culese' in timp ce a doua varianta s-ar executa si ar trimite datele inapoi fara ca serverul sa fie afectat in vreon fel.
  • cand vrei sa selectezi doar 1 camp dintr-un tabel ce are 60 de campuri, pai selecteaza-l doar pe acela, exemplu:

Incorect:

image.thumb.png.f5f035913a0bfc232856847e0c16dfee.png

Corect:

image.thumb.png.b92253905aa08ef2e61a1ed421911087.png  

Asta ar fi doar un exemplu legat de query-uri, incearca sa inveti singur mai multe despre structura unui query, pana la urma SQL e si el un limbaj aparte si necista invatat.

  • foloseste switch-ul in loc de if cand ai mai multe iteme de verificat, un exemplu ar fi sa-l folosesti la OnPlayerDialogResponse, nu are rost sa-l folosesti doar pentru 1-2 conditii.

Acestea au fost doar cateva exemple, insa au un rol important. Sunt sigur ca daca vei mai cauta, o sa gasesti.

Link to comment
Share on other sites

Acum 3 minute, L0K3D_Hokage a spus:

Chiar daca ai avea un gamemode optimizat, oricum ar putea avea o portiune de cod ce face ca serverul sa pice. Instaleaza plugin-ul crashdetect, poate reusesti sa gasesti cauza.

 

Ontopic:

  • nu crea string-uri mari, doar 128 de caractere pot fi afisate pe 1 rand din chat;
  • for(new x; x < MAX_PLAYERS; i++) - acest loop va face 1000 de iteratii, chiar daca pe server sunt doar 5 jucatori, foloseste foreach-ul in acest caz;
  • incearca sa inlocuiesti array-urile cu variabile normale, ex: new Float:pPos[3] il poti inlocui cu new Float:pPos1, Float:pPos2, Float:pPos3, nu mereu un cod scris mai usor/rapid e mai eficient decat unul scris mai "greu";
  • opreste loop-urile la momentul potrivit, iti voi da un exemplu din gamemode-ul meu:

image.png.e780474be6e551d7eacaf7a77180d8c6.png

Dupa cate vezi, odata ce jucatorul a intrat intr-un HQ, loop-ul a fost oprit, de ce? Pentru ca daca jucatorul va fi la intrarea/iesirea HQ-ului factiunii cu ID-ul 1 insa am in total 20 de factiuni,  s-ar mai face inca 19 iteratii aiurea.

  • in loc de mysql_query foloseste mysql_tquery deoarece, daca ai trimite un query catre DB folosind prima varianta serverul va trebui sa astepte pana cand s-ar executa si ar intoarce datele 'culese' in timp ce a doua varianta s-ar executa si ar trimite datele inapoi fara ca serverul sa fie afectat in vreon fel.
  • cand vrei sa selectezi doar 1 camp dintr-un tabel ce are 60 de campuri, pai selecteaza-l doar pe acela, exemplu:

Incorect:

image.thumb.png.f5f035913a0bfc232856847e0c16dfee.png

Corect:

image.thumb.png.b92253905aa08ef2e61a1ed421911087.png  

Asta ar fi doar un exemplu legat de query-uri, incearca sa inveti singur mai multe despre structura unui query, pana la urma SQL e si el un limbaj aparte si necista invatat.

  • foloseste switch-ul in loc de if cand ai mai multe iteme de verificat, un exemplu ar fi sa-l folosesti la OnPlayerDialogResponse, nu are rost sa-l folosesti doar pentru 1-2 conditii.

Acestea au fost doar cateva exemple, insa au un rol important. Sunt sigur ca daca vei mai cauta, o sa gasesti.

Te salut, momentan nu am un server pe host , lucrez pe BloWn.Vreau sa stiu ce as putea face pentru a preveni caderile unui server cand sunt ceva  playeri pe el sau nu numai, si ce anume cauzeaza caderea acestuia, sunt la inceput, doresc sa invat si eu pentru mine chestia asta, sa nu mai stric bani aiurea pe altcineva cand pot invata si eu acest lucru.

 

P.S Iti multumesc mult pentru ce mi-ai aratat, o sa tin cont .Te pup ????

Edited by SmockxD
am uitat sa multumesc.
Link to comment
Share on other sites

Guest
This topic is now closed to further replies.
 Share

  • Recently Browsing   0 members

    • No registered users viewing this page.
×
×
  • Create New...