Я создаю небольшой веб-сайт для хобби, в основном на Python и SQL на заднем конце, и я не уверен, как концептуально подойти к проблеме.Участник многопользовательской игры, подходящий для 3 или более пользователей
Что представляет собой эффективный способ получить трех или более игроков, сопоставленных в многопользовательской игре? Сначала я планировал сделать большую часть этого с помощью операторов SQL, где каждый активный игрок попадает в таблицу SQL, давайте назовем это, активную таблицу игр, на них, указывая, что они хотят играть в игру. После этого у меня будет таблица активных игр SQL, выполняющая триггерную функцию, где, когда указанное количество игроков вводится в эту таблицу, всем им назначается некоторый идентификатор игры, который указывает, что они должны быть привязаны к определенной игре , Затем этот game_id используется, чтобы гарантировать, что все действия происходят однозначно среди этих членов. Кроме того, для активных игроков должны быть тайм-ауты, если очередь слишком длинная.
Это эффективный способ приблизиться к этой задаче? Я обеспокоен тем, что это большое количество команд базы данных SQL. Я также недавно слышал, что использование триггеров SQL для часто используемых команд обычно недооценивается. Если это не разумный способ приблизиться к этому, то какие еще более эффективные/масштабируемые способы приближения к совпадению пользователей для многопользовательских матчей? Пожалуйста, как можно подробнее рассмотрите шаги алгоритма. Кажется очевидным, что это было сделано довольно часто, учитывая, сколько многопользовательских игр существует, но я действительно изо всех сил пытался найти материал или любой другой источник руководства о том, как подойти к нему.
Редактировать: соответствующие параметры в первую очередь группируют людей в игры по своему выбору. Другие, которые представляют интерес и важны для соответствия пользователям, - это, возможно, уровень навыков, где можно оценить, насколько вероятно, что три пользователя будут назначены в один и тот же матч на основе их записи о выигрыше/проигрыше.
На данный момент я хотел бы знать, как обращаться с назначением ровно трех игроков в игру. Я в порядке, и все равно считаю это чрезвычайно полезным, если бы алгоритм был описан даже без учета уровня пользовательского уровня, поэтому любой тип описания был бы очень оценен.
Вам нужно гораздо больше параметров. Например, существует ли минимальное и максимальное количество игроков в игре? Существуют ли какие-либо критерии, с помощью которых игроки получают соответствие друг другу (например, уровень квалификации, географическая близость)? Все игры сопоставляются через лобби или кто-то может создать частную игру? Etc и т. Д. Любой способ, которым вы разрезаете это, я не думаю, что триггеры - это путь. Наличие некоторого процесса, который периодически просыпается и соответствует игрокам, кажется лучшим подходом. Но это просто предположение, основанное на ограниченной информации, которую я имею сейчас. –
Я отредактировал выше, чтобы лучше объяснить соответствующие параметры. Хорошо. Я считал что-то похожее на то, что, как я думаю, вы упомянули.Вы имеете в виду что-то вроде хранимой процедуры? Есть ли способ, и вы бы порекомендовали, способ связать это с событиями, созданными пользователем? Игроки I.E 10 вдруг решили сыграть в один и тот же тип игры, как бы хранимая процедура, которая происходит с временными интервалами, сортирует этих игроков по группам из трех? Я предполагаю, что это может быть сделано с помощью SQL-группы по заявлению, добавленному в временную хранимую процедуру? Спасибо за предложения до сих пор, кстати. – JStewy