image.png392 Кб, 650x365
Игра Бабушкин Покер Devin!ZwvVFIaY6c 916376 В конец треда | Веб
Название рабочее. По сути это вариация игры "тысяча", но с диким хоум рулз, которые я видел только в деревне, где по этим правилам бабушка играла с друзьями.

Делать буду на годоте. Моя первая игра.

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

https://www.youtube.com/watch?v=WjT5sLMD7Kw&list=PLkhDORpHGmvrW7ByiEL-M9JU_rl27QzmI вот по этому тутору иду и делаю сразу.
медведь в машине горящей.gif716 Кб, 499x300
2 916472
Добро пожаловать!
Если дропнешь через не удивимся.
Успехов
3 916475
>>16472
Этот аутист каждый месяц создаёт треды. Типа он начинает создавать свою первую игру. Выдумывает какую-нибудь охуительную историю, а потом забрасывает тред.
4 916478
>>16376 (OP)
Давай, там работы на недельку, если что непонятно спрашивай.
5 916730
Меня кстати зовут Duplan.

Это будет мое атмосферное креативное имя.

А вот вам мое репчик: https://github.com/duplan/granny-poker

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

Я думал, нужно как-то по-хитрому использовать гит, но битард из видео

https://www.youtube.com/watch?v=k0aH_V2GrBs

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

Больше я проебался с тем, чтобы гит не путал мои ssh ключи от работы и от ГЕЙмдев акка.

Вот если что команда:

git config core.sshCommand 'ssh -i ~/.ssh/ваш_приватный_ключ -o IdentitiesOnly=yes'

Карты скачал в первом же попавшемся месте. Рамку взял у чела в асетах.

Этому тутору 3 года и даже синтаксис устарел, так что смотрю критически.

От чела немного сразу пытаюсь, он подгоняет рамку под карту скриптом. Мне это непонятно, нахуй тогда мне редактор и наследование? Но найти как это сделать я не успел, пора спать. Просто у родительского компонента MarginContainer есть абсолютный размер в пикселях (control:layout:transform:size), у спрайта-рамки, нихуя. 2D node: transform и там только скейл. Завтра поглядим, как сделать. Ну хуйня же скриптом задавать, уж статичные объекты я могу заготовить полноценно? Но если редактором не предусмотрены ни глобальный размер для спрайта, ни обращение по скейлу к родителю, то пихуй, задам в скритпе.
День 1 6 916733
Сразу же все запорол, кек.

Галку не поставил, заголовочек.

>>16730

>От чела немного сразу пытаюсь



Пытаюсь уйти

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

>>16475
Лол, ну разок да, было, я тогда на юнити хотел эту же игру делать, но отложил. Остальное не я. Но сейчас я не сольюсь, каждый день буду ебашить.

Я кстати нашел правила, почти такие же, но у бабушки упрощенные были, потом скажу, что изменено

https://academypoker.ru/raznovidnosti-pokera/1812-pravila-igry-v-raspisnoj-poker.html

>>16472
Привет, анон. Спасибо, не дропну.
День 2 7 917701
Решил делать на юнити))

В годоте редактор какой-то нищий, дебагинг куцый, префабов нет - короче ай.

Вот такой курс купил во карточной игре в триде https://www.udemy.com/course/unity-card-combat/

И на него поглядывая делаю. Вот есть деревянный стол, карта и тетрадка - счет записывать.

Будет от первого лица игра, и в тетрадочку посматривать можно будет.

Ryder поставил, плагины все навернул - есть теперь автокомплит и все дела.

С гитом хз пока, я так понимаю тут не как в годоте, весь проект пушить не принято. Почитаю надосуге про это. Хотите, чтобы я пушил?
8 917708
>>17701

>Решил делать на юнити))


>Хотите, чтобы я пушил?


Нет
9 917808
>>17701
Отписался от треда.
10 917886
>>17808

>Отписался от треда.


держи в курсе
1700856499481.jpg32 Кб, 1280x720
11 917929
>>17701

> Хотите, чтобы я пушил?


Пулин-пушин. Сингин-синкин. Дайвин-даин.

Сегодня ночью гобот придёт и сотрёт твою лицензию
12 917932
>>17929

>Сегодня ночью гобот придёт


гобот, не вибрируй
День 3 13 918200
Сегодня выходной, получилось поделать побольше. Следую за курсом, адаптируя на ходу под свое.

1. Добавил скриптабл обжекты, которые как я понял, будут типа хранилища переменных для объектов типа карты или счета.
2. Добавил скрипты к счету и карте, которые на старте подставляют нужные значения.
3. Запомнил полезную настройку, где можно выводить на весь экран игру в плеймоде (скрин 1)
4. Запомнил полезную настройку, чтобы закреплять объект в инспеторе (скрин 2)

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

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

Но когда я захотел делать то же в рантайме, я охуел, как геморно менять текстуру у материала, типа брать модель, у неё рендерер, итерироваться по всем материалам, находить нужный и там Material.SetTexture

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

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

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

Но зато заработало и в рантайме обновлять спрайт оказалось легко, см скрин 3.

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

Завтра уже поинтереснее будет, больше кодинха, меньше возни в редакторе.
14 918203
>>17708
>>17808

Ребята, вы чего :(

Это же просто инстурмент!

>>17929
I understood that reference.
15 918206
ГОСПОДИН МОДЕРАТОР, А МОЖЕТЕ МНЕ В ШАПКЕ ПОМЕНЯТЬ СЛОВО "ГОДОТЕ" НА "ЮНИТИ" ????
16 918211
17 918546
Сегодня сделал не так много.

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

Почитал зачем скриптб обжекты, если можно хранить данные в свойствах моно бихейвиора (лучше по ресурсам, удобнее, между сценами доступно, ССО соблюдается, пушо моно для поведения, скриптбл обжект для даных).

Почитал про List в шарпах. Это получается мутабельная, более прожорливая версия массива.

А на этом все. Завтра в руке буду карты располагать.
18 918547
Сегодня сделал не так много.

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

Почитал зачем скриптб обжекты, если можно хранить данные в свойствах моно бихейвиора (лучше по ресурсам, удобнее, между сценами доступно, ССО соблюдается, пушо моно для поведения, скриптбл обжект для даных).

Почитал про List в шарпах. Это получается мутабельная, более прожорливая версия массива.

А на этом все. Завтра в руке буду карты располагать.
День 5 19 918876
Сегодня промежуточный день (уделить на буднях могу пока час через два, сегодня час), так что сделал немного.

Вот карты в руках расположить нехитрым скриптом. Но он у него корявый, от крайных точек тоже нужны отступы, чтобы они далеко друг от друга так не были, я уж не говорю о том, чтобы угол менять от центра, чтобы типа веерка было. Это я уже сам сделаю когда буду допиливать. Пока так.
20 918879
>>18876
нихуя не понял, почему на картах какой-то старый адрт и 80ых, где голые тянки?
День 6 21 919089
Сделал (списал с гайда) плавное прилетание карт в руку при помощи покадрового обновления позиции и разворота.

Он использовал перемещение Vector3.lerp(startPos, endPos, moveSpeed Time.DeltaTime) что, как я понял, нетипичное использование этого метода, который подразумевает, что последним аргументом будет отдаваться равномерно уменьшающаяся величина (типа, остаток пути), что обеспечит линейную скорость движения.

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

Может кто объяснить?

Еще не очень понял, чем это отличается от transform.translate?

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

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

---

Узнал, что можно мультиселектом перетаскивать в public массив / список в редакторе, а не дрочиться по одной штучке.

Узнал, что можно переключиться (см скрин1) в дебаг мод и видеть приватные переменные в редакторе.
22 919091
>>18879
Скинь пак, заряжу голых, ваще похуй.

Или ссылач дай
23 919275
>>19091
на, заодно хайпанешь https://2ch.hk/ruvn/res/153833.html#154480 (М)
Dec-01-2023 23-26-01.mp47,3 Мб, mp4,
320x232, 0:20
День 7 24 919965
Сегодня только сделал ховер, что когда мышку наводишь - картишки приподнимаются. У чела их моих уроков примитивная реализация, которая допускает глич, который я записал на видео.

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

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

Мини-лайфхак, если поставить на паузу и потом нажать запуск плей мода, а после, подождав, стартануть - не будет статера при запуске.
День 8 25 920959
Добавил выбор карт из руки и вазюкание их по столу. Он сделан каким-то достаточно сложным путем, где, как я понял по коду, из камеры в сторону курсора проецируется луч и берется место, где он достиг указанного слоя (я на стол добавил слой). И вот в это место я передвигаю карту. И она получается следует за мышкой. См. скрин.

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

Но я пока что буду просто брать на вооружение все эти приемы и потом их использовать в разных местах. Вот еще видосик приложил. Ну, такими темпами, за пару лет думаю запилю игруху - ебанетесь)))
26 921281
Плиз вернись на Годот тогда я буду читателем твоего треда.
27 923798
Ну что сынку помогла тебе твоя юнити?
Devin!ZwvVFIaY6c 28 965475
О, тред не удалили штоле
demo210724.mov13,1 Мб, mp4,
640x372, 0:38
День 9 )) Devin!ZwvVFIaY6c 29 965509
Вернулся к проекту и снова ежедневно над ним работаю.

На данный момент есть раздача карт и механики хода.

Пока делал простые абстракции

GameController - это еще в планах, будет что-то типа стейт машины, чтобы хоть где-то применить няшный паттерн. Но пока игры еще нет, то что есть регулирует RoundController.

RoundController - Это синглтон, который шарит за номер раунда (в раунде несколько ходов, это как дураке между отбоями / поинятиями), кто в нем ходит первый, следующий и так далее, кто победил и прочее. Чтобы начать. Чтобы провести ход он просит это сделать другой синглтон - TurnController.

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

HandController - олицетворяет игрока, всего их 4. Владеет информацией о состоянии руки игрока, расположении веера и т.д. Разрешает делать ход, если приналежит игроку и вызывает (пока не ненаписанный AIController, если принедлежит боту). Для движений и смены статуса вызывает Card. После конца хода просит TurnController передать ход другому игроку, тот, когда обойдет всех - отчитывается RoundController. Я хз, норм ли такая последовательная смена состояний, мб это нубский подход, дальше будет видно.

Card - ну тут понятно, все движения и считывание юзерского ввода на этом классе.

Выделение карты сделал простым шейдером самодельным по гайду. Подсвечивание места куда класть карту делаю sparklesParticleSystem.Play(); / sparklesParticleSystem.Stop(); частицы бесплатные скачал где-то.

Все карты хранятся в одном ScriptableObject, откуда их рандомно тянет RoundController, когда раздает карты.

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

Мне это не очень нравится, под некоторыми углами ебется отображение и можно видеть сквозь рубашку. Это по хорошему надо делать наверное двухсторонним материалом. Но пока как есть так есть. Если кто-то что-то хочет подсказать - пожалуйста.
demo210724.mov13,1 Мб, mp4,
640x372, 0:38
День 9 )) Devin!ZwvVFIaY6c 29 965509
Вернулся к проекту и снова ежедневно над ним работаю.

На данный момент есть раздача карт и механики хода.

Пока делал простые абстракции

GameController - это еще в планах, будет что-то типа стейт машины, чтобы хоть где-то применить няшный паттерн. Но пока игры еще нет, то что есть регулирует RoundController.

RoundController - Это синглтон, который шарит за номер раунда (в раунде несколько ходов, это как дураке между отбоями / поинятиями), кто в нем ходит первый, следующий и так далее, кто победил и прочее. Чтобы начать. Чтобы провести ход он просит это сделать другой синглтон - TurnController.

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

HandController - олицетворяет игрока, всего их 4. Владеет информацией о состоянии руки игрока, расположении веера и т.д. Разрешает делать ход, если приналежит игроку и вызывает (пока не ненаписанный AIController, если принедлежит боту). Для движений и смены статуса вызывает Card. После конца хода просит TurnController передать ход другому игроку, тот, когда обойдет всех - отчитывается RoundController. Я хз, норм ли такая последовательная смена состояний, мб это нубский подход, дальше будет видно.

Card - ну тут понятно, все движения и считывание юзерского ввода на этом классе.

Выделение карты сделал простым шейдером самодельным по гайду. Подсвечивание места куда класть карту делаю sparklesParticleSystem.Play(); / sparklesParticleSystem.Stop(); частицы бесплатные скачал где-то.

Все карты хранятся в одном ScriptableObject, откуда их рандомно тянет RoundController, когда раздает карты.

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

