Как сделать карточную игру на unity
Перейти к содержимому

Как сделать карточную игру на unity

  • автор:

Начало создания карточной игры

Author24 — интернет-сервис помощи студентам

Добрый день! Пишу с проблемой начинающего. Хотелось попросить совета и рекомендаций по созданию своей игры. Игра простая. Карты, стол, два опонента. До механики игры еще далеко. Подскажите пожалуйста где можно взять бесплатные модели стола и карт? Как выставлять анимацию перемещения камеры обзора. Как сделать анимацию перехода карт из колоды на видное игроку место. Как можно сделать на столе слоты куда можно установить данные карты перемещая их мышкой. Естественно сделать это так чтобы карты никуда не делись кроме этих слотов. И возможность уничтожения карты для освобождения стола. Очень надеюсь на ваши подсказки. И самое главное с чего следует начать? Обучаться буду непосредственно во время создания проекта, иначе снова все заброшу.

94731 / 64177 / 26122

Карточная игра на Unity. Динамическая колода

Карточная игра на Unity. Динамическая колода

Этот туториал отличается от моих предыдущих, поскольку он ориентирован на геймджемы и прототипирование, в особенности, карточных игр. Мы собираемся создать 2D колоду игральных карт в Unity не используя ни единого рисунка — исключительно с помощью кода.

Карточная игра на Unity

Компоненты игральной колоды карт

В игральной колоде содержится всего 52 карты с 13 картами каждой из 4 разных мастей. Чтобы создать пригодный для использования код, нам необходимо создать эти 4 масти, закругленную прямоугольную основу карты и дизайн обложки карт.

Дизайном обложки у карты может быть любой абстрактный рисунок, и существует множество способов создать его. Мы сделаем простой бесшовный узор, который для создания дизайна потом замостит поверхность. Никакого специального дизайна для тузов (A), королей (K), дам (Q) и валетов (J) у нас не будет.

Альтернативные решения

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

  1. Очевидным является использование для всех эскизов предварительно отрисованного арта.
  2. Менее очевидно использовать шрифт, который содержит все необходимые символы. Вышеупомянутый шрифт мы также можем превратить в битмаповый, чтобы уменьшить число вызовов отрисовки и повысить производительность.

Решение на основе шрифтов самое быстрое и простое, если вы ходите делать быстрые прототипы.

Создание текстур во время исполнения

Первым шагом изучим как создать Texture2D с использованием кода, который потом будет использован для создания Sprite в Unity. Следующий код показывает создание пустой текстуры 256×256.

Texture2D texture = new Texture2D(256, 256, TextureFormat.ARGB4444, false); texture.filterMode=FilterMode.Trilinear; texture.wrapMode=TextureWrapMode.Clamp; texture.Apply();

Идея в том, чтобы нарисовать все эскизы до того, как мы будем использовать метод Apply. Мы можем нанести эскиз на текстуру пиксель за пикселем, используя метод SetPixel, как показано ниже.

texture.SetPixel(x, y, Color.white);

Например, если мы хотели заполнить всю текстуру цветом, мы могли бы использовать метод следующим образом.

