Воскресенье, 21 Октября 2018, 19:34

Приветствую Вас Гость

[ Новые сообщения · Игроделы · Правила · Поиск ]
  • Страница 1 из 1
  • 1
Модератор форума: beril  
Форум игроделов » Движки для разработки игр и сложные системы разработки » Unity » Редактор карт
Редактор карт
8Observer8Дата: Вторник, 21 Июля 2015, 20:34 | Сообщение # 1
заслуженный участник
Сейчас нет на сайте
Здравствуйте!

Мне в одной небольшой компании дали тестовое задание, как стажёру: создать редактор карт в Unity. Как я понял - это карты, которые используются в таких играх:
Hearthstone: Heroes of Warcraft
Magic: The Gathering
Спектромансер

Редактор, как здесь описано.

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


Туториалы по играм на C# и Unity от НубТутс

Сообщение отредактировал 8Observer8 - Вторник, 21 Июля 2015, 20:35
berilДата: Вторник, 21 Июля 2015, 22:29 | Сообщение # 2
Я не ленивый, я — энергосберегающий
Сейчас нет на сайте
Ну тут нужно, что конкретно нужно делать. Что редактор должен уметь делать то?
По поводу редактора карт WarCraft это реально мощная вещь, я сам начинал свой путь с создание модов к WarCraft, что бы нечто подобное создать уйдет очень много времени.
Разве в компании не дали четкое ТЗ?




Накодил? Убери за собой!
Инвентарь в Unity(UI)
Инвентарь в Unity(GUI)
MANMANAДата: Вторник, 21 Июля 2015, 22:55 | Сообщение # 3
почти ветеран
Сейчас нет на сайте
Давно я играл в MTG

Делается это для того, чтобы прямо в Юнити можно было создавать карты не перерисовывая каждый раз карты, ведь добиться отличного баланса можно лишь путем проб и ошибок.
1. Название карты
2. количество карт стихий, необходимых для того, чтобы переложить эту карту из руки на стол, т.е. активировать ее, где они будут сражаться с картами, которые выложит соперник: в атаке ли, в защите ли.
стихии бывают: синяя, красная, черная, зеленая и т.д. в зависимости от игры. Если стоит цифра, например 1, значит для вызова может быть использована любая карта стихий, т.е. в нашем случае: 1, огонь, огонь, свет. Для того чтобы выложить карту на стол понадобится уже выложенных карт стихий в руке: 1 любая, две - огня (красная) и одна солнца (белая).
3. Тип существа
4. Первая цифра - атака, вторая - защита
5. Описание карты
6. картинка карты

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

Карты бывают не только такими, как эта, но и легендарными http://up1.joystick.ru/i/11/8eface2.jpg, специальными http://mtg.summoning.ru/images/magnivore.jpg - здесь количество звездочек определяется описанием, например, количеством определенного типа карт на кладбище (это куда уходят побитые, выброшенные и т.д. карты)
http://www.mymagic.ru/beginners/short.html

Добавлено (21 июля 2015, 22:55)
---------------------------------------------
ну и не только для баланса, конечно, необходимы такие редакторы. Удобней, понимашь...


http://www.3dbuffer.com/ Текстуры, Unity3D, Blender: Эффекты, скрипты, моделирование, текстурирование, скульптинг
VKонтакте 3Dbuffer

Последнее:

Новый раздел "Текстуры"

Как запатентовать, защитить техническое решение, игру, идею


Сообщение отредактировал MANMANA - Вторник, 21 Июля 2015, 22:55
LightStormДата: Среда, 22 Июля 2015, 00:39 | Сообщение # 4
почетный гость
Сейчас на сайте
Цитата 8Observer8 ()
не могу понять зачем делать такой редактор? Кому он нужен?

Цитата 8Observer8 ()
В игры выше я не играл и плохо представляю.

Цитата 8Observer8 ()
Я не понимаю, как должен выглядеть редактор карт и не могу приступить к выполнению задания.