Мне это не очень нравится, под некоторыми углами ебется отображение и можно видеть сквозь рубашку. Это по хорошему надо делать наверное двухсторонним материалом. Но пока как есть так есть. Если кто-то что-то хочет подсказать - пожалуйста.
30 965868
>>65509

>HandController - олицетворяет игрока


нейминг мое почтение, мне кажется ты сам запутаешься через полгода что у тебя делает КруглыйКонтроллер, а что делает КонтроллерПоворота. Дело конеш твое, но я б уделил больше внимания неймингу.
Я бы игрока назвал Player. В нем можно хранить его очки/деньги и руку с картами, мб какой-то уровень сложности/опытности игрока.
В игороке был бы клас PlayerHand или просто Hand в котром бы хранились карты. "Круглые контроллеры" можно в один синглотон запихнуть и назвать его GameMaster, он будет отвечать за правила игры передавать ход, раздавать карты. В нем конечно тоже надо декомпозировать сущности на какие-то классы для. Ну и вообще Контроллер - слово паразит. Итак понятно, что код что-то там контролирует.
image.png1,8 Мб, 1024x1024
Devin!ZwvVFIaY6c 31 966052
Отдохнем от книг, просто ПОДЕЛЮСЬ СОСТОЯНИЕМ.

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

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

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

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

По заветам Арсена Маркаряна сильно поменял фокус с самодрочки с ЦЕЛЯМИ и ПОКАЗАТЕЛЯМИ (и грызением себя) на более полюбовные инструменты развития. В частности я говорю про юнити. Арсен предлагает аппелировать к двум абстракциям. Горилле внутри себя (это не он сам придумал, раньше это называли "рептильным мозгом"), которая жаждет простых эволюционных удовольствий, а также внутреннего ребенка.

Горилла не очень умна, но природно проницательна. Она внимательно следит за тем, чтобы твоя деятельность была направленна на классические вещи типа получать и экономить энергию и продолжать род. И если ты будешь пытаться её обойти и закидывать вещи не имеющие быстрого видимого и понятного эффекта (силой заставлять себя бегать по утрам или упахиваться разработкой после работы) -- она сожмет свои пальцы на твоем горле и заставит тебя объесться бургерами и лежать подрачивать. Так что нужно во-первых, прислушиваться к себе, а во-вторых объяснять ей, какие классные последствия несут эти действия и она может пойти на компромисс и дать тебе сил. Ведь силы есть всегда (не говорим про болезни типа депрессии). Ты можешь лежать и думать, как ты запарился, но позвонит кореш позовет куда-то, куда ты хочешь - и вот ты запрыгал-засобирался. Или тебя взяли на работу, или девушка, которая нравится куда-то позвала. Или как боец ММА казалось уже едва ноги переставляет в пятом раунде.. но вдруг срубает противника и выигрывает титул. И начинает скакать по октагону как ебанутый! А откуда силы? Ну это опять же про природу усталости и снова отложим до соответствующей заметки.

И вот, я перестал каждое утро записывать цель "1$ за свою игру до конца года" и стал проще относиться к этой деятельности, по возможности не включая помидоры, чтобы ее делать. Перестал особо раздумывать над тем, сколько я сделал. Стал чаще объяснять горилле, что я получу ресурсы и признание когда что-то выпущу. А если не выпущу - то хоть с друзьями по приколу поиграю. Я даже допустил, что в целом это брошу, если надо будет начать себя заставлять. Потому что если надо себя заставлять - то ты только аллергию на эту деятельность заработаешь, нужно попуститься или вообще искать что-то другое.

И... я стал делать только больше и с бòльшим удовольствием. Прогресс идет как никогда раньше. (что не значит, что я двигаюсь быстро, я двигаюсь быстрее). Я перестал подсознательно трепетать перед сессиями этой деятельности и начинать оттягивать их другими полезными делами. Потому что делать игру мне стало интереснее, чем мыть посуду. Может кто заметил, что я ничего не делал по приложению в выходные. Потому что мне (и даже горилле в кои-то веки) хотелось заниматься геймдевом. А кто я такой, чтобы ей перечить?
image.png1,8 Мб, 1024x1024
Devin!ZwvVFIaY6c 31 966052
Отдохнем от книг, просто ПОДЕЛЮСЬ СОСТОЯНИЕМ.

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

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

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

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

