Кардинальное обновление сайта

Обсуждение проблем и вопросов, связанных с нашим форумом и сайтом. Обязательно прочитайте правила!
jet800
Level 5 Hero
Level 5 Hero
Posts: 58
Joined: Wed Dec 23, 2009 22:39

Post by jet800 »

Да, чистый ява-скрипт и CSS :) Работает и на мобильных девайсах многих. Собсно от оси не зависит - зависит от браузера :) (даже в древнем IE6 заводится, но с мелкими огрехами).
User avatar
Dalai
Equilibris Core Team
Equilibris Core Team
Posts: 2797
Joined: Sat Apr 02, 2005 17:38
Contact:

Post by Dalai »

Клиентская часть работает в броузере, как и следует ожидать. Если под никсами более-менее современный броузер без кучи параноидальных ограничений - конечно, будет. По идее, должно работать и с айпадов, нуков, кзумов, галаксей и т.п.
Web-designer wanted. "Once a knight, always a knight, but once a King is once too often!" (c) Sir Bella of Eastmarch
jet800
Level 5 Hero
Level 5 Hero
Posts: 58
Joined: Wed Dec 23, 2009 22:39

Post by jet800 »

Печально, что за выходные никто по турнирам так и не высказался :( надеюсь до следующих кто-нить сможет изложить схему :)
User avatar
Accolon
Level 24 Hero
Level 24 Hero
Posts: 2564
Joined: Mon Jul 04, 2005 03:07

Post by Accolon »

jet800
не жди, если ждешь. :) Сделай, как думаешь... потом поправишь. :twisted:
jet800
Level 5 Hero
Level 5 Hero
Posts: 58
Joined: Wed Dec 23, 2009 22:39

Post by jet800 »

Так не пойдет. Мне не жалко помочь, но тратить силы и время в пустую на переделки мне не хочется. Я же не прошу оформленное по всем правилам ТЗ :)
User avatar
CTPAHHuK
Level 23 Hero
Level 23 Hero
Posts: 2002
Joined: Tue Feb 05, 2008 23:12
Location: Ханты-Мансийск
Contact:

Post by CTPAHHuK »

Нарож, сорри, я нпцду время скоро. Всй будет готовов.
User avatar
Dalai
Equilibris Core Team
Equilibris Core Team
Posts: 2797
Joined: Sat Apr 02, 2005 17:38
Contact:

Post by Dalai »

CTPAHHuK wrote:Нарож, сорри, я нпцду время скоро. Всй будет готовов.
Ээ-э-э-э.... :shock: Ты это, не спеши, в обчем. Лучше позже, да лучше. :roll:
Web-designer wanted. "Once a knight, always a knight, but once a King is once too often!" (c) Sir Bella of Eastmarch
jet800
Level 5 Hero
Level 5 Hero
Posts: 58
Joined: Wed Dec 23, 2009 22:39

Post by jet800 »

CTPAHHuK wrote:Нарож, сорри, я нпцду время скоро. Всй будет готовов.
Напомнило мне какой-то старый то ли мульт, то ли фильм, но настолько неуловимо ;D
User avatar
Dalai
Equilibris Core Team
Equilibris Core Team
Posts: 2797
Joined: Sat Apr 02, 2005 17:38
Contact:

Post by Dalai »

Попытаюсь описать задачу по олимпийской системе и смежным вопросам.


1. Турнир объявляется. Кем - уполномоченными участниками от порталов, полномочия выдаются вручную путем внесения в группу. Инициатор определяет даты (начала, окончания этапов), систему (пока 1 - олимпийская), судей.

1.1. В таблице турниров создается новый идентификатор и прописываются его свойства - название, дата начала, дата окончания, прочее.

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

1.3. Т.к. отношение юзер-турнир - многие ко многим, нет нормальной возможности связывать их ни в таблице турниров, ни в таблице юзеров. Поэтому используется таблица турнир-юзер, куда пишутся строки при присоединении и удаляются при выходе из турнира. Там же предусмотрен третий столбец для достижения юзера в турнире - вылет в 1/16, в 1/8, ..., 3 место, 2-е, 1-е. Список столбцов впоследствии можно расширять. Например - кумулятивный результат по очкам, заработанным или потерянным в турнире.

