Рейтинг темы:
  • Голосов: 0 - Средняя оценка: 0
  • 1
  • 2
  • 3
  • 4
  • 5
Задание 1. Турниры
#1
Итак, второй турнир подходит к завершению, круг задач для версии 1.5 определен и она потиху продвигается к релизу, и можно подумать о том, что будет дальше. Ведь гораздо легче реализовывать новый функционал, если все заранее продумано.
А дальше стоит три больших задачи
- турниры
- проф. рейтинг
- клуб

Сегодня поговорим о первой задаче.

Необходимо продумать возможные варианты регламентов турниров.
Регламенты должны быть четкими, все правила - однозначно трактуемыми, чтобы легче было реализовать их программно. 
По крайней мере один вариант у нас уже есть - тот, что играется сейчас. Надо подумать, нужны ли иные и если да, то какие. И составить четкое описание.

Задание в первую очередь для бывших членов клуба "Своя Игра" Александра Яковлевича и Shorы. Ну и остальные могут подключаться.
Администратор сайта "Игра "Акционер"
Ответить
#2
О! Отличная тема!

Какой функционал необходим для турниров:

1. Приём заявок. Сначала на главной странице появляется оповещение о турнире с регламентом. На нём кнопка "подать заявку". Нажимая кнопку, игрок попадает в форму авторизации, проходит в игру, а его заявка улетает админу. В игре тоже должен быть раздел турниры, и авторизовавшийся игрок, попадая в этот раздел, прочтя регламент турнира, нажимает кнопку "подать заявку".

2. Составление турнирного расписания. По окончании срока приёма заявок на сайте автоматически составляется турнирное расписание. Очерёдность игроков определяется по жребию (случайным образом).

3. Оповещение игроков. В день, когда игрок должен сыграть турнирную партию, ему должно прийти напоминание на почту, а при авторизации в игре - сообщение.

4. Учёт турнирных партий. Начать турнирную партию должно быть возможно только в разделе "турниры". Там игрок ничего не выбирает, ему уже должна быть предложена турнирная партия текущего дня. Заходя в этот раздел игрок сразу попадает в текущую партию и начинает игру. Игроки, не участвующие в текущем турнире (и игроки, уже сыгравшие турнирную партию) там смогут посмотреть турнирную таблицу с результатами прошедших игр.

5. Составление турнирной таблицы.

6. Список "зал славы", куда помещаются победители турниров. Подраздел в разделе "турниры" или просто табличка там.
Ответить
#3
Имеет смысл играть в турнире "вслепую" ? Т.е. игроки до последнего не в курсе с кем играют?

Да и вне турнира можно сделать так. Игроки видят заявку на игру (анонимную) и по желанию начинают игру.
Для этого нужно реализовать функцию (может и сейчас такая есть, но либо не очевидно, либо...) приглашать не конкретного игрока как сейчас, а любого желающего.

п.с. функция такая похоже есть, но чуток кривая, я смог "хотеть играть" только на 12-картах, на 8 и 10 сидели боты. и нет анонимности.

п.п.с. теперь бот с 10 ушел, я поставил заявку на игру..
Ответить
#4
Governor, ты все отлично расписал - это называется workflow. Но тема несколько не об этом, а вот о чем:

"Круговая система — самая популярная для соревнований, проводимых длительное время, в течение сезона, который может длиться целый год и даже больше. При круговой системе каждая команда или игрок встречается с каждой другой по крайней мере раз (однокруговая система), часто дважды (двухкруговая система), обычно на своём и чужом поле (в футболе, хоккее и т. д.), или играя белыми и чёрными (в шахматах и шашках).

При большом числе участников соревнования и ограниченном времени на проведение турниров используется система с выбыванием (олимпийская система, плей-офф). По такой системе всегда проводятся соревнования в любительском боксе, почти всегда в теннисе и т. д.

Часто применяются смешанные системы, когда сначала организуются квалификационные группы, соревнования в которых проходят по круговой системе, а определение победителя турнира проводится по системе с выбыванием.