По заветам Арсена Маркаряна сильно поменял фокус с самодрочки с ЦЕЛЯМИ и ПОКАЗАТЕЛЯМИ (и грызением себя) на более полюбовные инструменты развития. В частности я говорю про юнити. Арсен предлагает аппелировать к двум абстракциям. Горилле внутри себя (это не он сам придумал, раньше это называли "рептильным мозгом"), которая жаждет простых эволюционных удовольствий, а также внутреннего ребенка.

Горилла не очень умна, но природно проницательна. Она внимательно следит за тем, чтобы твоя деятельность была направленна на классические вещи типа получать и экономить энергию и продолжать род. И если ты будешь пытаться её обойти и закидывать вещи не имеющие быстрого видимого и понятного эффекта (силой заставлять себя бегать по утрам или упахиваться разработкой после работы) -- она сожмет свои пальцы на твоем горле и заставит тебя объесться бургерами и лежать подрачивать. Так что нужно во-первых, прислушиваться к себе, а во-вторых объяснять ей, какие классные последствия несут эти действия и она может пойти на компромисс и дать тебе сил. Ведь силы есть всегда (не говорим про болезни типа депрессии). Ты можешь лежать и думать, как ты запарился, но позвонит кореш позовет куда-то, куда ты хочешь - и вот ты запрыгал-засобирался. Или тебя взяли на работу, или девушка, которая нравится куда-то позвала. Или как боец ММА казалось уже едва ноги переставляет в пятом раунде.. но вдруг срубает противника и выигрывает титул. И начинает скакать по октагону как ебанутый! А откуда силы? Ну это опять же про природу усталости и снова отложим до соответствующей заметки.

И вот, я перестал каждое утро записывать цель "1$ за свою игру до конца года" и стал проще относиться к этой деятельности, по возможности не включая помидоры, чтобы ее делать. Перестал особо раздумывать над тем, сколько я сделал. Стал чаще объяснять горилле, что я получу ресурсы и признание когда что-то выпущу. А если не выпущу - то хоть с друзьями по приколу поиграю. Я даже допустил, что в целом это брошу, если надо будет начать себя заставлять. Потому что если надо себя заставлять - то ты только аллергию на эту деятельность заработаешь, нужно попуститься или вообще искать что-то другое.

И... я стал делать только больше и с бòльшим удовольствием. Прогресс идет как никогда раньше. (что не значит, что я двигаюсь быстро, я двигаюсь быстрее). Я перестал подсознательно трепетать перед сессиями этой деятельности и начинать оттягивать их другими полезными делами. Потому что делать игру мне стало интереснее, чем мыть посуду. Может кто заметил, что я ничего не делал по приложению в выходные. Потому что мне (и даже горилле в кои-то веки) хотелось заниматься геймдевом. А кто я такой, чтобы ей перечить?
Devin!ZwvVFIaY6c 32 966053
Ох лол, не тот тред

МОДЕРАТОР СОТРИ >>66052
720demo3007.mov26,2 Мб, mp4,
1280x700, 0:34
Devin!ZwvVFIaY6c 33 968306
Еще раз правила игры
https://www.nashpoker.net/ru/articles/raspisnoy_poker-30/

Пока отошел от обучающего видео и сделал ставки на первый раунд.

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

Добавил BiddingController, которому RoundController делегирует этап ставок. Чем более поздний раунд - тем больше карт в раздаче и больше может быть ставка, максы от 0 до 9. В планах порт на телефон, так что я не стал делать ввод с клавиатуры, пока что выбираем кнопками.

Кнопки я делаю универсальные из префаба базовой кнопки. Меняю только хэндлер класс на этапе инициализации. И добавил интерфейс слушания нажатия кнопки на все классы, которые будут ее хендлить. ООП ЕБАТЬ

Получается такой вот контроллер с интерфейсом хэндлера кнопки

public class BiddingController : MonoBehaviour, IButtonClickHandler

И при инициализации кнопки типа

var button = Instantiate(bidButtonPrefab, bidButtonPositions[index]);
button.GetComponentInChildren<TMP_Text>().text = index.ToString();
var buttonListener = button.GetComponent<ButtonListener>(); buttonListener.ClickHandler = BiddingController.instance;

Позиции для кнопок я заранее разметил невидимыми объектами на канве.

Тексты для ставок и выигрышей тоже поразмечал заранее.

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

Пришлось делать какую-то компромиссную залупу типа RoundUtility.GetDealerIndex(this)

То есть для получения контекста передается this.

Еще делегаторы какие-то заебные. Чтобы контроллеру ставок не передавать по лишнему разу переменные, которые знает контроллер раундов пришлось делать

public int roundNumber
{
get { return RoundController.instance.roundNumber; }
}

Как-то ебано и будет работать только с синглтонами. Наверное, в шарпах есть что-то получше для делегации.

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

На демо видно как все красиво.
720demo3007.mov26,2 Мб, mp4,
1280x700, 0:34
Devin!ZwvVFIaY6c 33 968306
Еще раз правила игры
https://www.nashpoker.net/ru/articles/raspisnoy_poker-30/

Пока отошел от обучающего видео и сделал ставки на первый раунд.

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

Добавил BiddingController, которому RoundController делегирует этап ставок. Чем более поздний раунд - тем больше карт в раздаче и больше может быть ставка, максы от 0 до 9. В планах порт на телефон, так что я не стал делать ввод с клавиатуры, пока что выбираем кнопками.

Кнопки я делаю универсальные из префаба базовой кнопки. Меняю только хэндлер класс на этапе инициализации. И добавил интерфейс слушания нажатия кнопки на все классы, которые будут ее хендлить. ООП ЕБАТЬ

Получается такой вот контроллер с интерфейсом хэндлера кнопки

public class BiddingController : MonoBehaviour, IButtonClickHandler

И при инициализации кнопки типа

var button = Instantiate(bidButtonPrefab, bidButtonPositions[index]);
button.GetComponentInChildren<TMP_Text>().text = index.ToString();
var buttonListener = button.GetComponent<ButtonListener>(); buttonListener.ClickHandler = BiddingController.instance;

Позиции для кнопок я заранее разметил невидимыми объектами на канве.

Тексты для ставок и выигрышей тоже поразмечал заранее.

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

Пришлось делать какую-то компромиссную залупу типа RoundUtility.GetDealerIndex(this)

То есть для получения контекста передается this.

Еще делегаторы какие-то заебные. Чтобы контроллеру ставок не передавать по лишнему разу переменные, которые знает контроллер раундов пришлось делать

public int roundNumber
{
get { return RoundController.instance.roundNumber; }
}

Как-то ебано и будет работать только с синглтонами. Наверное, в шарпах есть что-то получше для делегации.

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

На демо видно как все красиво.
34 968311
>>65868

>я б уделил больше внимания неймингу


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

Но как минимум handController надо дейстительно декомпозировать. Будет Player у которого как минимум есть рука, а есть и голова, где боты будут над ходами думать.
35 968329
ты правила все обсоси сначала, используй все комбинации ситуаций, потом уже проект создавай
image.png14 Кб, 240x262
36 968444
>>68311

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


Ну вообще да. Контроллер - это некий регулятор - ремапщик, переводчик. Взять-тот же геймпад. Он превращает нажатия кнопок в какой-то евент. Внутри игры тоже может быть класс контроллер который уже ремапит еневты нажатия кнопок в какие-то именованные функции типа идти, стрелять, присесть. Да хоть в тракторе рычаг - тоже своего рода контроллер. Но проблема в том, что это слово все равно очень абстракное, потому что сильно контекстозависимое. В электронике контроллер - это вобще микрокопьютер в одной микрухе со своим процом, памятью, интрефейсами, портами.
Конкретно в твоей игре неплохо бы определиться с предметной областью и назвать её суперчитаемо, чтобы никаких левых трактовок быть прсто не могло. Вот что у нас вообще есть в любой катрочной игре? Карта, Колода, Крупье, Игрок, Стол, Ставка, Бита и.т.д ООП тем и хорош, что оно позволяет называть все вещи своими бытовыми именами. И код становится похож на обычный человеческий текст из понятий: РаздатьКарты(), ВзятьКарту(), сброситьКарту(), СледующийХод()
Обновить тред
« /gd/В начало тредаВеб-версияНастройки
/a//b//mu//s//vg/Все доски

Скачать тред только с превьюс превью и прикрепленными файлами

Второй вариант может долго скачиваться. Файлы будут только в живых или недавно утонувших тредах.Подробнее