Готова ли Игра?
252 subscribers
123 photos
20 videos
9 files
31 links
Научу делать игры ПРАВИЛЬНО!

Для связи со мной: @ArtemiZ_GD
Download Telegram
Ошибка, которая стоила мне 3 полных рабочих дня…

В начале этой недели у меня стояла задача - пофиксить вылеты, которые мы нашли во время тестов. Задача вроде бы не сильно сложная: найти причину и устранить ее. Но проблемы появились с самого начала…

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

1. Повторить ошибку и изучить данные, которые выдает Юнити
2. Найти причину путем несложные проставлений меток (обычно я использую обычный дебаг вывод, просто и быстро)
3. Исправить

Вот только, проблемы появились еще до 1 пункта.

Если вдруг вы работали с Photon Quantum, вы знаете ошибку расхождения состояний (Halting Error). Во время ее появления Юнити не выводит причину ошибки, а все из-за того, что расхождение состояний фиксируется в конце кадра (иногда даже через несколько кадров после совершения расхождения). Это специфика детерминированной системы)

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

В этот раз такого не было. Меня это немного напрягло

Вкратце: я фиксил реконект игроков к лобби. Так как игра у нас с закрытым лобби, реконект нужно было писать самостоятельно.

Изначально я думал что проблема в том, что я не понимаю как работает переподключение и искал проьлему там. Около 8-10 часов я рылся в коде, написанном в самом плагине, но все вроде было хорошо. Реконнект работал. Вот только через некоторое время в игре все равно появлялась эта ошибка.

* прошло 2 дня

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

И тут я решил проверить, если я уберу реконект и повторю все те же операции, что то поменяется? И знаете что?…

НЕТ!!! Проблема осталась. Все же ошибка происходила в другом месте…

Пошел третий день.

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

Я отчаялся. И начал комментировать весь код. Постепенно…

Раз за разом я комментировал все больше и больше кода. Но ошибка не пропадала. И вот в я наконец-то нашел строку, которая вызывает ошибку.. Это был момент освобождения массива (f.FreeList)

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

Алилуя! Заработало. Ошибки не стало. Но остался один нюанс.

Я не верил, что так топорно решать проблему - это правильное решение.

Я решил обратиться к истокам и перечитал документацию по динамическим массивам. И вдруг я нашел роковую строчку: после освобождения массива его необходимо обнулить (= default). В первый раз, когда я читал документацию, я достаточно торопился и пытался успеть сделать задачу в срок. Но в итоге, оно стоило мне очень много времени и нервов. Я 3 дня подряд ложился после 1-2 ночи (мой режим был 23-8)

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

#ЖизньArtemiZ
Я немного приболел, видимо в поликлинике недавно заразился. Вроде уже поправляюсь, но сил пока что то делать нет)

Наверное до конца года особо контента не будет, я постараюсь что нибудь выкладывать, но не обещаю.

Сейчас я готовлю идеи на следующий год.

Мы продолжим работу над авточесом, я буду скидывать вам спойлеры)

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

Тень - мой пет проект, который я планирую активно развивать в следующем году. Если все пойдет по плану, то контента будет много)

Еще в планах поучаствовать в геймджемах.

В общем, идей много, все хочется сделать.

Рассказывайте свои планы в комментариях, а я пойду лечиться)

#ЖизньArtemiZ
Моя девушка создала канал, если есть любители визуала, подпишитесь, пожалуйста:)
(Она иллюстратор, будет рисовать для моих игр, в том числе)

https://tttttt.me/nastyaschaos

#ЖизньArtemiZ
👾 Навигация 👾

🔤Теги

#Фишки - Посты с полезной информацией про Unity. Расширение, оптимизация или просто совет

#ЖизньArtemiZ - Посты с личной информацией. О том, как я стал программистом и как провожу свое время

#Спойлер - Посты - тизеры к моим текущим проектам. У меня есть как рабочие проекты, так и личные. Рано или поздно я их выпущу:)

#Мнение - рандомный пост с моим личным мнением на ту или иную тему. Скорее всего связанную с Unity

❗️Полезные статьи

Путеводитель для начинающего разработчика игр на Unity

Нейросети в разработке игр на Unity

Ссылки на полезную инфу

Порядок расположения элементов в классе

⭐️ Может тебя заинтересовать

Как я докатился до жизни такой - Пост о том, как я стал программистом
Please open Telegram to view this post
VIEW IN TELEGRAM
Как я докатился до жизни такой часть 1

Меня зовут - Артем. Я очень люблю игры! Особенно их создавать)

4 года мне понадобилось, чтобы пройти путь «От идеи до реализации», а точнее от желания начать создавать игры, до работы мечты!

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

Вот только программировать я особо не умел. Был у меня опыт написания простеньких программ на c++, но не больше «калькулятора».

Но большое желание - лучшая мотивация. За одно лето я изучил азы c# и Unity, но начался универ…

Скоро узнаете, что было дальше! А пока, пишите, как вы пришли к идее делать игры)


Продолжение

#ЖизньArtemiZ
Как я докатился до жизни такой часть 2

Начало истории

Поступил я на направление «Программная инженерия», вроде программирование, но интереса к учебе вообще не было. Такой я человек, мне нужен результат, а теория вгоняет в депрессию:(

Первый раз я отчислился, поступил в другой вуз, взял академ, вернулся и опять отчислился. На все это ушло 3,5 года, а прогресса в плане разработки игр почти не было. Но параллельно я проходил курс Skillbox, а потом Ромы Сакутина.

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

Начался период «Возьмите меня куда-нибудь»

На этот момент у меня в портфолио был всего один маленький проект - курсовая Скиллбокса и все:)

А работу искать надо...

🔥 - если ждете продолжения, чтобы я знал, что такие посты стоит иногда писать)

Продолжение

#ЖизньArtemiZ
Please open Telegram to view this post
VIEW IN TELEGRAM
Как я докатился до жизни такой часть 3

Начало истории

Естественно, с таким багажом никто брать не хотел.

В феврале я все таки нашел вакансию на ХедХантере, где я прошел собеседование и начал работать. Но было один подвох - 20к в месяц. За такие деньги в Питере хватит максимум на еду. А руководство требовало делать невыполнимые задачи.

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

Пошел дальше на hh.ru. Около недели я откликался и неожиданно меня пригласили на ПК проект в стим, еще и с очень интересной идеей!
Прошел собеседование, ответил на вопросы, и дал оценку по времени выполнения проекта - 3 месяца. Это было максимально сжатые сроки, за которые я скорее всего успел.

Но и тут оказался небольшой подвох! Меня попросили сжать сроки еще больше! Мол, 3 месяца для такого проекта слишком много... Естественно, когда ты устраиваешься на первую работу, ты готов демпинговать, лишь бы взяли. Пришлось сказать 1,5 месяца.

В итоге: за первый месяц - я не успел практически ничего. Прошло 2 месяца - я сделал меньше половины, но менеджер сказал, что дает мне еще времени. Прошло 3 месяца - я все еще делал проект...

Если вы думали, что все так просто - не переживайте, все еще впереди! Жду комментарии от вас, если хотите узнать финал истории)

Продолжение

#ЖизньArtemiZ
Как я докатился до жизни такой часть 4

Начало истории

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

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

Я думаю, вы не сомневаетесь, что я сделал: написал своему работодателю, что увольняюсь... Если бы все было так просто...

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

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

#ЖизньArtemiZ