Швейцарская система используется в случае, когда число участников слишком велико для проведения кругового соревнования, но есть возможность провести больше туров, чем в системе с выбыванием. При швейцарской системе все участники турнира играют одинаковое количество туров, но в каждом туре встречаются игроки или команды, которые набрали одинаковое (или, по крайней мере, близкое) количество очков.

Система Мак-Магона похожа на швейцарскую, но с той разницей, что каждому игроку уже до начала турнира присваивается определённое количество очков. Такая система используется в тех случаях, когда в турнире принимают участие игроки весьма разной силы. Она позволяет сводить между собой игроков примерно одинакового уровня. Игрок, который выступает успешно, при такой системе поднимается автоматически в следующую по силе группу после выигрыша, получая возможность сыграть с более сильным противником"

Наши турниры пока проходят по круговой системе. У нас пока людей мало. Но при бОльшем количестве игроков возможно эта система будет не очень удобна. Значит нужно заранее продумать, нужны ли нам иные варианты, и если да, то как это может выглядеть.
Администратор сайта "Игра "Акционер"
Ответить
#5
Цитата:Значит нужно заранее продумать, нужны ли нам иные варианты, и если да, то как это может выглядеть.


Предлагаю "футбольную" систему:

Все участники делятся на группы по 4. Внутри группы каждый играет с каждым. Далее, занявший 1-е место в группе играет 1/8 финала со 2-м в другой группе, а 2-й - с 1-м. Победители 1/8 финала встречаются в четвертьфиналах, четвертьфиналисты - в полуфинале, полуфиналисты - в финале. Проигравшие в полуфиналах - в матче за 3-е место. 

Если участников не набирается на 8 групп по 4, можно сделать группы по 3 или по 2. Тогда без групповых матчей сразу начинается 1/8 финала.

Таким образом, для 32 участников мы имеем 8 групп по 4, для 24 участников - 8 групп по 3, для 16 участников - 8 групп по 2. Для 8 участников можно проводить, как сейчас, круговой турнир.

Если число участников 9 можно поступить так: разбиваемся на 3 группы по 3. В каждой группе все играют со всеми. Игроки, набравшие наименьшее число очков в каждой из групп играют между собой. Кто окажется худшим в этой группе - вылетает, остальные выходят в четвертьфинал.


Если число участников 10, поступаем аналогично, но разбиваем на 5 групп по 2. 5 проигравших играют между собой, 2-е худших вылетают.

Если число участников 11 или 12, разбиваем  на 4 группы по 3 (если 11 - одна группа будет неполной). Отсеиваем, соответственно 3-х или 4-х.

Если число участников 13 - 15, разбиваем  на 5 групп по 3 (если 13 - будет 2 неполных группы, если 14 - одна). Отсеиваем, соответственно 5-7 участников.

При числе участников 17-23 разбиваем на 8 групп, но некоторые будут по 2 человека, некоторые - по 3.

При числе участников 25-31 разбиваем на 8 групп, но некоторые будут по 3 человека, некоторые - по 4.

и т.д.
Ответить
#6
В качестве базовой выбираем круговую систему.
Она позволяет проводить турниры по 3-4 (?), 5-6, 7-8 ... 31-32 участника.
Одно- или двухкруговые турниры, практикуемые в других видах спорта, для нас не актуальны, так как мы можем организовать турнир, в котором участники играют не по 1, а по 2 игры сразу.
Уже такая система позволяет удовлетворить массу турнирных амбиций участников.

Вместе с тем разнообразить турнирную практику (при количестве заявок на турнир более 12-16), а также обеспечить организацию турниров с количеством участников более 32, хоть 100 или более
можно, реализуя модульную систему.
В качестве модулей фигурируют группы участников по 3-4, 5-6, 7-8, 9-10 человек.
1-й круг соревнования проходит в заданном (от количества участников) количестве групп выбранного модуля:
например 10 групп по 7-8 участников.
2-й круг и последующие (при большом количестве участников) соревнования проходит в выбранном количестве групп по выбранным модулям.
При этом во 2-й и последующие (при необходимости) круги проходят заданное количество участников из каждого модуля: 3-4 - 1 участник, 5-6 - 2 участника, 7-8 и 9-10 - 3 участника.


