Wild Russian GameDev Mentor
98 subscribers
116 photos
5 videos
60 links
Обучаю созданию игр на Unity и программированию на C#.

Запись на занятия – сообщения канала
Лайвкодинг/игры – twitch.tv/ko1ba5er
Бустануть канал – t.me/boost/WRGDM

Please, be patient, я не умею пользоваться отложкой.
Download Telegram
КТО Я И ПОЧЕМУ ВЫ ДОЛЖНЫ ОТДАТЬ МНЕ СВОИ ДЕНЬГИ

Всем привет! :)

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

Вначале, как и все, я мечтал о том, чтобы сделать свою игру, чтобы можно было грабить корованы, и вообще все было 💥КРУТО💥
Скачал пиратский GameMaker 8.1, который уже на тот момент перестал поддерживаться лет семь как.
И, начав с самого нуля (Zero-Code, поняли, да?), делая проект за проектом, набирая говнокод за говнокодом, я научился программировать.
Вы можете подумать, что у меня, получается, семь лет опыта, но это неправда. Как раз из-за того, что я учился на собственном опыте, узнавал все методом проб и ошибок, года четыре можно смело вычесть, так как это время я либо ничего не делал, либо делал не то.

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

Модель обучения я принимаю только проектную: с учеником выбираем игру, которую ему было бы интересно разрабатывать, и пытаемся довести ее до конца, чтобы положить в портфолио и потом везде хвастаться. Ну или, хотя бы, мама похвалит. О ключевых плюсах такого подхода расскажу как-нибудь отдельным постом. А пока вам нужно знать то, что это единственный способ чему-то по-настоящему научиться и вкатиться на зарплату $300к/наносек.

Также залетайте на мои стримы по программированию и всяким игрушкам, задавайте вопросики.
А если стрима сейчас нет, то можно спросить в Дискорде, я там часто сижу, мне там даже выделили "шкодерскую" под обсуждения программирования.
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
2🤓2👨‍💻1
Спасибо, Роскомпозор за антимонопольные ивенты👍
Благодаря вашим кривым рукам крупные провайдеры раз в две недели отваливаются на сутки-двое, а мелкая шушара, которая не считает себя обязанной исполнять ваши идиотские решения, стабильно работает👍
На самом деле, смешно - мне приходится подключить запасной интернет в столице субъекта Центрального Федерального Округа. Не в середине Сахары, не в непроходимых болотах Сибири, не на диких островах Полинезии, даже не в отсталой Гейропе... И все ради того, чтобы я не посмотрел в ютубчике, как обзывают Великого Геостратега Императора Человечества.
Please open Telegram to view this post
VIEW IN TELEGRAM
🤔1🫡11
LEETCODE НЕ НУЖОН

Для тех, кто не знает:
LeetCode.com - популярная платформа-решебник по программированию. Ходят слухи, что туда даже сливают вопросы с собесов БигТеха, по которым можно задрочиться и пролезть без мыла на $300к/наносек.

📯 хуйней не майтесь

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


Профессиональные спортсмены редко бывают здоровыми, потому что здоровье - это баланс, а не развитие одной конкретной мышцы. Для программиста ценнейшим навыком является понимание business value - чего хочет заказчик. А он хочет:
1) Лучший продукт
2) За минимум денег

И если вы умеете найти баланс между этими двумя вещами, на хардскиллы никто и смотреть не будет.

📯 Дрочить задачки - не достижение

Так как первый пункт - всем известная информация, если у вас в портфолио ТОЛЬКО Литкод, вас даже рассматривать не будут.

Так что, даже если Top Questions from Company_Name выучишь наизусть, на собес для начала нужно попасть...


📯 Когда можно литкодить (под одеялом темной ночью)

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

📯 Акак какать?

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


🪕 – Ни дня не учился, сразу дали кнопки красить😁
😭 – я что, зря 300 задач решал все это время?
Please open Telegram to view this post
VIEW IN TELEGRAM
2🌚1💯11
ВОТ ВЫУЧУ ЯЗЫК Х И УСТРОЮСЬ НА РАБОТУ. ВЕДЬ ТАК?

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

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


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

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


Движок (или платформа) - это дальше, очень большой фреймворк. Ничем радикально он не отличается, только размером и звучит модно. В основном, это название звучит в игровой индустрии. Для ААА-игр пишутся свои движки, разумеется, но в большинстве проектов используют готовые (Unity, UE, Godot и пр.) Движок предоставляет готовые инструменты для отрисовки, анимации, физики и всего того, что точно будет нужно в любом проекте.

