Бесплатный курс Введение в разработку игр от Гарвардского университета (англ.)

https://online-learning.harvard.edu/course/cs50s-introduction-game-development?delta=0До 31 декабря 2020 г. в открытом доступе онлайн курс «CS50’s Introduction to Game Development».

Освоить основы разработки игр можно за 12 недель, тратя по 6-9 часов в неделю.

Learn about the development of 2D and 3D interactive games in this hands-on course, as you explore the design of games such as Super Mario Bros., Pokémon, Angry Birds, and more.
Узнайте о разработке интерактивных 2D и 3D-игр в этом практическом курсе, а также познакомьтесь с дизайном таких игр, как Super Mario Bros., Pokémon, Angry Birds и других.

Анимация снежинок в Unity

Unity с нуля: изучаем основы анимации в Unity на примере проекта анимированных снежинок.

В 1-й части урока:

— создаём проект
— подготавливаем сцену: выбираем режим 2D, подбираем цвет фона
— загружаем в проект графические файлы с изображениями снежинок
— преобразуем картинки в спрайты
— размещаем спрайты на сцене
— создаём анимацию для одного спрайта с использованием инструментов Animation

Архив с картинками можно загрузить здесь.

Уроки по созданию анимации снегопада в Scratch.

Урок «Как установить Unity 2019» здесь.

Часть 2:

— рассматриваем результат анимации четырех спрайтов снежинок и разбираемся в том, чем они отличаются и почему появляются в разное время;
— учимся дублировать объекты на сцене с помощью инструмента в окне Hierarchy
— делаем так, чтобы дубли снежинок летели из разных начальных точек на сцене с помощью пустого родительского объекта (Empty Object)
— делаем еще больше снежинок!

Файл unitypackage с выполненной первой частью урока можно скачать здесь.

Внимание: перед импортом файла необходимо распаковать архив!

Урок о том, как импортировать файл unitypackage.

Часть 3:

— анализируем проблему смещения объектов в процессе анимации относительно точки начала координат (родительского объекта);
— настраиваем сцену так, чтобы на ней не отображался горизонт (Skybox);
— настраиваем результирующий размер окна воспроизведения анимации Game;
— создаем анимацию относительно центра;
— используем созданную анимацию неоднократно для всех объектов на сцене;
— учимся управлять скоростью воспроизведения анимации с помощью Animator Controller;
— делаем еще больше снежинок и других объектов!

Часть 4:

— создаем анимации нового вида: вращение и смещение;
— смешиваем несколько анимаций и получаем новые эффекты;
— делаем свои анимации!

Рисование по экрану в Windows

Занимаясь подготовкой новых видео-уроков, анализируя всевозможные способы удалённого интерактивного взаимодействия с учениками, осваивая новую (пока) для себя программу захвата видео с экрана, в которой нет так необходимой для работы функции рисования по экрану, неожиданно обнаружила такую возможность в самом Windows. Называется эта опция Рисунок на фрагменте экрана.

Рисуем на экране в Windows
Рисуем на экране в Windows

 

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

Рисуем на экране в Windows - пример
Рисуем на экране в Windows — пример

Может быть, это не такое уж и открытие ;) Но понравилось, главным образом, то, что рисовать мышкой очень даже удобно.

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

Для наглядности — парочка скриншотов.

UPD. Не удержалась и открыла справку: и да, можно даже использовать «горячие» клавиши с логотипом Windows + Shift + S для открытия компонента «Ножницы», а затем перетащить указатель мыши через область, которую следует захватить. Вырезанная область будет сохранена в буфере обмена.»

Рисуем на экране в Windows - справка
Рисуем на экране в Windows — справка

… осваиваем дальше :)

Загрузка сцен в Unity

Как сделать многоуровневую игру в Unity? Или игру, в которой игрок может перемещаться (телепортировать) между локациями?

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

Шаг 1. Создать сцены для каждого уровня и пр. составляющих игры. Продумать понятную и гибкую систему идентификации файлов сцен

Например, сцены могут иметь следующие имена:

  • StartScene – стартовая сцена игры. Это может быть сцена, в которой игрок знакомится с правилами игры, может изменить некоторые начальные настройки, выбрать персонажа и т.д.
  • Layer1, Layer2, Layer3, … — сцены, соответствующие 1-му, 2-му, 3-му и т.д. уровням игры.
  • EndGame – конечная сцена, которая загружается в финале игры.

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

