Войти
Игровой ДизайнФорумОбщее

Мультиплеерная карточная онлайн игра

#0
16:16, 15 фев. 2007

Есть идея мультиплеерной ("коллекционной") карточной игры, наподобие Небожителей, Берсерка, MTG и т.п., где двое или более игроков взаимодействуют между собой разыгрывая карточную колоду. Для первоначальной отладки предполагается использовать Flash-клиент с эмуляцией серверной части и простой сокет-сервер для броадкастинга сообщений по нескольким клиентам.

Хотелось бы пообщаться с людьми, разрабатывающими/разработавшими подобные игры по вопросам:
- структуры хранения данных (карты, правила игры);
- протокол обмена;
- разборка игровой ситуации на стороне сервера;
- идеология и практика разрешения коллизий (игрок вышел до окончания игры -- засчитывать ли ему поражение, что делать с остальными игроками, откладывать ли партию, чтобы потом можно было ее доиграть и т.д.);


#1
23:56, 15 фев. 2007

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

Кстати, есть ли уже подобное проекты (именно онлайн)?

#2
0:11, 16 фев. 2007

Также советую добавить функцию сохранения боя
Один игрок предлагает другому продолжить позже
Они договариваются о времени он-лайн и загружают свой бой

#3
0:11, 16 фев. 2007

al, как минимум есть берсерк и собственно МТГ.
meps, стучи в асю я думаю нам будет о чем поговорить!

#4
0:34, 16 фев. 2007

al
Есть еще одна проблема -- турниры. Группы участников для отдельных туров, на мой взгляд, должны назначаться только сервером, чтобы не было злоупотреблений с поддавками. Но назначенные участники могут играть в онлайне в различное время (правда, время можно учесть при выделении групп) или один из участников может не явиться на бой. Причем, наказывать за отсутствие ни того ни другого нельзя...

MasterBlaster
Сохранение боя предполагается. В том числе, можно автоматически сейвить бой при обрыве связи и заставлять (???) доигрывать подвисшие игры. С другой стороны, если для двух игроков вполне реально сговориться и встретиться в онлайн для доигрывания, то если игроков было 3-4 -- это станет для них организационной проблемой.

#5
0:50, 16 фев. 2007

а можно зделать так что игра больше 2-х людей и будет турниром назначенным по обоюдному согласию всех участников и неявление одного из них засчитывается ему как дискволификация

#6
1:56, 16 фев. 2007

Parhelion
>как минимум есть берсерк и собственно МТГ.
Спасибо. О берсерке только слышал, а в комп-версию MTG даже играл, но не знал, что есть онлайновая версия.

meps
>Есть еще одна проблема -- турниры
Обычно о турнире и времени проведения сообщают заранее и все желающие подписываются в течение нескольких дней. Со временными несостыковками у некоторых игроков проблемы определённо возникают, но это не снижает масштабы фана, который получают игроки от турнира. Ну и плюс ко всему опоздавшим игрокам дают время до нескольких часов, в течение которого они должны подсоединиться.
>Причем, наказывать за отсутствие ни того ни другого нельзя...
Здесь как раз можно выделить счётчик незаконченных/законченных турниров. И по нему закрывать доступ к некоторым турнирам для игроков с плохой турнирной репутацией.

>заставлять (???) доигрывать подвисшие игры
Заставлять, конечно, не надо никогда. Обычно игроки предпочитают не переигрывать, т.к. новую игру начать легче. Но  если перезапуск с сохранения будет проходить автоматически сразу после сбоя, очень быстро и без глюков - то это вполне приемлемо и даже круто.

#7
10:35, 16 фев. 2007

MasterBlaster
Турнир -- это не одна массовая игра, а серия мелких игр. Победитель турнира определяется либо по олимпийской системе, либо по сумме набранных очков. Кроме того, турнир -- не спонтанное взаимное мочилово, а заранее спланированное и управляемое мероприятие. Дисквалифицировать за неявку нельзя, т.к. человек может по разным причинам задержаться или не явиться на турнирный бой. Скорее всего, следует выделять интервал времени (несколько дней), в течение которого игрок должен отыграть не менее 80% назначенных ему игр.

al
Думаю, мало кто будет ждать назначенного ему соперника несколько часов. Скорее имеет смысл противникам о времени договариваться напрямую и заранее, а драться в удобное им двоим (3-4-...) время. Но все назначенные сервером бои нужно будет обязательно провести в течение турнира. Средний процент реально проведенных боев будет характеризовать как раз турнирную репутацию игрока.
Не пускать на турнир игроков с плохой репутацией по-моему слишком жестоко ;) Но при распределении отдельных боев можно объединять игроков со сходными значениями репутации. Таким образом, если игрок часто подводит своих соперников неявкой -- он будет назначаться в бои, где соперниками будут являться такие же безответственные игроки.
Кстати, в связи с турнирной репутацией есть еще один хитрый момент -- какова она у только зарегистрировавшегося игрока? Можно сделать флаг "еще не участвовал в турнирах" и перемешивать таких нюбов среди своей собственной категории.

Кстати, подумал, что если был случайно прерван хороший бой, когда оба игрока действительно заинтересованы в его исходе, то при потере связи можно предлагать сохранить игру ОСТАВШЕМУСЯ игроку и именно он тогда будет инициатором продолжения этого боя. Общее количество сохраненных игр нужно ограничивать, чтобы их не подвешивали слишком много, а не доигранные в течение недели игры сбрасывать.  Кстати, если игра сохраняется одним из участников боя, то она должна появиться среди сохраненных игр у всех, кто в нем участвовал.

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

#8
11:10, 16 фев. 2007

У онлайн карточных игр есть серьёзный недостаток -
- незащищённость от использования icq, ventrilo, teamspeak-а, и чёрта в ступе :(

#9
11:53, 16 фев. 2007

Nikopol
Это же не покер с игрой против крупье. Если игра 1 на 1, то проблем вообще нет, при играх 2 на 2, карты союзника и так будут вскрыты, возможны правила, когда игра в принципе ведется в открытую. Ну а в прочих случаях -- ни одна онлайновая игра не застрахована от сговора между игроками.

#10
13:11, 17 фев. 2007

>Думаю, мало кто будет ждать назначенного ему соперника несколько часов. Скорее имеет смысл противникам о времени договариваться напрямую и заранее, а драться в удобное им двоим (3-4-...) время.
Тогда сервер должен устанавливать крайние дату и час, к которым игра между игроками должна завершиться (на основе расписания турнира).

>Не пускать на турнир игроков с плохой репутацией по-моему слишком жестоко ;)
Не всегда. Например, если турнир рассчитан на опытных игроков, а не нюбов, то они за это большое спасибо скажут.

>Но при распределении отдельных боев можно объединять игроков со сходными значениями репутации. Таким образом, если игрок часто подводит своих соперников неявкой -- он будет назначаться в бои, где соперниками будут являться такие же безответственные игроки.
Прикольный вариант :). Типа, против лома нет приёма, акромя другого лома :). Но этот вариант, в принципе, исключает возможность объединения игроков по рейтингу. Что делать, например, если два игрока с плохой репутацией попадут в одну игру, но один будет опытный, а другой - нюб?

>при потере связи можно предлагать сохранить игру ОСТАВШЕМУСЯ игроку и именно он тогда будет инициатором продолжения этого боя
Здесь высока вероятность, что второй игрок попросту начнёт новую игру, потому что будет неуверен, сохранил ли игру первый игрок, и не захочет ждать. Можно сделать какое-нибудь окно (например, голосование), где игроки могут выбрать - продолжать или нет. Чтобы все игроки были в курсе. Хотя...

Ещё вариант против обрывов целой игры. Можно, чтобы ход игры оказывал незначительно влияние на рейтинг. У тех, кто проигрывал в оборвавшейся игре, рейтинг станет чуть пониже, а у выигрывавших - чуть повыше.

#11
13:05, 18 фев. 2007

al
>Тогда сервер должен устанавливать крайние дату и час
Да, всем должен быть известен интервал времени, в который будет проводиться непосредственно турнир. Кроме того, прием заявок должен проводиться заранее также в течение некоторого интервала времени, по окончанию которого группировать всех участников с противниками и сообщать их пары еще до начала турнира, чтобы после начала турнира игроки уже не теряли время на организационные вопросы.

>Например, если турнир рассчитан на опытных игроков, а не нюбов, то они за это большое спасибо скажут.
В турнирах имеет смысл устанавливать как нижний, так и верхний уровень рейтинга участника. "Нюбовость" -- параметр неформализуемый, кто-то сыграет 200 партий и ничему не научится, а кому-то хватит 2-3 игр, чтобы ухватить суть и начать играть осмысленно.
На мой взгляд турниры по олимпийской системе реализовать сложно и они, строго говоря, не будут объективными. Более показательным будет турнир, в котором каждый игрок должен провести N боев и по результатам всех боев вычисляются его турнирные очки. В этом случае можно стараться всегда назначать противников по силам игроку и нюбы не будут перемешиваться с опытными дедами. Даже нюб, проведя серию успешных игр в своей весовой категории, имеет полное право выиграть на турнире.

>Чтобы все игроки были в курсе.
А они и так будут в курсе. Связь прервалась, игрок ее восстановил, вернулся в игру и у него среди сохраненных игр уже появилась только что прерванная. Сложным будет только вопрос возобновления прерванных игр -- для этого все участники должны находиться в онлайне и не быть заняты другими боями.

>Можно, чтобы ход игры оказывал незначительно влияние на рейтинг.
Не годится. Начинаю я, например, сильно сливать в игре и знаю, что если проиграю -- потеряю в рейтинге сильнее, чем если выдерну шнур из розетки. Мои действия? ;) За потерю соединения нельзя наказывать и премировать рейтинговыми значениями, это должна быть абсолютно независимая статистика.

#12
21:16, 19 фев. 2007

>"Нюбовость" -- параметр неформализуемый, кто-то сыграет 200 партий и ничему не научится, а кому-то хватит 2-3 игр, чтобы ухватить суть и начать играть осмысленно.
Это правда, отчасти. Хотя по статистике, тот кто сыграл сотни партий - обычно уже почитал форумы и статейки, поговорил с другими игроками, и владеет несколькими тактиками, которые ещё не знакомы более новым игрокам.

>турниры по олимпийской системе
По олимпийской - это как? В смысле, как обычно: победители играют с победителями и так до конца?

>В этом случае можно стараться всегда назначать противников по силам игроку и нюбы не будут перемешиваться с опытными дедами. Даже нюб, проведя серию успешных игр в своей весовой категории, имеет полное право выиграть на турнире.
Т.е. победителей может получиться несколько, больше, чем обычно?

>А они и так будут в курсе. Связь прервалась, игрок ее восстановил, вернулся в игру и у него среди сохраненных игр уже появилась только что прерванная.
Да, это удобно.

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

>Начинаю я, например, сильно сливать в игре и знаю, что если проиграю -- потеряю в рейтинге сильнее, чем если выдерну шнур из розетки.
Да, верно...

#13
10:52, 20 фев. 2007

al
> По олимпийской - это как? В смысле, как обычно: победители играют с победителями и так до конца?
Да, причем в такой системе есть определенные трудности, возникающие при количестве участников, не являющемся степенью двойки. Но гораздо хуже то, что все туры могут как выигрываться, так и проигрываться случайно -- игроки выбывают после первого поражения. Хороший игрок может или случайно ошибиться или ему не повезет с раздачей карт и вот он уже выбыл из соревнований.

> Т.е. победителей может получиться несколько, больше, чем обычно?
Нет, абсолютный победитель турнира будет один, но вторых, третьих и так далее мест может быть по несколько. Думаю, что система турниров должна быть следующей -- для всех подавших заявки участников назначается по N (=5-20) боев, которые они должны провести. Если в результате этого не было выявлено абсолютных победителей, то от всего количества участников выделяется ядро, которое по сумме своих очков может претендовать на первое место и им назначается дополнительно еще по M боев. Если абсолютный победитель не выявлен, то из оставшихся игроков снова выделяется перспективное ядро, которое проводит еще несколько дополнительных боев и т.д., пока не будет выявлен абсолютный победитель турнира. M должно быть где-то 1/8 - 1/5 от N и, естественно, M < числа участников в ядре - 1.

Подсчет очков думаю проводить по такой схеме:
+20 победителю
-10 побежденному
0 за ничью (если ничья допустима по правилам боя)

Кстати, подумал, что эти коэффициенты могут меняться в зависимости от реально проведенного количества боев. Например, до 80% боев они фиксированные, а потом начинают снижаться очки за победу (вплоть до +10) и повышаться очки за поражение (до -20). Т.е. с каждым разом бой становится все опаснее проводить. Соответственно, минимальное количество необходимых боев -- 80% и если до конца турнира игроком проведено менее этого количества боев, он вообще дисквалифицируется и ему пишется минус в турнирную статистику. Таким образом -- лучше даже проиграть всем, чем не являться на турнир.

Может быть, прирост очков в турнирных боях еще и увязать с текущими очками противников. Но боюсь, это вызовет нездоровое ожидание среди сильных игроков, которым станет выгоднее долбить под самый конец турнира уже немного "отъевшихся" противников, чтобы сбить с них как можно больше очков... Но, с другой стороны, они рискуют вообще не успеть провести все свои бои, если будут только отсиживаться.

Игровой ДизайнФорумОбщее

Тема в архиве.