Circle sokoban: билд №0

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

Итак, в чем суть. Есть уровень с определенной геометрией. Есть ядро - парящий шарик, которым управляет игрок. Еще по уровню разбросаны оболочки - полые шарики разных размеров. Ядро может присоединять к себе оболочки и, таким образом, переносить их, однако, с определенным условием - непосредственно ядро может присоединять только самую маленькую оболочку; вместе с маленькой оболочкой, можно присоединить оболочку побольше, ну и т.д.. В общем, тот самый "принцип матрешки". В любой момент можно отцепить самую верхнюю оболочку на ядре. Через оболочки ядро, ясное дело, не проходит (не считая те, которые может к себе присоединить). Еще на уровне есть нажимные плиты, они, по сути, реагируют на вес - активировать их можно, поместив на них оболочку, но, при этом, если оболочку убрать, плита деактивируется.
Цель игры - активировать все плиты на уровне.

Играбельная версия тут.
ЖМИ СЮДА
Тестовые уровни лучше не трогать.
Управление:
W-A-S-D - передвижение ядра
Space - присоединение/отсоединение кольца
Управление в редакторе теперь расписано непосредственно в редакторе. Подробную инструкцию напишу, если потребуется.
Внимание: вэб-версия не поддерживает работу с файлами, поэтому сохранять и загружать уровни вы там не сможете. Поэтому, помимо прочего, я выкладываю standalone версию игры. Сохранение происходит в папку "Мои Документы\Shell User Levels".

Это еще не весь концепт. Уровни, построенные на простых оболочках и плитах, будут составлять только первый "сезон" уровней. Для разнообразия у меня в планах:
  • Плиты с требованием к весу (размеру) оболочки (больше, меньше, равно) (уже готово)
  • Разноцветные оболочки, и плиты с требованием к цвету;
  • Оболочки с требованием к цвету (те, которые можно прицепить только на оболочку определенного цвета, и те, на которые можно нацепить только оболочку определенного цвета).
  • Барьеры - преграды, которые не пропускают ядро, пока не выполнено определенное требование (количество прицепленных оболочек, цвет верхней оболочки, отсутствие прикрепленной оболочки определенного цвета, все оболочки одного цвета и т.д.).
Ну и смешивание этих опций.
Но их я буду вводить, только если сам концепт будет признан играбельным.