private void PaintRectangle(Texture2D texture, Rect rectBounds, Color color) < for (int i=(int)rectBounds.x;i> > // PaintRectangle(texture,new Rect(0,0,256,256),Color.red);

Как только мы создали Texture2D, мы можем использовать ее для создания Sprite, выводимого на экран.

Sprite sprite = Sprite.Create(texture, new Rect(0.0f, 0.0f, texture.width, texture.height), new Vector2(0.5f, 0.5f),1);

Сложной частью всего этого является создание на текстуре нужных эскизов.

Создание фигуры для червовой масти

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

Динамическое создание колоды карт

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

Рисование круга

Давайте освежим некоторые уравнения, чтобы нарисовать круг. Для круга с центром в начале координат и радиусом r уравнение для точки (x, y) на окружности имеет вид x 2 + y 2 = r 2 . Теперь, если центр круга находится в точке (h, k), уравнение становится (x-h) 2 + (y-k) 2 = r 2 . Таким образом, если у нас есть ограничивающий прямоугольник, то мы можем перебрать все точки внутри этого прямоугольника и определить, какие из них попадают в круг, а какие нет. Основываясь на этом понимании, мы можем с легкостью создать метод PaintCircle, как показано ниже.

private void PaintCircle(Texture2D texture,float radius, Vector2 midPoint, Color color) < Rect circleBounds=new Rect(); circleBounds.x=Mathf.Clamp(midPoint.x-(radius),0,resolution); circleBounds.y=Mathf.Clamp(midPoint.y-(radius),0,resolution); circleBounds.width=Mathf.Clamp(2*radius,0,resolution); circleBounds.height=Mathf.Clamp(2*radius,0,resolution); float iValue; for (int i=(int)circleBounds.x;i> > > PaintCircle(texture,radius,mid,Color.red);

Как только у нас есть метод PaintCircle, мы можем продолжить создание фигуры червей как показано ниже.

void PaintHearts(Texture2D texture) < //2 circles on top float radius =resolution*0.26f; Vector2 mid=new Vector2(radius,resolution-radius); PaintCircle(texture,radius,mid,Color.red); mid=new Vector2(resolution-radius,resolution-radius); PaintCircle(texture,radius,mid,Color.red); //triangle at bottom float width=resolution*0.58f; int endJ=(int)(resolution*0.65f); int startJ=(int)(resolution*0.1f); float delta=(width/endJ); float midI=resolution*0.5f; for (int i=0;i> > >

Переменная resolution является шириной и высотой текстуры.

Создание фигуры для бубновой масти

Мы обсудим два способа нарисовать бубны.

Рисование простого ромба

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

void PaintDiamond(Texture2D texture)< float width=resolution*0.35f; for (int i=0;i(midI-(delta*j))&&i(midI-(delta*j))&&i <(midI+(delta*j)))< isValid=true; >> return isValid; > PaintDiamond(texture);

Рисование изогнутого ромба

Второй способ – это использовать еще одно уравнение для создания улучшенной, изогнутой версии ромба. Мы будем использовать его для создания узора на обратной стороне нашей карты. Уравнение для круга получается из исходного уравнения для эллипса, оно выглядит как (x/a) 2 + (y/b) 2 = r 2 .

Это уравнение совпадает с уравнением окружности, когда переменные a и b равны 1. Затем уравнение эллипса можно расширить в уравнение суперэллипса для аналогичных фигур, просто изменив степень, (x/a) n + (y/b) n = r n . Поэтому когда n равно 2, у нас есть эллипс, а для других значений n у нас будут разные фигуры, одной из которых является наш ромб. Мы можем использовать подход, использованный для получения метода PaintCircle и получить новый метод PaintDiamond.

private void PaintDiamond(Texture2D texture, Rect rectBounds, Vector2 midPoint, Color color, float n=0.8f) < float iValue; int a=(int)(rectBounds.width/2); int b=(int)(rectBounds.height/2); float nRoot=1/n; float delta; float partialOne; rectBounds.width=Mathf.Clamp(rectBounds.x+rectBounds.width,0,resolution); rectBounds.height=Mathf.Clamp(rectBounds.y+rectBounds.height,0,resolution); rectBounds.x=Mathf.Clamp(rectBounds.x,0,resolution); rectBounds.y=Mathf.Clamp(rectBounds.y,0,resolution); for (int i=(int)rectBounds.x;i> > >

Рисование закругленного прямоугольника

Изменяя значение n, это же уравнение можно использовать для создания базовой формы в виде закругленного прямоугольника для нашей карты.

private void PaintRoundedRectangle(Texture2D texture) < for (int i=0;ireturn isValid; >

Рисование бесшовного узора

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

обложка колоды и масть бубен

Код для рисования бесшовного узора будет такой, как ниже.

private void PaintTilingDesign(Texture2D texture, int tileResolution) < Vector2 mid=new Vector2(tileResolution/2,tileResolution/2); float size=0.6f*tileResolution; PaintDiamond(texture,new Rect(mid.x-size/2,mid.y-size/2,size,size),mid,Color.red); mid=new Vector2(0,0); PaintDiamond(texture,new Rect(mid.x-size/2,mid.y-size/2,size,size),mid,Color.red); mid=new Vector2(tileResolution,0); PaintDiamond(texture,new Rect(mid.x-size/2,mid.y-size/2,size,size),mid,Color.red); mid=new Vector2(tileResolution,tileResolution); PaintDiamond(texture,new Rect(mid.x-size/2,mid.y-size/2,size,size),mid,Color.red); mid=new Vector2(0,tileResolution); PaintDiamond(texture,new Rect(mid.x-size/2,mid.y-size/2,size,size),mid,Color.red); >

Создание фигуры для пиковой масти

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

пиковая масть

Метод PaintSpades будет таков, как показано ниже.

void PaintSpades(Texture2D texture) < //2 круга посередине float radius =resolution*0.26f; Vector2 mid=new Vector2(radius,resolution-2.2f*radius); PaintCircle(texture,radius,mid,Color.black); mid=new Vector2(resolution-radius,resolution-2.2f*radius); PaintCircle(texture,radius,mid,Color.black); //треугольник наверху float width=resolution*0.49f; int startJ=(int)(resolution*0.52f); float delta=(width/(resolution-startJ)); float midI=resolution*0.5f; int alteredJ; radius=resolution*0.5f; float midJ=resolution*0.42f; float iValue; for (int i=0;i> //ножка for (int k=0;kmid.x+iValue) < mid=new Vector2(resolution,midJ); iValue=(Mathf.Sqrt(radius*radius-((k-mid.y)*(k-mid.y))));//+mid.x; if(i> > > >

Создание фигуры для масти треф

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

карточная игра на Unity - трефы

Метод PaintClubs будет таков, как показано ниже.

void PaintClubs(Texture2D texture) < int radius=(int)(resolution*0.24f); //3 круга Vector2 mid=new Vector2(resolution*0.5f,resolution-radius); PaintCircle(texture,radius,mid,Color.black); mid=new Vector2(resolution*0.25f,resolution-(2.5f*radius)); PaintCircle(texture,radius,mid,Color.black); mid=new Vector2(resolution*0.75f,resolution-(2.5f*radius)); PaintCircle(texture,radius,mid,Color.black); //ножка radius=(int)(resolution*0.5f); float midY=resolution*0.42f; int stalkHeightJ=(int)(resolution*0.65f); float iValue; for (int i=0;i> > > >

Упаковка текстур

Если вы изучите исходные файлы Unity для этого проекта, вы найдете класс TextureManager, который выполняет всю тяжелую работу. После того как мы создали все необходимые текстуры, класс TextureManager использует метод PackTextures, чтобы объединить их в одну текстуру, тем самым уменьшая количество вызовов отрисовки, требуемых при использовании этих фигур.

Rect[] packedAssets=packedTexture.PackTextures(allGraphics,1);

Используя массив packAssets, мы можем получить ограничивающие рамки отдельных текстур из основной текстуры с именем packTexture.

public Rect GetTextureRectByName(string textureName)< textureName=textureName.ToLower(); int textureIndex; Rect textureRect=new Rect(0,0,0,0); if(textureDict.TryGetValue(textureName, out textureIndex))< textureRect=ConvertUVToTextureCoordinates(packedAssets[textureIndex]); >else < Debug.Log("no such texture "+textureName); >return textureRect; > private Rect ConvertUVToTextureCoordinates(Rect rect)

Заключение

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

Мы можем использовать этот же метод для создания любого динамического арта во время выполнения в Unity. Создание графики во время выполнения – это операция, требующая высокой производительности, но ее можно произвести только один раз, если мы эффективно сохраним и повторно используем эти текстуры. Путем упаковки динамически созданных ресурсов в одиночную текстуру, мы также получаем преимущества от использования атласа текстур.

Теперь, когда у нас есть колода игральных карт, дайте мне знать, какие игры вы планируете создать с ее помощью.

Понравилась статья? Поделиться с друзьями:

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

Добавить комментарий Отменить ответ

  • CoreMission в:
  • Telegram
  • YouTube
  • Календарь: даты выхода игр
  • Календарь: игровые ивенты
  • Крутые игры на ПК
  • Пойдет ли игра на ПК?
  • Игры для слабого ноутбука
  • Как стать киберспортсменом?
  • Коды на The Sims 4
  • Все дополнения Sims 4
  • Разработчики инди-игр
  • Всё про “читы” в играх
  • Читы для CS: GO
  • Как создать игру самому?
  • Как стать разработчиком игр?
  • Референсы для художников
  • Символы для ников
  • Время прохождения игр
  • Похожие игры
  • Карта сайта

Как я делал руку с картами для своей карточной игры

Зона, с которой игрок чаще всего взаимодействует в карточной игре — это его рука (не путать с рукой в играх с 18+ контентом). Рука — это набор карт, которые игрок может разыграть в текущий ход. И раз это одно из самых важных мест, я решил уже на этапе прототипа сделать руку приятной и красивой.

Дисклеймер: я тут описываю свой говнокод. Программировать я совсем не умею, так что не советую использовать как инструкцию.

Вот как раз во время работы с рукой (не путать с «во время работы рукой») я понял отличие качественной игры от поделки на уровне прототипа для тестирования геймплея. Все дело в мелочах и деталях. Посмотрите, как ведут себя карты в руке в Slay the Spire:

Теперь посмотрите на те же карты на видосе у чела, который пишет в названии ролика, что он сделал Slay the Spire за неделю (9:11):

Теперь у меня это название вызывает горький смех, потому что как раз из-за таких небольших фишек с анимациями запрограммировать всё из Slay the Spire не удастся за неделю, даже при условии, что у тебя будет готов абсолютно весь арт, геймдизайн и другой контент.

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

Как я делал руку с картами

Первую руку я сделал по туториалу, с которого делал первый прототип. В нём за формирование руки отвечал компонент Grid, который расставляет объекты по сетке. Grid лишает вас необходимости писать код, который отвечает за расстановку карт: вы просто задаете настройки и карты сами встают ровно при любом количестве, когда попадают в нужный родительский объект.

Интерфейс компонента: как видите, все отступы, расположение и расстояния можно настроить тут, не нужно писать код

Проблема с Grid была в том, что делалось это некрасиво: карты телепортировались в сетку, а мне хотелось, чтобы они плавно переходили.

Недолго погуглив, я нашёл в Ассет Сторе бесплатный ассет Smooth Grid. Там были желанные плавные переходы. Если я вытаскивал карту, она потом вставала в конец — ну да и ладно, решил я.

В настройках все то же самое, только еще есть плавность: насколько быстро карты переходят в свое место в сетке

Проблемы со Smooth Grid появились, когда я решил сделать руку похожей на руку в реальной жизни и в других карточных играх — чтобы карты слегка наезжали друг на друга — и после этого стал думать, как мне сделать выделение карты по наведению курсора. Сначала карты просто не хотели выезжать. Когда я разобрался с выездом, понял, что карта не хочет выходить на передний план. Всплыла проблема с тем, что эта плавная сетка перемещала карты влево или вправо в зависимости от положения объекта с картой в инспекторе. А значит, если я буду выводить карту на передний план с помощью перемещения в инспекторе, карта будет перескакивать со своей позиции в самую крайнюю в руке. Такое мне точно не подходило.

Я понял, что в 2D в Unity не было способов перетащить объект на задний и передний план кроме свойства Sorting Layer. Вот только применить его можно только к объектам с компонентом Sprite Renderer. Он отвечает, например, за то, чтобы у карточки выводилась нужная картинка. А у меня все объекты имели компонент Image — я выводил изображение карточки с помощью него.

Так вот, чтобы выводить карточку на передний план, мне нужно было менять компонент Image на компонент Sprite. И это привело к своим сюрпризам. Оказывается, все объекты внутри Canvas с компонентом Image будут перекрывать любой другой объект. И когда я создаю объект Background, который задумывал как фон, он перекрывает спрайты карточек, и поверх фона ничего не видно. И это довольно логично: любой объект внутри Canvas Unity распознает как часть интерфейса: а интерфейс как бы должен быть поверх всего остального в игре. Но…на осознание этих правил у меня ушло много времени. А еще много времени на то, чтобы разобраться, как выставить настройки у спрайтов, поправить поехавшую камеру и сделать кучу мелких действий.

Следующее открытие: Event Trigger, компонент, с помощью которого я делал выведение карточек на передний план при наведении мыши и разыгрывании карточек, не хотел работать со спрайтами. Один и тот же скрипт у меня работал на объекте с Image и переставал работать на объекте со Sprite Renderer. Оказалось, есть еще один способ регистрировать наведение мышки: с помощью методов MouseEnter, MouseExit и MouseOver.

Дальше меня ждали новые проблемы. Я использовал метод Lerp, чтобы карточки красиво залетали в руку и красиво выдвигались, когда наводишь на них курсор. Все отлично работало ровно до тех пор, пока я не совмещал анимации карточек с их добавлением в Smooth Grid. Тогда начиналась котовасия.

Дело в том, что Smooth Grid тоже построен на Lerp. А Lerp — это такая функция, которая как резиночка тянет объект на родительское место. И вот проблема была в том, что Lerp в сетке и мой Lerp спорили между собой, а карточки в итоге трясло и кидало в разные стороны. Я пытался это решить попеременным отключением Lerp’ов — не сработало. Все начинало ехать еще больше.

В итоге пришлось отказаться от компонента Grid совсем: и от Smooth, и от обычного. Я сам сделал простенький вывод на нужную позицию с помощью цикла for, максимально костыльно.

Смотрю и даже стыдно смотреть.

Вот что у меня получилось в итоге

Скорее всего, прокатит для трейлера. Но для реальной игры нужно будет править, чтобы, например, карточки выравнивались по центру и расстояние между ними менялось, когда карточек в ряду становится больше или меньше. А еще наведение курсора не всегда регистрируется, и при желании порядок выдачи и улетания карт в сброс можно сломать.

Что думаю про сишарп

Несмотря на кучу проблем, мне нравится работать с сишарпом. Но по сравнению со всякими JS и Python синтаксис у него выглядит более избыточным:

Не напоминает ли это вам этот момент из «Кролика ДжоДжо» (0:18):

Хотелось бы конечно сделать так же сочно, как в Slay the Spire, но это капец сколько ещё ковыряться. Вообще при разработке стараюсь максимально отсекать всё лишнее. Например, когда я понял сейчас, что надо много всего перепиливать, я отсек вообще всю логику, которая не нужна была для той задачи, которую я поставил себе здесь, в телеге. Этим путём я следую и при разработке части игры для трейлера: максимальный говнокод (даже по моим меркам, а я тот ещё программист), максимум бутафорских штук. Например, у меня карточки тупо вылазят из края экрана, а там они изначально лежат перед запуском экрана.

Если поделитесь в комментариях гайдами и туториалами, как можно лучше сделать руку с картами, буду очень благодарен.

Этот пост входит в цикл постов про игру, которую я потихоньку делаю уже несколько месяцев. Я делюсь всем производственным процессом: какие решения я принимаю в разработке, геймдизайне, интерфейсе, арте и других сферах. В моем телеграм-канале вы можете посмотреть другие посты и узнать, когда ждать следующие: @nigylamchan.

Разработка карточной игры. Ищем начинающего программиста.

Привет.
Ищем программиста, для переноса карточной игры на Unity.

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

Жанр: Коллекционная карточная игра.
Время партии: 10-30 минут.
Целевая аудитория: Мужчины 25-50 лет, ранее игравшие в карточные игры.

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

Что готово на данный момент:
1) Версия для теблетопа, с частичной автоматизацией. С двумя режимами, игрой готовыми колодами и драфт.
2) Настольный прототип.
3) 150 карт, по 50 на три пантеона.
4) Тестовый дизайн карт. До шрифтов и оформления не докапывайтесь, для тестов это все более чем подходит.
5) Арты. Часть сделано вручную, часть нейросетями и отредактировано, часть только нейросетями. В дальнейшем примерно треть артов будет переделаны.
6) Геймплей и геймдизайн. На разработку именно этих моментов было потрачено больше всего времени. На данный момент все работает как нужно. В тестах приняли участие около 50 человек и в сумме (на тесты игры и баланса) было потрачено более 1000 человекочасов.

