Игра Бабушкин Покер
Devin!ZwvVFIaY6c20/11/23 Пнд 01:13:49№9163761
Название рабочее. По сути это вариация игры "тысяча", но с диким хоум рулз, которые я видел только в деревне, где по этим правилам бабушка играла с друзьями.
Делать буду на годоте. Моя первая игра.
Это прямо дневник разработчика, писать сюда буду каждый день.
>>916472 Этот аутист каждый месяц создаёт треды. Типа он начинает создавать свою первую игру. Выдумывает какую-нибудь охуительную историю, а потом забрасывает тред.
Начал я с того, что инициализировал гит. Этот проект чисто потыкать, никаких ценных наработок тут не будет. Следующий я уже буду показывать кусками по вашей просьбе.
Я думал, нужно как-то по-хитрому использовать гит, но битард из видео
Карты скачал в первом же попавшемся месте. Рамку взял у чела в асетах.
Этому тутору 3 года и даже синтаксис устарел, так что смотрю критически.
От чела немного сразу пытаюсь, он подгоняет рамку под карту скриптом. Мне это непонятно, нахуй тогда мне редактор и наследование? Но найти как это сделать я не успел, пора спать. Просто у родительского компонента MarginContainer есть абсолютный размер в пикселях (control:layout:transform:size), у спрайта-рамки, нихуя. 2D node: transform и там только скейл. Завтра поглядим, как сделать. Ну хуйня же скриптом задавать, уж статичные объекты я могу заготовить полноценно? Но если редактором не предусмотрены ни глобальный размер для спрайта, ни обращение по скейлу к родителю, то пихуй, задам в скритпе.
>>916478 У меня явно займет больше, я еще работаю, спрашивать буду каждый день, спасибо.
>>916475 Лол, ну разок да, было, я тогда на юнити хотел эту же игру делать, но отложил. Остальное не я. Но сейчас я не сольюсь, каждый день буду ебашить.
Я кстати нашел правила, почти такие же, но у бабушки упрощенные были, потом скажу, что изменено
Сегодня выходной, получилось поделать побольше. Следую за курсом, адаптируя на ходу под свое.
1. Добавил скриптабл обжекты, которые как я понял, будут типа хранилища переменных для объектов типа карты или счета. 2. Добавил скрипты к счету и карте, которые на старте подставляют нужные значения. 3. Запомнил полезную настройку, где можно выводить на весь экран игру в плеймоде (скрин 1) 4. Запомнил полезную настройку, чтобы закреплять объект в инспеторе (скрин 2)
По туториалу он пока просто меняет текст на своей модельке карты, но я решил сразу прогружать текстурку из скрипта, которая будет браться из скриптабл обжекта.
Тут то меня ждал первый ахуй. У чела я взял модельку карты, там нстроен рендерер и у него несколько материалов и у них я менял текстуру в редакторе, делая из его гоблина свою двойку пик.
Но когда я захотел делать то же в рантайме, я охуел, как геморно менять текстуру у материала, типа брать модель, у неё рендерер, итерироваться по всем материалам, находить нужный и там Material.SetTexture
Но раз через такую жопу надо делать - значит я делал неправильно. Я так понимаю, что обычно меняют спрайт.
И я решил вообще убрать нахуй его модель и сделать свою карту, более простую, типа 2д прямоугольник и у него 2 дочерних объекта с рендерерами с двух сторон приклеено. Долго тупил, почему я не могу свои пнгшки засунуть в рендерер, а потом нашел, что можно импортировать их сразу спрайтами.
И тогда короч сделал как хотел. Но в отличии от его пиздатой модели, у меня рендереры не были настроены, чтобы по размеру текстуру растягивать и я руками рескейлил конский спрайт рубашки и переда карты.
Но зато заработало и в рантайме обновлять спрайт оказалось легко, см скрин 3.
Короче, походу по моделингу нужно будет брать курс отдельно, хз.
Завтра уже поинтереснее будет, больше кодинха, меньше возни в редакторе.
Наметил позиции и начал делать руку, чтобы карты держать. Отметил крайнюю левую и правую точки, чтобы между ними распределять карты. Прикольный трюк узнал, делать этимм невидимым объектам видимый дочерний объект типа сферы, располагать их относительно друг друга и удалять объект, который был чисто ориентиром.
Почитал зачем скриптб обжекты, если можно хранить данные в свойствах моно бихейвиора (лучше по ресурсам, удобнее, между сценами доступно, ССО соблюдается, пушо моно для поведения, скриптбл обжект для даных).
Почитал про List в шарпах. Это получается мутабельная, более прожорливая версия массива.
А на этом все. Завтра в руке буду карты располагать.
Наметил позиции и начал делать руку, чтобы карты держать. Отметил крайнюю левую и правую точки, чтобы между ними распределять карты. Прикольный трюк узнал, делать этимм невидимым объектам видимый дочерний объект типа сферы, располагать их относительно друг друга и удалять объект, который был чисто ориентиром.
Почитал зачем скриптб обжекты, если можно хранить данные в свойствах моно бихейвиора (лучше по ресурсам, удобнее, между сценами доступно, ССО соблюдается, пушо моно для поведения, скриптбл обжект для даных).
Почитал про List в шарпах. Это получается мутабельная, более прожорливая версия массива.
А на этом все. Завтра в руке буду карты располагать.
Сегодня промежуточный день (уделить на буднях могу пока час через два, сегодня час), так что сделал немного.
Вот карты в руках расположить нехитрым скриптом. Но он у него корявый, от крайных точек тоже нужны отступы, чтобы они далеко друг от друга так не были, я уж не говорю о том, чтобы угол менять от центра, чтобы типа веерка было. Это я уже сам сделаю когда буду допиливать. Пока так.
Сделал (списал с гайда) плавное прилетание карт в руку при помощи покадрового обновления позиции и разворота.
Он использовал перемещение Vector3.lerp(startPos, endPos, moveSpeed Time.DeltaTime) что, как я понял, нетипичное использование этого метода, который подразумевает, что последним аргументом будет отдаваться равномерно уменьшающаяся величина (типа, остаток пути), что обеспечит линейную скорость движения.
Так написано и в доке и нейросеть сказала. Но чел отдавал плюс-минус статичную величину дельтазаданная скорость и этим обеспечил типа плавное подъезжание, движение со скоростью, падающей по обратной экспоненте (хз, как это называется, я гуманитарий). Только по идее тогда карты должны никогда до конца не достичь точки, как в анекдоте с бескнонечным числом математиков где бармен говорит: "а ну пошли нахуй отсюда". Но редактор показывает, что вполне себе доезжают.
Может кто объяснить?
Еще не очень понял, чем это отличается от transform.translate?
И там и там мы подстраиваем скорость под плавную, просто в одном случае двигаеся по направлению, а во втором из точки в точку. Вот и нейросеть что-то такое сказала.
Но в целом похуй на самом деле, я пришел игры делать, а не дрочить матешу, кароч транслэйтом ходит персонаж, лерпом подбирает предметы или ловит самоноводящиеся ракеты))
---
Узнал, что можно мультиселектом перетаскивать в public массив / список в редакторе, а не дрочиться по одной штучке.
Узнал, что можно переключиться (см скрин1) в дебаг мод и видеть приватные переменные в редакторе.
Сегодня только сделал ховер, что когда мышку наводишь - картишки приподнимаются. У чела их моих уроков примитивная реализация, которая допускает глич, который я записал на видео.
Как его можно избежать? На ум приходят уменьшения или отключения колайдера других карт на время какая-то пока карта выбрана, хз.
Приятно, что юнити дает готовые методы типа onMouseXXX, которые сразу связаны с колайдером. Побольше бы такого, меньше писанины. интересно, что в годоте?
Мини-лайфхак, если поставить на паузу и потом нажать запуск плей мода, а после, подождав, стартануть - не будет статера при запуске.
Добавил выбор карт из руки и вазюкание их по столу. Он сделан каким-то достаточно сложным путем, где, как я понял по коду, из камеры в сторону курсора проецируется луч и берется место, где он достиг указанного слоя (я на стол добавил слой). И вот в это место я передвигаю карту. И она получается следует за мышкой. См. скрин.
Могу только сказать, что шарпы мне нравятся. не то что гдс Вот как мы передаем переменную в функцию и напрямую знаем, что ее там мутируют т.к там кодовое слово out - это прикольно, это я уважаю.
Но я пока что буду просто брать на вооружение все эти приемы и потом их использовать в разных местах. Вот еще видосик приложил. Ну, такими темпами, за пару лет думаю запилю игруху - ебанетесь)))