Не обижайтесь, но для выявления подобного и нужны тестовые задания )) Ищите другую контору wink
8Observer8Дата: Среда, 22 Июля 2015, 06:24 | Сообщение # 5
заслуженный участник
Сейчас нет на сайте
Цитата beril ()
Разве в компании не дали четкое ТЗ?

Я требовал ТЗ, но без результатов.

Цитата LightStorm ()
Не обижайтесь, но для выявления подобного и нужны тестовые задания )) Ищите другую контору

Да хотелось бы в этой удержаться и развиваться. Тут вся команда англоязычная. Раз в неделю сборы в скайпе. Можно послушать живую английскую речь по предметной области, а в перспективе - поучаствовать. Это стимулирует изучать английский. По контракту, как минимум нужно уделять 10 часов в неделю на работу. В качестве подработки и обучения английскому было бы неплохо. Тут каждый борется за процент от продаж на стиме. Правда, меня смущает то, что по контракту абсолютно всё принадлежит одному человеку. Я понимаю, что с моим разговорным английским и тем, что в Unity новичок - мало шансов удержаться, но задание, хотя бы для опыта, нужно сделать.

MANMANA, огромное спасибо! Теперь я понимаю. Мне тимлидер по скайпу показывал примерно такие. Как я понял процесс работы с редактором - это создать объект, у которого будут производные объекты - Plane и тексты. Человек вводит тексты, выбирает картинку, получает объект, переименовывает его и бросает в папку Prefab.

beril, мне в той конторе тимлидер подарил Text Mesh Pro. Я могу выложить исходники проекта, в котором используется этот пакет?


Туториалы по играм на C# и Unity от НубТутс

Сообщение отредактировал 8Observer8 - Среда, 22 Июля 2015, 06:54
seamanДата: Среда, 22 Июля 2015, 09:13 | Сообщение # 6
старожил
Сейчас нет на сайте
Цитата
и тексты

Тексты не главное. Главное - характеристики. Атака, защита, дополнительные перки.
MANMANAДата: Среда, 22 Июля 2015, 09:41 | Сообщение # 7
почти ветеран
Сейчас нет на сайте
Цитата 8Observer8 ()
получает объект, переименовывает его и бросает в папку Prefab.
о5 скатываемся на ручное управление... зачем? Создаем из редактора префаб:
http://answers.unity3d.com/questio....ts.html


http://www.3dbuffer.com/ Текстуры, Unity3D, Blender: Эффекты, скрипты, моделирование, текстурирование, скульптинг
VKонтакте 3Dbuffer

Последнее:

Новый раздел "Текстуры"

Как запатентовать, защитить техническое решение, игру, идею
TymonrДата: Среда, 22 Июля 2015, 09:43 | Сообщение # 8
With OpenSource forever
Сейчас нет на сайте
Цитата 8Observer8 ()
beril, мне в той конторе тимлидер подарил Text Mesh Pro

В cocos2d все это по умолчанию есть:Р

Цитата seaman ()
Тексты не главное. Главное - характеристики. Атака, защита, дополнительные перки.

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


Если вы решили обратиться к нам за помощью, не становитесь в позицию неудачника. И не ведите себя как неудачник. Лучший способ получить быстрый и чуткий ответ, - спрашивать как победитель — спрашивать как человек умный, уверенный в себе и знающий, которому просто понадобилась помощь при решении одной конкретной проблемы.
Как правильно задавать вопросы в технических форумах
MANMANAДата: Среда, 22 Июля 2015, 09:47 | Сообщение # 9
почти ветеран
Сейчас нет на сайте
Цитата 8Observer8 ()
мне в той конторе тимлидер подарил Text Mesh Pro. Я могу выложить исходники проекта, в котором используется этот пакет?

Исходники проекта без проприетарного кода подаренного компонента - да. Исходники платного компонента - нет. Если вы купите исходники ms exchange, вы тоже можете их выложить? Еще бы проверить, позволяет ли лицензия подаренного вам компонента совершать акты дарения, как это сделал ваш лид :-)


http://www.3dbuffer.com/ Текстуры, Unity3D, Blender: Эффекты, скрипты, моделирование, текстурирование, скульптинг
VKонтакте 3Dbuffer

Последнее:

