C ++, ведение журнала на стороне сервера, умножение файлов одновременно - PullRequest
0 голосов
/ 08 апреля 2019

У меня есть сервер 2D-игр, написанный на C ++, который может вместить до 1000 игроков (это ограничение зависит от размера карты, а не от производительности каким-либо образом).

Это оптимизация, и поэтому она более или менее великолепна, как ее написали некоторые действительно хорошие разработчики.

То, что я сейчас пытаюсь сделать, - это прикрепить логирование для каждого и каждогоигрок.Я хочу записывать такие действия, как: перемещать вещи внутри, разговаривать, умирать, входить в систему и т. Д. И т. Д. (Так что, в основном, не все, а лишь часть того, что делает игрок)

У меня нетс точки зрения программирования, скорее, мне не хватает знаний о том, как (производительность) справиться с этим, и если моя попытка будет хорошей.Сейчас я пытаюсь сделать следующее:

Я почему-то подумал, что было бы хорошо, чтобы каждый журнал проигрывателя сохранялся в разные файлы с использованием ofstream.open.(Я действительно считаю, что это действительно плохая идея, , но (1.) так ли это на самом деле? (2.) И почему это так? (3.) Может ли она обрабатывать до 1000 открытых файлов? ) Iдействительно есть класс LoggingPlayer;при входе в систему я создаю экземпляр этого класса и отслеживаю действия игроков, отправляя информацию в функцию регистрации.Я сохраняю запись в файл, когда буфер заполнен.Я закрываю файл только когда игрок выходит из системы. Если я потеряю файл - это не страшно, правда.Если сервер падает или замедляется в течение нескольких секунд - для меня это большое дело.

У меня есть несколько вопросов относительно:

(4.) Как я могусделать его лучше? (например, использовать один логгер для всех игроков? войти в один файл?)

(5.) Стоит ли полностью отказаться от попыток сделать свой собственный регистратор и попробоватьуже существующие?

(5a.) Если да, Каковы рекомендации для такого случая? (онлайн с 500-1000 пользователей).Я слышал о буст-логе, но никогда не пробовал.

Я очень ценю всю помощь;поэтому, если вы знаете ответ только на один вопрос, пожалуйста, не стесняйтесь.

...