Приветствую. Вопросы будут из разряда "что лучше".
1. Создавать итераторы для фракций, работ, каких либо функций, где могут принимать участие не один игрок или достаточно будет создать один итератор для всех игроков на сервере. Да, когда будет онлайн 100 человек - и второй вариант сгодится. А если онлайн 1000? Ведь во фракции может быть 3 человека, еще 3 на работе, еще 3 на гонках и так далее. Но я плохо разбираюсь в потреблении памяти, значимости кучи таких переменных и т. д. Если создавать итераторы, то лично у меня в моде их будет от 50/100. Как лучше и почему?
2. Стринги внутри функций. К пример в командах, в каких либо ячейках DialogResponse, отдельных пабликах. Видел как то статью, где описывалось, что стринги внутри таких функций после использования удаляются, или память очищается - не помню. Но в другой статье я видел, что в павно нельзя выгружать память и когда мы создаем стринг, то после его использования он остается в памяти навсегда. Так собственно вопрос. Может создать один глобальный стринг для таких операций? Либо же в этих местах, к которым идет частое обращение прописать static string вместо new, чтобы не создавать его а использовать как в примере с глобальным, но лишь в определенном месте? Как лучше и почему? И желательно расписать или скинуть ссылки на информацию по данным вопросам.
3. Есть ли разница в проверках:
if(!(0 << level << 10))
и
if(level < 0 || level > 10)
в чем их отличия, какую лучше использовать или есть ли вообще хоть какая-то разница?
4. По поводу стоков. К примеру у меня есть диалог с какой-либо информацией, довольно большой. Возможно занимает 600 символов.
А вызываю я этот диалог допустим в 10-ти различных местах. Как мне будет лучше, сделать сток с данным диалогом и вызывать его, либо прописать во всех 10-ти местах этот диалог? Форматирование я в этом примере не использую. Как и почему?
5. Вопрос о MySQL. Я могу создать сток, в который буду передавать название столбца данных в базе и то, что в него нужно записать при каждом изменении. Либо могу сохранять раз в час весь сервер. Имеется какая либо нагрузка при частых запросах, если они не крупные? То есть затрагивается один столбец конкретного аккаунта, к примеру. Если я буду пользоваться первым способом - будет ли разница в том, чтобы вызывать данный сток раза по 4 при продаже дома (к примеру) или лучше делать эти запросы полностью в том-же месте, где находится функция продажи этого дома. Ведь там уже и готовый стринг, который отображает информацию игрокам. И запросов к БД будет меньше. Или это не имеет никого значения? И обращение к стоку не занимает значительного времени?
6. По поводу Enum. Если мне нужно для различных целей создавать переменные, которые я не хочу запихивать в данные аккаунта. Передача всё того-же дома, транспорта, какие либо еще действия - мне лучше создавать под них enum с пунктами или же несколько переменных типа new [MAX_PLAYERS]? Читал когда-то, что к enum обращение выполняется дольше, чем к обычной переменной - так ли это? Так-же. Существует ли какое либо ограничение на разумное использование enum'a? То есть я могу записывать туда хоть 300 пунктов (name, level, cash, и т. д.) или можно всего 50 - к примеру? Будет ли разница в работе при использовании 300 пунктов и 50? Если да - какая?
7. Вопрос схож с 6, но про static const. К примеру у меня есть static const Float:Race_Vehicle_Pos[RACE_MAX_PLAYERS][8][4] - куда я записываю 40 столбцов, по 8 пунктов, по 4 координаты. Выглядит это так:
Вопрос исключительно по работоспособности данной реализации. Есть ли какие либо минусы? Возможно скорость, потребление памяти или что либо еще. По поводу читабельности кода - меня это не смущает.PHP код:
{{0.0,0.0,0.0,0.0}, {0.0,0.0,0.0,0.0}, {0.0,0.0,0.0,0.0}, {0.0,0.0,0.0,0.0}, {0.0,0.0,0.0,0.0}, {0.0,0.0,0.0,0.0}, {0.0,0.0,0.0,0.0}, {0.0,0.0,0.0,0.0}},
{{0.0,0.0,0.0,0.0}, {0.0,0.0,0.0,0.0}, {0.0,0.0,0.0,0.0}, {0.0,0.0,0.0,0.0}, {0.0,0.0,0.0,0.0}, {0.0,0.0,0.0,0.0}, {0.0,0.0,0.0,0.0}, {0.0,0.0,0.0,0.0}},
8. Стример и объекты. Насколько я знаю, стример создает объекты там, где есть игроки. За счёт этого обходит ограничение. Но тут что-то не складывается. Существует проект аризона, на котором используются примерно 40 тысяч объектов, хотя в стримере ограничение 10 тысяч. На форумах частые вопросы касательно того, что из-за большого количества объектов не прогружаются какие-либо места. Почему такой проблемы нет у аризоны? Стример у них не особенный, не модифицированный.
Пока хватит)