Новый раздел "Текстуры"

Как запатентовать, защитить техническое решение, игру, идею
KamiRoninДата: Четверг, 23 Июля 2015, 09:24 | Сообщение # 10
почти ветеран
Сейчас нет на сайте
Во всех ККИ разработчику нужно подготовить сохраненную базу данных по имеющимся картам.
Каким образом сформировать комплексную запись о игровых параметрах карты?
Вариантов на самом деле не много:
- сделать хмл/json описание каждой карты и сохранить это в отдельном файле. потом придется парсить это в ИГРОВОМ режиме и использовать. что неудобно на стадии разработки.
- создать объект сцены, холдер с сериализованными классами карты. удобно во всех смыслах - и на стадии разработки, и на стадии игры. требует возможности редактирования параметров карты во время разработки. - вот второй вариант и заказали.
- сервер с базой данных всех карт, доступ по ID, на стадии разработки требуется только прикрепить ид к префабу карты, все остальное делает обработчик игрового процесса - загружает параметры и тп. один из самых трудоемких (из за стадии разработки и тестирования), но гибких в дальнейшем вариантов.

решение (вариант 2) состоит из нескольких частей:
1. нужен класс карты со всеми ее параметрами и разделением на заложенное значение и текущее состояние (ослаблена действием другой карты или заклинанием или местом сражения и тп).
2. сам холдер - скрипт со списком карт в колоде, списком карт в игре и тп
3. для удобного ручного формирования и параметров карты (заполнение полей класса) и холдера колоды/карт на поле - нужен костомный эдитор через который ты просто забиваешь неоднородные поля класса карты и холдера. В нем могут быть и поля картинки, и поля с ограничениями, и поля с форматированным описанием и тп и тд. Все это получить штатным редактором ты не сможешь никак! И нет возможности формировать заполнение класса как то иначе - нужно либо сменить концепцию подхода к работе движка кки, либо никак. smile Поэтому такой заказ сразу и делают при разработке ККИ - кастомный эдитор. Просто видишь, там не дали намеков что даже для тестовой сцены с таким эдитором - должны быть и класс карты, и класс холдера, и детальное описание всех нюансов параметров карты (визуальные, технические). Вот у тебя и возникла сложность.

На самом деле, я бы не дал такое стажеру! smile Задача для нехилого такого уровня скила в модинге Юнити (если карты сложные). Я делал сам такую вещь и мне приходилось и концепции карт менять и концепции боя - чтобы добиться балансов и гладкой динамики. Конечно в результате эдитор спокойно потянул на отдельный аддон кит для разработки ККИ smile


Мыслю - значит программирую...
Конструктивная критика - умных ведет к совершенству...
Великие умы обсуждают идеи, средние - обсуждают поступки, а малые - людей.
seamanДата: Четверг, 23 Июля 2015, 11:36 | Сообщение # 11
старожил
Сейчас нет на сайте
Имхо - самое хреновое - перки. Потому как они весьма плохо формализуются. Ну вот примеры:
"излечите 3 повреждения с целевой карты"
"Все ваши карты получают +1"
"Атака выбранной карты становится равна 0"
"сбрасывает случайную карту из руки"
"Когда данная карта входит в игру, вы можете взять дополнительную карту"
"Когда вы берете карту, противник получает 1 повреждение"
"Противник сбрасывает 2 карты."
И таких перков может быть сотни. Почти не повторяются. Что с ними делать, кроме как тупо вручную программировать для каждой карты - я так и не понял.
KamiRoninДата: Четверг, 23 Июля 2015, 11:44 | Сообщение # 12
почти ветеран
Сейчас нет на сайте
Цитата seaman ()
И таких перков может быть сотни.

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