Таким образом задача программиста сводится к тому, чтобы
- сформировать стандартные модули по 3-4, 5-6, 7-8, 9-10 человек
- обеспечить возможность комбинирования модулей, создавая формулы турниров с большим количеством участников, которые требуют два или более этапов вплоть до финального.
Понятно, надеюсь: модули, как кубики... вот ряд 10-12 кубиков, из него сформировался ряд из 6 кубиков, а на вершине пирамидки один кубик - финальный модуль.

Можно предусмотреть два стандарта для распределения мест при равном количестве очков у двух и более игроков:
1 стандарт: по общей сумме капитала
2 стандарт:  по результату личной встречи (сначала количество очков, потом капитал).

Такая система позволяет проводить разнообразные турниры с произвольно выбранными формулами.
Формула турнира предусматривает
- количество этапов
- количество групп, которые играют на каждом этапе.

Организатор турнира в зависимости от количества участников выбирает
- сначала количество этапов турнира
- потом подходящий модуль и их количество на каждом этапе (на разных этапах могут быть разные модули)
- стандарт распределения мест при равном количестве очков.
Таким образом формируется формула турнира и его регламент.

Остается раскидать участников по группам (произвольно или по заданным критериям: по рейтингу, % побед или по квалификационным званиям).
В каждой группе участники получают свои номера случайным образом и начинают игры в соответствии с расписанием туров (кто с кем играет в каком туре).
Для расписания туров пользуемся известным стандартом - http://chess.sainfo.ru/table.php