Чем сейчас занимаемся:
1) Новый дизайн.
2) Изменение кривых артов от нейросетей.
3) Дополнительные тесты.
4) Оптимизация текстов карт.
5) Перевод на английский язык.
6) Разработка новых карт. В итоговой версии будет 4 пантеона по примерно 60 карт.
7) Написание и оформление правил.

Что нужно:
1) Перенос игры на Юнити.
2) Дизайн интерфейса.

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

О себе:
Я около 20 лет связан с карточными играми, пару лет вел клуб по настольным играм, работал как дизайнер карт для настольных кки и ки, а в дальнейшем некоторое время был в киберспорте по онлайновым кки (состоял в команде Team Empire и Vega Squadron). И практически все время вынашивал идеи своих игр (часть из которых вполне себе были воплощены в настольных играх к которым я прикладывал руку). Примерно последние пол года назад начал разработку своей карточной игры, изначально даже не думая дойти до какого то финала. Постепенно стал показывать наработки на своем твич канале и это заинтересовало людей. Я нашел несколько единомышленников которые помогали развивать и тестировать игру. В итоге на данный момент проделана уже довольно
большая работа, которую очень хочется довести до финала.
Всех благодарю за внимание!

#1
12:19, 1 апр 2023

Простите, а этот таблетоп хуже чем юнити?