В общем, жду ваших отзывов. При необходимости, попробую сообразить еще несколько уровней. Да, кстати, если у вас появятся идеи для уровней, выкладывайте их в любой форме, буду очень благодарен)) Если что, в будущем мне тоже понадобятся люди, которые помогут с планированием уровней (самый большой гемор для головоломок).
`
ОЖИДАНИЕ РЕКЛАМЫ...
0
24
10 лет назад
0
Тут такой баг есть - с 2 сторон можно выскочить за территорию. На скрине пометил красным.
Первое, что я сделал после того, как прочитал это - сам попробовал выскочить за территорию )
0
26
10 лет назад
0
А, теперь ясненько. Когда шарик на плите, первое, на что натыкается Рейкаст - сама плита.

Эх, похоже, придется полностью менять подход к реализации присоединения колец.
1
27
10 лет назад
1
lentinant, ты игру планируешь в 2D или 3D делать?
1
26
10 лет назад
1
Extravert, в 3D ее, по сути, нет смысла делать. Изначально думал как раз наоборот, но потом задумался, как, к примеру, будет выглядеть вхождение ядра в оболочку. Если откинуть вариант с тупо вхождением, то надо, чтобы оболочка открывалась, ядро туда влетало, и оболочка закрывалась. Но тогда это будет занимать очень много времени. В виде же с кружком и кольцами, быстрое вхождение выглядит нормально.
1
26
10 лет назад
Отредактирован lentinant
1
Немного изменил код, теперь указанных жуков не должно быть (правда, не факт, что не появились новые). А пока попробую сделать что-то похожее на редактор уровней. Сначала функционал будет базовый - стены, кольца, плиты. Остальное буду добавлять, как только, собственно говоря, это сделаю. Плюс, соответственным образом будет изменяться песочница.

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

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

Такое примечание - редактор я разрабатываю чисто в целях разработки, и вряд ли он войдет в полный функционал игры (кроме того, игра, все же, ориентируется на мобильные девайсы, на которых по умолчанию этот редактор очень неудобным получится). Да и сомневаюсь, что я смогу организовать нормальную систему создания, сохранения, и воспроизведения уровня уже в самой игре (то есть, в основном, созданные уровни я буду просто вручную конструировать уже в самом Юнити и добавлять в конечную версию). Так вот, возник вопрос - стоит ли вставлять проверку правильности уровня? Или оставить это на совесть тех, кто уровень делает? С проверкой иерархии колец (нельзя ставить 4 размер, когда нет 3, и т.д.), и обязательными условиями (на уровне должны быть плиты и кольца, количество плит должно быть меньше, чем количество колец) проблем не возникнет. Есть идеи насчет проверки, чтобы ни один элемент не выходил за пределы стен (сравнение с координатами самых крайних стен). Но могут возникнуть проблемы с самыми стенами - единственный алгоритм, который я придумал для проверки замкнутости стен, имеет жесткий косяк, и даже если это игнорировать, не запрещает создавать стены внутри стен (внутри которых могут быть интерактивные элементы). Однако, если человек, который будет делать уровни, сам попытается избежать подобного, то эти опции и не нужны.
Как вы считаете?
Лень, она повсюду.
1
24
10 лет назад
1
Банально запускаем по ячейкам волну от точки старта и после ее завершения проверяем добралась ли волна до всех интерактивных элементов. Естественно, волна не может проходить сквозь стены и у нее должен быть предел дальности чтобы если что не положить машину. Для проверки замкнутости стен делаем проверку не дошла ли случайно волна до крайних ячеек уровня (которые обязательно должны быть вне стен).
1
26
10 лет назад
Отредактирован lentinant
1
prog, суть вопроса была, все таки, в том, нужно ли это добавлять вообще, если редактор не получит широкого распространения.

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

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

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

Всё, всех видимых жуков перебил. Пробуем, тестируем, комментируем.
Да, кстати. Как думаете - стоит создавать проект с таким прогрессом? Или для начала добавить немного уровней, и несколько фишек новых?
Так что? Уровни кто-то уже пробовал сделать? Есть какие отзывы по редактору?

Завтра забираю ноут с ремонта. Как только обзаведусь всем необходимым софтом (диск-то пустой), сразу продолжу разработку. Есть идея насчет концепта дизайна плиты с выборочным требованием к кольцам.
1
26
10 лет назад
Отредактирован lentinant
1
Ноут вернулся с ремонта. Как только установлю юнити, по возможности возобновлю разработку.
1
27
10 лет назад
1
Обрадую, нашел баг prntscr.com/3ixhqk
Упираешься в стенку зажав W и пробел и нажимаешь D
1
26
10 лет назад
1
Extravert, довольно банальный баг - код для двух перемещений исполняется одновременно, с чего косяки. Решу либо переходом с OnMouseButton обратно на OnMouseButtonDown, либо заглушкой, которая будет активироваться при первой же нажатой кнопке, и блокировать все остальные кнопки.
Хотя, без заглушки не обойтись - с OnMouseButtonDown все равно можно будет одновременно нажать две кнопки.
0
26
10 лет назад
Отредактирован lentinant
0
Да, народ, такой еще вопрос - как думаете, управление на мобильный лучше делать экранными кнопками или свайпами?

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

Окай, залил.
Список изменений
  • Пофиксил (наверно) баг, указанный Экстравертом (во всяком случае, теперь, если нажата одна кнопка, код других исполняться не будет).
  • Для пущего удобства, теперь, когда вы в редакторе расставляете или передвигаете элементы, весь остальной интерфейс убран. Пока не предусмотрено для удаления, в меру того, что оно реализовано не так, как передвижение и создание элементов.
  • Наконец-то есть система сохранения и загрузки уровней. Пришлось отказаться от удобства, теперь это просто маленькое окошко, где вы вписываете название уровня, который хотите сохранить/загрузить. Сообщений при неправильной загрузке пока не предусмотрено - окно просто закроется. Файлы хранятся по адресу C:\Users\Username\AppData\LocalLow\DefaultCompany\Shell (хотя, это для редактора, кто знает, как в вэб-версии будет).

Мда, вэб плеер сохраняет фиг знает куда. Поищу. Ну, или поставлю сейв в Документы.

Окей, готово. Теперь ваши уровни будут храниться в "Мои Документы", в папке "Shell User Levels".

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

В принципе, можно перейти на полноценную систему загрузки уровней внутри игры (вместо создания каждого уровня вручную в редакторе Юнити). Я просто сделаю сцену-пустышку, в которой, в зависимости от выбранного в меню пункта, будет загружаться уровень необходимого формата, по тому же принципу, по которому он загружается в редакторе. У меня были сомнения насчет того, где хранить уровни (к примеру, я абсолютно не разбираюсь в иерархии директорий андроида), но их оказалось вполне реально хранить непосредственно в ассетах игры.

Из-за жутко нарушенного дневного режима, не смог сегодня заснуть. Поэтому пилил дальше (а еще шпилил, но это не так важно).
Итого: сделал "переборчивые" плиты. Пришлось перерисовать их на что-то уродливое, но на это были определенные соображения. Требование можно выставить в любой комбинации - начиная "принимаю все" и заканчивая "принимаю ничего" (да, это будет вариант без победы; подобные вещи становятся фишкой моего редактор - игра "детектор ленивого дизайнера"). Окно настройки вызывается кликом левой кнопкой мыши на плиту, когда сверху справа выставлен пункт Modify (костыли, они повсюду; позже попробую как-то унифицировать управление в редакторе). Сохранение с сабжем сдружено.
Еще добавил маленькие зеленые ободки между присоединенными кольцами - полезно в ситуации, когда вы стоите в кольце, и думаете, присоединили вы его только что или отсоединили.
0
27
10 лет назад
0
немного смущает что порталы горят зеленым, когда в них ничего нет
0
26
10 лет назад
Отредактирован lentinant
0
Extravert, это плиты -_- Какие именно части? О том, что плита нажата, говорят только центральный круг и четыре штучки на "лапах". Зеленые кольца вокруг круга - это показатели того, какие кольца принимает плита. И когда конкретно? Если в режиме редактирования, то не думаю, что это так страшно - при проверке уровня, они тушатся.

Да, забыл упомянуть. Поскольку мне надоело при каждом новом билде удалять отсюда старый, загружать новый, и менять ссылку на него в тексте, я просто оставлю ссылку на DropBox, которая всегда будет одинакова, пока я не переименую файл.
0
27
10 лет назад
0
lentinant, ну плиты - суть одна.
Когда мы проходим через плиту и НЕ оставляем там круг она горит красным
Когда мы проходим через плиту и оставляем там круг она горит зеленым
Вначале загрузки уровней мы НЕ имеем колец на плите, но они горят зеленым. Имею ввиду уровни уже построенные.
0
26
10 лет назад
Отредактирован lentinant
0
Extravert, если вы о тестовых уровнях, то на них я вам рекомендую вообще забить - я не собираюсь их править, особенно после недавно проведенных мной манипуляций с префабами. На этот момент проект находится в стадии "сделай сам".
Когда реализую загрузку уровней с файлов - возобновлю эти уровни в виде файлов, и загружу нормальные версии.
0
27
10 лет назад
0
lentinant, не нашел способа ставить вертикальные стены. Он есть вообще?
0
26
10 лет назад
Отредактирован lentinant
0
Extravert, центральная кнопка мыши. Читайте текст под красным "Управление" в посте.
0
24
10 лет назад
0
lentinant, "Недо-прототип логической игры" уже заменить можно )
1
26
10 лет назад
1
Isstrebitel, позже создам проект. А тут, пусть народ смотрит, как тут все было с самого начала)

Ладно, чтобы не заснуть, надо работать дальше. Начну писать "приемный" уровень.

Блин, затупил, при сохранении я кроме позиции передаю еще интовскую переменную в качестве вспомогательного параметра, а ведь можно передавать массив. Придется переделывать, ибо позже одной интовой переменной будет мало.
1
26
10 лет назад
Отредактирован lentinant
1

Новое обновление

Думаю, это стоит большого заметного заголовка. Итак:
Изменения в редакторе:
  • убрал возможность скрывать сетку (не вижу смысла в опции);
  • кнопки для создания новых элементов, и кнопки опций (тест, сохранение, загрузка и т.д.) перекочевали на подвижные окна;
  • существенно переработано управление - теперь вместо переключателя, кнопки мыши действуют по контексту, например, чтобы начать перемещать предмет, достаточно клацнуть на него левой кнопкой мыши, а чтобы удалить - правой; что делает какая кнопка, можно узнать с надписи непосредственно в самом редакторе, которая, помимо прочего, меняется в зависимости от ситуации;
  • добавил контроль над камерой - с зажатым левым контролом вы можете перетягивать камеру, ролик же меняет масштаб камеры; сделано для удобства и для возможности создавать большие уровни;
  • исправил несколько глуповатых и не очень багов.
В игре:
  • реализована система загрузки уровня с файла - теперь мне достаточно назвать файл определенным именем, закинуть его в одну папку, увеличить показатель одного статического класса - и уровень автоматически появится в меню выбора уровней;
  • поскольку теперь предусмотрена возможность создания больших уровней, теперь, когда ядро подойдет близко к краю экрана, камера начнет следовать за ним, чтобы тот не вышел за пределы экрана;
  • опять таки, пофиксил несколько багов.
Пробуем, комментируем (по желанию), помогаем мне отлавливать новых жуков, клепаем крутые уровни.
Да, нашел косяк - при завершении уровня в редакторе, не возвращает в режим редактирования. Просто нажмите Esc.
0
37
10 лет назад
Отредактирован Эльрат
0
Шеф, не пора ли создать проект? Будем рекламировать тебя на главной.
2
29
10 лет назад
2
lentinant, пора заводить проект и постить апдейты отдельными ресурсами)
Времена форума с 1 страницей прошли, пора использовать все возможности
0
26
10 лет назад
0
Эльрат, alexprey, я уже не раз был на страничке создания проекта, но до сих пор не могу заполнить первую же строчку - название проекта)) Да и картинки подходящей пока не придумал.
0
26
10 лет назад
0
Проект создан, название и лого временные.
Страница главной оформлена. Как только проект получит второй уровень, вся информация в этом ресурсе может считаться неактуальной, и будет использоваться только как история разработки. Модераторов прошу перенести ресурс в проект
0
37
10 лет назад
0
Перенес ресурс.
Чтобы оставить комментарий, пожалуйста, войдите на сайт.