Как наладить дружеские отношения между Unity и F#?

F# — это функциональный язык программирования (но, если точнее, на самом деле, это — мультипарадигмальный язык, т.к., кроме функционального программирования, он поддерживает как императивное программирование, так и объектно-ориентированное программирование) под платформу .NET Framework. Своего рода Scala в мире JVM, только для CLRF# предоставляет много интересных возможностей, и во многих сценариях он на две головы выше своего брата C#. Пожалуй, чтобы описать все преимущества F# над C#, потребуется целая статья (кстати, хорошая идея для следующей статьи), поэтому давайте не будем останавливаться на этом вопросе сейчас. Тем более, никто не обязывает нас писать проект полностью на F#. Если в каких-то местах есть необходимость (или более выгодно) писать на C#, нам никто не запретит это сделать. Таким образом, можно использовать сильные стороны обоих языков программирования!

 

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

Другими словами, не стоит бояться писать на F# под Unity, только из-за того, что что-то может не заработать или не скомпилиться, т.к. F# официально не поддерживается. Все-таки, и C# и F# работают поверх CLR и компилируются в промежуточное представление (IL), которое и выполняется либо Mono, либо компилируется в нативный код посредством IL2CPP. Таким образом, для Unity, теоретически, абсолютно не важно, на каком языке вы будете писать.

Читать →

Несовершенство современного ПО на примере Unity

Разработка ПО в современном мире идет семимильными шагами. От релиза до релиза количество добавленых фич может составить несколько десятков (а порой счет идет и на сотни), а API измениться до неузнаваемости. И, вроде бы, в этом нет ничего плохо, но из-за количественных изменений довольно часто страдает качество. Баг-трекер забивается нерешенными задачами, частенько можно наблюдать регрессию по уже имеющемуся функционалу, а часть багов не правится по непонятным причинам, а порой и вовсе без таковых. Отправляемые баг-репорты отклоняются или ожидают минимального проекта для воспроизведения ошибки, а последний, зачастую, невозможно создать. А если все-таки удалось создать, то в ответ нередко получаешь отписку «У меня все работает».

И вишенка на торте — голосование за исправление багов. И если «ваша» проблема наберет большое количество лайков, то тогда, возможно, разработчики обратят внимание и поправят ошибку, хотя не факт. Бывают случаи, когда даже большое количество лайков не помогает. Увы (. И если баги (и то в основном критические, и то не всегда) худо-бедно правятся, то разного рода мелкие улучшения и полезности, которые могли бы сэкономить время, остаются за бортом, что не может не печалить. Само собой, вышеперечисленное относится не ко всему ПО вообще, а, скорее, это что-то типа средней температуры по палате.

Как вы уже могли догадаться, сегодня речь пойдет о нескольких мелких проблемах в Unity, вероятность исправления/улучшения которых стремится к нулю. Перечисленные ниже проблемы — это небольшая капля из того моря проблем, с которыми приходится сталкиваться ежедневно при работе с Unity. Думаю, если вы плотно общаетесь с Unity, то вам должно быть понятно, о чем идет речь. Вообще, стабильность Unity улучшается, и сейчас хотя бы можно стало работать (иногда недолго). Раньше это был просто кромешный ад из зависаний и крешей (сейчас же можно отработать день-другой, а можно встрять всего на полдня). И если на нашем относительно маленьком проекте столько проблем, трудно представить, сколько их на крупных проектах.
Читать →

Unity для новичков. Простая камера от третьего лица. Часть 1

Доброго времени суток!
Сегодня мы рассмотрим пример создания простой игровой камеры от третьего лица в Unity.

Читать →

Unity для новичков. Делаем зомби шутер. Часть 4

Введение в разработку на игровом движке Unity — практикум. Часть 4.
Это последний видеоурок из серии — завершаем проект. Улучшаем управление персонажем, добавляя движение камеры по вертикали. Создаем точки респауна зомби и генерируем их с уменьшением интервала. Заканчиваем UI: реализуем подсчет очков, используем делегат (Delegates) для обновления интерфейса, скрываем и фиксируем курсор мыши. Делаем билд игры.

Читать →

Unity для новичков. Делаем зомби шутер. Часть 3

Введение в разработку на игровом движке Unity — практикум. Часть 3.
Простое управление персонажем на основе компонента Character Controller. Работа с устройствами ввода. Что такое класс Input и оси управления и их использование для перемещения, поворота персонажа и прочих элементов управления.

Что такое Raycast и его использование на примере стрельбы. Использование информации о точке пересечения Raycast с объектом для добавления декалей и применения физической силы к игровым объектам. Добавление звуков в игру. Анимации, атака и смерть зомби.
Читать →

Unity для новичков. Делаем зомби шутер. Часть 2

Введение в разработку на игровом движке Unity — практикум. Часть 2.
Введение в работу с пользовательским интерфейсом в Unity. Как добавлять и манипулировать элементами пользовательского интерфейса, такими, как текст, изображение и кнопки. Что такое точки привязки (якоря) и точки начала координат (Pivot) элементов UI. Переход между сценами и выход из приложения по нажатию на графические кнопки.
Затрагивается работа с навигацией (поиском пути) в Unity. Запекание навигации, добавление и настройка агента.
И в заключение второго урока мы напишем небольшой скрипт поведения врагов и познакомимся с корутинами (Coroutine).
Читать →

Unity для новичков. Делаем зомби шутер. Часть 1

Введение в разработку на игровом движке Unity — практикум. Рассматривается как создать проект. Навигация в редакторе Unity и управление камерой основного вьюпорта. Как импортировать сторонние ресурсы в проект. Настройка персонажа гуманоидного типа для анимации. Базовые возможности системы анимации Mecanim. Даны примеры использования дерева смешивания и анимации по маске. Данное видео является вступительным в серии по созданию простого зомби-шутера.

Читать →

Лицевые анимации игровых персонажей

Рано или поздно каждый разработчик игр сталкивается с задачей кастомизации внешности персонажа и/или лицевыми анимациями. Согласитесь, современная игра в которой игровые персонажи говорят с закрытым ртом будет выглядеть довольно странно. И зачастую это ставит в ступор, ввиду того, что информации на данную тему очень мало, а в русском сегменте чуть меньше, чем нет совсем. Хотя, правильнее сказать, информация то есть, но совсем в другом направлении, не касательно разработки игр. Давайте рассмотрим как можно реализовать лицевые анимации для игры на движке Unity.

Читать →