📯Ну и архитектура, разумеется

Кроме, собственно, умения написать код нужно уметь написать его нормально. Для этого требуется SOLID, Clean Code, паттерны и прочие умные слова, которые сделают тебя из разнорабочего уважаемым инженером и сеньором-помидором.


🫡 – Учиться, учиться и еще раз учиться
Please open Telegram to view this post
VIEW IN TELEGRAM
🫡41
Очень положительные впечатления от стрима, много классных ребят пришло :)
Закрыл Mindustry на 15%, будем продолжать через неделю😋
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥3
А в честь получения значка на Профи.Ру до конца марта скидка на все занятия 15%
Пишите промокод "ОЧЕНЬ ХВАЛЯТ" или пересылайте этот пост при записи💌
Писать в ДМ канала👀
22🔥1
РЕЦЕПТ ПРАВИЛЬНОГО ЮНИТ-ТЕСТИРОВАНИЯ

📯Кто такой этот ваш модульный тест?

Модульные (Unit-) тесты – те, которые проверяют функциональность отедльно взятого компонента программы в изолированной среде.


Вот написали мы, допустим:
int sum(int a, int b) => a + b;


А как мы узнаем, что функция работает правильно?🤔
Напишем следующее:
bool test()
{
return sum(1, 2) == 1 + 2
&& sum(2, 3) == 2 + 3;
}


Но это, конечно, только два частных случая, а нам бы надо положительное тестирование, негативное, пограничные случаи, и вообще ПОЛНОЕ ПОКРЫТИЕ!!😱😱😱

📯Да, если мы хотим никогда не выпустить продукт🥰

Пример, конечно, утрированный, но на самом деле, если мы хотим добиться 100% coverage, так и получится - код тестов в пять раз больше кода программы.


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

📯Так что теперь, совсем без юнит-тестов?

В зависимости от бюджета и времени, средняя рекомендация – покрыть от 0% до 20% в самых значимых и/или неочевидных участках кода.


1-2 позитивных сценария, 1-2 негативных, граничные случаи. И только если через этот модуль проходят изменения. В противном случае, тестим руками и не тратим время.

🤣 – пусть QA тестируют, я свой код даже не запускаю
🤔 – ниче не понял, модуль же это |-3| = 3
Please open Telegram to view this post
VIEW IN TELEGRAM
🤔4🤣2👌1
Wild Russian GameDev Mentor
Как и обещал, загружаю результат прогона >100 часов симуляции со вчерашнего стрима. Разумеется, эта дура ничему не научилась. Можно, конечно, подождать еще недельку, но вряд ли это было бы сильно полезно. Максимум, чего можно добиться в такой конфигурации…
Media is too big
VIEW IN TELEGRAM
Результат 12-часового прогона новой сеточки, сделанной на втором стриме. На время в углу не смотрите, я его перезапускал. Какие-то потуги наблюдаются в правом нижнем углу, но...
Но, в остальном, она ничему не научилась👁‍🗨
До третьего стрима попробую в течение недели позапускать в фоне, может, что и выйдет. Все-таки, время должно было увеличиться из-за полностью случайных мутаций🧬. В крайнем случае, попробуем объединить все 900 котов в одну комнату, чтобы обучение шло в 9 раз быстрее. По крайней мере, в теории.
В любом случае, пока я верю, что нужно просто немного потерпеть, и здравое зерно начнет проступать.
Please open Telegram to view this post
VIEW IN TELEGRAM
3
НУЖЕН ЛИ ИНГЛИШ ЛАНГУАГЕ ДЛЯ ПРОГРАММИСТА?

📯Да 👍

Сожалею. Все так. Учи английский.
👋
Вот здесь написано, что ~половина интернета написано на английском. Русский, кстати, долгое время был вторым и занимал 6% (ставлю, что это кто-то оцифровал Войну и Мир📕).


Так что, если хочешь найти решение своей проблемы, поделиться написанным в интернете, прочитать описание библиотеки или вообще ЧТО УГОДНО, то будь добр. Да, на русском есть много материалов, но сильно меньше, чем на английском.

📯Но не все так плохо

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


Так что прекращай придумывать отговорки, что тебе не дано и не нравится.
Ну и делитесь своими страйками в комментариях👑👇