#2
12:34, 1 апр 2023

Таблетоп это не игровой движок, а «симулятор игрового стола». На него обычно переносят настольные игры или на нем делают их аналоги.
У него есть весь базовый функционал, нужный для подобных игр, и в него можно добавлять не особо сложные скрипты.

Таблетоп хорошо подошел для тестов, но что то полноценное на нем не сделать.

#3
12:47, 1 апр 2023

Честно говоря арт не очень понравился — какой то размытый и пестрый.
Еще посоветовал бы сделать демонстрационное видео на ютубе, чтобы почувствовать гемплей и убедиться, что это не УГ.)

#4
13:02, 1 апр 2023

UncleMike
Яркость и насыщенность цвета, это стилистика современных комиксов, примерно к такой и стремимся.
Высокая четкость фонов не нужна, карты намного более мелкие в игре, в настольном виде они например 63 × 88 мм, детализировать по максимуму при таких размерах смысла нет. И опять же, визуал дорабатывается, примерно треть артов будет заменено/изменено.
По поводу геймплея, у меня есть несколько записей стримов, над полноценной презентацией думаю, былов планах ее сделать после изменения дизайна.

#5
13:04, 1 апр 2023

Еще посоветовал бы сделать демонстрационное видео на ютубе, чтобы почувствовать гемплей и убедиться, что это не УГ.)