Например, следующий уровень может загружаться при следующих возможных условиях:

а) игрок набрал определённое количество баллов. Это условие имеет смысл проверять каждый кадр в методе Update();

б) игрок добрался до определенного места в игре. Например, пришёл к заданной двери. Соответственно на объекте двери необходимо поставить коллайдер, и при входе в этот коллайдер должна будет выполняться загрузка сцены;

в) в интерфейсе игры имеются кнопки загрузки разных «уровней». Такая ситуация возможна в нескольких случаях:

Family Island - меню выбора островов для путешествий и приключений
Family Island — меню выбора островов для путешествий и приключений

Когда речь идёт не столько об уровнях игры, сколько о разных локациях, между которыми игрок имеет возможность перемещаться. Пример такой игры – Family Island – там игрок может путешествовать на различные острова.

 

Candy Crush Saga - карта игры с выбором уровней
Candy Crush Saga — карта игры с выбором уровней

Второй вариант геймплея с аналогичным функционалом – наличие в реализации отдельной сцены с картой игры. Кликая по определённым зонам-кнопкам этой игры, игрок загружает соответствующий уровень (при условии, что этот уровень для него открыт). Наиболее популярный пример такой игры – Candy Crush Saga и ей подобные.

г) другие варианты или комбинации перечисленных вариантов. Например, для варианта а) при достижении игроков определённых результатов новый уровень может загружаться не сразу, автоматически, а после нажатия игроком на появляющуюся кнопку наподобие «Следующий уровень». Аналогично – для варианта б) – входим в коллайдер двери и видим кнопку «Войти» и т.п.

 

 

Шаг 3. Написание функции (метода) загрузки соответствующей сцены.

Для загрузки сцен в движке Unity предусмотрен метод LoadScene (…) из класса SceneManager пространства имён UnityEngine.SceneManagement.

Это значит, что в классе (скрипте), в котором будет выполняться загрузка сцены с помощью указанного метода, должна быть прописана директива:

using UnityEngine.SceneManagement;

Далее, при вызове метода следует указывать и имя класса:

SceneManager.LoadScene (…);

У данного метода есть несколько перегрузок (вариантов вызова с различными наборами параметров), подробнее о которых можно почитать в официальной документации Unity.

Наиболее простые способы вызова метода следующие.

Вариант 1 – с явным указанием имени загружаемой сцены в качестве параметра. Например:

SceneManager.LoadScene («Layer2»);

Вариант 2 – с указанием индекса загружаемой сцены в качестве параметра. Например:

SceneManager.LoadScene (2);

Индекс – это число-порядковый номер сцены, который автоматически присваивается в окне настроек Build Settings:

Окно настроек Build Settings Unity
Окно настроек Build Settings

Один из возможных вариантов скрипта следующий:


using UnityEngine;
using UnityEngine.SceneManagement;

public class Teleport : MonoBehaviour {
   public int n_scene = 1;  // индекс загружаемой сцены по умолчанию, который в редакторе можно изменить

   void OnTriggerEnter(Collider col)  // вход в коллайдер-триггер объекта-двери или телепорта
   {
      if (col.tag.Equals("Player"))        // если это объект с тегом "Player"
      {
         SceneManager.LoadScene(n_scene);  // загружаем сцену с заданным индексом
      }
   }
}

 

Этот скрипт должен быть на объектах-дверях или телепортах. На них же должен стоять коллайдер-триггер.

Шаг 4. Заполнить раздел Scenes In Build в окне настроек Build Settings, внеся туда все сцены, которые необходимо будет загружать

Пример этого окна представлен выше. Чтобы его вызвать, используется главное меню, пункты File ->  Build Settings...

Меню File -> Build Settings... Unity
Меню File -> Build Settings… Unity

Шаг 5. Не забыть прикрепить скрипт(ы) к соответствующим игровым объектам на сцене

Как это сделать, знает любой новичок ;)

 

Как сделать выход из игры в Unity?

Алгоритм прост.

Шаг 1. Создать в интерфейсе игры кнопку-крестик, клик по которой должен закрывать игру.