Казалось бы всё, но... в принципе можно рассмотреть и внедрить ещё одну систему оценки побед, в которой
за победу 2:0 игрок получает 2,5 очка
за ничью с "плюсом" по капиталу - 1,5 очка
за ничью с "минусом" - 1 очко.
При равенстве очков - смотри выше.
Система интересная, но обладает одним недостатком - есть ситуации, когда игрок с меньшим количеством выигранных партий оказывается выше того, кто партий выиграл больше.
Пример: один игрок выиграл 2 игры и одну ничью с "плюсом" (выиграл 5 партий) и получил за них не 5, а 6,5 очков. Остальным соперникам проиграл.
Другой игрок 6 раз сыграл вничью (все с "минусом), т.е. выиграл 6 партий, но набрал 6 очков. Таким образом, выиграв на одну партию больше, он окажется в турнирной таблице ниже.

===============
Далее.
Несомненный интерес может вызывать Швейцарская система проведения турниров.
Я играл по ней, но не в Акционер, а в футбольном менеджере. Система интересная, может просто разнообразить принятую у нас систему турниров.
Но пока, думаю, на ней нет необходимости зацикливаться. Придет время, когда мы созреем для создания программного обеспечения и "швейцарки". Потом. Когда-нибудь. Если захотим Big Grin

===============
И последнее. Нет... предпоследнее.
Очень важно определиться, какие вообще турниры мы можем проводить.
- квалификационные турниры, победители которых получают квалификационные баллы для получения разрядов и пр. Это маленькие модули: 5-6, 7-8, максимум 9-10 человек.
- турниры более крупные, типа месячные (Февральский, Майский и пр.). До 16 человек, допустим. Если таких турниров (при наполнении сайта участниками) будет одновременно несколько проходить, то можно предусмотреть финал для их победителей.
- сезонные турниры (Летний, Осенний и пр.). Это уже для 32 участников и более...
- турниры, посвящённые каким-то событиям, памятным датам и пр. Формула произвольная.
- турниры региональные. Например, первенство Белоруссии, Украины, России, Минска, Киева и пр. (1 - 2 раза в год)
- самый крупный турнир - Первенство клуба (да хоть Первенство Мира Big Grin ) - все желающие всего сайта.
- ну и кучка всяких прочих турниров...
Конечно, следует учитывать, что при большом наполнении сайта и с большой разницей в опыте игроков будут организовываться лиги (высшая, 1, 2...), в том числе и с разбивкой по регионам при возможности. Тогда все перечисленные выше турниры будут проводиться в каждой лиге отдельно.

Турниры могут быть регламентные, т.е. Сайт объявляет некий турнир и запись в него желающих... Можно продумать перечень таких турниров с приложением к нему заранее составленного календаря на год.
Или турниры инициативные - т.е. по инициативе обладающих на это правом игроков - в любое время, с количеством участников от 5 до 10, например (в том числе квалификационные).

===================
Наконец, последнее.
Специфической формой турнира могут быть Матчи.
Матч-дуэль: два человека играют между собой оговоренное количество игр - 5, 10... Вот, например, мне было бы интересно сыграть такой матч с Шорой. Думаю, что другим игрокам было бы интересно следить за его перипетиями Big Grin
Командные матчи: две команды с 10, например, участниками, разбиваются на пары (по решению капитанов или произвольно) и каждая пара играет по 1-3 игры.

Фу... Иссяк, наконец.
Ответить
#7
(04-07-2016, 04:40 PM)Зырянов Писал(а): Специфической формой турнира могут быть Матчи.
Матч-дуэль: два человека играют между собой оговоренное количество игр - 5, 10...

Вот это хорошая мысль. Я тоже об этом думал. Это называется challenge - вызов. Видел такое на одном шахматном сайте. Такое можно делать даже сейчас. Не ждать, пока появится функция в игре, а так же как с турнирами - объявление на форуме "Я такой-то бросаю вызов такому-то...". И вперед. Только нужно сначала договориться с соперником - будет ли у него время играть, ведь все мы люди занятые.
Администратор сайта "Игра "Акционер"
Ответить
#8
(04-07-2016, 08:39 PM)Admin Писал(а):
(04-07-2016, 04:40 PM)Зырянов Писал(а): Специфической формой турнира могут быть Матчи.
Матч-дуэль: два человека играют между собой оговоренное количество игр - 5, 10...

Вот это хорошая мысль. Я тоже об этом думал. Это называется challenge - вызов. Видел такое на одном шахматном сайте. Такое можно делать даже сейчас. Не ждать, пока появится функция в игре, а так же как с турнирами - объявление на форуме "Я такой-то бросаю вызов такому-то...". И вперед. Только нужно сначала договориться с соперником - будет ли у него время играть, ведь все мы люди занятые.
Всё верно... ПО можно не ждать. Это я вписал, чтобы иметь стройную турнирную концепцию...
Я только ждал, чтобы турнир закончился... И было у меня две мыслишки:
Матч объявить, договорившись...
И еще одна... Расскажу о ней при подведении итогов.

Надеюсь, что всё остальное, мною написанное, тоже в пользу пойдет.
Ответить
#9
(04-07-2016, 08:39 PM)Admin Писал(а):
(04-07-2016, 04:40 PM)Зырянов Писал(а): Специфической формой турнира могут быть Матчи.
Матч-дуэль: два человека играют между собой оговоренное количество игр - 5, 10...

Вот это хорошая мысль. ...

Саша, если выделенная тобой идейка - хорошая, то возникают у меня естественные с течением времени вопросы:
Заслуживает ли внимания предложенная мною модульная система турниров по круговой системе игры?
Принимается ли предложение о том, что именно круговая система будет принята у нас в качестве базовой?
Другими словами:
дал ли я тебе ответы на интересующие тебя вопросы?
Или мне следует сосредоточить внимание на каких-то других вопросах. А, может быть, стоит усилить аргументацию предложенного мной...
Ответить
#10
Да, круговая с разбиением по модулю - это, то надо. Самая простая в реализации.
Администратор сайта "Игра "Акционер"
Ответить


Переход:


Пользователи просматривают эту тему: 1 Гость(ей)