Ну ты правила почитай, карты посмотри. Максимальный клон мотыги, из которой выкинули 90% контента ) Далее делай выводы )

З.ы. Я хирею сколько у них богов, а сколько ещё будет ) Прям мир богов )

#6
(Правка: 13:14) 13:07, 1 апр 2023

TERMOGAD
Намного больше взято из Wow tcg, наверное это самое близкое на что игра похожа.
еще какие то механики есть из Pokemon tcg и Artifact, на mtg в плане геймплея похоже в разы меньше чем на эти игры.
Такими темпами под клон мтг можно вообще любую карточную игру запихать.

ps. Ну хоть тут про клон харстоуна не говорят KEKW

#7
13:21, 1 апр 2023

Tnatym
У него у самого клон матыги, вон он и беситься, конкурентов сливает 🙂

#8
(Правка: 14:18) 13:34, 1 апр 2023

У него у самого клон матыги, вон он и беситься, конкурентов сливает 🙂

У меня клон артифакта, не путай руку с ногой )
Но с подтянутыми моментами с МТГ )

И я сразу это заявил, что игра разрабатывается под вдохновением от Артифакта, с МТГ моментами )
Т.е. этого не скрываю )

Намного больше взято из Wow tcg, наверное это самое близкое на что игра похожа.
еще какие то механики есть из Pokemon tcg и Artifact, на mtg в плане геймплея похоже в разы меньше чем на эти игры.
Такими темпами под клон мтг можно вообще любую карточную игру запихать.