Аналогично впоследствии можно создать таблицу многие ко многим - турниры и карты. Дальше я на нее сошлюсь.

2. Подходит дата начала турнира. Список участников замораживается и происходит составление турнирной сетки.

2.1. Делается анализ количества участников. То количество бойцов, которого не хватает до ближайшей степени двойки, заполняется ботами. Я думаю, если заранее создать 63 бота, нам хватит их на турнир любого уровня. У ботов 0 очков рейтинга, они, очевидно, всегда проигрывают, и также очевидно, что выигрыш у бота не приносит победителю очков в общем зачете и не должен выводиться в статистике игрока.
Пример: зарегистрировалось 27 участников. Ближайшая степень двойки - 32. В турнир добавляется 5 ботов.

Аналогично надо создать штук 127 игроков типа winner 1 - winner 127, и еще 127 loser 1 - loser 127. Тоже с нулем рейтинга, конечно. winner, loser и bot - специгроки.

2.2. Рисуется турнирная сетка. Вроде такой: http://images.challonge.com/wc2011.png (для облегчения понимания дальнейшего советую нарисовать себе на листе бумаги такую сетку с 6 уровнями). Рисуется в первую очередь как структура, а не как изображение. Мы помним, что основной факт у нас - это игра. Главная таблица базы имеет структуру типа следующей:

Code: Select all

Номер записи - ID игрок 1 - ID игрок 2 - (можно потом добавить игроков до 8) - ID мировоззрения игрока 1 - ID мировоззрения игрока 2 - (и так до 8) - ID статуса 1 игрока (победил, проиграл, ничья) - ID статуса 2 игрока - (и так до 8) - ID карты - ID типа победы (сдался, финалка и т.п.) - ID турнира (по умолчанию 0 - General) - № игры в турнире - коммент.
Сначала делаем для 2-х игроков, но все время держим в голове, что их может быть 3, 5, и 8. Что из них могут 2 выиграть и 6 проиграть, а могут 7 выиграть и 1 проиграть. Т.е. код должен быть легко расширяемым в эту сторону. То же самое при подсчете рейтинга. Хороший пример реализации подсчета очков для нескольких игроков - игра Carcassone. Хотя и не абсолютно идентичный нашему.

Так вот - в отличие от типичного репорта, где запись формируется после игры, задать структуру мы можем только сформировав все записи заранее. Для турнира, на который зарегистрировалось 27 участников, это будет 31 строка (надеюсь, не нужно пояснять, почему так). Для этого нужно пронумеровать все игры в турнире. Нанем с конца. Финал - номер 1. Полуфиналы - №2 и №3. И т.д. Участники финала - winner 2 и winner 3. Участники игры 2 - winner 4 и winner 5. Игры 4 - winner 8 и winner 9. Таким образом мы доходим до первого тура, где вместо виннеров - конкретные игроки.

2.3. Распределение игроков по парам. Боты достаются самым рейтинговым из зарегистрированных игроков. Если мы считаем, что рейтинг отражает класс игрока - значит именно эти игроки больше других заслуживают пройти в следующий тур. Остальные распределяются по парам случайным образом. Потом можно продумать что-то более продвинутое, в зависимости от рейтинга, чтобы монстры не встречались с монстрами на фоне хилых новичков. Пока же достаточно случайного выбора.
Принцип простой - есть всего 3 типа игроков. Боты, Гранды (лучшие по числу ботов), прочие. Выбираем случайно одного. В пару ему выбираем случайно второго, но уже из подгруппы. Для гранда выбираем бота и наоборот, для прочих - других прочих. Значения ищем, разумеется, по таблице из п.1.3.

2.4. В паре, где есть бот, победитель определяется автоматически. Допустим, это была игра 31, в которой участвовал MegaGamer и Bot 6. Строка с ID турнира и № игры=31 заполняется игроками, автоматом выбирается победитель MegaGamer, он же становится winner 31 и в следующем туре, уже в игре №15 вместо "winner 30 против winner 31" будет "winner 30 против MegaGamer".

3. Стартует турнир. Игрок постит репорт. Если в репорте указан турнир, происходит множество проверок. Подходит ли время? Есть ли такая пара игроков? Не является ли один или оба указанных игрока специгроками? Впоследствии можно добавить проверку карты - используется ли карта из набора карт, одобренных для турнира (п. 1.3 - последнее предложение).

