[Совет] Немного про оптимизацию и создание сервера - Форум Cheat-Master.ru
  • Страница 1 из 1
  • 1
Модератор форума: Phoenixxx_Czar, Getbackthere, [CM]OlegEhtler  
[Совет] Немного про оптимизацию и создание сервера
Jamiraque[t0wer] Дата: Понедельник, 13.07.2015, 14:54 | Сообщение # 1
Советник
Сообщений: 603
Статус: Offline
Здравствуй уважаемый читатель. Знакома проблема нагрузки? На сервере невозможно играть? Тогда эта тема для тебя.

Пойдем с начала. Допустим, у вас есть мод, хорошие идеи, стартовый админ состав, примерно 10-20 стартового онлайна. При создании сервера главное - выбрать хороший хостинг (место размещения вашего игрового сервера). Например, я никогда не использую сервисы, специально адаптированные под хостинг серверов SAMP, ведь они намного дороже + много дополнительных плат (оплата за слоты, порт). Лучше использовать Виртуальные Выделенные Серверы (VDS/VPS). За 300-400р вы получите IP, следовательно любой желаемый порт (даже 7777), гарантию на конфиденциальность ваших данных (если у вас хороший хостер то и защиту от DD*S атак). Внимание! Хостинг с оперативной памятью ниже 512 мб может быть причиной "лагов" на сервере. Также важна пропускная способность VDS/VPS сервера (желательно выше 10мб/с).
Далее, советы по оптимизации мода.
Переменные. Допустим у вас есть проверка на наличие паспорта у игрока. Переменная может иметь два варианта - либо 0, либо 1 (ведь паспорт или есть, или его нету. Другого варианта нет). В таком случае лучше использовать тип переменной bool.
Пример:
Код
PlayerInfo[playerid][pPassport];
//pPassport в enum'е отметить типом bool:pPassport

Насчет констант. MAX_PLAYERS и т.д. лучше использовать под себя.
Пример:
Код
#undef MAX_PLAYERS
#define MAX_PLAYERS 20

ВАЖНО! Никогда не используйте цикл в цикле.
Видел такие коды:
Код
for(new i = 0; i < MAX_PLAYERS; i++)
{
      for(new z = 0; z < MAX_PLAYERS; z++)
      {
      }
}

Следовательно, такой цикл выполнится 500 раз по 500.
Пока это все, буду дополнять по возможности.
Писал понятным языком, все для вас wink


Сообщение отредактировал Jamiraque[t0wer] - Вторник, 14.07.2015, 10:23
[CM]Kingster Дата: Понедельник, 13.07.2015, 17:21 | Сообщение # 2
Боец
Сообщений: 245
Статус: Offline
Цитата Jamiraque[t0wer] ()
#define MAX_PLAYERS 20

Цитата Jamiraque[t0wer] ()
Следовательно, такой цикл выполнится 500 раз по 500.

Не 500 по 500, а 20 по 20.


Пользователь Cheat - Master уже 400 дней.

Я в Контакте - vk.com/buddy_fly
Artem_Buero Дата: Понедельник, 13.07.2015, 18:18 | Сообщение # 3
Сообщений: 4223
Статус: Offline
Перенёс

МОЙ ВК - https://vk.com/gospodin_buero
Len1n Дата: Понедельник, 13.07.2015, 18:41 | Сообщение # 4
Боец
Сообщений: 89
Статус: Offline
Jamiraque[t0wer],

Bool занимает те же 4 байта, как и Int. Особого смысла в использовании Bool нету. НО! Для информации игрока можно использовать PVar.
По поводу уменьшения MAX_PLAYERS. Вообще не советую использовать такую константу. Есть же прекрасная GetMaxPlayers() + Всякие foreach.


Связь со мной:
Skype: po61-rap
E-Mail: len1nthe@gmail.com

if(time>=1500 && rep<500) {
cout « "200 репы накручено!";
rep+=200;
}
Jamiraque[t0wer] Дата: Понедельник, 13.07.2015, 22:13 | Сообщение # 5
Советник
Сообщений: 603
Статус: Offline
Цитата Len1n ()
Bool занимает те же 4 байта, как и Int. Особого смысла в использовании Bool нету.

Если честно, я точно не знаю, я просто слышал об этом.
Цитата Len1n ()
GetMaxPlayers()

c этим согласен
[CM]ElitaMen Дата: Вторник, 14.07.2015, 02:35 | Сообщение # 6
Любитель
Сообщений: 42
Статус: Offline
Полезно!

VK- https://vk.com/id290124982
Jamiraque[t0wer] Дата: Вторник, 14.07.2015, 10:22 | Сообщение # 7
Советник
Сообщений: 603
Статус: Offline
Цитата [CM]ElitaMen ()
Полезно!

Благодарю, старался
Enrique_iBlack Дата: Вторник, 14.07.2015, 21:07 | Сообщение # 8
Новичок
Сообщений: 16
Статус: Offline
Цитата Len1n ()
Bool занимает те же 4 байта, как и Int. Особого смысла в использовании Bool нету. НО! Для информации игрока можно использовать PVar.
По поводу уменьшения MAX_PLAYERS. Вообще не советую использовать такую константу. Есть же прекрасная GetMaxPlayers() + Всякие foreach.


Foreach - не самый лучший вариант.

По мимо Pvar существуют еще пару видов переменных char(самый лучший способ,так считаю я).

Автору: Цикл в цикле,можно использовать,но с умом.Большого вреда при правильном применение это не окажет,а может вовсе не оказывать.Мега оптимизатор 80 левела,думай чему учишь,не чего полезного не увидил.


Сообщение отредактировал Enrique_iBlack - Вторник, 14.07.2015, 21:08
Jamiraque[t0wer] Дата: Вторник, 14.07.2015, 21:56 | Сообщение # 9
Советник
Сообщений: 603
Статус: Offline
Цитата Enrique_iBlack ()
Цикл в цикле,можно использовать,но с умом

ох ты ж как. С умом. ясно, лучше бы ничего не писал (дураку понятно, что не надо пихать куда попало)
Цитата Enrique_iBlack ()
Мега оптимизатор 80 левела,думай чему учишь

Что вы все тут агро? А ты хочешь в паблик форуме были все секреты оптимизации?
Может я тебя удивлю, но для полной оптимизации нужно хотя бы видеть код.
А это просто советы, чего не стоит делать при работе с модом.
Enrique_iBlack Дата: Среда, 15.07.2015, 20:01 | Сообщение # 10
Новичок
Сообщений: 16
Статус: Offline
Как то я тоже раньше спорил что цикл в цикле очень плохо.Увы мне доказали обратное...Tы сначала тестируй какую нагрузку,что и где дает.А потом уже думай что пишешь)
А теперь сделай проверку с new.pwn)Надеюсь додумаешься хотя бы как это сделать верно.
  • Страница 1 из 1
  • 1
Поиск: