TyapLyapDev - Разработка игр | Движуха Сакутина
225 subscribers
127 photos
77 videos
13 files
26 links
Download Telegram
🥳 Модерация пройдена!

Можете поиграть в игру, если есть желание
https://yandex.ru/games/app/panika-v-parking-siti-471752?lang=ru

Но это лишь верхушка айсберга. Теперь я отправляю свой проект на проверку ментору. А в коде у меня просто ужасные костыли, которые работают, но такое неприемлемо для сдачи. Поэтому впереди долгая и упорная работа по рефакторингу под чутким руководством толковых менторов.
🔥5
Исключительно для энтузиастов!

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

Но сначала вкратце об игре:
Тип: Приключенческий симулятор выживания от 1/3 лица.
Суть: Вы – ИИ луноход Пионер-1. Спустя сотни(?), тысячи(?), хз сколько лет после крушения зонда вы приходите в себя на поверхности Луны. Собираете ресурсы со старых обломков, ремонтируете себя и базу, расшифровываете найденные дневники экипажа, чтобы узнать страшную правду о судьбе человечества.

А тут развёрнуто (я плакал в процессе написания):
https://docs.google.com/document/d/1LJgYEIIIiXRosT3qIgthqIToT3Lz_9XVCI1jilG9ddE/edit?usp=sharing

Игра-вдохновитель: Raft – выживач, где игрок на самодельном плоту дрейфует по бескрайнему океану, исследует острова и крафтит себе всё необходимое.

(продолжение в комментах, тут не впихулось)
1👍1
This media is not supported in your browser
VIEW IN TELEGRAM
Вайбкодерам, у кого нет встроенного в редактор ИИ.

Вместо копирования классов проще собрать все скрипты в одном txt файле и отправить нейросетке. И я решил максимально упростить процесс. Как? Смотрите видео. Рабочий файлик прикрепляю. Курсор не записался, поэтому поясняю: правой кнопкой по файлику -> Выполнить с помощью PowerShell. Дальше уже всё подписано и понятно. Файлик первым сообщением. Благодарите
🔥2
Чё там по доходам с игры? Не залетела, зато столько всего узнал, пока пилил - доволен короче. Да и на 35 рублей вообще-то можно дошик купить (но это не точно). И вообще, может ещё стрельнет или хотя бы взбзднёт чутка 😁
😁3
Заметил такой вариант утечки во время подписок/отписок:

Я при вызове метода Initialize() подписывался на событие, а в OnDestroy отписывался. Всё было норм, пока однажды не словил исключение. Оказывается, что если объект ни разу не был включён, то не сработает ни Awake(), ни, следовательно, OnDestroy(). А раз в инициализаторе подписался, отписка может не пройти (на что я и напоролся). Разобравшись, я пошёл мучать DeepDeek, потому как этот товарищ спорил со мной, зуб давал, мамой клялся, но в итоге я его отправил учить матчасть. Скрины прилагаю. Так вот, это можно обойти, если при инициализации вызвать SetActive(true) и тут же вернуть в SetActive(false). Но лучше не страдать фигнёй и просто подписываться в OnEnable, отписываться в OnDisable. Всем хорошего кода
🔥1
Опа-опа, чёт происходит
🔥2🫡2
🥳 сдал первый проект Пыточной. Дальше командный
🔥3
Сколько заработала игра за первый месяц и рейтинг 😁 Выходит, что если надо 100к в месяц, то мне надо по 1000 таких игрух выпускать, либо повышать качество игр и пилить то, что в трендах
🔥41👍1
Почему мне не зашёл Zenject

Ответ прост: потому что я креветка ) Я использовал композицию, например: Мне нужен спавнер врагов, он внутри себя созавал пул, который внутри себя создавал фабрику, которая должна была принимать какие-то данные о врагах (из конфига или сохранений). И я такой: блин, чтобы всё это биндилось, зависимости раскидались, надо как-то вывернуться непонятно как. Поэтому я ручками прокидывал все данные, которые не нужны ни спавнеру, ни пулу. И вот недавно я начал новый проект на свежую голову, но уже решил пощупать VContainer. Только в этот раз я уже инжектил конфиг в фабрику, фабрику регистрировал и инжектил в пул, а пул регал и инжектил в спавнер. И тогда всё встало на свои места. Короче, DI Container - такая штука, которая вынуждает вас соблюдать SOLID и наоборот, если вы делаете по SOLID, то удобно юзать DI контейнеры.

Раньше я просто не соблюдал "D" (DIP: принцип инверсии зависимостей) из SOLID. Он гласит:

1. Модули верхних уровней не должны зависеть от модулей нижних уровней. Оба типа модулей должны зависеть от абстракций (интерфейсов, абстрактных классов).
2. Абстракции не должны зависеть от деталей. Детали (конкретные реализации) должны зависеть от абстракций.

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

Уже поймал несколько затыков с фруструмом камеры, созданием elastic эффекта границ, соотношением дельты курсора/пальца с дельтой перемещения в мировых координатах.

Но сейчас всё уже прекрасно. Пока в пути, расписал задачи на ближайжее будущее
🔥3