ps. Ну хоть тут про клон харстоуна не говорят KEKW

Ну давай посмотрим твою игру:

1. У тебя как в мотыге есть плейнсволкеры, которых ты обозвал богами, которые как и в мотыге раз в ход могут активировать свою способность. При чём иконка активации как у активируемых способностей в мотыге.
2. У тебя есть мотыжья фаза боя с объявлением атакующих и блокирующих, которую ты назвал двумя фазами «Атака\Защита», где все не заблокированные существа бьют в лицо бога как и в мотыге, только там бьют в лицо игрока.
3. У тебя вполне вырванные из мотыги типы карт: Боги, Существа, Заклинания и Артефакты (ну само понятие типов и разделение мтгшное).
4. Определение того, что второй игрок берёт меньше карт на одну, чем первый, тоже фишка с мтг.
5. Как и в мтг: «Ограничений на количество маны и существ на столе нет.»
6. «Если на конец хода в руке 10 и более карт, вы изгоняете их пока карт не станет 10.» — здесь невнятно написано, но смысл в сбросе лишних карт в конце хода до максимума в руке как в МТГ.
7. «Существа входят в игру «уставшими» и не могут использовать способности и атаковать/защищать до начала следующего хода, боги и артефакты могут действовать сразу.» — то же самое что и в МТГ выход карт повёрнутыми, просто ты сделал здесь это эффектом по умолчанию.
8. Такие же как в мотыге боевые характеристики карты «Атака/Очки Здоровья», и такой же вывал карты на кладбище, когда заканчиваются очки здоровья, и собственно само понятие «Кладбище» вместо «Стопки сброса» тоже свистнуто с мотыги «Кладбище – зона, в которая попадают все уничтоженные персонажи и артефакты, а также разыгранные заклинания«.
9. «Изгнание – полное удаление карты из игры.» — мханика мотыги.
10. Закрыть карту – карта поворачивается на 90 градусов и не может действовать, атаковать и защищать пока не откроется. Обычно карты открываются в начале вашего хода. — поворот карты механика мтг, повёрнутая карта не функционирует пока не развернётся.
11. Пробивной удар – если существо с этой способностью, убивает защитника, то оно наносит лишний урон изначальной цели. Лишний урон рассчитывается «Сила атакующего – Очки здоровья, защищающего». Урон считается уроном от способности.
— пробивной удар это механика мтг, введённая в Alpha в 1993 году.
12. Заплати X – игрок должен потратить X маны или веры , тоже мотыжный прикол, как и сама мана, иксом обозначается в мотыге любое количество маны доступной игроку.
13. Запрет – до конца хода противника запрещен розыгрыш карты определенного типа, либо определенное действие. — ну например в МТГ это запрет выхода существ из кладбищ, и так далее.
14. Мумификация – вы можете разыграть существо с кладбища, оплатив его цену маной. При этом существо получает эффект «когда должно в следующий раз попасть на кладбище, вместо этого изгоняется» — украдено из МТГ полностью.
15. Воскрешение – карта призывается с кладбища в игру. Срабатывает эффект «Когда призывается» — возврат из кладбищ как и сами кладбища это механики МТГ.
-——————————————————————————————————-

