Это пробный урок. Оформите подписку, чтобы получить доступ ко всем материалам курса. Премиум

  1. Урок 1. 01:08:29
    0.1 Вебинар. Знакомство
  2. Урок 2. 01:30:12
    0.2 Запись вебинара 13.02.25
  3. Урок 3. 00:58:13
    0.3 Запись вебинара 20.02.25
  4. Урок 4. 01:31:19
    0.4 Запись вебинара 27.02.25
  5. Урок 5. 01:02:49
    0.5 Вебинар 05.03.25
  6. Урок 6. 01:31:24
    0.6 Запись вебинара за 06.03.25
  7. Урок 7. 01:22:06
    0.7 Запись. Вебинар за 13.03.25
  8. Урок 8. 00:51:53
    0.8 Вебинар 19.03.25
  9. Урок 9. 01:02:31
    0.9 Запись. Вебинар за 20.03.25
  10. Урок 10. 01:24:59
    0.10 Запись. Занятие за 27.03.25
  11. Урок 11. 01:26:25
    0.11 Запись. Занятие за 03.04.25
  12. Урок 12. 01:26:27
    0.12 Запись. Вебинар. 10.04.2025
  13. Урок 13. 01:22:54
    0.13 Запись. Вебинар. 24.04.25
  14. Урок 14. 01:25:03
    0.14 Запись. Занятие за 01.05.25
  15. Урок 15. 01:21:15
    0.15 Запись. Занятие за 08.05.25
  16. Урок 16. 00:28:31
    0.16 Запись. Вебинар за 15.05.25
  17. Урок 17. 00:52:24
    0.17 Запись. Вебинар за 22.05.25
  18. Урок 18. 01:12:44
    0.18 Вебинар. Запись за 29.05.25
  19. Урок 19. 01:25:19
    0.19 Вебинар. Запись за 05.06.25
  20. Урок 20. 00:58:52
    0.20 Вебинар. Запись за 12.06.25
  21. Урок 21. 00:56:48
    0.21 Запись. Вебинар за 19.06.25
  22. Урок 22. 01:27:57
    0.22 Запись. Вебинар за 03.07.25
  23. Урок 23. 00:21:44
    0.23 Запись. Вебинар за 10.07.25
  24. Урок 24. 01:16:26
    0.24 Запись. Вебинар за 17.07.25
  25. Урок 25. 00:39:08
    0.25 Вебинар 07.09.25
  26. Урок 26. 01:48:53
    0.26 Финальный вебинар 05.10.25
  27. Урок 27. 01:08:29
    1.1. Вебинар. Поток 2. Знакомство
  28. Урок 28. 00:01:43
    1.2. Зачем нужен этот модуль_
  29. Урок 29. 00:04:20
    1.3. Создаем первое консольное приложение
  30. Урок 30. 00:02:55
    1.4. Переменные и типы
  31. Урок 31. 00:06:59
    1.5. Базовые типы данных
  32. Урок 32. 00:07:05
    1.6. Приведение типов
  33. Урок 33. 00:08:04
    1.7. Бинарные операции
  34. Урок 34. 00:03:56
    1.8. Унарные операции (инкремент декремент)
  35. Урок 35. 00:05:16
    1.9. Строковый тип данных
  36. Урок 36. 00:04:17
    1.10. Конкатенация (сложение) строк
  37. Урок 37. 00:01:52
    1.11. Интерполяция строк
  38. Урок 38. 00:01:51
    1.12. Специальные символы
  39. Урок 39. 00:08:09
    1.13. Работа с консолью
  40. Урок 40. 00:04:18
    1.14. Парсинг ввода пользователя
  41. Урок 41. 00:01:34
    2.1. Тип bool
  42. Урок 42. 00:03:36
    2.2. Условные выражения
  43. Урок 43. 00:05:34
    2.3. Логические операции
  44. Урок 44. 00:10:33
    2.4. Условные операторы
  45. Урок 45. 00:06:27
    2.5. Особенности сравнения
  46. Урок 46. 00:02:45
    2.6. Тернарная операция
  47. Урок 47. 00:02:57
    2.7. Обработка некорректного ввода
  48. Урок 48. 00:05:47
    2.8. Оператор switch
  49. Урок 49. 00:04:18
    2.9. Циклы. Цикл While
  50. Урок 50. 00:02:36
    2.10. Операторы break и continue
  51. Урок 51. 00:01:28
    2.11. Цикл Do While
  52. Урок 52. 00:03:56
    2.12. Цикл For
  53. Урок 53. 00:00:33
    2.13. Когда использовать For, а когда While
  54. Урок 54. 00:03:39
    2.14. Практика 1
  55. Урок 55. 00:01:52
    2.15. Рекомендации по чистоте кода
  56. Урок 56. 00:03:48
    2.16. Практика 1 апгрейд
  57. Урок 57. 00:07:42
    2.17. Практика 2
  58. Урок 58. 00:10:16
    3.1. Массивы
  59. Урок 59. 00:02:36
    3.2. Немного про рандом
  60. Урок 60. 00:01:58
    3.3. Нюансы массивов
  61. Урок 61. 00:05:15
    3.4. Ссылочные типы и типы значений
  62. Урок 62. 00:04:20
    3.5. Ссылочные типы на практике
  63. Урок 63. 00:04:44
    3.6. Двумерные массивы
  64. Урок 64. 00:06:58
    3.7. Вложенные циклы
  65. Урок 65. 00:05:03
    3.8. Массив массивов
  66. Урок 66. 00:02:47
    3.9. Изменение размера массива
  67. Урок 67. 00:05:43
    3.10. Строка как массив
  68. Урок 68. 00:02:11
    4.1. Методы
  69. Урок 69. 00:06:05
    4.2. Практика по методам
  70. Урок 70. 00:02:24
    4.3. Методы void
  71. Урок 71. 00:04:08
    4.4. Зачем нужны методы
  72. Урок 72. 00:06:22
    4.5. Параметры по умолчанию
  73. Урок 73. 00:07:28
    4.6. Параметры методов и ссылочные типы
  74. Урок 74. 00:03:58
    4.7. Перегрузка методов
  75. Урок 75. 00:01:06
    4.8. Коллекции
  76. Урок 76. 00:05:29
    4.9. Список List
  77. Урок 77. 00:06:02
    4.10. Особенности работы List
  78. Урок 78. 00:03:06
    4.11. Очередь
  79. Урок 79. 00:15:22
    4.12. Пример использования очереди
  80. Урок 80. 00:07:51
    4.13. Словарь
  81. Урок 81. 00:04:25
    4.14. Стек
  82. Урок 82. 00:03:23
    5.1. Что такое классы
  83. Урок 83. 00:01:59
    5.2. Создание класса
  84. Урок 84. 00:01:43
    5.3. Классы и терминология
  85. Урок 85. 00:01:21
    5.4. Из чего должен состоять класс
  86. Урок 86. 00:03:54
    5.5. Поля и модификаторы доступа
  87. Урок 87. 00:03:08
    5.6. Применяем модификаторы доступа к полям
  88. Урок 88. 00:02:42
    5.7. Методы и классы
  89. Урок 89. 00:03:24
    5.8. Значения полей по умолчанию
  90. Урок 90. 00:01:19
    5.9. Работа с полями внутри класса
  91. Урок 91. 00:02:06
    5.10. Класс как ссылочный тип
  92. Урок 92. 00:04:49
    5.11. Конструктор и this
  93. Урок 93. 00:02:49
    5.12. Перегрузка и цепочка конструкторов
  94. Урок 94. 00:03:13
    5.13. Защита данных
  95. Урок 95. 00:05:23
    5.14. Свойства
  96. Урок 96. 00:04:27
    5.15. Автосвойства
  97. Урок 97. 00:03:02
    5.16. Сокращенная запись свойств и методов
  98. Урок 98. 00:06:20
    5.17. Итоги модуля и код стайл
  99. Урок 99. 00:00:26
    6.1. О чем этот модуль
  100. Урок 100. 00:04:45
    6.2. Создаём первый проект
  101. Урок 101. 00:04:06
    6.3. Знакомство с интерфейсом
  102. Урок 102. 00:02:25
    6.4. Делаем удобную раскладку окон
  103. Урок 103. 00:03:25
    6.5. Навигация на сцене. Перемещение
  104. Урок 104. 00:05:49
    6.6. Навигация на сцене. Взаимодействие с объектами
  105. Урок 105. 00:02:15
    6.7. Окно Game подробнее
  106. Урок 106. 00:05:37
    6.8. Окно Inspector. Система компонентов
  107. Урок 107. 00:01:47
    6.9. Компонент Transform
  108. Урок 108. 00:02:16
    6.10. Компонент Camera
  109. Урок 109. 00:01:35
    6.11. Настройка playmode
  110. Урок 110. 00:03:46
    7.1. Введение в компонентую систему Unity
  111. Урок 111. 00:01:51
    7.2. Первый скрипт и выбор редактора
  112. Урок 112. 00:04:54
    7.3. Разбираем шаблон скрипта по умолчанию
  113. Урок 113. 00:02:25
    7.4. Основной цикл работы Unity
  114. Урок 114. 00:02:04
    7.5. Основной цикл работы практика
  115. Урок 115. 00:02:46
    7.6. Начинаем создание первой механики
  116. Урок 116. 00:04:16
    7.7. Получение ссылки на компонент через инспектор
  117. Урок 117. 00:04:44
    7.8. Обработка ввода для прыжка
  118. Урок 118. 00:04:11
    7.9. Vector3 и прыжок
  119. Урок 119. 00:02:07
    7.10. Получение ссылки через GetComponent
  120. Урок 120. 00:03:05
    7.11. GetComponent – возможные проблемы
  121. Урок 121. 00:07:55
    7.12. Делаем правила игры
  122. Урок 122. 00:06:48
    7.13. Улучшаем игру и код
  123. Урок 123. 00:06:38
    7.14. Добавляем подсчет очков и визуализацию границ
  124. Урок 124. 00:00:49
    8.1. Введение в работу с материалами и ассетами
  125. Урок 125. 00:07:02
    8.2. Из чего состоят наши 3д объекты
  126. Урок 126. 00:08:52
    8.3. Текстуры в материалах
  127. Урок 127. 00:03:37
    8.4. Импорт ассетов через стор
  128. Урок 128. 00:03:52
    8.5. Настройки FBX моделей
  129. Урок 129. 00:05:51
    8.6. Импорт сторонних ресурсов
  130. Урок 130. 00:05:56
    8.7. Родительские и дочерние объекты
  131. Урок 131. 00:03:34
    8.8. Фиксим пивот призрака
  132. Урок 132. 00:03:44
    8.9. Делаем визуал для границ
  133. Урок 133. 00:01:23
    8.10. Настройка камеры
  134. Урок 134. 00:00:31
    8.11. Настройка материала призрака
  135. Урок 135. 00:07:45
    8.12. Делаем анимацию с помощью кода
  136. Урок 136. 00:00:31
    9.1. Введение
  137. Урок 137. 00:01:27
    9.2. Начало разговора про анимации
  138. Урок 138. 00:02:59
    9.3. Компонент Animator
  139. Урок 139. 00:01:23
    9.4. Animator Controller
  140. Урок 140. 00:03:53
    9.5. Окно Animation
  141. Урок 141. 00:08:51
    9.6. Создаем первую анимацию
  142. Урок 142. 00:04:18
    9.7. Добавляем еще две анимации
  143. Урок 143. 00:04:23
    9.8. Параметры и условия переходов
  144. Урок 144. 00:04:16
    9.9. Настройка переходов
  145. Урок 145. 00:10:57
    9.10. Переключение анимаций из скрипта
  146. Урок 146. 00:05:03
    9.11. Анимации. Нюансы
  147. Урок 147. 00:14:25
    9.12. Эффекты база
  148. Урок 148. 00:04:36
    9.13. Trail
  149. Урок 149. 00:09:17
    9.14. Делаем эффекты для призрака
  150. Урок 150. 00:04:34
    9.15. Заставляем эффекты работать из кода
  151. Урок 151. 00:07:32
    9.16. Делаем более живое окружение
  152. Урок 152. 00:05:03
    9.17. Анимируем призрака
  153. Урок 153. 00:04:10
    9.18. Итоги игры с призраком
  154. Урок 154. 00:00:48
    10.1. Введение
  155. Урок 155. 00:00:51
    10.2. Базовые операции
  156. Урок 156. 00:01:01
    10.3. Немного про иксы и игрики
  157. Урок 157. 00:03:22
    10.4. Базовые теоремы
  158. Урок 158. 00:00:49
    10.5. Введение в векторную математику
  159. Урок 159. 00:02:19
    10.6. Система координат и вектор
  160. Урок 160. 00:01:36
    10.7. Отоносительность вектора
  161. Урок 161. 00:01:12
    10.8. Находим длину вектора
  162. Урок 162. 00:01:27
    10.9. Умножение на число
  163. Урок 163. 00:02:17
    10.10. Сложение векторов
  164. Урок 164. 00:01:56
    10.11. Вычитание векторов
  165. Урок 165. 00:00:45
    10.12. Дополнительные свойства векторов
  166. Урок 166. 00:02:21
    10.13. Единичный вектор
  167. Урок 167. 00:01:17
    10.14. Трехмерная система координат
  168. Урок 168. 00:07:47
    10.15. Практика 1. Подготовка сцены
  169. Урок 169. 00:06:40
    10.16. Практика 2. Отслеживание расстояния
  170. Урок 170. 00:02:43
    10.17. Практика 3. Разбор на картинке
  171. Урок 171. 00:12:44
    10.18. Практика 4. Патрулирование по точкам
  172. Урок 172. 00:05:52
    10.19. Практика 5. Агр врага
  173. Урок 173. 00:01:27
    11.1. Системы координат - введение
  174. Урок 174. 00:04:46
    11.2. Системы координат. Unity
  175. Урок 175. 00:04:28
    11.3. Локальные системы координат в коде
  176. Урок 176. 00:07:07
    11.4. Vector3 и оси
  177. Урок 177. 00:06:06
    11.5. Преобразование координат
  178. Урок 178. 00:09:29
    11.6. Какие еще бывают системы координат в юнити
  179. Урок 179. 00:10:34
    11.7. Dop КВАТЕРНИОНЫ и углы Эйлера
  180. Урок 180. 00:03:27
    11.8. Введение в повороты
  181. Урок 181. 00:03:10
    11.9. Разбираемся с типом Quaternion
  182. Урок 182. 00:07:25
    11.10. Как работать с Rotation в коде
  183. Урок 183. 00:08:26
    11.11. Новые методы для вращения
  184. Урок 184. 00:03:13
    11.12. Операции с Quaternion
  185. Урок 185. 00:02:02
    11.13. Повороты. Практика
  186. Урок 186. 00:11:33
    11.14. Повороты. Практика 2
  187. Урок 187. 00:04:27
    11.15. Повороты. Практика 3
  188. Урок 188. 00:01:24
    12.1. Что такое система контроля версий
  189. Урок 189. 00:04:02
    12.2. Подготовка к использованию GIT
  190. Урок 190. 00:06:04
    12.3. Создаем локальный репозиторий
  191. Урок 191. 00:02:28
    12.4. Коммиты
  192. Урок 192. 00:08:27
    12.5. Удаленный репозиторий и readme файл
  193. Урок 193. 00:04:27
    12.6. Клонирование репозитория
  194. Урок 194. 00:05:25
    12.7. Ветки и merge изменений
  195. Урок 195. 00:06:58
    12.8. Конфликты при слиянии веток
  196. Урок 196. 00:03:13
    12.9. Небольшие дополнения
  197. Урок 197. 00:16:30
    12.10. Дебаг игры
  198. Урок 198. 00:00:20
    13.1. Введение в физику Unity
  199. Урок 199. 00:04:11
    13.2. Коллайдеры
  200. Урок 200. 00:20:21
    13.3. Rigidbody
  201. Урок 201. 00:15:25
    13.4. Update или FixedUpdate
  202. Урок 202. 00:09:37
    13.5. Режимы приложения силы
  203. Урок 203. 00:04:17
    13.6. Практика 1 Подготовка сцены
  204. Урок 204. 00:12:40
    13.7. Практика 2 Пишем логику движения ракеты
  205. Урок 205. 00:07:40
    13.8. Практика 3 OnTrigger методы
  206. Урок 206. 00:10:14
    13.9. Практика 4 OnCollision методы
  207. Урок 207. 00:28:46
    13.10. Практика 5 Заканчиваем мини игру с ракетой
  208. Урок 208. 00:03:21
    14.1. Введение в ООП
  209. Урок 209. 00:01:40
    14.2. Принципы ООП. Абстракция
  210. Урок 210. 00:02:20
    14.3. Принципы ООП. Инкапсуляция
  211. Урок 211. 00:02:19
    14.4. Принципы ООП. Полиморфизм
  212. Урок 212. 00:02:22
    14.5. Принципы ООП. Наследование
  213. Урок 213. 00:08:29
    14.6. Наследование практика
  214. Урок 214. 00:13:53
    14.7. Особенности наследования
  215. Урок 215. 00:06:28
    14.8. Protected поля
  216. Урок 216. 00:08:14
    14.9. Наследование от Monobehaviour
  217. Урок 217. 00:12:38
    14.10. Система префабов в Unity
  218. Урок 218. 00:03:34
    14.11. Префаб варианты
  219. Урок 219. 00:06:37
    14.12. Создание объектов на сцене. Метод Instantiate
  220. Урок 220. 00:17:36
    14.13. Пример со спавном монет
  221. Урок 221. 00:10:48
    14.14. Улучшаем пример с монетками
  222. Урок 222. 00:01:21
    15.1. Введение
  223. Урок 223. 00:11:43
    15.2. Виртуальные члены класса
  224. Урок 224. 00:07:21
    15.3. Абстрактные классы и члены класса
  225. Урок 225. 00:03:42
    15.4. Введение в полиморфизм
  226. Урок 226. 00:06:08
    15.5. Рассматриваем полимфоризм на примере
  227. Урок 227. 00:04:54
    15.6. Абстракции и полиморфизм
  228. Урок 228. 00:15:10
    15.7. Прокачиваем пример с монетками
  229. Урок 229. 00:05:17
    15.8. Подводные камни виртуальных методов
  230. Урок 230. 00:07:51
    16.1. Интерфейсы введение
  231. Урок 231. 00:03:30
    16.2. Отличия интерфейсов и абстрактных классов
  232. Урок 232. 00:12:19
    16.3. Пример использования интерфейсов
  233. Урок 233. 00:01:12
    16.4. Интерфейс или абстрактный класс
  234. Урок 234. 00:06:12
    16.5. Паттерн стратегия. Теория
  235. Урок 235. 00:23:02
    16.6. Стратегия. Практика
  236. Урок 236. 02:36:40
    16.7. Dop - Наследование vs композиция. Компонентная система Unity - бесплатный вебинар
  237. Урок 237. 00:02:09
    16.8. Композиция или наследование
  238. Урок 238. 00:12:17
    16.9. Проблемы наследования
  239. Урок 239. 00:22:13
    16.10. Композиция
  240. Урок 240. 00:06:06
    17.1. Структуры введение
  241. Урок 241. 00:02:20
    17.2. Структуры конструкторы
  242. Урок 242. 00:07:09
    17.3. Тонкости работы со структурами
  243. Урок 243. 00:01:34
    17.4. Неизменяемость структур
  244. Урок 244. 00:03:20
    17.5. Особенности сравнение с помощью Equals
  245. Урок 245. 00:01:23
    17.6. Отсутствие наследования и заключение
  246. Урок 246. 00:05:24
    17.7. Статика введение
  247. Урок 247. 00:02:23
    17.8. Статические методы
  248. Урок 248. 00:02:18
    17.9. Статический конструктор
  249. Урок 249. 00:04:21
    17.10. Почему статика - плохо
  250. Урок 250. 00:05:27
    17.11. Константы и readonly поля
  251. Урок 251. 00:03:17
    17.12. Readonly
  252. Урок 252. 00:08:40
    17.13. Enum. Перечисления
  253. Урок 253. 00:08:11
    17.14. Enum особенности
  254. Урок 254. 00:05:52
    17.15. Модификатор ref
  255. Урок 255. 00:03:57
    17.16. Модификатор out
  256. Урок 256. 00:10:32
    17.17. Namespace и using
  257. Урок 257. 00:06:26
    18.1. Введение в UI. Canvas
  258. Урок 258. 00:05:00
    18.2. Canvas scaler и graphic raycaster
  259. Урок 259. 00:07:27
    18.3. RectTransform
  260. Урок 260. 00:02:42
    18.4. Дополнительно особенности работы с UI
  261. Урок 261. 00:10:51
    18.5. Image
  262. Урок 262. 00:09:24
    18.6. Работа с UI из кода
  263. Урок 263. 00:09:52
    18.7. TextMeshPro РАБОТАЙ С ТЕКСТОМ В UNITY ПРАВИЛЬНО! Лучшие практики работы с текстом в Unity!
  264. Урок 264. 00:11:22
    18.8. Текст и Text Mesh Pro
  265. Урок 265. 00:04:49
    18.9. Button
  266. Урок 266. 00:06:08
    18.10. Slider
  267. Урок 267. 00:05:55
    18.11. LayoutGroups
  268. Урок 268. 00:01:58
    18.12. Mask
  269. Урок 269. 00:05:00
    18.13. Scroll view
  270. Урок 270. 00:03:40
    18.14. Улучшаем игру с призраком 1
  271. Урок 271. 00:06:57
    18.15. Улучшаем игру с призраком 2
  272. Урок 272. 00:04:57
    18.16. Улучшаем игру с ракетой
  273. Урок 273. 00:16:10
    19.1. Код стайл
  274. Урок 274. 00:00:58
    19.2. Базовые принципы программирования
  275. Урок 275. 00:04:27
    19.3. DRY
  276. Урок 276. 00:02:52
    19.4. KISS
  277. Урок 277. 00:01:17
    19.5. YAGNI
  278. Урок 278. 00:01:33
    20.1. Рейкасты введение
  279. Урок 279. 00:03:47
    20.2. Знакомство с рейкастами
  280. Урок 280. 00:02:36
    20.3. DrawGizmos
  281. Урок 281. 00:09:15
    20.4. Дополнительные варианты виртуального каста
  282. Урок 282. 00:06:06
    20.5. Пример с нанесением урона. Подготовка
  283. Урок 283. 00:03:45
    20.6. Пример с нанесение урона. Реализация
  284. Урок 284. 00:06:30
    20.7. Пример с нанесением урона. Улучшение
  285. Урок 285. 00:10:55
    20.8. Анализ получившегося решения
  286. Урок 286. 00:02:58
    20.9. Физические слои. Матрица коллизий
  287. Урок 287. 00:03:53
    20.10. Слои и код теория
  288. Урок 288. 00:03:00
    20.11. Пример с рейкастами
  289. Урок 289. 00:06:52
    20.12. Дополнительные примеры
  290. Урок 290. 00:05:36
    20.13. Как работать с графиками
  291. Урок 291. 00:06:53
    20.14. Синус и косинус
  292. Урок 292. 00:07:36
    20.15. Lerp. Интерполяция
  293. Урок 293. 00:04:38
    20.16. Скалярное произведение
  294. Урок 294. 00:08:20
    20.17. Делаем область (угол) видимостти врага
  295. Урок 295. 00:05:46
    20.18. Расширяем систему (угол и дальность видимости)
  296. Урок 296. 00:01:38
    20.19. Векторное произведение
  297. Урок 297. 00:05:38
    20.20. Стабилизируем ракету
  298. Урок 298. 00:01:22
    21.1. Варианты движения персонажа
  299. Урок 299. 00:01:36
    21.2. Обзор сцены
  300. Урок 300. 00:08:11
    21.3. Физический вариант. Реализация
  301. Урок 301. 00:05:50
    21.4. Физический вариант. Результат
  302. Урок 302. 00:07:52
    21.5. Кинематический вариант. Реализация
  303. Урок 303. 00:02:49
    21.6. Кинематический вариант. Результаты
  304. Урок 304. 00:03:25
    21.7. Character Controller вариант. Реализация
  305. Урок 305. 00:03:22
    21.8. Character Controller вариант. Результат
  306. Урок 306. 00:01:21
    21.9. Про кастомный вариант движения
  307. Урок 307. 00:00:29
    21.10. Итоги по вариантам движения
  308. Урок 308. 00:03:30
    21.11. Cinemachine введение
  309. Урок 309. 00:04:35
    21.12. Параметры CinemachineBrain
  310. Урок 310. 00:03:19
    21.13. Основные параметры виртуальной камеры
  311. Урок 311. 00:02:41
    21.14. TopDown камера
  312. Урок 312. 00:01:27
    21.15. 3dPersonFollow вариант
  313. Урок 313. 00:02:21
    21.16. Орбитальная камера
  314. Урок 314. 00:03:06
    21.17. TargetGroup камера
  315. Урок 315. 00:02:40
    21.18. 3dPerson свободный вариант
  316. Урок 316. 00:00:41
    21.19. Итоги по пакету
  317. Урок 317. 00:02:08
    21.20. Пример с машинкой введение
  318. Урок 318. 00:07:18
    21.21. Пишем логику движения
  319. Урок 319. 00:05:09
    21.22. Дорабатываем логику движения
  320. Урок 320. 00:04:48
    21.23. Добавляем визуал и говорим про новую концепцию разработки
  321. Урок 321. 00:05:26
    21.24. Еще несколько украшательств
  322. Урок 322. 00:03:46
    21.25. Добавляем вращение частей машинки
  323. Урок 323. 00:03:43
    21.26. Результат и добавление новой камеры
  324. Урок 324. 00:00:30
    21.27. Финал
  325. Урок 325. 00:00:32
    22.1. Введение
  326. Урок 326. 00:02:00
    22.2. Гуманоидная система анимаций
  327. Урок 327. 00:01:43
    22.3. Подготовка
  328. Урок 328. 00:07:02
    22.4. Где брать анимации
  329. Урок 329. 00:07:52
    22.5. Ретаргетинг анимаций
  330. Урок 330. 00:02:34
    22.6. Окно animations
  331. Урок 331. 00:05:29
    22.7. Дополнительная практика
  332. Урок 332. 00:05:44
    22.8. Анимационные слои
  333. Урок 333. 00:03:11
    22.9. Маски в анимационных слоях
  334. Урок 334. 00:06:23
    22.10. Деревья смешивания
  335. Урок 335. 00:07:24
    22.11. Типы смешивания
  336. Урок 336. 00:03:44
    22.12. Анимационные события введение
  337. Урок 337. 00:04:47
    22.13. Анимационные события реализация
  338. Урок 338. 00:02:07
    22.14. Пара слов про анимационные ключи
  339. Урок 339. 00:02:22
    23.1. Введение
  340. Урок 340. 00:01:12
    23.2. Подготовка к примеру
  341. Урок 341. 00:10:49
    23.3. Пишем код передвижения
  342. Урок 342. 00:05:36
    23.4. Добавляем анимации и камеру
  343. Урок 343. 00:04:15
    23.5. Анализируем решение
  344. Урок 344. 00:03:07
    23.6. Паттерн фасад
  345. Урок 345. 00:04:01
    23.7. Доделываем контроллер
  346. Урок 346. 00:03:29
    23.8. Зачем мы вынесли управление
  347. Урок 347. 00:13:08
    23.9. По практикуемся еще немного
  348. Урок 348. 00:01:54
    23.10. Небольшое заключение
  349. Урок 349. 00:01:15
    23.11. Зачем это все
  350. Урок 350. 00:01:23
    23.12. NavMesh введение
  351. Урок 351. 00:07:17
    23.13. Navmesh сетка
  352. Урок 352. 00:02:19
    23.14. Решаем проблему лишних сгенерированных областей
  353. Урок 353. 00:01:29
    23.15. Подготовим врага
  354. Урок 354. 00:07:02
    23.16. Пользуемся сеткой из кода
  355. Урок 355. 00:05:30
    23.17. Подготовка к созданию контроллера врага
  356. Урок 356. 00:14:49
    23.18. Создание контроллера врага
  357. Урок 357. 00:04:58
    23.19. Создаем первого агента
  358. Урок 358. 00:02:31
    23.20. Физика и NavMeshAgent
  359. Урок 359. 00:05:08
    23.21. Настройки nav mesh agent
  360. Урок 360. 00:09:20
    23.22. Переделываем логику агра на вариант с агентом
  361. Урок 361. 00:04:18
    23.23. Navmesh link
  362. Урок 362. 00:02:36
    23.24. Obstacles
  363. Урок 363. 00:02:18
    23.25. Запекание сетки во время игры
  364. Урок 364. 00:00:42
    23.26. Выводы по пакету
  365. Урок 365. 00:05:13
    24.1. Введение
  366. Урок 366. 00:03:17
    24.2. Постановка проблемы
  367. Урок 367. 00:05:19
    24.3. База корутин. IEnumerator
  368. Урок 368. 00:02:02
    24.4. База корутин. Автоматический перебор
  369. Урок 369. 00:01:09
    24.5. В чем же асинхронность
  370. Урок 370. 00:04:45
    24.6. Особенность выполения корутин
  371. Урок 371. 00:03:06
    24.7. Менеджмент корутин
  372. Урок 372. 00:03:35
    24.8. Рекомендация по остановке корутин
  373. Урок 373. 00:01:44
    24.9. Ожидание другого IEnumerator
  374. Урок 374. 00:07:01
    24.10. Ожидание корутин
  375. Урок 375. 00:08:31
    24.11. Практика с корутинами 1
  376. Урок 376. 00:01:54
    24.12. Фиксим проблемки
  377. Урок 377. 00:09:05
    24.13. Пишем новый вариант движения
  378. Урок 378. 00:00:56
    24.14. Фиксим дрожание камеры
  379. Урок 379. 00:07:09
    24.15. Фиксим дрожание при повороте
  380. Урок 380. 00:03:32
    24.16. Доработаем зоны для агентов
  381. Урок 381. 00:05:42
    24.17. Практика с корутинами 2
  382. Урок 382. 00:02:16
    24.18. Как запустить корутину в немонобех классе
  383. Урок 383. 00:05:37
    24.19. Заканчиваем логику работы прыжка
  384. Урок 384. 00:04:02
    24.20. Дорабатываем вертикальное отклонение
  385. Урок 385. 00:02:47
    24.21. Добавляем анимацию прыжка
  386. Урок 386. 00:00:58
    25.1. Звуки в Unity
  387. Урок 387. 00:04:05
    25.2. Компонент audioSource
  388. Урок 388. 00:02:15
    25.3. Как воспроизводить звуки
  389. Урок 389. 00:01:05
    25.4. Параметр Pitch
  390. Урок 390. 00:02:12
    25.5. PlayOneShot
  391. Урок 391. 00:03:53
    25.6. Разбор audioMixer
  392. Урок 392. 00:02:20
    25.7. Создаем новые группы
  393. Урок 393. 00:09:52
    25.8. Как работать с миксером через код
  394. Урок 394. 00:03:32
    25.9. Эффекты
  395. Урок 395. 00:00:17
    25.10. Итоги по звуку
  396. Урок 396. 00:00:37
    25.11. Введение в шейдеры
  397. Урок 397. 00:01:49
    25.12. Что такое шейдеры
  398. Урок 398. 00:01:31
    25.13. Что такое шейдер граф
  399. Урок 399. 00:01:52
    25.14. Создание шейдеров
  400. Урок 400. 00:03:50
    25.15. Разговор про цвета
  401. Урок 401. 00:02:33
    25.16. Обзор интерфейса
  402. Урок 402. 00:01:23
    25.17. Master стек
  403. Урок 403. 00:01:18
    25.18. Про переменные
  404. Урок 404. 00:05:01
    25.19. Вершинный шейдер
  405. Урок 405. 00:01:34
    25.20. Результат синуса
  406. Урок 406. 00:01:34
    25.21. Про пространства
  407. Урок 407. 00:01:44
    25.22. Добавим время
  408. Урок 408. 00:04:48
    25.23. Шейдер градиента
  409. Урок 409. 00:03:41
    25.24. Шейдер растворения
  410. Урок 410. 00:04:49
    25.25. Подстраиваем шейдер растворения под наш случай
  411. Урок 411. 00:02:32
    25.26. Фиксим глаза
  412. Урок 412. 00:07:11
    25.27. Добавляем функционал спавна
  413. Урок 413. 00:07:07
    25.28. Отображение спавна
  414. Урок 414. 00:06:44
    25.29. Подсветка границы
  415. Урок 415. 00:00:32
    25.30. Финал по шейдерам
  416. Урок 416. 00:00:49
    26.1. Введение в 2D
  417. Урок 417. 00:00:36
    26.2. Импорт графических ассетов
  418. Урок 418. 00:02:34
    26.3. Спрайты
  419. Урок 419. 00:02:03
    26.4. SpriteRenderer
  420. Урок 420. 00:03:19
    26.5. Настройка спрайта
  421. Урок 421. 00:03:49
    26.6. 2д анимации
  422. Урок 422. 00:02:49
    26.7. Сортировка спрайтов на сцене
  423. Урок 423. 00:03:25
    26.8. Сортировка вдоль оси
  424. Урок 424. 00:02:34
    26.9. Sorting group
  425. Урок 425. 00:02:39
    26.10. Tilemaps
  426. Урок 426. 00:03:15
    26.11. Создаем Tile pallete
  427. Урок 427. 00:02:20
    26.12. Рисуем на тайлмапе
  428. Урок 428. 00:07:56
    26.13. TileRule
  429. Урок 429. 00:04:07
    26.14. Варианты tile rules
  430. Урок 430. 00:02:39
    26.15. Тайлмапы и коллайдеры
  431. Урок 431. 00:02:03
    26.16. Несколько тайлмапов
  432. Урок 432. 00:08:35
    26.17. Особенности работы в 2д
  433. Урок 433. 00:05:33
    26.18. Начинаем делать персонажа
  434. Урок 434. 00:05:00
    26.19. Добавляем определение земли
  435. Урок 435. 00:05:36
    26.20. Гравитация и прыжок
  436. Урок 436. 00:07:13
    26.21. Добавляем анимации
  437. Урок 437. 00:05:57
    26.22. Подключаем view
  438. Урок 438. 00:04:37
    26.23. Добавляем камеру с ограничением области
  439. Урок 439. 00:01:38
    26.24. Фиксим возможное залипание на стенах
  440. Урок 440. 00:02:58
    26.25. Фиксим залипание на потолке
  441. Урок 441. 00:00:59
    26.26. Фиксим плохую обработку коллизий
  442. Урок 442. 00:03:06
    26.27. Добавляем платформы
  443. Урок 443. 00:00:20
    26.28. Заключение
  444. Урок 444. 00:00:56
    27.1. Введение
  445. Урок 445. 00:02:55
    27.2. Что такое делегаты
  446. Урок 446. 00:06:11
    27.3. Знакомимся с делегатами
  447. Урок 447. 00:01:32
    27.4. Подписки и отписки на делегаты
  448. Урок 448. 00:01:38
    27.5. Особенности подписок
  449. Урок 449. 00:04:33
    27.6. Правильный вызов делегата
  450. Урок 450. 00:02:46
    27.7. Invocationlist
  451. Урок 451. 00:05:23
    27.8. Зачем это все нужно
  452. Урок 452. 00:01:12
    27.9. Введение в практический пример
  453. Урок 453. 00:04:43
    27.10. Делаем получение предмета с фильтрацией
  454. Урок 454. 00:04:30
    27.11. Пользуемся фильтрацией
  455. Урок 455. 00:03:04
    27.12. Анонимные методы
  456. Урок 456. 00:03:51
    27.13. Лямбда выражения
  457. Урок 457. 00:04:10
    27.14. Делегаты Action и Func
  458. Урок 458. 00:02:20
    27.15. Небольшой итог по практическому примеру
  459. Урок 459. 00:01:46
    27.16. Делегат как callback
  460. Урок 460. 00:05:19
    27.17. Делегат как callback. Реализация
  461. Урок 461. 00:03:56
    27.18. WaitUntil и WaitWhile
  462. Урок 462. 00:01:04
    27.19. Промежуточный итог по делегатам
  463. Урок 463. 00:02:24
    28.1. События введение
  464. Урок 464. 00:06:19
    28.2. Знакомимся с событиями
  465. Урок 465. 00:05:10
    28.3. Технические отличия делегатов и событий
  466. Урок 466. 00:03:03
    28.4. Более практические отличия
  467. Урок 467. 00:01:46
    28.5. Передача параметров в событии
  468. Урок 468. 00:00:58
    28.6. Использование Action
  469. Урок 469. 00:01:34
    28.7. Код стайл в отношении событий
  470. Урок 470. 00:04:48
    28.8. ВАЖНО. ПОДПИСКИ И ОТПИСКИ
  471. Урок 471. 00:01:06
    28.9. ВАЖНО. ЛЯМБДЫ И ПОДПИСКИ
  472. Урок 472. 00:00:31
    28.10. Практика введение
  473. Урок 473. 00:06:09
    28.11. Разгружаем визуал птички
  474. Урок 474. 00:03:31
    28.12. Выносим изменение скейла
  475. Урок 475. 00:02:08
    28.13. Универсализируем работу с Bird
  476. Урок 476. 00:06:35
    28.14. Выносим логику прыжка
  477. Урок 477. 00:03:33
    28.15. Выносим отображение смерти
  478. Урок 478. 00:04:26
    28.16. Выносим подсчет очков
  479. Урок 479. 00:04:48
    28.17. Делаем отображение очков
  480. Урок 480. 00:11:08
    28.18. Логика отслеживания смерти
  481. Урок 481. 00:04:17
    28.19. Заканчиваем рефакторинг
  482. Урок 482. 00:03:24
    28.20. Выводы
  483. Урок 483. 00:01:23
    29.1. Generics введение
  484. Урок 484. 00:02:35
    29.2. Generics подготовка примера
  485. Урок 485. 00:05:54
    29.3. Generics реализация
  486. Урок 486. 00:01:31
    29.4. Использование нескольких универсальных параметров
  487. Урок 487. 00:04:34
    29.5. Ограничения обобщений
  488. Урок 488. 00:01:34
    29.6. Какие еще могут быть ограничения
  489. Урок 489. 00:02:31
    29.7. Сериализация Generics
  490. Урок 490. 00:03:19
    29.8. Дополнительные вещи
  491. Урок 491. 00:03:25
    29.9. Простая реактивность с использованием Generics
  492. Урок 492. 00:06:11
    29.10. Простая реактивность. Подготовка
  493. Урок 493. 00:02:15
    29.11. Проблемы текущего подхода
  494. Урок 494. 00:03:36
    29.12. Пишем простой вариант реактивности
  495. Урок 495. 00:03:28
    29.13. Добавляем обобщение
  496. Урок 496. 00:02:59
    29.14. Меняем health на реактивность
  497. Урок 497. 00:04:08
    29.15. Используем реактивность снаружи
  498. Урок 498. 00:01:03
    29.16. Можно самим развивать эту идею
  499. Урок 499. 00:01:56
    29.17. Инкапсуляция. Введение
  500. Урок 500. 00:01:38
    29.18. Модификаторы доступа
  501. Урок 501. 00:01:39
    29.19. Конструкторы
  502. Урок 502. 00:01:39
    29.20. Ограничение типом
  503. Урок 503. 00:01:42
    29.21. Валидация входящих данных и ошибки
  504. Урок 504. 00:01:58
    29.22. Как работать с данными. Методы
  505. Урок 505. 00:01:18
    29.23. Зажевывание ошибок
  506. Урок 506. 00:03:03
    29.24. Методы проверки и Try методы
  507. Урок 507. 00:03:15
    29.25. События и свойства
  508. Урок 508. 00:03:04
    29.26. Получение коллекций
  509. Урок 509. 00:04:05
    29.27. ReadOnly интерфейсы. Выдача ссылочных типов на чтение
  510. Урок 510. 00:02:20
    29.28. IEnumerable
  511. Урок 511. 00:03:21
    29.29. Свои ReadOnly интерфейсы
  512. Урок 512. 00:04:19
    29.30. Защита типом на уровне логики
  513. Урок 513. 00:02:30
    29.31. Неявный доступ к ссылочным типам
  514. Урок 514. 00:00:40
    29.32. Заключение
  515. Урок 515. 00:00:43
    30.1. Введение
  516. Урок 516. 00:04:33
    30.2. Интерфейс IDisposable
  517. Урок 517. 00:01:28
    30.3. Кастинг типов введение
  518. Урок 518. 00:04:17
    30.4. Принцип работы. Апкастинг
  519. Урок 519. 00:01:46
    30.5. Принцип работы. Даункастинг
  520. Урок 520. 00:03:32
    30.6. В чем опасность даункаста
  521. Урок 521. 00:05:07
    30.7. Как работать с даункастом
  522. Урок 522. 00:02:09
    30.8. Перебор типов с использованием Switch
  523. Урок 523. 00:02:07
    30.9. Касты. Практика. Подготовка
  524. Урок 524. 00:06:47
    30.10. Касты. Практика. Добавляем здание
  525. Урок 525. 00:06:33
    30.11. Касты. Практика. Используем кастинг
  526. Урок 526. 00:01:59
    30.12. Тип object. Метод ToString
  527. Урок 527. 00:03:28
    30.13. Тип object. Метод GetType
  528. Урок 528. 00:04:05
    30.14. Тип object. Проблемы сравнения с помощью Equals
  529. Урок 529. 00:02:59
    30.15. Боксинг и анбоксинг
  530. Урок 530. 00:00:59
    30.16. Проблема структур и интерфейсов
  531. Урок 531. 00:01:09
    30.17. Чем же IEquatable лучше object.Equals
  532. Урок 532. 00:09:00
    30.18. Универсальный список и generics методы
  533. Урок 533. 00:00:39
    30.19. LINQ. Введение
  534. Урок 534. 00:05:06
    30.20. Select
  535. Урок 535. 00:01:42
    30.21. Where
  536. Урок 536. 00:01:41
    30.22. Совмещение разных методов
  537. Урок 537. 00:02:15
    30.23. Сортировка
  538. Урок 538. 00:01:29
    30.24. Первый или последний элемент
  539. Урок 539. 00:01:56
    30.25. Макс или мин значение
  540. Урок 540. 00:02:41
    30.26. Группировка по признаку
  541. Урок 541. 00:01:20
    30.27. Когда опасно использовать Linq
  542. Урок 542. 00:01:47
    30.28. Сериализация в Unity. Введение
  543. Урок 543. 00:02:23
    30.29. Какие требования есть к сериализуемым полям
  544. Урок 544. 00:03:05
    30.30. Сериализация. Практика
  545. Урок 545. 00:01:22
    30.31. Сериализация пользовательских типов
  546. Урок 546. 00:05:50
    30.32. Лайфхак с отображением словаря
  547. Урок 547. 00:05:57
    30.33. Атрибуты для защиты
  548. Урок 548. 00:03:50
    30.34. Кастомная валидация
  549. Урок 549. 00:01:48
    30.35. Исключения
  550. Урок 550. 00:03:24
    30.36. Демонстрация исключений
  551. Урок 551. 00:02:41
    30.37. Какие стандартные типы ошибок бывают
  552. Урок 552. 00:02:43
    30.38. Обработка исключений
  553. Урок 553. 00:02:35
    30.39. Несколько блоков catch
  554. Урок 554. 00:03:39
    30.40. Свои типы ошибок
  555. Урок 555. 00:01:03
    30.41. Заключение по исключениям
  556. Урок 556. 00:02:54
    31.1. Введение
  557. Урок 557. 00:01:29
    31.2. Подчищаем лишнее
  558. Урок 558. 00:04:25
    31.3. Делаем спавнеры. Спавн героя
  559. Урок 559. 00:09:50
    31.4. Делаем спавнеры. Спавн врагов
  560. Урок 560. 00:04:12
    31.5. Проблема порядка инициализации
  561. Урок 561. 00:02:28
    31.6. Возможные сомнительные решения
  562. Урок 562. 00:06:51
    31.7. Точка входа (bootstrap)
  563. Урок 563. 00:05:25
    31.8. Делаем экран загрузки
  564. Урок 564. 00:02:46
    31.9. Добавляем окно подтверждения начала игры
  565. Урок 565. 00:06:36
    31.10. Контроль должен быть не только на старте игры
  566. Урок 566. 00:13:03
    31.11. Добьем вьюху
  567. Урок 567. 00:06:06
    31.12. Выносим апдейт контроллеров
  568. Урок 568. 00:04:00
    31.13. Паттерн фабрика
  569. Урок 569. 00:08:06
    31.14. Делаем фабрику контроллеров
  570. Урок 570. 00:16:05
    31.15. Делаем фабрику персонажей
  571. Урок 571. 00:09:55
    31.16. Как сильно надо разбивать фабрики
  572. Урок 572. 00:01:38
    31.17. Заключение по фабрике
  573. Урок 573. 00:05:24
    31.18. Scriptable Objects. Настройки игры
  574. Урок 574. 00:05:18
    31.19. Конфиг для героя
  575. Урок 575. 00:03:30
    31.20. Конфиг для врага
  576. Урок 576. 00:03:00
    31.21. Особенности работы со ScriptableObject
  577. Урок 577. 00:05:58
    31.22. Убираем monobehaviour у спавнеров
  578. Урок 578. 00:05:01
    31.23. Папка Resources
  579. Урок 579. 00:02:31
    31.24. Можно подгружать не только конфиги
  580. Урок 580. 00:01:49
    31.25. Особенности работы с папкой Resources
  581. Урок 581. 00:11:53
    31.26. Добавляем игровые правила. Конфиги
  582. Урок 582. 00:12:48
    31.27. Описываем игровой режим
  583. Урок 583. 00:07:24
    31.28. Обрабатываем уничтожение объектов
  584. Урок 584. 00:09:05
    31.29. Геймплейный цикл
  585. Урок 585. 00:03:19
    31.30. Загрузка сцен
  586. Урок 586. 00:07:46
    31.31. Аддитивная загрузка сцен
  587. Урок 587. 00:02:27
    31.32. Заключение
  588. Урок 588. 00:02:55
    32.1. Введение
  589. Урок 589. 00:05:20
    32.2. О чем будет финальный блок
  590. Урок 590. 00:04:11
    32.3. Подготавливаем проект
  591. Урок 591. 00:07:14
    32.4. Организация папки Assets в проекте
  592. Урок 592. 00:01:37
    32.5. Куда двигаемся дальше
  593. Урок 593. 00:02:01
    32.6. Вводим понятие сервиса для решения проблем проекта
  594. Урок 594. 00:07:31
    32.7. Создаем сервис запуска корутин
  595. Урок 595. 00:05:32
    32.8. Создаем сервис загрузки ресурсов
  596. Урок 596. 00:03:41
    32.9. Создаем сервис конфигов
  597. Урок 597. 00:07:32
    32.10. Откуда брать конфиги
  598. Урок 598. 00:06:36
    32.11. Проверяем сервис конфигов
  599. Урок 599. 00:02:30
    32.12. Использование Namespace и работа через IDE
  600. Урок 600. 00:04:38
    32.13. Проблема внедрения зависимостей
  601. Урок 601. 00:04:21
    32.14. Сомнительное решение. Singleton
  602. Урок 602. 00:05:13
    32.15. Среднее решение. ServiceLocator
  603. Урок 603. 00:02:31
    32.16. Почему сервис локатор - среднее решение
  604. Урок 604. 00:02:02
    32.17. Хорошее решение. DIContainer
  605. Урок 605. 00:05:10
    32.18. Первая версия DIContainer. Регистрации
  606. Урок 606. 00:06:22
    32.19. Первая версия DIContainer. Добиваем контейнер
  607. Урок 607. 00:05:46
    32.20. Используем контейнер
  608. Урок 608. 00:08:29
    32.21. Разбираем особенности работы контейнера
  609. Урок 609. 00:01:38
    32.22. Несколько важных моментов
  610. Урок 610. 00:05:42
    32.23. Решаем проблему циклических зависимостей
  611. Урок 611. 00:03:41
    32.24. Точка входа для всего проекта
  612. Урок 612. 00:06:07
    32.25. Реализация точки входа
  613. Урок 613. 00:03:47
    32.26. Точка входа. Инициализация проекта
  614. Урок 614. 00:05:21
    32.27. Сервис подгрузки сцен
  615. Урок 615. 00:03:10
    32.28. На какие сцены разбивать проект
  616. Урок 616. 00:03:58
    32.29. Внедряем загрузочный экран
  617. Урок 617. 00:04:59
    32.30. Организуем переход между сценами
  618. Урок 618. 00:08:33
    32.31. Организуем точки входа и передачу контейнера
  619. Урок 619. 00:06:16
    32.32. Передача доп параметров на сцену
  620. Урок 620. 00:04:57
    32.33. Контейнер сцены и контексты программы
  621. Урок 621. 00:04:29
    32.34. Реализуем систему родительских контейнеров
  622. Урок 622. 00:06:56
    32.35. Поддержка глобального контейнера и контейнера сцены
  623. Урок 623. 00:01:55
    32.36. Промежуточное заключение по общему циклу работы проекта
  624. Урок 624. 00:00:45
    33.1. Введение
  625. Урок 625. 00:00:51
    33.2. С чего начнем
  626. Урок 626. 00:07:29
    33.3. Прокачиваем реактивность
  627. Урок 627. 00:02:40
    33.4. Добавляем возможность отписаться
  628. Урок 628. 00:04:40
    33.5. Зачем это нужно
  629. Урок 629. 00:06:02
    33.6. Фиксим неприятную проблему
  630. Урок 630. 00:00:54
    33.7. Добавляем валюты
  631. Урок 631. 00:05:44
    33.8. Создаем сервис кошелька
  632. Урок 632. 00:05:38
    33.9. Регистрируем и проверяем кошелек
  633. Урок 633. 00:03:09
    33.10. Из чего состоит задача сохранения данных
  634. Урок 634. 00:03:15
    33.11. Какие этапы надо реализовать для сохранения готовых данных
  635. Урок 635. 00:01:41
    33.12. Сериализация и десериализация
  636. Урок 636. 00:03:35
    33.13. В какой формат сериализовать
  637. Урок 637. 00:02:48
    33.14. Пакет для сериализации NewtonsoftJson
  638. Урок 638. 00:03:55
    33.15. Реализация json сериализатора
  639. Урок 639. 00:04:42
    33.16. Проверяем работу сериализатора
  640. Урок 640. 00:01:47
    33.17. Доп. настройки сериализации. Тип форматирования
  641. Урок 641. 00:05:37
    33.18. Доп. настройки сериализации. Обработка имени типа
  642. Урок 642. 00:04:43
    33.19. Ключ для сохранений
  643. Урок 643. 00:03:45
    33.20. Хранилище данных
  644. Урок 644. 00:05:13
    33.21. Реализация хранилища. Сохранение в файл
  645. Урок 645. 00:03:01
    33.22. Реализация хранилища. Сохранение в PlayerPrefs
  646. Урок 646. 00:02:34
    33.23. Cервис сохранений
  647. Урок 647. 00:05:23
    33.24. Реализация сервиса сохранений
  648. Урок 648. 00:02:42
    33.25. Регистрируем сервис
  649. Урок 649. 00:06:49
    33.26. Тестируем сервис сохранений
  650. Урок 650. 00:01:27
    33.27. Немного про реализацию на корутинах
  651. Урок 651. 00:01:24
    33.28. Актуализация данных проекта. Второй глобальный вопрос
  652. Урок 652. 00:04:07
    33.29. Создаем провайдер данных
  653. Урок 653. 00:03:28
    33.30. Задача сброса данных до дефолтного состояния
  654. Урок 654. 00:04:28
    33.31. Реализуем сброс данных на старте игры
  655. Урок 655. 00:06:32
    33.32. Откуда брать стартовое состояние данных
  656. Урок 656. 00:03:18
    33.33. Задача актуализации данных игры
  657. Урок 657. 00:04:37
    33.34. Реализуем идею актуализации данных
  658. Урок 658. 00:04:17
    33.35. Регистрируем сервис кошелька
  659. Урок 659. 00:04:10
    33.36. Особенности данной реализации
  660. Урок 660. 00:03:52
    33.37. Добавляем NonLazy регистрации
  661. Урок 661. 00:01:32
    33.38. Проверяем работу DataProvider
  662. Урок 662. 00:01:32
    33.39. Как разбивать данные
  663. Урок 663. 00:01:28
    33.40. Заключение по системе работы с данными
  664. Урок 664. 00:00:49
    34.1. Введение
  665. Урок 665. 00:05:05
    34.2. Приложение – это бизнес логика и ее отображение
  666. Урок 666. 00:03:39
    34.3. Мы неправильно делали игры
  667. Урок 667. 00:01:29
    34.4. Причем тут UI
  668. Урок 668. 00:05:42
    34.5. Какие есть подходы к разработке UI
  669. Урок 669. 00:03:55
    34.6. Про MVx подходы
  670. Урок 670. 00:02:47
    34.7. В чем суть MVP
  671. Урок 671. 00:02:59
    34.8. Отображение отдельной валюты с помощью MVP
  672. Урок 672. 00:02:48
    34.9. Делаем заготовку на сцене
  673. Урок 673. 00:03:27
    34.10. Конфиг для иконок валют
  674. Урок 674. 00:05:48
    34.11. Презентер валюты
  675. Урок 675. 00:04:27
    34.12. Фабрика для презентеров
  676. Урок 676. 00:01:26
    34.13. Важный нюанс по работе с контейнером
  677. Урок 677. 00:04:12
    34.14. Связываем готовую вью и презентер
  678. Урок 678. 00:01:40
    34.15. В чем прелесть пассивной View
  679. Урок 679. 00:08:21
    34.16. Создаем View динамически. Фабрика вьюх
  680. Урок 680. 00:04:30
    34.17. Динамический вариант создания вьюхи
  681. Урок 681. 00:01:19
    34.18. Иерархический MVP
  682. Урок 682. 00:05:17
    34.19. Делаем вьюху для кошелька
  683. Урок 683. 00:06:18
    34.20. Презентер кошелька
  684. Урок 684. 00:02:15
    34.21. Связываем все воедино
  685. Урок 685. 00:02:58
    34.22. Проблема инициализации и деинициализации сцены
  686. Урок 686. 00:05:36
    34.23. Прокачиваем контейнер
  687. Урок 687. 00:06:07
    34.24. Фиксим проблему с деинициализацией презентера кошелька
  688. Урок 688. 00:02:10
    34.25. Промежуточный итог по MVP
  689. Урок 689. 00:02:58
    34.26. Корневой канвас. Слои UI
  690. Урок 690. 00:05:05
    34.27. Как получать доступ к слоям
  691. Урок 691. 00:08:40
    34.28. Организация главного экрана
  692. Урок 692. 00:05:02
    34.29. Возвращаем отображение кошелька на главный экран
  693. Урок 693. 00:02:15
    34.30. Попапы в игре
  694. Урок 694. 00:04:45
    34.31. Как выглядит стандартная организация попапа
  695. Урок 695. 00:05:51
    34.32. Готовим базу под визуальную часть
  696. Урок 696. 00:03:17
    34.33. Прикручиваем вьюху к тестовому попапу
  697. Урок 697. 00:07:36
    34.34. Готовим базу под презентер
  698. Урок 698. 00:02:24
    34.35. Делаем презентер тестового попапа
  699. Урок 699. 00:05:01
    34.36. Сервис для попапов. Открытие тестового попапа
  700. Урок 700. 00:06:48
    34.37. Реализуем процесс закрытия
  701. Урок 701. 00:05:06
    34.38. Немножко про внешние коллбэки
  702. Урок 702. 00:02:31
    34.39. Регистрируем сервис попапов для главного меню
  703. Урок 703. 00:01:52
    34.40. Фиксим баг с отображением UI префабов
  704. Урок 704. 00:06:25
    34.41. Открываем тестовый попап
  705. Урок 705. 00:02:18
    34.42. DOTween. Анимации UI (и не только)
  706. Урок 706. 00:01:29
    34.43. Импорт DOTween
  707. Урок 707. 00:01:44
    34.44. Базовые возможности
  708. Урок 708. 00:03:22
    34.45. Методы From и SetEase
  709. Урок 709. 00:03:33
    34.46. Tween и правильное прерывание анимаций
  710. Урок 710. 00:03:19
    34.47. Очередь анимаций. Sequence
  711. Урок 711. 00:03:35
    34.48. Поддержка анимаций в дочерних классах
  712. Урок 712. 00:01:51
    34.49. Добавление коллбэков в анимацию
  713. Урок 713. 00:05:25
    34.50. Синхронизация с Presenter
  714. Урок 714. 00:03:49
    34.51. Мелкие замечания по работе дутвина
  715. Урок 715. 00:02:13
    34.52. Чего мы добились
  716. Урок 716. 00:04:09
    34.53. Внедряем сервис пройденных уровней
  717. Урок 717. 00:03:55
    34.54. Добавляем возможность сохранения
  718. Урок 718. 00:04:37
    34.55. Делаем конфиги уровней
  719. Урок 719. 00:05:14
    34.56. Делаем префаб меню уровней
  720. Урок 720. 00:08:01
    34.57. Разбираем скрипты слоя View
  721. Урок 721. 00:06:22
    34.58. Презентер для тайла уровня
  722. Урок 722. 00:07:23
    34.59. Презентер для попапа меню уровней
  723. Урок 723. 00:04:04
    34.60. Небольшой нюанс с подписками
  724. Урок 724. 00:06:39
    34.61. Тестируем попап
  725. Урок 725. 00:07:24
    34.62. Небольшой бонус
  726. Урок 726. 00:04:22
    34.63. Итоги. Универсального решения нет
  727. Урок 727. 00:03:04
    35.1. Введение
  728. Урок 728. 00:03:49
    35.2. Как можно мыслить при подготовке
  729. Урок 729. 00:03:07
    35.3. Какие подходы к организации игровых сущностей мы знаем
  730. Урок 730. 00:04:20
    35.4. Data oriented подход и ECS фреймворки
  731. Урок 731. 00:03:12
    35.5. ООП ХУЖЕ ECS
  732. Урок 732. 00:03:04
    35.6. Какое решения я предлагаю выбрать в нашем проекте
  733. Урок 733. 00:01:29
    35.7. Как мы будем скрещивать ООП и ECS
  734. Урок 734. 00:03:07
    35.8. Стартовая подготовка. Запускаем EntryPoint с любой сцены
  735. Урок 735. 00:00:54
    35.9. Стартовая подготовка. Сцена геймплея
  736. Урок 736. 00:03:49
    35.10. Стартовая подготовка. Тестовый геймплей
  737. Урок 737. 00:01:17
    35.11. Организуем компоненты
  738. Урок 738. 00:05:05
    35.12. Заводим первые компоненты
  739. Урок 739. 00:01:26
    35.13. Про реактивность в этом подходе
  740. Урок 740. 00:06:31
    35.14. Организуем Entity
  741. Урок 741. 00:02:52
    35.15. Фабрика сущностей
  742. Урок 742. 00:01:46
    35.16. Парочка красивостей
  743. Урок 743. 00:02:29
    35.17. Пользуемся фабрикой
  744. Урок 744. 00:04:03
    35.18. Начинаем организацию систем
  745. Урок 745. 00:02:43
    35.19. Реализуем первую систему
  746. Урок 746. 00:01:55
    35.20. Небольшие особенности нашей реализации
  747. Урок 747. 00:03:10
    35.21. Организуем подключение систем к Entity
  748. Урок 748. 00:00:38
    35.22. Подключаем систему движения к тестовой сущности
  749. Урок 749. 00:02:47
    35.23. Реализуем методы жизненного цикла Entity
  750. Урок 750. 00:05:39
    35.24. Реализуем обновление жизненного цикла сущностей
  751. Урок 751. 00:02:44
    35.25. Тестируем работу систем
  752. Урок 752. 00:01:08
    35.26. Проблема связи сущностей и Unity
  753. Урок 753. 00:01:10
    35.27. MonoEntity – мостик между Entity и миром Unity
  754. Урок 754. 00:02:30
    35.28. Делаем фабрику под MonoEntity
  755. Урок 755. 00:03:47
    35.29. Автоматическое уничтожение MonoEntity
  756. Урок 756. 00:04:39
    35.30. Тестируем работу с MonoEntity
  757. Урок 757. 00:02:00
    35.31. Подвязываем компоненты из Unity
  758. Урок 758. 00:01:56
    35.32. Делаем регистрацию Rigidbody
  759. Урок 759. 00:01:35
    35.33. Доделываем механику движения с использованием rigidbody
  760. Урок 760. 00:02:48
    35.34. Проверка системы и итог по MonoEntity
  761. Урок 761. 00:01:10
    35.35. Анализируем опыт использования нашего решения
  762. Урок 762. 00:02:45
    35.36. Что было бы неплохо добавить
  763. Урок 763. 00:02:27
    35.37. Решаем проблему засорения класса Entity
  764. Урок 764. 00:01:20
    35.38. Генерация кода
  765. Урок 765. 00:05:23
    35.39. Как вообще это работает
  766. Урок 766. 00:02:19
    35.40. Генерируем объявление partial class Entity
  767. Урок 767. 00:03:25
    35.41. Рефлексия
  768. Урок 768. 00:01:04
    35.42. Лайфхак по рефлексии и генерации
  769. Урок 769. 00:04:08
    35.43. Ищем необходимые типы по проекту
  770. Урок 770. 00:04:17
    35.44. Начинаем перебирать типы компонентов
  771. Урок 771. 00:01:15
    35.45. Пройдемся отладчиком
  772. Урок 772. 00:02:27
    35.46. Создаем свойство для получения компонента
  773. Урок 773. 00:05:56
    35.47. Генерируем свойство для получения поля компонента
  774. Урок 774. 00:02:33
    35.48. Фиксим имена дженериков
  775. Урок 775. 00:04:16
    35.49. Генерируем метод Add
  776. Урок 776. 00:03:07
    35.50. Метод Add без параметров
  777. Урок 777. 00:00:39
    35.51. Автоматизируем вызов генерации
  778. Урок 778. 00:02:22
    35.52. Пользуемся сгенерированным кодом
  779. Урок 779. 00:01:23
    35.53. Заключение по генерации кода
  780. Урок 780. 00:02:59
    35.54. Промежуточное заключение по организации сущностей в нашей игре
  781. Урок 781. 00:02:17
    36.1. Введение
  782. Урок 782. 00:01:17
    36.2. Начинаем делать призрака
  783. Урок 783. 00:00:54
    36.3. Подготовка к созданию призрака
  784. Урок 784. 00:00:57
    36.4. Добавляем механику поворота. Данные
  785. Урок 785. 00:02:09
    36.5. Добавляем механику поворота. Логика
  786. Урок 786. 00:01:31
    36.6. Конфигурируем призрака и тестим
  787. Урок 787. 00:02:08
    36.7. Фича здоровья и смерти. Данные
  788. Урок 788. 00:02:10
    36.8. Фича здоровья и смерти. Логика
  789. Урок 789. 00:02:25
    36.9. Добавляем механику смерти призраку
  790. Урок 790. 00:03:20
    36.10. Как пользоваться сервисами в системах. Делаем механику уничтожения при смерти
  791. Урок 791. 00:01:19
    36.11. Добавляем систему релиза к сущности
  792. Урок 792. 00:01:12
    36.12. Обработка смерти – продолжительный процесс
  793. Урок 793. 00:01:43
    36.13. Продолжительная обработка смерти. Данные
  794. Урок 794. 00:05:04
    36.14. Продолжительная обработка смерти. Логика таймера
  795. Урок 795. 00:00:53
    36.15. Продолжительная обработка смерти. Дорабатываем релиз
  796. Урок 796. 00:01:13
    36.16. Тестирование и новые проблемки
  797. Урок 797. 00:01:58
    36.17. Добавляем обработку смерти в другие механики
  798. Урок 798. 00:00:59
    36.18. Какие остались неприятности
  799. Урок 799. 00:01:55
    36.19. Базовая единица условий
  800. Урок 800. 00:01:04
    36.20. Комбинирование условий
  801. Урок 801. 00:03:30
    36.21. Реализуем ICompositeConditon
  802. Урок 802. 00:02:01
    36.22. Добавляем варианты логических операций
  803. Урок 803. 00:02:37
    36.23. Внедряем условия для движения и поворота
  804. Урок 804. 00:01:30
    36.24. Дорабатываем системы движения и поворота
  805. Урок 805. 00:02:12
    36.25. Дорабатываем остальные системы. Новые условия
  806. Урок 806. 00:01:25
    36.26. Внедряем новые условия в систему релиза и смерти
  807. Урок 807. 00:00:56
    36.27. Промежуточный итог по фиче смерти
  808. Урок 808. 00:02:36
    36.28. Фича получения урона
  809. Урок 809. 00:01:43
    36.29. Идея “реактивного” ивента
  810. Урок 810. 00:02:11
    36.30. Делаем сам “реактивный” ивент
  811. Урок 811. 00:01:13
    36.31. Делаем IReadOnly интерфейсы
  812. Урок 812. 00:02:42
    36.32. Фича получения урона. Компоненты
  813. Урок 813. 00:03:36
    36.33. Система получения урона
  814. Урок 814. 00:00:51
    36.34. Проверяем систему получения урона
  815. Урок 815. 00:01:48
    36.35. Добавляем коллайдеры. Механика призрака
  816. Урок 816. 00:01:07
    36.36. Реализуем сквозное движение
  817. Урок 817. 00:00:53
    36.37. Механика нанесения урона касанием
  818. Урок 818. 00:01:44
    36.38. Использовать ли NonAlloc касты
  819. Урок 819. 00:01:21
    36.39. Делаем буффер
  820. Урок 820. 00:02:08
    36.40. Отслеживание контактов. Данные
  821. Урок 821. 00:02:18
    36.41. Отслеживание контактов. Прикрепляем данные
  822. Урок 822. 00:03:38
    36.42. Система детектирования контактов
  823. Урок 823. 00:02:03
    36.43. Игнорируем себя при детектировании
  824. Урок 824. 00:03:24
    36.44. Как будем получать сущности для нанесения урона
  825. Урок 825. 00:01:28
    36.45. Решаем задачу связи коллайдеров и сущности
  826. Урок 826. 00:02:12
    36.46. Сервис регистрации коллайдеров
  827. Урок 827. 00:02:46
    36.47. Делаем регистрации коллайдеров
  828. Урок 828. 00:02:16
    36.48. Доделываем систему фильтрации сущностей
  829. Урок 829. 00:01:30
    36.49. Тестируем системы детектирования контактов
  830. Урок 830. 00:01:17
    36.50. Фича нанесения урона касанием. Данные
  831. Урок 831. 00:03:23
    36.51. Система нанесения урона касанием
  832. Урок 832. 00:01:55
    36.52. Обрабатываем выход из контакта
  833. Урок 833. 00:00:41
    36.53. Проверяем систему нанесения урона касанием
  834. Урок 834. 00:02:12
    36.54. Отключение коллайдеров при смерти. Компоненты
  835. Урок 835. 00:01:55
    36.55. Система отключения коллайдеров при смерти
  836. Урок 836. 00:01:21
    36.56. Тестируем систему
  837. Урок 837. 00:00:40
    36.57. Что умеет основной персонаж
  838. Урок 838. 00:03:28
    36.58. Готовим базу под префабы персонажей
  839. Урок 839. 00:01:09
    36.59. Готовим префаб основного героя
  840. Урок 840. 00:02:43
    36.60. Готовим метод создания основного героя
  841. Урок 841. 00:01:26
    36.61. В чем заключается суть механики атаки
  842. Урок 842. 00:03:18
    36.62. Как будем реализовывать
  843. Урок 843. 00:02:21
    36.63. Процесс атаки, заводим необходимые данные
  844. Урок 844. 00:03:14
    36.64. Система старта атаки
  845. Урок 845. 00:02:28
    36.65. Таймер процесса атаки
  846. Урок 846. 00:02:48
    36.66. Система завершения атаки
  847. Урок 847. 00:01:32
    36.67. Начинаем добавлять данные для работы процесса атаки
  848. Урок 848. 00:01:06
    36.68. Добавляем компонент для определения движения сущности
  849. Урок 849. 00:02:11
    36.69. Добиваем и проверяем процесс атаки
  850. Урок 850. 00:01:15
    36.70. Добавляем данные для задержки перед выстрелом
  851. Урок 851. 00:04:04
    36.71. Система определения окончания задержки
  852. Урок 852. 00:01:17
    36.72. Проверяем работу задержки
  853. Урок 853. 00:02:42
    36.73. Добавляем данные для реализации выстрела
  854. Урок 854. 00:02:38
    36.74. Реализуем систему выстрела
  855. Урок 855. 00:01:05
    36.75. Проверяем механику выстрела
  856. Урок 856. 00:01:56
    36.76. Механика отмены атаки. Данные
  857. Урок 857. 00:01:45
    36.77. Система отмены атаки
  858. Урок 858. 00:01:07
    36.78. Проверяем механику отмены атаки
  859. Урок 859. 00:01:43
    36.79. Механика кулдауна
  860. Урок 860. 00:01:47
    36.80. Тестируем кулдаун атаки
  861. Урок 861. 00:02:42
    36.81. Делаем префаб снаряда
  862. Урок 862. 00:02:34
    36.82. Добавляем метод создания снаряда
  863. Урок 863. 00:01:02
    36.83. Добавляем стрельбу снарядами
  864. Урок 864. 00:01:07
    36.84. Проблема стартового поворота
  865. Урок 865. 00:01:22
    36.85. Фиксим проблему стартового поворота
  866. Урок 866. 00:01:48
    36.86. Механика смерти при касании. Данные
  867. Урок 867. 00:02:39
    36.87. DeathMaskTouchDetectorSystem
  868. Урок 868. 00:01:05
    36.88. Тестируем уничтожение снарядов
  869. Урок 869. 00:01:58
    36.89. Промежуточные итоги по работе
  870. Урок 870. 00:02:23
    36.90. Можно ли расширять наше решение
  871. Урок 871. 00:01:41
    37.1. Введение
  872. Урок 872. 00:01:19
    37.2. Из чего состоит искусственный интеллект
  873. Урок 873. 00:01:29
    37.3. Объект исполняющий указания
  874. Урок 874. 00:00:37
    37.4. Сенсоры
  875. Урок 875. 00:02:12
    37.5. Блок памяти
  876. Урок 876. 00:02:26
    37.6. Блок принятия решений
  877. Урок 877. 00:03:32
    37.7. Насколько это разбиение строгое
  878. Урок 878. 00:01:54
    37.8. Как оно устроено у нас в проекте
  879. Урок 879. 00:01:14
    37.9. На основе чего мы будем делать логику принятия решений
  880. Урок 880. 00:03:14
    37.10. Машина состояний. Теория
  881. Урок 881. 00:02:11
    37.11. В чем заключается суть работы машины состояний
  882. Урок 882. 00:01:58
    37.12. Как будет при этом меняться поведение
  883. Урок 883. 00:02:56
    37.13. Почему мы изучаем именно эту концепцию
  884. Урок 884. 00:02:04
    37.14. Объявляем IState
  885. Урок 885. 00:01:50
    37.15. Реализуем базовый State
  886. Урок 886. 00:01:37
    37.16. Делаем обертку для состояния и связей
  887. Урок 887. 00:01:26
    37.17. Реализуем переходы
  888. Урок 888. 00:02:07
    37.18. Добиваем StateNode
  889. Урок 889. 00:02:42
    37.19. Стейт машина. Внутреннее устройство
  890. Урок 890. 00:02:44
    37.20. Как конфигурировать стейт машину
  891. Урок 891. 00:03:31
    37.21. Как будут выполняться переходы
  892. Урок 892. 00:02:32
    37.22. Анализ возможности перехода
  893. Урок 893. 00:01:00
    37.23. Начинаем делать ИИ для призрака
  894. Урок 894. 00:00:38
    37.24. Реализуем состояние покоя
  895. Урок 895. 00:03:50
    37.25. Реализуем состояние случайного движения
  896. Урок 896. 00:03:15
    37.26. Как будем генерировать новое направление
  897. Урок 897. 00:05:14
    37.27. Делаем стейт машину для AI
  898. Урок 898. 00:02:47
    37.28. Заводим фабрику для создания ИИ
  899. Урок 899. 00:03:23
    37.29. Заводим TimerService
  900. Урок 900. 00:03:24
    37.30. Настраиваем переходы между состояниями
  901. Урок 901. 00:02:03
    37.31. Фиксим отписки
  902. Урок 902. 00:01:31
    37.32. Добиваем стейт машину случайного движения
  903. Урок 903. 00:02:19
    37.33. Как будем реализовывать обработку ИИ
  904. Урок 904. 00:00:54
    37.34. Заводим абстракцию для мозгов
  905. Урок 905. 00:02:46
    37.35. Делаем реализацию мозгов на основе машины состояний
  906. Урок 906. 00:01:45
    37.36. Пишем сервис жизненного цикла для ИИ. Хранение мозгов
  907. Урок 907. 00:02:07
    37.37. Реализуем логику привязки мозгов и сущности
  908. Урок 908. 00:03:34
    37.38. Реализуем апдейт ИИ
  909. Урок 909. 00:03:53
    37.39. Подключаем все в работу
  910. Урок 910. 00:01:39
    37.40. Тестируем работу ИИ
  911. Урок 911. 00:00:56
    37.41. В чем особенность поведения главного героя
  912. Урок 912. 00:02:23
    37.42. Как будем делать управление героем. Проблема простой машины состояний
  913. Урок 913. 00:02:41
    37.43. Иерархическая машина состояний
  914. Урок 914. 00:01:09
    37.44. Реализуем возможность использовать стейт машину как состояние
  915. Урок 915. 00:02:39
    37.45. Реализуем сервис ввода пользователя
  916. Урок 916. 00:01:56
    37.46. Делаем ПК реализацию ввода
  917. Урок 917. 00:02:14
    37.47. Делаем состояние движение под управлением игрока
  918. Урок 918. 00:01:25
    37.48. Состояние атаки
  919. Урок 919. 00:02:30
    37.49. Добавляем компонент текущей цели
  920. Урок 920. 00:01:28
    37.50. Начинаем реализовывать стейт поворота к цели
  921. Урок 921. 00:01:29
    37.51. Добавляем компонента трансформа
  922. Урок 922. 00:00:53
    37.52. Доделываем стейт поворота к цели
  923. Урок 923. 00:06:23
    37.53. Собираем стейт машину с автоматическим поворотом и атакой
  924. Урок 924. 00:05:45
    37.54. Формируем мозги для нашего героя
  925. Урок 925. 00:01:09
    37.55. Тестируем получившуюся реализацию
  926. Урок 926. 00:01:36
    37.56. Идея параллельно выполняющихся состояний
  927. Урок 927. 00:02:17
    37.57. Реализуем параллельный стейт
  928. Урок 928. 00:01:18
    37.58. Делаем конкретную реализацию
  929. Урок 929. 00:03:36
    37.59. Реализуем алгоритм выбора ближайшей цели
  930. Урок 930. 00:01:56
    37.60. Добавляем генерацию Try метода для получения поля компонента
  931. Урок 931. 00:04:21
    37.61. Добиваем логику фильтрации
  932. Урок 932. 00:02:40
    37.62. Состояние поиска текущей цели
  933. Урок 933. 00:01:52
    37.63. Добиваем логику поведения героя
  934. Урок 934. 00:01:59
    37.64. Тестируем поведение. Проблема текущей реактивности
  935. Урок 935. 00:02:13
    37.65. Как улучшить реактивность. EqualityComparer
  936. Урок 936. 00:02:43
    37.66. Прокачиваем реактивность
  937. Урок 937. 00:01:12
    37.67. Тестируем финально реализацию поведения главного героя
  938. Урок 938. 00:02:08
    37.68. Итог по ИИ и машине состояний
  939. Урок 939. 00:01:42
    37.69. Стейт машина и ECS
  940. Урок 940. 00:01:20
    38.1. Введение
  941. Урок 941. 00:01:53
    38.2. В чем будет заключаться геймплей
  942. Урок 942. 00:01:23
    38.3. Конфиги для персонажей
  943. Урок 943. 00:01:17
    38.4. Конфиги для призрака и героя
  944. Урок 944. 00:01:25
    38.5. Что еще можно было вынести в настройки
  945. Урок 945. 00:02:41
    38.6. Поддержка конфигов для персонажей
  946. Урок 946. 00:01:29
    38.7. Тестируем конфиги
  947. Урок 947. 00:02:01
    38.8. Добавляем класс со слоями
  948. Урок 948. 00:01:42
    38.9. Тестируем работу и правим прицеливание
  949. Урок 949. 00:01:13
    38.10. Как размышлять дальше
  950. Урок 950. 00:05:04
    38.11. Создаем фабрику главного героя
  951. Урок 951. 00:03:27
    38.12. Создаем фабрику врагов
  952. Урок 952. 00:02:56
    38.13. Тестируем фабрики
  953. Урок 953. 00:01:47
    38.14. Что именно мы сделали
  954. Урок 954. 00:01:32
    38.15. Добавляем возможность отличать главного героя
  955. Урок 955. 00:01:17
    38.16. Отношения между персонажами
  956. Урок 956. 00:02:44
    38.17. Добавляем фичу команд
  957. Урок 957. 00:03:35
    38.18. Добавляем поддержку команд в нанесение урона
  958. Урок 958. 00:02:14
    38.19. Не боимся пользоваться статикой
  959. Урок 959. 00:00:51
    38.20. Проблема с проджектайлами
  960. Урок 960. 00:01:39
    38.21. Добавляем новый слой окружения
  961. Урок 961. 00:01:31
    38.22. Добавляем проверку касания другой команды
  962. Урок 962. 00:02:27
    38.23. Добиваем проджектайл
  963. Урок 963. 00:01:32
    38.24. Проверка проджектайлов
  964. Урок 964. 00:01:26
    38.25. Добиваем логику выбора цели с учетом команд
  965. Урок 965. 00:00:51
    38.26. Тестируем логику выбора цели
  966. Урок 966. 00:01:29
    38.27. Начинаем организацию геймплейного цикла
  967. Урок 967. 00:01:09
    38.28. Как будем организовывать волны
  968. Урок 968. 00:01:15
    38.29. Какая информация нам нужна
  969. Урок 969. 00:01:08
    38.30. Конфиг режима зачистки врагов
  970. Урок 970. 00:01:46
    38.31. Добиваем конфигурацию уровней
  971. Урок 971. 00:01:48
    38.32. Определяем то, как должны работать этапы
  972. Урок 972. 00:03:36
    38.33. Начинаем реализацию режима зачистки врагов
  973. Урок 973. 00:03:00
    38.34. Учитываем смерть врагов
  974. Урок 974. 00:01:55
    38.35. Заканчиваем реализацию режима зачистки врагов
  975. Урок 975. 00:02:37
    38.36. Заводим фабрику стейджей
  976. Урок 976. 00:02:42
    38.37. Тестируем стейдж зачистки врагов
  977. Урок 977. 00:01:20
    38.38. Сервис для контроля смены стейджей
  978. Урок 978. 00:05:36
    38.39. Добавляем функциональность
  979. Урок 979. 00:01:36
    38.40. Заводим префаб триггера
  980. Урок 980. 00:01:33
    38.41. Формируем сущность триггера
  981. Урок 981. 00:02:40
    38.42. Заводим сервис для триггера подготовки
  982. Урок 982. 00:03:30
    38.43. Реализуем функционал
  983. Урок 983. 00:02:25
    38.44. Как собирать все вместе
  984. Урок 984. 00:00:57
    38.45. Как будет выглядеть машина состояний для геймплея
  985. Урок 985. 00:00:51
    38.46. Заводим реализацию машины состояния под геймплей
  986. Урок 986. 00:01:38
    38.47. Стейт подготовки
  987. Урок 987. 00:01:07
    38.48. Стейт обработки стейджа
  988. Урок 988. 00:01:18
    38.49. Стейты победы и поражения. База
  989. Урок 989. 00:03:18
    38.50. Стейт победы
  990. Урок 990. 00:00:52
    38.51. Стейт поражения
  991. Урок 991. 00:02:55
    38.52. Фабрика стейтов
  992. Урок 992. 00:02:39
    38.53. Стейт кор лупа
  993. Урок 993. 00:02:25
    38.54. Добавляем возможность отслеживать результат стейджа
  994. Урок 994. 00:01:36
    38.55. Добиваем стейт кор лупа
  995. Урок 995. 00:02:33
    38.56. Начинаем делать стейт машину для всего геймплея
  996. Урок 996. 00:04:24
    38.57. Сервис хранения главного героя
  997. Урок 997. 00:02:04
    38.58. Добиваем стейт машину геймплея
  998. Урок 998. 00:03:12
    38.59. Делаем GameplayStatesContext
  999. Урок 999. 00:02:16
    38.60. Собираем цикл геймплея
  1000. Урок 1000. 00:02:04
    38.61. Тестируем получившийся геймплей
  1001. Урок 1001. 00:01:48
    38.62. Фиксим сохранение при победе
  1002. Урок 1002. 00:01:24
    38.63. Финальный тест
  1003. Урок 1003. 00:01:13
    38.64. Стейт машина как способ организации игры
  1004. Урок 1004. 00:02:09
    38.65. Заключение
  1005. Урок 1005. 00:01:47
    39.1. Введение
  1006. Урок 1006. 00:00:57
    39.2. Что будем делать с графикой
  1007. Урок 1007. 00:01:19
    39.3. Импорт пакетов с модельками
  1008. Урок 1008. 00:02:02
    39.4. Разбираем все по папкам
  1009. Урок 1009. 00:01:34
    39.5. Важный момент про обновление ассетов
  1010. Урок 1010. 00:01:45
    39.6. Добавляем модельку призрака
  1011. Урок 1011. 00:03:04
    39.7. Добавляем модельку героя
  1012. Урок 1012. 00:01:08
    39.8. Проверяем как все выглядит в игре
  1013. Урок 1013. 00:03:07
    39.9. Дружим отображение и данные сущностей
  1014. Урок 1014. 00:01:44
    39.10. Делаем WalkingView
  1015. Урок 1015. 00:01:42
    39.11. Оставшиеся наследники
  1016. Урок 1016. 00:02:02
    39.12. Добиваем анимации
  1017. Урок 1017. 00:02:22
    39.13. Внедряем модельку стрелы
  1018. Урок 1018. 00:03:04
    39.14. Внедряем модельку лука
  1019. Урок 1019. 00:02:13
    39.15. Подбираем тайминги для атаки
  1020. Урок 1020. 00:01:39
    39.16. Как синхронизировать скорость анимации с логикой
  1021. Урок 1021. 00:02:13
    39.17. Скрипт для изменения мультипликатора скорости анимации атаки
  1022. Урок 1022. 00:01:03
    39.18. Добавляем пак с эффектами
  1023. Урок 1023. 00:02:11
    39.19. Эффект получения урона
  1024. Урок 1024. 00:02:04
    39.20. Добавляем спавн для врагов
  1025. Урок 1025. 00:03:08
    39.21. Добавляем отображение спавна для врагов
  1026. Урок 1026. 00:02:34
    39.22. Добавляем отображение текущей цели для героя
  1027. Урок 1027. 00:01:28
    39.23. Начинаем добавлять окружение
  1028. Урок 1028. 00:01:13
    39.24. Добавляем окружающую арену
  1029. Урок 1029. 00:00:47
    39.25. Почему фиксированный размер арены
  1030. Урок 1030. 00:00:32
    39.26. Последний штрих – триггер активакции
  1031. Урок 1031. 00:00:36
    39.27. Тестируем финал по графике
  1032. Урок 1032. 00:02:07
    39.28. Начинаем украшать UI. Импорт спрайтов
  1033. Урок 1033. 00:01:21
    39.29. Выбираем иконки валют
  1034. Урок 1034. 00:02:11
    39.30. Дорабатываем currencyView
  1035. Урок 1035. 00:02:05
    39.31. Немного про шрифты
  1036. Урок 1036. 00:01:09
    39.32. Правим кнопку
  1037. Урок 1037. 00:02:17
    39.33. Добавляем фон в главное меню
  1038. Урок 1038. 00:01:20
    39.34. Проверяем адаптивность
  1039. Урок 1039. 00:00:54
    39.35. Фиксим фон
  1040. Урок 1040. 00:00:43
    39.36. Адаптация под челку телефона
  1041. Урок 1041. 00:02:18
    39.37. Фиксим адаптацию под вырезы устройств. Safe area
  1042. Урок 1042. 00:02:13
    39.38. Преображаем оставшиеся элементы. Меню выбора уровней
  1043. Урок 1043. 00:01:01
    39.39. Загрузочный экран
  1044. Урок 1044. 00:00:41
    39.40. Подготовка UI для геймплея
  1045. Урок 1045. 00:01:51
    39.41. Подготовка UI для геймплея. Новые классы
  1046. Урок 1046. 00:01:55
    39.42. Новые префабы и регистрации
  1047. Урок 1047. 00:01:53
    39.43. Попап победы. Структура префаба
  1048. Урок 1048. 00:00:57
    39.44. Попап победы. View часть
  1049. Урок 1049. 00:01:01
    39.45. Попап победы. Presenter часть
  1050. Урок 1050. 00:01:29
    39.46. Попап поражения. Полная аналогия
  1051. Урок 1051. 00:00:33
    39.47. Новая анимация для попапов
  1052. Урок 1052. 00:01:46
    39.48. Добавляем попапы победы и поражения в систему
  1053. Урок 1053. 00:02:11
    39.49. Добавляем показ попапов при поражении и победе
  1054. Урок 1054. 00:01:46
    39.50. Тестируем попапы
  1055. Урок 1055. 00:01:26
    39.51. Отображение стейджей. Префаб
  1056. Урок 1056. 00:01:10
    39.52. Встраиваем отображение стейджа
  1057. Урок 1057. 00:00:32
    39.53. Проверяем отображение стейджей
  1058. Урок 1058. 00:01:03
    39.54. Добавляем хп бары. Вьюхи
  1059. Урок 1059. 00:01:48
    39.55. Префабы хп баров
  1060. Урок 1060. 00:01:51
    39.56. Презентер хп бара
  1061. Урок 1061. 00:02:19
    39.57. Вьюха дисплея хп баров
  1062. Урок 1062. 00:01:13
    39.58. Добавляем новые компоненты
  1063. Урок 1063. 00:05:06
    39.59. HealthDisplayPresenter
  1064. Урок 1064. 00:01:44
    39.60. Встраиваем хп бары и тестируем
  1065. Урок 1065. 00:00:58
    39.61. Заключение
  1066. Урок 1066. 00:12:47
    40.1. 01 УМЕНЬШИ ВЕС СВОЕЙ ИГРЫ! Оптимизация веса игры Unity. Как уменьшить вес игры на Unity. Ч.1
  1067. Урок 1067. 00:19:48
    40.2. 02 УМЕНЬШИ ВЕС СВОЕЙ ИГРЫ! Ч.2 Оптимизация веса игры Unity. Как уменьшить вес игры на Unity
  1068. Урок 1068. 00:11:52
    40.3. 03 ОПТИМИЗАЦИЯ ИНТЕРФЕЙСА ИГРЫ в Unity! Лучшие советы по производительности!
  1069. Урок 1069. 00:01:29
    40.4. Введение
  1070. Урок 1070. 00:04:35
    40.5. Небольшие изменения по скрипту запуска сцены бутстрапа
  1071. Урок 1071. 00:01:55
    40.6. Не делай преждевременных оптимизаций
  1072. Урок 1072. 00:04:00
    40.7. Многие оптимизации – не ваша специализация
  1073. Урок 1073. 00:01:59
    40.8. Frame debugger
  1074. Урок 1074. 00:02:03
    40.9. Статический батчинг
  1075. Урок 1075. 00:02:06
    40.10. Нюансы статического батчинга
  1076. Урок 1076. 00:02:15
    40.11. А если объекты двигаются
  1077. Урок 1077. 00:01:44
    40.12. Свет и тени
  1078. Урок 1078. 00:03:30
    40.13. Запечка света
  1079. Урок 1079. 00:01:22
    40.14. Фиксим запечку света
  1080. Урок 1080. 00:02:00
    40.15. Фиксим свет для динамических объектов
  1081. Урок 1081. 00:01:53
    40.16. Quality. Пресеты графики
  1082. Урок 1082. 00:02:27
    40.17. Настройки URP. Отключаем SSAO
  1083. Урок 1083. 00:02:13
    40.18. Остальные настройки URP
  1084. Урок 1084. 00:01:51
    40.19. Итоги по графике
  1085. Урок 1085. 00:00:42
    40.20. Оптимизация UI
  1086. Урок 1086. 00:02:09
    40.21. Выбираем окно для тестов
  1087. Урок 1087. 00:05:25
    40.22. Как использовать атласы
  1088. Урок 1088. 00:02:25
    40.23. Думайте как упаковывать спрайты
  1089. Урок 1089. 00:05:38
    40.24. Оптимизации по коду
  1090. Урок 1090. 00:06:09
    40.25. Profiler
  1091. Урок 1091. 00:00:57
    40.26. Заключение
  1092. Урок 1092. 00:01:32
    41.1. Введение
  1093. Урок 1093. 00:03:01
    41.2. Способности изменения статов
  1094. Урок 1094. 00:03:33
    41.3. Реализуем сами статы
  1095. Урок 1095. 00:02:59
    41.4. Добавляем системы синхронизации статов
  1096. Урок 1096. 00:02:37
    41.5. Эффекты для изменения статов
  1097. Урок 1097. 00:02:34
    41.6. Система для перерасчета статов при добавлении эффекта
  1098. Урок 1098. 00:02:20
    41.7. Тестируем систему эффектов
  1099. Урок 1099. 00:05:56
    41.8. Добавляем конфиги способностей
  1100. Урок 1100. 00:02:16
    41.9. Заводим базу под сами абилки
  1101. Урок 1101. 00:02:32
    41.10. Фабрика абилок и добавление их к персонажу
  1102. Урок 1102. 00:02:02
    41.11. Тестирование абилок
  1103. Урок 1103. 00:01:04
    41.12. Система дропа абилок
  1104. Урок 1104. 00:04:41
    41.13. Реализация системы дропа абилок
  1105. Урок 1105. 00:04:02
    41.14. Выбор абилки. Префабы
  1106. Урок 1106. 00:04:53
    41.15. Выбор абилки. View часть
  1107. Урок 1107. 00:07:18
    41.16. Выбор абилки. Presenter часть. Логика
  1108. Урок 1108. 00:06:03
    41.17. Добавляем опыт и уровни герою
  1109. Урок 1109. 00:06:37
    41.18. Подвязываем на изменение уровня выбор способностей
  1110. Урок 1110. 00:01:39
    41.19. Фикс отображения уровня
  1111. Урок 1111. 00:04:01
    41.20. Добавялем сервис паузы
  1112. Урок 1112. 00:04:08
    41.21. Добавляем отображение опыта и уровня
  1113. Урок 1113. 00:02:01
    41.22. Промежуточный итог
  1114. Урок 1114. 00:02:04
    42.1. Введение. Конфиги под лут
  1115. Урок 1115. 00:03:05
    42.2. Настройка конфигов
  1116. Урок 1116. 00:05:28
    42.3. База под сбор лута
  1117. Урок 1117. 00:05:30
    42.4. Поддержка конкретных вариантов лута
  1118. Урок 1118. 00:03:47
    42.5. Сервис дропа лута
  1119. Урок 1119. 00:02:42
    42.6. Дроп лута с врагов
  1120. Урок 1120. 00:04:54
    42.7. Сервис сбора лута
  1121. Урок 1121. 00:04:01
    42.8. Состояние сбора лута
  1122. Урок 1122. 00:05:22
    42.9. Отображение и начисление монет
  1123. Урок 1123. 00:04:23
    42.10. Прокачка статов. Конфиги
  1124. Урок 1124. 00:03:04
    42.11. Данные пользователя
  1125. Урок 1125. 00:01:55
    42.12. Правим фабрику героя
  1126. Урок 1126. 00:03:58
    42.13. Сервис прокачки статов
  1127. Урок 1127. 00:02:03
    42.14. Внедряем сервис прокачки статов
  1128. Урок 1128. 00:06:23
    42.15. Попап магазина прокачки. View часть
  1129. Урок 1129. 00:06:42
    42.16. Попап магазина прокачки. Presenter часть
  1130. Урок 1130. 00:03:02
    42.17. Подключаем попап в систему
  1131. Урок 1131. 00:05:54
    42.18. Отображение 3д модели на UI
  1132. Урок 1132. 00:10:07
    42.19. Прокачка способностей
  1133. Урок 1133. 00:02:45
    42.20. Способность мультивыстрела - конфиги
  1134. Урок 1134. 00:08:23
    42.21. Добавляем механику мультивыстрела
  1135. Урок 1135. 00:03:39
    42.22. Добавляем абилку мультивыстрела
  1136. Урок 1136. 00:01:21
    42.23. Способность баунса стрел - конфиг
  1137. Урок 1137. 00:06:27
    42.24. Добавляем логику отскока от стен
  1138. Урок 1138. 00:01:34
    42.25. Уменьшение счетчика отскоков
  1139. Урок 1139. 00:04:30
    42.26. Апгрейдим систему условий
  1140. Урок 1140. 00:02:57
    42.27. Добавляем саму абилку баунса
  1141. Урок 1141. 00:01:33
    42.28. Добавляем стат скорости атаки
  1142. Урок 1142. 00:02:18
    42.29. Готовим базу для изменения скорости атаки
  1143. Урок 1143. 00:03:47
    42.30. Система перерасчета таймингов
  1144. Урок 1144. 00:01:35
    42.31. Синхронизируем скорость анимации атаки
  1145. Урок 1145. 00:01:50
    42.32. Финальный финал