🔥 – если уже успел продлить свой ударный режим в Duolingo
🪕 – Я РУССКИИИЙ, ВСЕМУ МИРУ НАЗЛОООО~
Please open Telegram to view this post
VIEW IN TELEGRAM
9
ДЖУН, НЕ СМЕЙ ПИСАТЬ ПЕТ-ПРОЕКТЫ

📯Пет-проекты – это что за зверь?

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

Ну если из любви, то что в этом плохого и..

📯Чем же он отличается от коммерческого?

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

В том и главная разница: "Это никто не проконтролирует, значит, можно не стараться". Поэтому почти все петы – неюзабельный информационный мусор. Попадаются жемчужины, но это исключения.

📯Я безработный июнь (ну джун, поняли?), где же мне взять коммерческий проект??!?

А с чего ты взял, что за коммерческий проект тебе должен кто-то платить?))0)🤪 И вообще, что он должен быть как-то связан с деньгами. Это все 🔥капиталистическая пропаганда🔥 заблуждения.

На самом деле, коммерческим проект считается, если он просто выложен в Steam/Google Play/App Store/ваш вариант. Да, даже если бесплатно. Хитро, правда?


Ведь, как я писал выше, основное отличие заключается в доделанных 80% работы, которые скучные, душные, сложные, и вообще лень, потом, завтра. А для выпуска проекта эти 80% хочешь-не хочешь, а придется сделать. Так что вместо замусоривания своего гита очередным (ДА СКОЛЬКО, СУКА, МОЖНО) клоном Flappy Bird, пойди на завод придумай нормальный проект. А если призовешь друзей на арт/звук/сюжет, то это будет уже работа в компании🤗

📯И как бы он мог выглядеть?

Выписывай все идеи, которые соответствуют трем критериям:
1. Ты или твои знакомые сами бы стали пользоваться твоим приложением – иначе ты просто не сможешь определить требования.
2. Это нельзя назвать клоном чего-то – наш уровень, как минимум, "клон чего-то, НО ЕСТЬ ЕЩЕ ...". Тогда будет легче с АП, да и вообще не стыдно показывать.
3. Ты можешь это сделать в течение трех месяцев – тогда через год-полтора как раз закончишь проект. Всегда так получается.


Потом выбери любимый и.. (наберите воздуха в грудь)
🫵ЗАКОНЧИ И ВЫЛОЖИ🫵.
С таким портфолио тебя с руками оторвут на вкусненькую начальную должность. А, может, ты уже и не захочешь, а пойдешь в инди или продашь своего ребенка (программу имею ввиду!!!) за баснословные 3₽.

🤓 – Понял тебя, пойду писать Flappy Bird (я хочу, чтобы админ плюнул мне в лицо)
🪕 – Понял тебя, пойду писать (столько воды, аж в туалет захотелось)
Please open Telegram to view this post
VIEW IN TELEGRAM
🤓322💋1
Wild Russian GameDev Mentor
Результат 12-часового прогона новой сеточки, сделанной на втором стриме. На время в углу не смотрите, я его перезапускал. Какие-то потуги наблюдаются в правом нижнем углу, но... Но, в остальном, она ничему не научилась👁‍🗨 До третьего стрима попробую в течение…
Спустя 72 часа обучения, сетка наконец-то научилась.. Да ничему она не научилась☹️
Так что сегодня напишем Гугл-динозаврика😊🦕 и проверим, вдруг она вообще необучаемая. А также раскрасим немного котиков + сольем их в один пул.
Начинаем прямо сейчас!!!
Please open Telegram to view this post
VIEW IN TELEGRAM
31
UML или ЗАЧЕМ ПРОГРАММИСТУ РИСОВАНИЕ

Вчера закончил большую курсовую, где пришлось сначала написать код, а потом КАЖДУЮ СТРОЧКУ отобразить на схеме...
Это могло бы заставить меня ненавидеть графические нотации, но ваш админ невероятно объективен и проницателен, поэтому ненавидеть я стал только российскую систему образования. И еще решил написать этот пост, чтобы студенты понимали, почему UML полезно изучать, а преподаватели.. ну тоже.. а то пихают куда не попадя свои эти.. из трех букв......

📯Вначале, как всегда, по определениям🤓

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


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

📯Ну и на кой хрен мне рисовать, я программистом нанимался?👨‍🎨

Во-первых, я уже говорил в первом пункте, что можно выделить самое важное. Теперь я говорю, что НУЖНО научиться выделять в коде важные части. И рисование схемы своего кода – отличный способ развить абстрактное мышление, начать потихонечку думать о том, что ты пишешь, о том, как выглядит твоя система и о том, не получается ли у тебя гов-спагеттина.
Во-вторых, фраза "Я ему все объяснил, и даже картинку нарисовал!" свидетельствует о максимальной степени разжевывания. Наш мозг не создан понимать тексты, он создан видеть абстракции и искать закономерности. Так что та же самая система будет понята быстрее и глубже, если изобразить ее графически.
В-третьих (в дополнение к во-вторых), графические нотации – лингва франка среди разработчиков + бизнес аналитиков + менеджеров + всяких маркетологов и прочих. Да и, в большинстве, они интуитивно понятны, так что особое обучение почти не требуется. Таким образом, вы сможете наглядно показать начальнику, почему вам требуется еще две недели на кофе + покурить тотальный рефакторинг.

📯Так что теперь, все документировать?

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

🤡 – уже умею рисовать, но пока только грим :(
🪕 – я, конечно, не художник, но ебальник админу бы разукрасил😁
Please open Telegram to view this post
VIEW IN TELEGRAM
2🤡22🔥1
Последний стрим по Minecraft перед поездкой в Царьград! [ + @BO3bMAK ]

Поэтому заходите - пообщаемся, ответим на вопросы, расскажем, как будет выглядеть этот канал пока мы в отъезде и поиграем!
1😱1
This media is not supported in your browser
VIEW IN TELEGRAM
3🔥2🤝1
СТРУКТУРЫ ДАННЫХ И ИХ УРОДЛИВЫЕ ДВОЙНИКИ

Из каждого умника вы слышали про то, что любому программисту нужно выучить 5, 7, 15 способов организации циферок в коллекции. А знаете ли вы, что настоящих труЪ структур данных человечество придумало всего три?😋

Так и есть, все остальные – это либо коробка, натянутая на классические структуры📦, либо более сложный элемент, положенный в обычную структуру. Итак, вот они слева направо (могут в разных языках называться по-разному, я пишу по C#):

📯Массив (Array)

Это база. Когда мы создаем массив, мы берем в памяти случайное место на [вес элемента * размер массива].

Так как место случайное, до и после может находиться любая информация, в т.ч. данные ОСи, например. Соответственно, увеличить или уменьшить это место никак не получится😞.

Исходя из определения, понимаем, что массив занимает минимально возможный размер, куда можно поместить n элементов типа X. Да и индексация (достать элемент) из него не требует больших усилий (O(1)).

Однако, беда – нельзя менять размер. Если у вас в языке можно менять размер массива - это бесстыдная неправда🤥. Все эти операции суть – создание нового массива другого размера и копирование туда элементов🔀.

По-настоящему с этим нам поможет
📯Список (List)

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

Таким образом, если понадобилось впихнуть🗜 еще циферку, в последнем элементе меняем ссылку на новый только что созданный – и пожалуйста🔗! Да, звучит не супер продуктивно, но уж лучше, чем пересоздавать массив😈.

Однако, разумеется, места он занимает больше, чем массив – ссылки не бесплатные – да и индексация медленнее (O(n)): для того, чтобы дойти до n-ного элемента, нужно до него пройти n элементов.

Есть подобные ему: очередь и стек (не системный стек, это другое), двусвязный список↔️ – фактически они работают на том же принципе, только с некоторыми инвалидностями🩼.

📯Бинарное дерево (Binary tree)

Существует для ускорения поиска🔍😱. Суть в том, что у каждого элемента есть уже две ссылки: слева от него все, что меньше, а справа - все, что больше.


Выглядит примерно так:
5
/ \
3 8
/ / \
1 6 12


В зависимости от сбалансированности параметры отличаются, но во всех случаях поиск элемента быстрее, чем у всех остальных (в лучшем – O(log n)). Места, разумеется, требуется больше всех. Ну и еще элемент должен быть сравниваемым.


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

🤷, если хотите пост про нотацию Big O
🤣 – А как же небинарное дерево?😂
Please open Telegram to view this post
VIEW IN TELEGRAM
🤣6🤷32🔥1
This media is not supported in your browser
VIEW IN TELEGRAM
👏3
Wild Russian GameDev Mentor
Video message
Забейте, 900₽ за маленькое комбо, мы пошли есть оверпрайсный колорит.
🔥1😱1
Зато пахнет как в настоящем старом макдональдсе🤤
🥴2
Как вы понимаете неделю здесь будет тревел-блог. Посты тоже будут, пожалуйста, не отписывайтесь🥺
3🔥2👌1