3.1. Если репорт проверен и правилен - ID победителя игры №K заменяет в таблице ID игрока winner K.

Турнир продолжается до победного конца.

Впоследствии можно добавить возможность ручного и/или автоматического (по заранее заданному инициатором турнира календарю) форсирования этапа турнира. Все, кто не успел сыграть до сих пор, считаются проигравшими и выбывают, на место winner'ов их игр заходят боты.

Last but not least - визуализация результата. Картинка выше - неплохой пример.

Комментарии, дополнения, исправления?
Web-designer wanted. "Once a knight, always a knight, but once a King is once too often!" (c) Sir Bella of Eastmarch
User avatar
CTPAHHuK
Level 23 Hero
Level 23 Hero
Posts: 2002
Joined: Tue Feb 05, 2008 23:12
Location: Ханты-Мансийск
Contact:

Post by CTPAHHuK »

На днях на связь со мной вышел очередной Легионер последнего сезона ТоХ. Crag aka Kekc бывший соклановец :) Заразил меня энтузиазмом :) Предлагаю начать заканчивать создание нового сайта :)

Хочу понять, на каком мы сейчас этапе? Что сейчас нужно делать?


По предыдущему посту (исходя из настроения "давайте сделаем полную версию сайта какую сможем, а потом будем улучшать"):

1. Турнир объявляется. На новом сайте исполнителем ЧМ, на форумах уполномоченными участниками от порталов, полномочия выдаются вручную путем внесения в группу. Инициатор определяет даты (начала, окончания этапов), систему (пока 1 - олимпийская), судей.

ОК.

1.1. В таблице турниров создается новый идентификатор и прописываются его свойства - название, дата начала, дата окончания, прочее.

ОК

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

ОК

1.3. Т.к. отношение юзер-турнир - многие ко многим, нет нормальной возможности связывать их ни в таблице турниров, ни в таблице юзеров. Поэтому используется таблица турнир-юзер, куда пишутся строки при присоединении и удаляются при выходе из турнира. Там же предусмотрен третий столбец для достижения юзера в турнире - вылет в 1/16, в 1/8, ..., 3 место, 2-е, 1-е. Список столбцов впоследствии можно расширять. Например - кумулятивный результат по очкам, заработанным или потерянным в турнире.

Аналогично впоследствии можно создать таблицу многие ко многим - турниры и карты. Дальше я на нее сошлюсь.

ОК

2. Подходит дата начала турнира. Список участников замораживается и происходит составление турнирной сетки в ручную инициатором турнира.

ОК

2.1. Делается анализ количества участников. То количество бойцов, которого не хватает до ближайшей степени двойки, заполняется ботами. Я думаю, если заранее создать 63 бота, нам хватит их на турнир любого уровня. У ботов 0 очков рейтинга, они, очевидно, всегда проигрывают, и также очевидно, что выигрыш у бота не приносит победителю очков в общем зачете и не должен выводиться в статистике игрока.
Пример: зарегистрировалось 27 участников. Ближайшая степень двойки - 32. В турнир добавляется 5 ботов.

Аналогично надо создать штук 127 игроков типа winner 1 - winner 127, и еще 127 loser 1 - loser 127. Тоже с нулем рейтинга, конечно. winner, loser и bot - специгроки.

ОК так сейчас и работает.

2.2. Рисуется турнирная сетка. Вроде такой: http://images.challonge.com/wc2011.png (для облегчения понимания дальнейшего советую нарисовать себе на листе бумаги такую сетку с 6 уровнями). Рисуется в первую очередь как структура, а не как изображение. Мы помним, что основной факт у нас - это игра. Главная таблица базы имеет структуру типа следующей:

Сначала делаем для 2-х игроков, но все время держим в голове, что их может быть 3, 5, и 8. Что из них могут 2 выиграть и 6 проиграть, а могут 7 выиграть и 1 проиграть. Т.е. код должен быть легко расширяемым в эту сторону. То же самое при подсчете рейтинга. Хороший пример реализации подсчета очков для нескольких игроков - игра Carcassone (а как там?). Хотя и не абсолютно идентичный нашему.