Это поверхностный разбор на скорую. Я вижу чисто мотыгу такой, какая она есть. Да да, все совпадения являются совпадениями )

Я ничего против не имею подворовывания, или переделывания механик существующей понравившейся игры, ну мы же все чем-то вдохновляемся, только я не понимаю зачем это скрывать.

#9
(Правка: 15:12) 14:50, 1 апр 2023

У тебя карты и в мтг/хартсоуне карты, у тебя у карт есть здоровье и в мтг/харстоуне есть, значит ты клон делаешь KEKW

Я помню видос давно смотрел, там доказывали что все игры — клоны понга. Вот тут что то из этой области)

А про » не вижу ничего плохого чтобы красть», я тебе написал игры которыми вдохновлялся, и с ними куда больше параллелей. Но я понимаю что большинство людей кроме мтг и харстоуна кки не видели). Практически все что ты написал есть во всех ки, а различия идут в каких либо базовых механиках. И про ключевые базовые механики которые отличают мою игру от остальных я написал в самом начале моего сообщения.

Если сейчас какой нить шутер делают набегают люди и пишут «ЭТО КЛОН ВУЛЬФИНШТЕНА. тут можно ходить и стрелять. 22»

#10
(Правка: 15:14) 15:11, 1 апр 2023

На ВоВ кки похожа. А в ней механики на МТГ-шные. А механики эти в МТГ на механики из Стар Варс кки. А эти механики в Стар Варс кки на механики из ЛОТР кки. Это вилами по воде.

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

МТГ как сборник всяко разно механик отовсюду, из менее известных карточных в том числе. А набор вариантов конечный. И получается иллюзия что все с МТГ.

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

Имхо. Арты приятные, карточки понятные. Правила не перенасыщены. Так или иначе, это добавит новизны в кки. Как и та что делает Термогад. Немного свежести и вариации на приевшиеся реалии актуальных игр.

#11
15:14, 1 апр 2023

Skylordy
Ты все правильно пишешь.
Уже на первых тестах мне пришлось отказаться от сложных, комплексных механик, чтобы базовый выпуск был проще и интуитивнее понятнее новичкам.
Можно навыдумывать кучу крутых способностей, в которых будет по 150 слов текста, но в это просто никто не будет играть. Подобное можно добавлять в дальнейшем, но для начала точно не нужно.
Собственно из за упрощения способностей карт, базовый сет и выглядит не особо уникальным.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *