АвторСообщение
администратор




Сообщение: 35
Зарегистрирован: 21.04.08
Репутация: 0
ссылка на сообщение  Отправлено: 01.07.08 11:47. Заголовок: Реализация правил карт в клиенте


Хотел бы посодействовать развитию бумбит.клиента и определить некоторые основные моменты, которые нужны как сейчас, так и понадобятся в дальнейшем.

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

Вобщем я клоню к чему. Хорошо бы структуру составлять так, чтобы легко можно было в случае чего:

- Отрубить с карты работающее свойство или способность (на любой срок) или же отменить сразу все свойства/способности.

- Вырубить на карте весь игровой текст (включая цену).

- Сделать возможность добавлять и удалять типы из карты (например было дело-циркуляция, стало просто дело).

- Сделать удобную в дальнейшем использовании типовую "функцию" по запрету карты по имени (эффект "БАНА"). Заметил что до сих пор в клиенте нет "Некроскопа", видимо проблемна реализация подобных эффектов.

Во-первых по юзабилити. Думаю, при включении эффекта БАНА карты тут нужно поле с прокруткой, где в столбик идут названия карт в алфавитном порядке (при наведении курсора мыши на название в правом верхнем углу можно посмотреть саму карту) а в верху этой таблички дроп меню с переключением по разным командам (классика, пси и т.д.). Не совсем представляю, как реализовать, но должна быть возможность автоматически, при добавлении новых карт апдейтить эту табличку для банов, чтобы в ручную не приходилось постоянно беспокоиться об этом.
Бан, всегда чётко привязан к источнику. Например, как только карта Некроскоп, забанившая концентрацию, покинет зону "в игре", бан тут же спадёт.
Так же хорошо бы предусмотреть возможность бана карты определённого типа (по сути, силовой фильтр для меню выбора карты). Скажем игрок может запретить любую карту дела на свой вкус.
В результате получится удобная поддержка всех последующих бан-карт.

Скоро в превью появится карта со свойством ПОБОЧНЫЙ ТИП: ДЕЛО. В дальнейшем такие карты предполагается так же выпускать в определённом количестве. Суть этого свойства в следующем. Например есть крип с таким перечнем типов: крип - дело - алиен. В тексте карты указано её свойство: ПОБОЧНЫЙ ТИП: ДЕЛО. Т.е. карта является крипом, играется и работает по всем законам крипа. Но любые эффекты могут засчитать её так же как ДЕЛО.
Например, можно оплатить такой картой цену Инопланетной Биомассы. Или можно сыграть крипа по эффекту ВЗРЫВА Бомбы Дёжа-Вю.
Надеюсь такую тему не сложно будет реализовать.




Спасибо: 0 
ПрофильЦитата Ответить
Ответов - 6 [только новые]







Сообщение: 9
Зарегистрирован: 22.04.08
Репутация: 0
ссылка на сообщение  Отправлено: 01.07.08 14:00. Заголовок: Работа карт реализов..


Работа карт реализована именно так, как ты предполагаешь: есть базовые действия «Взять карту», «Сыграть карту», «Сбросить карту» и т.д. В XML файле карты (можешь кстати посмотреть для наглядности – это текстовый файл) описывается тип карты, ее характеристики и перечисляются «базовые» действия, которые выполняются картой. Действия содержат набор дополнительных параметров (например, количество сбрасываемых карт или тип карты для изменения). Подробности я начал описывать в файле документации – его можно скачать на sourceforge (файл Cards_creation.doc), могу выложить сюда – но это пока черновой вариант.
Есть правда некоторые карты, которые в данный момент невозможно описать элементарными действиями – для таких карт, грубо говоря, пишется отдельный код (отдельный класс с действием) и указывается в описании карты. Таких карт 2 или 3 штуки сейчас (Белочка :) – одна из них).

Отмена способностей (или всего игрового текста) карты сейчас частично реализована. Требуется доработка для карт типа «Глушитель». По идее, если у «Глушителя» очистить игровой текст, то все измененные им бомбы должны измениться обратно – это пока не реализовано, но обязательно будет доделано в ближайшее время.

Возможность изменять/убирать/добавлять тип карты (имеется в виду не базовый тип крип/бомба, а подтип «циркуляция», «зомби» и т.д.) сейчас не реализована просто потому, что пока не было в этом необходимости – доделывается за 10 мин.

По поводу «БАНА» это отдельная тема! Функция такая уже давно реализована и работает (проверена на «Бан-бомбе»). Поэтому карта «Некроскоп» была сделана за 1 минуту. Но вот при тестировании я столкнулся с такой проблемой (а проблема оказалась глобальнее чем я думал): Когда игрок выбирает карту для бана – ему по идее доступны ВСЕ карты, которые вообще существуют в игре, т.е. все карты (кроме героев) всех команд. Понятно, что игрок не будет выбирать в качестве бана уникальную или секретную карту Пси, если противник играет Фростами – но по логике выбирать он может любую карту. Поэтому я реализовал загрузку ВСЕХ карт с картинками при отработке этого действия – что стало сильно отжирать память. До Некро это было еще терпимо, но с картами Некро программа часто стала вываливаться из-за нехватки памяти. Но это техническая проблема и она решаема. Другая проблема заключается как раз в юзабилити – карт становится все больше и тот вариант который я сделал вначале, становится совсем неприемлемым – выбрать из этого списка одну карту уже тяжеловато, нужно делать фильтр и поиск карты по имени. Именно поэтому «Некроскоп» я пока не выкладываю. Тут нужна серьезная переделка.
Я видимо буду делать так – будет открываться отдельное окошко, с фильтрами карт – примерно как в редакторе и там будут по одной подгружаться картинки выбранных карт.

То, что бан пропадает, когда карта покидает игру – уже реализовано. Возможность банить карты не по имени, а по типу тоже уже реализована (карта «Айс», например).

Вот с побочным типом немного подольше – этого я в движок не закладывал. НО, фильтрация карт реализована через единый механизм, т.е. введение побочного типа потребует только его доработки. Здесь больше времени займет тестирование с уже существующими картами.
Я, кстати, периодически экспериментирую с самодельными картами, поэтому в игре есть функция, которая меняет базовый тип карты (делал карту «робот – бомба»).

В общем, любую логики можно реализовать – я просто новые механики дописываю по мере появления оригинальных карт. Поэтому выкладывать параллельно с тобой карты для клиента не сложно, если только не вводится какая-то принципиально новая игровая механика (все никак не доделаю «Кладбищенскую бомбу» - там надо дать возможность игроку выбирать тип карты, это надо дописывать…)


Спасибо: 0 
ПрофильЦитата Ответить
администратор




Сообщение: 38
Зарегистрирован: 21.04.08
Репутация: 0
ссылка на сообщение  Отправлено: 01.07.08 14:53. Заголовок: Я вот всё же думаю, ..


Я вот всё же думаю, если варианты карт для бана пустить текстовым списком, а посмотреть карту при нажатии на название, в правом верхнем углу, как обычно, может не будет так память кушать. Всё же довольно неудобно по маленьким картинкам превью выбирать цель бана.

Спасибо: 0 
ПрофильЦитата Ответить





Сообщение: 10
Зарегистрирован: 22.04.08
Репутация: 0
ссылка на сообщение  Отправлено: 01.07.08 15:02. Заголовок: Я так и хочу сделать..


Я так и хочу сделать - диалог с фильтром - отфильтрованные карты в виде текстового списка - при выборе имени в списке большая картинка.

Спасибо: 0 
ПрофильЦитата Ответить
администратор




Сообщение: 40
Зарегистрирован: 21.04.08
Репутация: 0
ссылка на сообщение  Отправлено: 01.07.08 15:40. Заголовок: Это здорово. Кстати,..


Это здорово.
Кстати, ещё хотел у тебя узнать, какие карты больше всего проблем вызвали в реализации? Чтобы на будущее иметь ввиду.

Спасибо: 0 
ПрофильЦитата Ответить





Сообщение: 15
Зарегистрирован: 22.04.08
Репутация: 0
ссылка на сообщение  Отправлено: 02.07.08 10:28. Заголовок: Я не думаю, что тебе..


Я не думаю, что тебе надо ориентироваться на программную реализацию, ущемляя фантазию )
Любую карту можно сделать, дописав нужный код )
Но так, для статистики:
Карта, по который у меня было больше всех багов – «Приоритетная бомба» (как ни странно ) ) - дело в том, что нужно было подключать часть игрового движка (отслеживающий события, связанные с перемещением карт) уже на этапе раздачи карт, отчего стали вылезать разные побочные эффекты.
Карта, потребовавшая много изменений в коде – «Милена». Нужно было везде учесть свойство «Призрак» (это скорее моя ошибка в архитектуре). Ну и плюс отмена только определенного вида цены потребовала реализации нового понятия «шаблонов» свойств.

Вообще самыми проблемными картами для меня и сейчас остаются карты со способностями типа «сделать X, если противник не сделает Y» - просто у Y бывает несколько альтернативных вариантов (Пример: «если противник не скинет 2 карты». Варианты : а) У противника < 2 карт – действие X должно быть выполнено, б) Противник скинул только 1 карту – действие X должно быть выполнено в) Противник скинул 2 карты, но у одной из них сработала способность, и она вернулась в руку (или игру) – действие Х должно быть выполнено… ну и так далее).



Спасибо: 0 
ПрофильЦитата Ответить
администратор




Сообщение: 42
Зарегистрирован: 21.04.08
Репутация: 0
ссылка на сообщение  Отправлено: 02.07.08 12:11. Заголовок: Ну призраки и дальше..


Ну призраки и дальше будут, как ты понимаешь ))

Мне вот казалось, проблема будет с Затуханием. Во втором сете вот будет ещё больше карт, которые играются только в качестве реакции на некое событие.

По воводу «сделать X, если противник не сделает Y». Такого ещё будет довольно много :(

в) Противник скинул 2 карты, но у одной из них сработала способность, и она вернулась в руку (или игру) – действие Х должно быть выполнено… ну и так далее).
В этом случае Х не будет выполнено. Факт того, что ты выполнил действие: "скинуть 2 карты из руки", уже засчитывается за то, что ты выполнил Y. А что там дальше с картами будет, это уже другой вопрос.

Спасибо: 0 
ПрофильЦитата Ответить
Ответ:
1 2 3 4 5 6 7 8 9
большой шрифт малый шрифт надстрочный подстрочный заголовок большой заголовок видео с youtube.com картинка из интернета картинка с компьютера ссылка файл с компьютера русская клавиатура транслитератор  цитата  кавычки моноширинный шрифт моноширинный шрифт горизонтальная линия отступ точка LI бегущая строка оффтопик свернутый текст

показывать это сообщение только модераторам
не делать ссылки активными
Имя, пароль:      зарегистрироваться    
Тему читают:
- участник сейчас на форуме
- участник вне форума
Все даты в формате GMT  3 час. Хитов сегодня: 2
Права: смайлы да, картинки да, шрифты да, голосования нет
аватары да, автозамена ссылок вкл, премодерация откл, правка нет