Так вот - в отличие от типичного репорта, где запись формируется после игры, задать структуру мы можем только сформировав все записи заранее. Для турнира, на который зарегистрировалось 27 участников, это будет 31 строка (надеюсь, не нужно пояснять, почему так). Для этого нужно пронумеровать все игры в турнире. Начнем с конца. Финал - номер 1. Полуфиналы - №2 и №3. И т.д. Участники финала - winner 2 и winner 3. Участники игры 2 - winner 4 и winner 5. Игры 4 - winner 8 и winner 9. Таким образом мы доходим до первого тура, где вместо виннеров - конкретные игроки.

ОК ОК

2.3. Распределение игроков по парам. Боты достаются самым рейтинговым из зарегистрированных игроков. Если мы считаем, что рейтинг отражает класс игрока - значит именно эти игроки больше других заслуживают пройти в следующий тур. Остальные распределяются по парам случайным образом. Потом можно продумать что-то более продвинутое, в зависимости от рейтинга, чтобы монстры не встречались с монстрами на фоне хилых новичков (здесь обычно работало другое правило - оттягивать встречи игроков из одной страны как можно дольше; все остальное регулирует рейтинг). Пока же достаточно случайного выбора.
Принцип простой - есть всего 3 типа игроков. Боты, Гранды (лучшие по числу ботов), прочие. Выбираем случайно одного. В пару ему выбираем случайно второго, но уже из подгруппы. Для гранда выбираем бота и наоборот, для прочих - других прочих. Значения ищем, разумеется, по таблице из п.1.3.

ОК

2.4. В паре, где есть бот, победитель определяется автоматически. Допустим, это была игра 31, в которой участвовал MegaGamer и Bot 6. Строка с ID турнира и № игры=31 заполняется игроками, автоматом выбирается победитель MegaGamer, он же становится winner 31 и в следующем туре, уже в игре №15 вместо "winner 30 против winner 31" будет "winner 30 против MegaGamer".

Ага :)

3. Стартует турнир. Игрок постит репорт. Если в репорте указан турнир, происходит множество проверок. Подходит ли время? Есть ли такая пара игроков? Не является ли один или оба указанных игрока специгроками? Впоследствии можно добавить проверку карты - используется ли карта из набора карт, одобренных для турнира (п. 1.3 - последнее предложение).

ОК

3.1. Если репорт проверен и правилен - ID победителя игры №K заменяет в таблице ID игрока winner K.

ОК

3.2. Если репорт проверен и неправилен - игроки получают письма о ложном репорте с просьбой пересмотреть данные репорта и связаться с испольнителем турнира.

3.3. В момент старта следующего тура все победители завершающегося тура получают поздравительные типовые письма (форма имеется). Все проигравшие получают благодарственное письмо за участие.

Турнир продолжается до победного конца.

4. Турнир завершается рассылкой всем участниками информационного письма о итогах (список призеров и количество баллов, добавленное в рейтинг за участие игрока, которому направлено письмо). А так же сообщение о старте месяца реваншей (тут надо додумать).


Впоследствии можно добавить возможность ручного и/или автоматического (по заранее заданному инициатором турнира календарю) форсирования этапа турнира. Все, кто не успел сыграть до сих пор, считаются проигравшими и выбывают, на место winner'ов их игр заходят боты.

Last but not least - визуализация результата. Картинка выше - неплохой пример.

ОК

Всё описано очень подробно (в моем понимании) и очень совпадает с текущей схемой организации чемпионата мира :) Dalai, это ты сделал то, что ты просил сделать меня? Или что-то еще нужно описать?
User avatar
Dalai
Equilibris Core Team
Equilibris Core Team
Posts: 2797
Joined: Sat Apr 02, 2005 17:38
Contact:

Post by Dalai »

CTPAHHuK wrote:Dalai, это ты сделал то, что ты просил сделать меня? Или что-то еще нужно описать?
Да. Я мог упустить какие-то важные моменты, поэтому как минимум нужно было проверить. Кроме того, это же может стать образцом для описания других типов турнира.
CTPAHHuK wrote:Хочу понять, на каком мы сейчас этапе? Что сейчас нужно делать?
Пока можно ничего не делать, я пытаюсь организовать программиста.
Web-designer wanted. "Once a knight, always a knight, but once a King is once too often!" (c) Sir Bella of Eastmarch
User avatar
CTPAHHuK
Level 23 Hero
Level 23 Hero
Posts: 2002
Joined: Tue Feb 05, 2008 23:12
Location: Ханты-Мансийск
Contact:

Post by CTPAHHuK »

Dalai
Как у тебя дела с обновлением?

Я пока что сделал страховочный вариант для проведения ЧМ. На сайте собрана краткая инфа о двух последних ЧМ и будет добавлена подобная сетка про ЧМ 2008 и ЧМ 2009.

h4.ucoz.com
User avatar
Dalai
Equilibris Core Team
Equilibris Core Team
Posts: 2797
Joined: Sat Apr 02, 2005 17:38
Contact:

Post by Dalai »

Никак. Человек, которого я хотел задействовать в исполнении, сейчас сильно занят. До конца марта, а то и середины апреля, ситуация не изменится.
Web-designer wanted. "Once a knight, always a knight, but once a King is once too often!" (c) Sir Bella of Eastmarch
User avatar
CTPAHHuK
Level 23 Hero
Level 23 Hero
Posts: 2002
Joined: Tue Feb 05, 2008 23:12
Location: Ханты-Мансийск
Contact:

Post by CTPAHHuK »

Есть ли ресурсы на создание сайта лиги? С минимальным набором:
- профили игроков;
- система репорта игр;
- система рейтинга.
User avatar
Dalai
Equilibris Core Team
Equilibris Core Team
Posts: 2797
Joined: Sat Apr 02, 2005 17:38
Contact:

Post by Dalai »

Пока нет :(
Web-designer wanted. "Once a knight, always a knight, but once a King is once too often!" (c) Sir Bella of Eastmarch
User avatar
CTPAHHuK
Level 23 Hero
Level 23 Hero
Posts: 2002
Joined: Tue Feb 05, 2008 23:12
Location: Ханты-Мансийск
Contact:

Post by CTPAHHuK »

Ок-ок, покручу пока сам. Появилась необходимость. Французы пускают свой рейтинг на самотёк без особой поддержки,они предложили слияние всех игроков в одну лигу на любом сайте
User avatar
Dalai
Equilibris Core Team
Equilibris Core Team
Posts: 2797
Joined: Sat Apr 02, 2005 17:38
Contact:

Post by Dalai »

Ты готов заниматься этим в текущем режиме в роли постановщика задач, тестера, собирателя обратной связи и т.п.? Другими словами, уделять этому время часто? Я могу делать это лишь изредка и лишь ради некоторых специфических соображений, но скорее всего, не смогу заниматься этим рутинно. Если да - есть некоторая перспектива.
Web-designer wanted. "Once a knight, always a knight, but once a King is once too often!" (c) Sir Bella of Eastmarch
User avatar
CTPAHHuK
Level 23 Hero
Level 23 Hero
Posts: 2002
Joined: Tue Feb 05, 2008 23:12
Location: Ханты-Мансийск
Contact:

Post by CTPAHHuK »

Dalai wrote:Ты готов заниматься этим в текущем режиме в роли постановщика задач, тестера, собирателя обратной связи и т.п.? Другими словами, уделять этому время часто?
Уверен, что не я один готов этим заниматься, а ты зачем спрашиваешь?
User avatar
Max_HMMI
Equilibris Core Team
Equilibris Core Team
Posts: 826
Joined: Sat Apr 02, 2005 19:45
Location: Киев

Post by Max_HMMI »

CTPAHHuK wrote:Уверен, что не я один готов этим заниматься, а ты зачем спрашиваешь?
Потому что, как показывает опыт, первоначальный энтузиазм на подобных проектах быстро гаснет. Справедливости ради отмечу, что тому есть объективные причины.
User avatar
CTPAHHuK
Level 23 Hero
Level 23 Hero
Posts: 2002
Joined: Tue Feb 05, 2008 23:12
Location: Ханты-Мансийск
Contact:

Post by CTPAHHuK »

Я про это:
Dalai wrote:Если да - есть некоторая перспектива.
О какой перспективе речь? Не понял :)
Post Reply