Мыслю - значит программирую...
Конструктивная критика - умных ведет к совершенству...
Великие умы обсуждают идеи, средние - обсуждают поступки, а малые - людей.
seamanДата: Четверг, 23 Июля 2015, 11:54 | Сообщение # 13
старожил
Сейчас нет на сайте
Не, ну конечно можно хоть как-то формализовать:
1. Цель действия - игрок/карта/колода/рука/"могильник"
2. Сторона воздействия свой/чужой
3. Количество карт на которое действует - число (0 - на все)
4. Параметр воздействия сила атаки/сила защиты/жизнь/...
5. Сила действия
Так где-то 90% перков можно охватить. Остальные - вручную...
KamiRoninДата: Четверг, 23 Июля 2015, 16:45 | Сообщение # 14
почти ветеран
Сейчас нет на сайте
Цитата seaman ()
Не, ну конечно можно хоть как-то формализовать

Абсолютно правильно!! smile
Я в 1 пункт просто добавил "особое" и туда закатал все оставшиеся эксклюзивы. Во время боя интерпретатор просто имел индивидуально прописанные ветки под особое. И его оказалось что то около 3 элементов всего из 40-50! Поэтому система себя оправдала.


Мыслю - значит программирую...
Конструктивная критика - умных ведет к совершенству...
Великие умы обсуждают идеи, средние - обсуждают поступки, а малые - людей.
8Observer8Дата: Четверг, 23 Июля 2015, 21:28 | Сообщение # 15
заслуженный участник
Сейчас нет на сайте
KamiRonin, отдельное огромное спасибо!

seaman, спасибо за дополнение.

Цитата KamiRonin ()
На самом деле, я бы не дал такое стажеру!

Есть общий документ для программистов команды, куда каждую неделю, напротив своего имени, нужно вписать, что сделал и текущий процесс. Я видел, что редактор карт уже делался до меня и продолжает развиваться. Скорее всего, от меня ждут редактор: насколько я его вижу и насколько смогу реализовать. Потом посвятят в основную разработку, в случае если увидят, что он меня есть какая-то отдача. Может я какие-то идеи предложу. Либо они хотят увидеть, что от меня никакого толка и просто со временем сам отвалюсь. Там система оплаты интересная. Сначала у меня 0%, а если сделаю задание, то будет 0.15% от ежемесячной прибыли от продаж, но в по контракту его могут расторгнуть в любой момент без объяснения причин. Лично мне опыт создания редактора будет не лишним. Наверняка мне это пригодится в будущем. Сделаю, отошлю, а если не ответят, то буду искать другую компанию в своём городе, удалённо или перееду в другой город. Мне очень нравится движок. Хочу изучать его с разных сторон.

Надеюсь, на подсказки, что я так или не так делаю.

Пока что я сделал окно, которое открывается из меню Window/Card Editor:



В консоль выдаётся предупреждение. Может кто-нибудь сталкивался. Я пробовал искать, но пока не понял, что это:
Unable to find style 'ThirdFieldBox' in skin 'LightSkin' Repaint
UnityEngine.GUIStyle:op_Implicit(String)
CardEditor:OnGUI() (at Assets/Scriptes/CardEditor.cs:43)
UnityEditor.DockArea:OnGUI()

Скрипт:



Я так понял, что могу использовать только старый GUI.

Критикуйте, если что не так. Правда, пока особо нечего критиковать. Ну, а вдруг? Это просто черновик. Я пока не знаю, как сделать, чтобы поля ввода были одинаковой ширины и как добавить выбор текстуры. Поля ввода почему-то растягиваются влево при вводе текста.

Как мне cохранять объекты в папку Prefab по нажатию кнопки? Можно было бы, наверное, добавить галочку "Сразу в Prefab"...


Туториалы по играм на C# и Unity от НубТутс
seamanДата: Четверг, 23 Июля 2015, 21:47 | Сообщение # 16
старожил
Сейчас нет на сайте
Цитата
GUILayout.BeginHorizontal("ThirdFieldBox");

Что по Вашему тут ThirdFieldBox?

Добавлено (23 июля 2015, 21:47)
---------------------------------------------

Цитата 8Observer8 ()
Как мне cохранять объекты в папку Prefab по нажатию кнопки?

Используй ScriptableObject
Форум игроделов » Движки для разработки игр и сложные системы разработки » Unity » Редактор карт
  • Страница 1 из 1
  • 1
Поиск:

Все права сохранены. GcUp.ru © 2008-2018 Рейтинг