UnityInActon-RUS.pdf
13 MB
Привет!
В этом канале я буду делиться своим прогрессом в области разработки игр. По работе я программирую на 1С, а несколько лет назад немного трогал Unity, так что моя база в game-dev — почти нулевая.
Чтобы как-то структурировать процесс, буду фиксировать здесь свои цели, описывать процесс их достижения и делиться промежуточными результатами.
Моя первая цель — пройти руководство «Unity в действии», дальше будет видно.
В этом канале я буду делиться своим прогрессом в области разработки игр. По работе я программирую на 1С, а несколько лет назад немного трогал Unity, так что моя база в game-dev — почти нулевая.
Чтобы как-то структурировать процесс, буду фиксировать здесь свои цели, описывать процесс их достижения и делиться промежуточными результатами.
Моя первая цель — пройти руководство «Unity в действии», дальше будет видно.
👍2❤1🔥1
Грибной шутер.gif
24.1 MB
Сходу поделюсь первичными результатами. Первую часть книги я закончил: вспомнил, что к чему, нарисовал сцену, написал несколько скриптов — передвижение персонажа, передвижение NPC, стрельба, реакция на попадание.
Ещё вот этот гриб я нарисовал в Blender и засунул в уровень вместо NPC.
Получился некий психологический хоррор-шутер.
Ещё вот этот гриб я нарисовал в Blender и засунул в уровень вместо NPC.
Получился некий психологический хоррор-шутер.
👍2🥰2🔥1
Media is too big
VIEW IN TELEGRAM
Вчера начал вторую часть книги «Unity в действии».
Глава "Игра Memory на основе новой 2D-функциональности".
Был соблазн скипнуть — глава скучноватая.
Но ведь никто не говорил, что геймдев — это весело.
Так что потихоньку привыкаю к страданиям 😀
Глава "Игра Memory на основе новой 2D-функциональности".
Был соблазн скипнуть — глава скучноватая.
Но ведь никто не говорил, что геймдев — это весело.
Так что потихоньку привыкаю к страданиям 😀
❤🔥2👏2🔥1
Media is too big
VIEW IN TELEGRAM
Сегодня грыз 6-ю главу — «Двухмерный GUI для трёхмерной игры».
🔧 По книжке:
• Сделал HUD с отображением количества поверженных врагов
• Добавил кнопку открытия меню
🛠 От себя:
• Переназначил открытие меню на Esc
• Добавил в игру паузу
• Сделал HP-бары для врага и игрока
• Научил мухомора преследовать игрока — стало повеселее
Главу до конца не добил — в меню пока нет настроек, доберусь потом.
🔧 По книжке:
• Сделал HUD с отображением количества поверженных врагов
• Добавил кнопку открытия меню
🛠 От себя:
• Переназначил открытие меню на Esc
• Добавил в игру паузу
• Сделал HP-бары для врага и игрока
• Научил мухомора преследовать игрока — стало повеселее
Главу до конца не добил — в меню пока нет настроек, доберусь потом.
👍3🔥2❤1
Media is too big
VIEW IN TELEGRAM
«Двухмерный GUI для трёхмерной игры» — глава пройдена.
✔️ Поработал с классом PlayerPrefs — он используется для хранения простых настроек. С его помощью реализовал сохранение сложности игры.
✔️ В проекте применил класс Messenger — очень удобный инструмент. Ранее я на «костылях» реализовывал счётчик фрагов: контроллер здоровья в момент когда HP кончается напрямую вызывает UI-контроллер и сообщает, что нужно увеличить число в углу экрана. Это работало, но с точки зрения архитектуры реализация кривая. Теперь же UI-контроллер «подписывается» на событие ENEMY_DIED, а контроллер здоровья рассылает это событие.
✔️ После каждого убитого противника сделал увеличение скорости игрока — что-то вроде прокачки уровней. Для этого в контроллере персонажа использовал ту же подписку на событие ENEMY_DIED, как и в предыдущем случае.
✔️ Изучая реализацию класса Messenger, познакомился с делегатами в C# и узнал, как для них работает оператор сложения(для меня было неочевидно).
✔️ Поработал с классом PlayerPrefs — он используется для хранения простых настроек. С его помощью реализовал сохранение сложности игры.
✔️ В проекте применил класс Messenger — очень удобный инструмент. Ранее я на «костылях» реализовывал счётчик фрагов: контроллер здоровья в момент когда HP кончается напрямую вызывает UI-контроллер и сообщает, что нужно увеличить число в углу экрана. Это работало, но с точки зрения архитектуры реализация кривая. Теперь же UI-контроллер «подписывается» на событие ENEMY_DIED, а контроллер здоровья рассылает это событие.
✔️ После каждого убитого противника сделал увеличение скорости игрока — что-то вроде прокачки уровней. Для этого в контроллере персонажа использовал ту же подписку на событие ENEMY_DIED, как и в предыдущем случае.
✔️ Изучая реализацию класса Messenger, познакомился с делегатами в C# и узнал, как для них работает оператор сложения(для меня было неочевидно).
❤🔥2👍2🔥1
Начал главу 7. «Игра от третьего лица: перемещение и анимация игрока»
Столкнулся с таким понятием как "Кватернион". На самом деле о них говорилось ещё во второй главе, но особых подробностей там не было. Вот цитата из книги:
В тот момент я решил особо не заморачиваться, так как операции мне показались интуитивно прозрачными. Но с пониманием кода седьмой главы уже возникли проблемы. Очень не хотелось оставлять за спиной белых пятен, поэтому три дня курил матчасть: углы Эйлера, Кватернионы и gimbal-lock.
📚 Вот материалы, которые мне помогли:
1. Отличная статья на хабре, в которой объясняются Кватернионы. Я немного приблизился к их пониманию читая этот материал.
2. Статья про Gimbal Lock - достаточно просто рассказано. Возможно, полностью не раскрывает проблему интерполяции, но в первом приближении понимание даёт.
3. Подробный материал про кватернионы на практических примерах. Тут, кстати есть про интерполяцию.
⸻⸻⸻⸻⸻
Итог: полного понимания кватернионов пока нет. Вернусь к ним позже(наверное).
На данный момент главное, что я понимаю код, который пишу. Все сложные операции, для понимания которых необходимо хорошо знать теорию происходят под капотом классов Unity, так что сильно буксовать тут большого смысла нет.
Двигаюсь дальше.
#Заметки
Столкнулся с таким понятием как "Кватернион". На самом деле о них говорилось ещё во второй главе, но особых подробностей там не было. Вот цитата из книги:
Кватернионы представляют собой математическую конструкцию для представления вращения объектов. Они отличаются от углов Эйлера, то есть используемого нами подхода с осями X, Y, Z. Помните обсуждение тангажа, рысканья и крена? В этом случае вращения были представлены с помощью углов Эйлера. Кватернионы… совсем другие. Объяснить их природу сложно, так как для этого нужно углубиться в запутанные дебри высшей математики, включающие в себя движение через четыре измерения. Если вам требуется детальное объяснение, попробуйте прочесть документ http://wat.gamedev.ru/articles/quaternions (Ссылка не работает).
В тот момент я решил особо не заморачиваться, так как операции мне показались интуитивно прозрачными. Но с пониманием кода седьмой главы уже возникли проблемы. Очень не хотелось оставлять за спиной белых пятен, поэтому три дня курил матчасть: углы Эйлера, Кватернионы и gimbal-lock.
📚 Вот материалы, которые мне помогли:
1. Отличная статья на хабре, в которой объясняются Кватернионы. Я немного приблизился к их пониманию читая этот материал.
2. Статья про Gimbal Lock - достаточно просто рассказано. Возможно, полностью не раскрывает проблему интерполяции, но в первом приближении понимание даёт.
3. Подробный материал про кватернионы на практических примерах. Тут, кстати есть про интерполяцию.
⸻⸻⸻⸻⸻
Итог: полного понимания кватернионов пока нет. Вернусь к ним позже(наверное).
На данный момент главное, что я понимаю код, который пишу. Все сложные операции, для понимания которых необходимо хорошо знать теорию происходят под капотом классов Unity, так что сильно буксовать тут большого смысла нет.
Двигаюсь дальше.
#Заметки
👍4❤🔥3🔥3
This media is not supported in your browser
VIEW IN TELEGRAM
«Игра от третьего лица: перемещение и анимация игрока» — глава пройдена.
✔️ Заставил камеру свободно летать вокруг персонажа. Было непросто — пришлось вникнуть в математику пока разбирался с кодом. Подробнее об этом писал в прошлом посте.
✔️ Реализовал управление игроком относительно камеры. Много работал с позициями и ориентацией объектов — как в глобальных так и в относительных координатах. От себя добавил вертикальное перемещение камеры, а ещё — эффект отдаления при движении (заметно на видео).
✔️ Изучил два способа распознавания поверхности под персонажем:
1. Коллайдер — капсула, регистрирующая соприкосновения.
2. Луч — пускаем вниз и смотрим, насколько близко точка столкновения.
✔️ Впервые поработал с анимацией: персонаж теперь бегает и прыгает. Анимации учебные — взяты вместе с моделью, но для меня это все равно в новинку. В будущем обязательно попробую сделать собственные.
✔️ Заставил камеру свободно летать вокруг персонажа. Было непросто — пришлось вникнуть в математику пока разбирался с кодом. Подробнее об этом писал в прошлом посте.
✔️ Реализовал управление игроком относительно камеры. Много работал с позициями и ориентацией объектов — как в глобальных так и в относительных координатах. От себя добавил вертикальное перемещение камеры, а ещё — эффект отдаления при движении (заметно на видео).
✔️ Изучил два способа распознавания поверхности под персонажем:
1. Коллайдер — капсула, регистрирующая соприкосновения.
2. Луч — пускаем вниз и смотрим, насколько близко точка столкновения.
✔️ Впервые поработал с анимацией: персонаж теперь бегает и прыгает. Анимации учебные — взяты вместе с моделью, но для меня это все равно в новинку. В будущем обязательно попробую сделать собственные.
🔥2👨💻2
Media is too big
VIEW IN TELEGRAM
Глава 8: «Добавление интерактивных устройств и элементов»
Игра про двери
На этой неделе продолжаю разбираться с восьмой главой. Из нового — познакомился с функцией SendMessage, которая позволяет вызывать методы у других игровых объектов. В примере она использовалась для интерактивного открытия дверей.
✔️ Я немного модифицировал механику:
— Добавил кнопку, с которой взаимодействует игрок. Она уже отправляет команду дверям открываться или закрываться.
— По аналогии реализовал нажимную пластину — достаточно просто встать на неё или положить сверху предмет. Принцип тот же: она передаёт сигнал дверям.
✔️ Также познакомился с таким понятием, как триггер — это невидимый объект, который можно “проходить сквозь”, но при этом он реагирует на вход и выход. В моём случае — двери теперь открываются и закрываются при попадании игрока или объекта в зону триггера(На видео для наглядности сделал зону триггера полупрозрачной).
✔️ Немного поиграл с гравитацией. Для объектов в Unity физика включается довольно просто. Добавляем к игровому объекту компонент Rigidbody, и его минимально настраиваем.
Чтобы персонаж мог толкнуть коробку, требуется пара строк кода: в момент прикосновения к коробке мы передаём объекту, с которым возникла коллизия, силу по определённому вектору.
А вот небольшой анонс на будущее:
•Создание элементов, которые игрок сможет сохранять как инвентарь
•Применение кода для управления состоянием игры, например данными об инвентаре
•Подготовка и использование элементов инвентаря
На этой неделе продолжаю разбираться с восьмой главой. Из нового — познакомился с функцией SendMessage, которая позволяет вызывать методы у других игровых объектов. В примере она использовалась для интерактивного открытия дверей.
✔️ Я немного модифицировал механику:
— Добавил кнопку, с которой взаимодействует игрок. Она уже отправляет команду дверям открываться или закрываться.
— По аналогии реализовал нажимную пластину — достаточно просто встать на неё или положить сверху предмет. Принцип тот же: она передаёт сигнал дверям.
✔️ Также познакомился с таким понятием, как триггер — это невидимый объект, который можно “проходить сквозь”, но при этом он реагирует на вход и выход. В моём случае — двери теперь открываются и закрываются при попадании игрока или объекта в зону триггера(На видео для наглядности сделал зону триггера полупрозрачной).
✔️ Немного поиграл с гравитацией. Для объектов в Unity физика включается довольно просто. Добавляем к игровому объекту компонент Rigidbody, и его минимально настраиваем.
Чтобы персонаж мог толкнуть коробку, требуется пара строк кода: в момент прикосновения к коробке мы передаём объекту, с которым возникла коллизия, силу по определённому вектору.
А вот небольшой анонс на будущее:
•Создание элементов, которые игрок сможет сохранять как инвентарь
•Применение кода для управления состоянием игры, например данными об инвентаре
•Подготовка и использование элементов инвентаря
🔥4👍1👏1
This media is not supported in your browser
VIEW IN TELEGRAM
«Добавление интерактивных устройств и элементов» — глава пройдена!
✔️ Реализован инвентарь с возможностью подбирать предметы и использовать их. Например, аптечка теперь пополняет здоровье.
✔️ Инвентарь и здоровье сделаны в отдельных классах, а доступ к ним осуществляется через паттерн «Локатор служб» — специальный объект-реестр, который хранит ссылки на InventoryManager и PlayerManager. На примере этого класса я подробнее изучил механику Coroutine.
✔️ Из интересного: по книге аптечка, батарейка и ключ — просто разноцветные сферы. Чтобы было не так скучно, я нарисовал им модели в Blender и добавил анимацию вращения.
✔️Ещё теперь дверь не открывается просто так — чтобы она работала, нужно подобрать ключ и взять его в руки.
📚 Вот несколько статей, которые помогли мне с пониманием материалов главы:
Статья про yield
Статья про Coroutine
Статья про паттерн "Локатор служб"
✔️ Реализован инвентарь с возможностью подбирать предметы и использовать их. Например, аптечка теперь пополняет здоровье.
✔️ Инвентарь и здоровье сделаны в отдельных классах, а доступ к ним осуществляется через паттерн «Локатор служб» — специальный объект-реестр, который хранит ссылки на InventoryManager и PlayerManager. На примере этого класса я подробнее изучил механику Coroutine.
✔️ Из интересного: по книге аптечка, батарейка и ключ — просто разноцветные сферы. Чтобы было не так скучно, я нарисовал им модели в Blender и добавил анимацию вращения.
✔️Ещё теперь дверь не открывается просто так — чтобы она работала, нужно подобрать ключ и взять его в руки.
📚 Вот несколько статей, которые помогли мне с пониманием материалов главы:
Статья про yield
Статья про Coroutine
Статья про паттерн "Локатор служб"
👍2🆒2🔥1
Media is too big
VIEW IN TELEGRAM
Глава 9 «Подключение игры к Интернету»
Материал оказался душноватым — большая часть была уже знакома, и снова пришлось бороться с желанием просто махнуть рукой и пропустить главу.
Из реально интересного:
✔️ Подобрал текстуры для объектов в сцене. Довольно медитативное и творческое занятие. Технически ничего сложного, а вот эстетически — отдельная большая тема.
✔️ Добавил управление небом с помощью отдельного скрипта. На видео видно, как я в режиме сцены переключаю небо с помощью двух триггеров.
✔️ Поработал плотнее с корутинами и на примерах наконец-то проникся их пользой. Если коротко — они позволяют выполнять долгие операции в “псевдо-фоне”, не подвешивая игру.
✔️ Немного потрогал лямбда-выражения в C#. В общих чертах понял, как они работают, но не сказал бы, что прям прочувствовал. Вглубь пока не полез. Нужно больше практики, а с практикой точно придет полноценное понимание.
⸻
Из душного:
Заголовок главы звучит громко, но по факту всё “взаимодействие с интернетом” свелось к отправке простеньких HTTP-запросов.
✔️ Небо в игре изначально задаётся сводкой погоды из HTTP-сервиса Яндекса — в частности, параметром облачности. В начале игры отправляем запрос к API, получаем данные и на их основе устанавливаем погоду.
✔️ Другой пример — загрузка картинок. В ролике видно, как два билборда на стене получают текстуры во время игры. Первый — скачивает картинку из интернета, второй — берёт её уже из кэша.
✔️ Отправка данных на сервер. Поднял простой PHP-сервер из нескольких строк, который принимает входящие запросы и пишет их в текстовые файлы. Простой, но рабочий пример отправки данных. В ролике я для этого использовал зеленый триггер
✔️ Как и в прошлой главе — отдельный класс для управления погодой, отдельный — для работы с сетью. Все инициализируются через локатор служб.
✔️ В книге для HTTP-запросов используется устаревший класс WWW. Я переделал примеры на UnityWebRequest. Так и правильнее, и с корутинами работает лучше — WWW у меня не получилось заставить работать без подвисаний.
⸻
📚 Материалы:
Статья про лямбда-выражения
Ещё статья про корутины
Видео про корутины и не только
P.S. Отдельная благодарность чату GPT, который помог разобраться с использованием UnityWebRequest
#Заметки
Материал оказался душноватым — большая часть была уже знакома, и снова пришлось бороться с желанием просто махнуть рукой и пропустить главу.
Из реально интересного:
✔️ Подобрал текстуры для объектов в сцене. Довольно медитативное и творческое занятие. Технически ничего сложного, а вот эстетически — отдельная большая тема.
✔️ Добавил управление небом с помощью отдельного скрипта. На видео видно, как я в режиме сцены переключаю небо с помощью двух триггеров.
✔️ Поработал плотнее с корутинами и на примерах наконец-то проникся их пользой. Если коротко — они позволяют выполнять долгие операции в “псевдо-фоне”, не подвешивая игру.
✔️ Немного потрогал лямбда-выражения в C#. В общих чертах понял, как они работают, но не сказал бы, что прям прочувствовал. Вглубь пока не полез. Нужно больше практики, а с практикой точно придет полноценное понимание.
⸻
Из душного:
Заголовок главы звучит громко, но по факту всё “взаимодействие с интернетом” свелось к отправке простеньких HTTP-запросов.
✔️ Небо в игре изначально задаётся сводкой погоды из HTTP-сервиса Яндекса — в частности, параметром облачности. В начале игры отправляем запрос к API, получаем данные и на их основе устанавливаем погоду.
✔️ Другой пример — загрузка картинок. В ролике видно, как два билборда на стене получают текстуры во время игры. Первый — скачивает картинку из интернета, второй — берёт её уже из кэша.
✔️ Отправка данных на сервер. Поднял простой PHP-сервер из нескольких строк, который принимает входящие запросы и пишет их в текстовые файлы. Простой, но рабочий пример отправки данных. В ролике я для этого использовал зеленый триггер
✔️ Как и в прошлой главе — отдельный класс для управления погодой, отдельный — для работы с сетью. Все инициализируются через локатор служб.
✔️ В книге для HTTP-запросов используется устаревший класс WWW. Я переделал примеры на UnityWebRequest. Так и правильнее, и с корутинами работает лучше — WWW у меня не получилось заставить работать без подвисаний.
⸻
📚 Материалы:
Статья про лямбда-выражения
Ещё статья про корутины
Видео про корутины и не только
P.S. Отдельная благодарность чату GPT, который помог разобраться с использованием UnityWebRequest
#Заметки
👏5❤1🔥1
Media is too big
VIEW IN TELEGRAM
Глава 10. «Звуковые эффекты и музыка» 🎧
Главу прошёл наполовину. На данный момент разбирался, как подгружать звуковые файлы в проект и делать так, чтобы они воспроизводились в игре.
✔️ Поместил два фоновых источника музыки в сцену.
(Можете не верить, но громкоговоритель я рисовал сам.)
✔️ Персонажу добавил звук ходьбы и прыжка — пришлось увеличить скорость передвижения и настроить анимации, чтобы ноги попадали в дорожку.
✔️ Кнопки и двери теперь при активации тоже звучат.
✔️ Внутри помещений добавил эффект реверберации.
Если резюмировать: работа со звуком — отдельная и очень большая тема. Сложность не столько в технической реализации, сколько в умении подобрать каждый звук так, чтобы они работали вместе, создавая атмосферу, а не разрушая её.
Я потратил около часа только на то, чтобы «спиратить» несколько звуков для учебного задания. Можно представить, насколько это затратная часть в реальном проекте. Профессия саунд-дизайнера явно появилась не просто так.
📽 P.S. Видео смотреть, разумеется, со звуком!
Главу прошёл наполовину. На данный момент разбирался, как подгружать звуковые файлы в проект и делать так, чтобы они воспроизводились в игре.
✔️ Поместил два фоновых источника музыки в сцену.
(Можете не верить, но громкоговоритель я рисовал сам.)
✔️ Персонажу добавил звук ходьбы и прыжка — пришлось увеличить скорость передвижения и настроить анимации, чтобы ноги попадали в дорожку.
✔️ Кнопки и двери теперь при активации тоже звучат.
✔️ Внутри помещений добавил эффект реверберации.
Если резюмировать: работа со звуком — отдельная и очень большая тема. Сложность не столько в технической реализации, сколько в умении подобрать каждый звук так, чтобы они работали вместе, создавая атмосферу, а не разрушая её.
Я потратил около часа только на то, чтобы «спиратить» несколько звуков для учебного задания. Можно представить, насколько это затратная часть в реальном проекте. Профессия саунд-дизайнера явно появилась не просто так.
📽 P.S. Видео смотреть, разумеется, со звуком!
❤🔥3👍3
Media is too big
VIEW IN TELEGRAM
Закончил Главу 10: «Звуковые эффекты и музыка»
✔️ Добавил всплывающее окно управления звуком — подобное я уже делал раньше, а теперь закрепил материал.
В этом окне можно регулировать громкость звуков и музыки, а также переключать фоновую музыку.
✔️ Добавил звуки нажатия кнопок в интерфейсе — мелочь, а приятно.
✔️ Перевёл музыку из объекта в 3D-сцене в фоновое 2D-звучание.
✔️ Реализовал плавное переключение треков фоновой музыки — что-то вроде примитивного кроссфейда.
✔️ Агитка группировки “Долг” теперь звучит не из громкоговорителя, а из приёмника, который я на коленке собрал в Blender.
Впереди последние две главы.
✔️ Добавил всплывающее окно управления звуком — подобное я уже делал раньше, а теперь закрепил материал.
В этом окне можно регулировать громкость звуков и музыки, а также переключать фоновую музыку.
✔️ Добавил звуки нажатия кнопок в интерфейсе — мелочь, а приятно.
✔️ Перевёл музыку из объекта в 3D-сцене в фоновое 2D-звучание.
✔️ Реализовал плавное переключение треков фоновой музыки — что-то вроде примитивного кроссфейда.
✔️ Агитка группировки “Долг” теперь звучит не из громкоговорителя, а из приёмника, который я на коленке собрал в Blender.
Впереди последние две главы.
❤🔥2👏2🔥1
Media is too big
VIEW IN TELEGRAM
Глава 11. «Объединение фрагментов в готовую игру»
Прошёл половину главы. Технически — ничего нового: все инструменты уже встречались ранее. Но это совсем не проблема — повторение — мать учения.
Более предметно:
✔️ Переделана камера.
Игра внезапно сменила жанр на изометрическую RPG :)
✔️ Изменено управление.
Теперь перемещение персонажа реализовано через клик по локации, куда нужно бежать. Раньше использовались клавиши WASD.
✔️ Обновлён интерфейс.
Исправлено отображение инвентаря и HP. Теперь интерфейс вызывается по отдельной кнопке и реализован через Canvas (как и меню настроек звука).
Раньше иконки предметов отрисовывались с помощью OnGUI() — устаревший и примитивный способ.
✔️ Возвращение грибочка.
В игру добавлен наш старый знакомый. Его снаряды пока просто уменьшают HP — ни на что, кроме цифр, это не влияет.
⸻
P.S.
Начинаю потихоньку думать, чем заняться после завершения книги. Есть несколько разрозненных идей — пора оформлять их в конкретный план.
Прошёл половину главы. Технически — ничего нового: все инструменты уже встречались ранее. Но это совсем не проблема — повторение — мать учения.
Более предметно:
✔️ Переделана камера.
Игра внезапно сменила жанр на изометрическую RPG :)
✔️ Изменено управление.
Теперь перемещение персонажа реализовано через клик по локации, куда нужно бежать. Раньше использовались клавиши WASD.
✔️ Обновлён интерфейс.
Исправлено отображение инвентаря и HP. Теперь интерфейс вызывается по отдельной кнопке и реализован через Canvas (как и меню настроек звука).
Раньше иконки предметов отрисовывались с помощью OnGUI() — устаревший и примитивный способ.
✔️ Возвращение грибочка.
В игру добавлен наш старый знакомый. Его снаряды пока просто уменьшают HP — ни на что, кроме цифр, это не влияет.
⸻
P.S.
Начинаю потихоньку думать, чем заняться после завершения книги. Есть несколько разрозненных идей — пора оформлять их в конкретный план.
🔥4👌3⚡2
Media is too big
VIEW IN TELEGRAM
Завершена Глава 11: «Объединение фрагментов в готовую игру»
✔️ В этой главе были добавлены новые уровни и возможность их прохождения. Уровень считается завершённым, если игрок зашёл в зелёную зону-триггер. После завершения уровня автоматически загружается следующий. Если это последний уровень, появляется соответствующее сообщение.
✔️ Также реализован механизм сохранения и загрузки игры. При сохранении игры сохраняются HP игрока, его инвентарь и текущий уровень. При загрузке игры запускается соответствующий уровень, восстанавливаются HP и инвентарь игрока.
✔️ В этой главе были добавлены новые уровни и возможность их прохождения. Уровень считается завершённым, если игрок зашёл в зелёную зону-триггер. После завершения уровня автоматически загружается следующий. Если это последний уровень, появляется соответствующее сообщение.
✔️ Также реализован механизм сохранения и загрузки игры. При сохранении игры сохраняются HP игрока, его инвентарь и текущий уровень. При загрузке игры запускается соответствующий уровень, восстанавливаются HP и инвентарь игрока.
❤🔥5👍1🔥1
POV.exe
652 KB
Закончил изучать руководство «Unity в действии».
Вся последняя глава посвящена процессу сборки игры, чтобы можно было полноценно играть за пределами редактора Unity. Собрал “POV.exe” — прикрепляю его к посту. Можно попробовать, если интересно. Запускайте под Windows.
Не скажу, что книга даёт глубокое понимание Unity, но для того, чтобы начать — вполне подойдёт. Лет 6-7 назад я уже пытался погрузиться в мир геймдева и начинал с этого руководства. Тогда меня хватило всего на пару недель, после чего я забросил эту авантюру. Сейчас для меня было важно не повторить тот опыт и пройти учебник до конца.
Теперь можно двигаться дальше.
Вся последняя глава посвящена процессу сборки игры, чтобы можно было полноценно играть за пределами редактора Unity. Собрал “POV.exe” — прикрепляю его к посту. Можно попробовать, если интересно. Запускайте под Windows.
Не скажу, что книга даёт глубокое понимание Unity, но для того, чтобы начать — вполне подойдёт. Лет 6-7 назад я уже пытался погрузиться в мир геймдева и начинал с этого руководства. Тогда меня хватило всего на пару недель, после чего я забросил эту авантюру. Сейчас для меня было важно не повторить тот опыт и пройти учебник до конца.
Теперь можно двигаться дальше.
🔥4❤1👍1
Промежуточных итогов пост
Учебник по Unity я осилил — и это хорошо. Но это лишь немного приблизило меня к заветной мечте — называться инди-разработчиком. Работа над настоящей игрой куда эффективнее в плане получения опыта. Особенно если удаётся успешно её завершить.
Первый проект, над которым я планирую трудиться — аркадный авиасимулятор.
Ближайшая цель — создать простой прототип с основными механиками игры.
Рабочее название: Sky Delivery.
#SkyDelivery | Подробнее о проекте
Учебник по Unity я осилил — и это хорошо. Но это лишь немного приблизило меня к заветной мечте — называться инди-разработчиком. Работа над настоящей игрой куда эффективнее в плане получения опыта. Особенно если удаётся успешно её завершить.
Первый проект, над которым я планирую трудиться — аркадный авиасимулятор.
Ближайшая цель — создать простой прототип с основными механиками игры.
Рабочее название: Sky Delivery.
#SkyDelivery | Подробнее о проекте
❤6❤🔥3🔥3
Media is too big
VIEW IN TELEGRAM
Оно летает!
Примерно полторы недели я потратил на то, чтобы самолёт взлетел. Подавляющая часть трудов ушла на реализацию того, что приблизительно напоминает аэродинамику.
За это время мой словарный запас немного пополнился: «тангаж, рысканье, угол атаки, срыв потока» — это всё я так или иначе постарался отразить в моём прототипе.
Также я немного повозился с камерой, чтобы ощущалась динамика, и состряпал простой рельеф для того, чтобы во время испытательных полётов не теряться в пространстве.
Подробнее про каждый из аспектов напишу отдельно, а пока предлагаю насладиться историческими кадрами первых виражей!
#SkyDelivery | Подробнее о проекте
Примерно полторы недели я потратил на то, чтобы самолёт взлетел. Подавляющая часть трудов ушла на реализацию того, что приблизительно напоминает аэродинамику.
За это время мой словарный запас немного пополнился: «тангаж, рысканье, угол атаки, срыв потока» — это всё я так или иначе постарался отразить в моём прототипе.
Также я немного повозился с камерой, чтобы ощущалась динамика, и состряпал простой рельеф для того, чтобы во время испытательных полётов не теряться в пространстве.
Подробнее про каждый из аспектов напишу отдельно, а пока предлагаю насладиться историческими кадрами первых виражей!
#SkyDelivery | Подробнее о проекте
🔥7❤3👏3