Дополнительно, если это необходимо, можно также продумать нажатие определённой клавиши (для десктопных игр).

Шаг 2. Создать скрипт с вызовом функции UnityEngine, закрывающей приложение

Это функция (метод) Quit() из класса Application. Подробнее о нём можно узнать из официальной документации.

Там же дан удачный пример реализации скрипта закрытия приложения по нажатию на клавишу Esc:


using UnityEngine;
using System.Collections;

// Quits the player when the user hits escape

public class ExampleClass : MonoBehaviour
{
   void Update()
   {
      if (Input.GetKey("escape"))  // если нажата клавиша Esc (Escape)
      {
         Application.Quit();    // закрыть приложение
      }
   }
}

 

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

Шаг 3. Прикрепить скрипт к необходимому объекту.

В случае использования кнопки-крестика, назначить вызов функции по клику по этой кнопке.

Как в Unity настроить спрайты в стиле пиксель арт?

Минимальный необходимый набор шагов следующий.

Шаг 1. Импортировать в проект графический файл со спрайтом

Как правило, это не просто одна картинка, а несколько. Так называемый атлас или sprite sheet (спрайт шит).

Для этого нам нужен графический файл, который можно просто перетащить в папку Sprites (если её нет, создать) проекта в окно Project.

Шаг 2. Выделить импортированное изображение в окне Project и перейти к настройкам в окне Inspector.

Шаг 3. Если графический файл при импорте автоматически не сконвертировался в спрайт, выбрать для свойства Texture type значение Sprite (2D and UI).

Texture type - Sprite (2D and UI)
Texture type — Sprite (2D and UI)

Шаг 4. Если загружен атлас, задать свойству Sprite Mode значение Multiple.

Sprite Mode - Multiple
Sprite Mode — Multiple

Возможно при этом потребуется отрегулировать Pixels Per Unit (количество пикселей на юнит). Чем больше это число, тем меньшего размера на сцене будет спрайт. И наоборот. Это значение можно регулировать и после того, как спрайт будет помещен на сцену.

Шаг 5. Нажать на кнопку Sprite Editor и нарезать спрайты в атласе.

Шаг 6. Для установки не размытого, а четкого отображения спрайта в стиле pixel art выбрать свойству Filter Mode значение Point (no filter).

Filter Mode - Point (no filter)
Filter Mode — Point (no filter)

1 — Первое знакомство с интерфейсом Unity

Видео по установке Unity и активации лицензии здесь.

В уроке мы:

Запускаем Unity Hub.

Узнаём, как создать проект в разных версиях Unity.

При создании нового проекта в Unity важно:

1) задать корректное имя проекта

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

Создаём проект и изучаем основные элементы интерфейса Unity:

— заголовок окна

— главное меню

— инструменты для работы с объектами сцены

— окно сцены (Scene)

— окно Game

— кнопку запуска проекта на выполнение и останова.

Учимся переразмещать рабочие окна среды Unity для большего удобства работы с проектом.

Узнаём об окнах Hierarchy и Project.

Знакомимся с системой папок проекта Unity на рабочем диске. Самая главная папка – Assets. В ней хранится всё, что относится к игровому проекту. Все файлы папки Assets доступны в окне Project редактора Unity.

 

Цикл уроков создан при поддержке компании Melsoft games.

2 — Навигация (перемещение) по сцене в редакторе Unity

В этом уроке учимся осуществлять навигацию (перемещаться) по сцене разными способами:

— крутим колёсико мыши для приближения и удаления от объектов

— зажимаем колесико мыши и двигаем мышь по сцене, чтобы посмотреть на объекты с разных сторон

— зажимаем праву кнопку мыши и двигаем её, чтобы повернуться, посмотреть на объекты с другой стороны

— используем инструмент Hand tool в качестве альтернативы зажатому колёсику мыши

— быстрое перемещение по сцене при зажатой правой кнопке мыши и использовании стандартны клавиш игрового управления WASD

Что делать, если неудачная навигация по сцене привела к тому, что объекты куда-то сместились и исчезли из поля зрения? Два варианта решения проблемы:

1) двойной клик мыши по любому объекту в окне Hierarchy

2) использование кнопки Default в наборе инструментов Layout для размещения окон редактора.

Цикл уроков создан при поддержке компании Melsoft games.