Как стать автором
Обновить
123.37

Unity *

Инструмент разработки 2D/3D-игр

Сначала показывать
Порог рейтинга
Уровень сложности

Конкурс игр с призовым фондом в $100000

Время на прочтение2 мин
Количество просмотров5.7K

Компания Unity и Microsoft приглашают разработчиков к участию в конкурсе по созданию приложений для Windows Store и Windows Phone Marketplace c использованием Unity3d. Конкурс заканчивается 30 сентября. Регистрация в конкурсе производится по адресу unity3d.com/contest/windows/new
Читать дальше →

Dependency Injection в Unity3d

Время на прочтение7 мин
Количество просмотров51K
Добрый день, уважаемые коллеги!

Так получилось, что к моменту начала работы с Unity3D, у меня был четырехлетний опыт разработки на .NET. Три года из этих четырех я успешно применял dependency injection в нескольких крупных промышленных проектах. Этот опыт оказался для меня настолько позитивен, что я постарался привнести его и в геймдев.
Сейчас уже могу сказать, что затеял это не зря. Дочитав до конца, вы увидите пример того, как dependency injection позволяет сделать код читабельнее и проще, но в то же время гибче, а заодно еще и более пригодным для юнит-тестирования. Даже если вы впервые слышите словосочетание dependency injection — ничего страшного. Не проходите мимо! Эта статья задумана как ознакомительная, без погружения в тонкие материи.
Читать дальше

Особенности игрового рынка в Китае — часть 3

Время на прочтение3 мин
Количество просмотров13K
В конце июня мне случилось сопровождать вице-президента Азии в Unity Technologies Джона Гудейла в его поездке в Петербург. Я знал о нашем подразделении Unity Games China и о свежеанонсированной поддержке Tizen, поэтому сделал все чтобы впечатлить Джона проектами русских разработчиков и вообще атмосферой российского игропрома, надеялся настроить плодотворное общение с нашими Азиатскими офисами.

Я тогда сильно удивился — буквально у всех вокруг, больших и маленьких, уже был опыт работы с Китаем, но не было хоть сколько-нибудь положительных результатов.

«Удается договориться максимум на 5% от доходов, но в итоге непонятно, как забрать даже тот обещанный мизер, не выходит получить аналитику, данные о пользователях, по сути, любую информацию о своем же приложении», — примерная мысль наших собеседников. В худшем случае в одном из сотен магазинов приложений появлялось приложение-клон, а на том конце переставали отвечать на звонки и письма.

Китай - это как Евросоюз, но в Азии...

История создания стартапа по разработке мобильных игр

Время на прочтение8 мин
Количество просмотров66K
В мае прошлого года я решил создать стартап по разработке социальных и мобильных игр. Спустя год, можно сказать, что авантюра удалась и немного рассказать о полученном опыте.

image

Читать дальше →

Истории

История запуска игры в социальных сетях

Время на прочтение5 мин
Количество просмотров34K

Под конец весны 2013 года, я описывал историю плохого старта на Google Play. Пока с iOS заминки, решили закинуть игру в ВК и ОК. В статье я хочу поделиться особенностями запуска приложения под соц-сети, и расскажу про возникшие проблемы до и после релиза.
Читать дальше →

Реализация системы динамически загружаемого контента (DLC) для мобильной игры в Unity 3D

Время на прочтение7 мин
Количество просмотров39K
Недавно, для одной игры на Unity 3D, которую мы разрабатывали, возникла необходимость добавить DLC систему. Хотя это оказалось далеко не так просто, как казалось в начале, мы успешно справились с возникшими проблемами и игра ушла в gold. В этой статье я хочу изложить наш вариант реализации DLC, рассказать о возникших проблемах и как мы их решили.

Постановка задачи


В игре есть магазин, где игрок покупает вещи за игровую или реальную валюту. В магазине – более 200 вещей. Когда игрок заходит в игру, ему доступно 20 вещей в магазине. Если есть интернет, игра без ведома юзера опрашивает сервер на предмет наличия DLC и, если таковое имеется, скачивает в бэкграунде. Когда игрок повторно зайдет в магазин, он увидит все новые вещи из DLC.
Еще есть набор локаций. Каждая локация имеет набор текстур и .asset файлов. Новые локации также должны добавляться через DLC.
Загрузка ресурсов из DLC должна быть синхронной.
Платформа: iOS (iPhone 3GS и выше.) и Android (Samsung Galaxy S и выше).
Читать дальше →

Особенности игрового рынка в Китае — часть 2

Время на прочтение3 мин
Количество просмотров9.6K
Многие инвесторы отказываются инвестировать в игровые стартапы из-за характера рынка игр — никогда не уверен, взлетит игра или нет, заработаешь ли ты, вернешь инвестиции или уйдешь в минус. «Индустрия игр завязана на хитах, это не бизнес, это удача», — часто приходится слышать от ИТ-инвесторов и бизнес-ангелов.

Действительно, рынок игр, а точнее, рынок мобильных казуальных игр развивается стремительно и быстро, появляются новые типы геймеров, меняются потребности и желания игроков, двигаются тренды игровой механики. И все же у опытных разработчиков и паблишеров получается понимать рынок, своего пользователя, выпускать новые всеми любимые хиты (маркетинговые бюджеты… маркетинговые бюджеты… ну да, не без них…). Но это на Западе…
Читать дальше →

Особенности игрового рынка в Китае — часть 1

Время на прочтение2 мин
Количество просмотров22K
Китай невероятно похож на Россию — пришли мы к выводу с Алленом Фу, руководителем подразделения Unity Technologies в Китае, после долгой беседы. Оказывается за 18 месяцев работы китайского офиса Юнити, Аллен встретился с теми же самыми культурными, историческими, национальными особенностями ведения бизнеса, с которыми команда Юнити встречается в России.

«Россия в сердце китайцев является частью общей истории. Я думаю наши страны должны намного больше общаться», — размышляет Синь Чжан, отвечающий за техническую поддержку пользователей Юнити в Китае. Он очень удивлен, почему Юнити до сих пор не открыла офис в России и не предоставляет техническую поддержку пользователей на русском языке…

Впрочем, приоритеты в играх у России и Китая отличаются очень сильно.


Читать дальше →

Получи BlackBerry Z10 и Unity BlackBerry 10 Pro add-on бесплатно

Время на прочтение1 мин
Количество просмотров8.7K
Unity и BlackBerry объявили о новой акции для владельцев Pro версии Unity.

Если до 20 ноября вашу Unity игру одобрят в BlackBerry App World то вы абсолютно бесплатно получите Unity BlackBerry 10 Pro add-on а также телефон BlackBerry Z10, обзоры которого неоднократно появлялись на страницах Хабра (например тут, тут и тут)
Читать дальше →

Unity3D и MySQL

Время на прочтение2 мин
Количество просмотров22K
Наверное каждый, кто делал игру для социальной сети или просто онлайн игру сталкивался с проблемой подключения и сохранения данных в базу данных. В этой статье я постараюсь подробно описать как установить подключение и передать данные в базу данных MySQL с помощью PHP.

Итак, приступим, для начала создайте в Unity C# скрипт, назовите его MysqlConnect и внесите в него следующий код:

using UnityEngine;
using System.Collections;

public class MysqlConnect : MonoBehaviour {

	private string username = ""; //Переменная для хранения имени
	private string pswd = ""; //Переменная для хранения пароля
	private string email = ""; //Переменная для хранения почтового ящика
	private string url = "http://www.localhost.ru/habr/connect.php"; //Переменная для хранения адреса
	
	//Создание метода, отвечающего за подключение и передачу данных
	void Connect()
	{
		WWWForm form = new WWWForm(); //Создаём новую форму 
		//Добавляем в форму новые данные
		form.AddField("username", username);
		form.AddField("password", pswd);
		form.AddField("email", email);
		//Создаём новое подключение
		WWW connect = new WWW(url, form);
		//Если удалось установить подключение
		if (connect.isDone)
		{
			//Выводим в консоль ответ сервера
			Debug.Log(connect.text);
		}
		//Если при подключении возникла ошибка
		else if (connect.error == null)
		{
			//Выводим в консоль текст Error
			Debug.Log("Error");
		}
	}
	
	//Создаём метод OnGUI()
	void OnGUI()
	{
		//Создаём текстовое поле для ввода имени пользователя
		username = GUI.TextField(new Rect(Screen.width/2-100, Screen.height/2-100, 200, 20), username, 12);
		//Создаём текстовое поле для ввода пароля
		pswd = GUI.TextField(new Rect(Screen.width/2-100, Screen.height/2-75, 200, 20), pswd, 12);
		//Создаём текстовое поле для ввода почтового ящика
		email = GUI.TextField(new Rect(Screen.width/2-100, Screen.height/2-50, 200, 20), email, 50);
		//Создаём кнопку для произведения подключения
		if (GUI.Button(new Rect(Screen.width/2-100, Screen.height/2-25, 200, 20), "Connect"))
		{
			Connect();
		}
	}
}


В данном скрипте производится запрос к PHP скрипту и ему передаются данные, введённые пользователем.
Читать дальше →

Бесконечные неповторяющиеся текстуры с помощью мозаики Вана

Время на прочтение4 мин
Количество просмотров49K


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

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

Как же быть? Есть один трюк — непериодические мозаики. Они лишены проблемы повторяемости и достаточно просты в реализации. Одну из таких мозаик придумал китайский математик Ван Хао в 1961 году. Элементы этой мозаики можно представить в виде прямоугольников с разноцветными гранями. Но чтобы понять принцип её работы, надо сначала разобраться в классическом методе заполнения площадей текстурами.
А классический метод таков...

Брезенхем и У на страже диагоналей

Время на прочтение4 мин
Количество просмотров98K


На что вы сейчас смотрите? Если вы не из параллельной вселенной, где все сидят за векторными мониторами, то перед вами растровое изображение. Поглядите на эту полоску: /. Если придвинуться поближе к монитору, то можно увидеть пиксельные ступеньки, которые пытаются притвориться векторной линией. Для этой цели существует целая куча всевозможных алгоритмов растеризации, но я бы хотел рассказать об алгоритме Брезенхема и алгоритме У, которые находят приближение векторного отрезка в растровых координатах.

С проблемой растеризации мне довелось столкнуться во время работы над процедурным генератором планов зданий. Мне нужно было представить стены помещения в виде ячеек двумерного массива. Похожие задачи могут встретиться в физических расчётах, алгоритмах поиска пути или расчёте освещения, если используется разбиение пространства. Кто бы мог подумать, что знакомство с алгоритмами растеризации однажды может пригодиться?
Принцип работы алгоритма Брезенхема очень простой...

Ближайшие события

Каверзные кватернионы

Время на прочтение3 мин
Количество просмотров187K


Отгадайте загадку: в четырёх измерениях сидит и комплексными числами воротит?

Подсказка: это вектор со скаляром. И вещественная матрица. И придумал его Гамильтон.

Не помогло? Ну что вы, это же элементарно! Это кватернион! Кватернионы используют для записи вращений в робототехнике, игровых движках, ПО для моделирования и вообще везде, где не нужны проблемы с углами Эйлера или матрицами. Если вас испугала путаница выше с разными представлениями кватерниона, то можете быть спокойны. Кватернионы очень просты в использовании и их внутреннее строение может понадобиться только в очень редких случаях, где нужна тонкая оптимизация. В остальное время с помощью кватернионов можно крутить всё что угодно и как угодно, и оно будет плавно и красиво интерполироваться без шарнирных замков.
Что же такое кватернион?

Кручу-верчу, запутать хочу: углы Эйлера и Gimbal lock

Время на прочтение3 мин
Количество просмотров129K


Выставите любой палец левой руки вперед. Давайте, не стесняйтесь, никто не будет над вами смеяться. Это нужно для важного эксперимента. Выставили? Теперь представьте что вы — это ваш палец (ну и бред). Повернитесь под прямым углом направо, затем наверх, и наконец налево. Где вы оказались? Правильно, в том же месте, но уже на спине.

С некоторой натяжкой именно так работает вращение с помощью углов Эйлера. Немного непредсказуемо и неудобно, не правда ли? Углы Эйлера имеют несколько недостатков, но есть одно особенно нехорошее свойство из-за которого вы не захотите с ними связываться. Его имя — Gimbal lock.

В русском языке gimbal lock называют по-разному: шарнирный замок, блокировка осей, складывание рамок. К сожалению, по запросам в поисковике с такими ключевыми словами выдаётся много мусора, а статья в Википедии оставляет желать лучшего, поэтому я сам расскажу вам об этом феномене и предложу как с ним бороться.

Внимание! Заходя под кат вы подвергаетесь риску поломать голову.
Ха! Я ничего не боюсь! Где этот gimbal lock?

Real-time дебаг Android и iOS приложений на Unity

Время на прочтение6 мин
Количество просмотров20K
Когда разработка проекта идёт на компьютере, проблемы просмотра лога не встаёт. Но когда начинаешь разрабатывать на планшете, то всё становится гораздо печальнее. Разработчики движка добавили много разных полезных вещей в профайлер, но к сожалению забыли о простой консоли, чтобы переключившись на её вкладку разработчик мог смотреть сообщения от своей игры и отправлять какие-то консольные команды прямо с компьютера на планшет.
Это упущение мы сейчас и будем исправлять.
Читать дальше →

Spatial hashing для самых маленьких

Время на прочтение5 мин
Количество просмотров41K


Spatial hashing это простая техника, которая используется в базах данных, физических и графических движках, симуляциях частиц и вообще везде, где нужно быстро что-то найти. Если в кратце, то суть в том, что мы разбиваем пространство с объектами на ячейки и складываем в них объекты. Затем вместо поиска по значению очень быстро ищем по хэшу.

Предположим, что у вас есть несколько объектов и вам нужно узнать нет ли между ними столкновений. Простейшим решением будет посчитать расстояние от каждого объекта до всех остальных объектов. Однако, при таком подходе количество необходимых вычислений растёт слишком быстро. Если на десятке объектов приходится делать сотню проверок, то на сотне объектов выходит уже десяток тысяч проверок. Это и есть печально известная квадратичная сложность алгоритма.
Можно улучшить ситуацию, если...

Оптимизируем Boid'ов на Unity

Время на прочтение9 мин
Количество просмотров21K


Знаете ли вы, что кузнечики, будучи брошенными в ведёрко, начинают маршировать по кругу как на картинке выше? Правда сверху не кузнечики, а Boids — модель коллективного поведения птичек, пчёлок, рыбок и другой живности. Несмотря на простоту модели, она демонстрирует эмерджентные свойства: боиды собираются в кучу, летают стаями по кругу, нападают на людей.

Это вторая часть статьи, посвящённая различным хитростям оптимизации Unity и C#, которые увеличивают производительность алгоритма из первой части в пару десятков раз.
Хитрости под катом

Как создать простую Tower Defense игру на Unity3D, часть вторая

Время на прочтение9 мин
Количество просмотров70K
Здравствуйте! Весьма надолго у меня растянулась подготовка материала (жизнь давала изрядных пинков под зад), но вот я справился и готов поделиться продолжением первой статьи с вами.

Часть первая


Неудачный тест физики

В этой части мы:
— оптимизируем код из предыдущей статьи;
— создадим объект «база» и научим её чиниться время от времени;
— добавим пушкам патроны и перезарядку;
— избавимся от «неудобной» переменной gv;

А в конце статьи вас ожидает маленький бонус :)

Всем заинтересовавшимся — добро пожаловать под долгожданный кат!
Читать дальше →

Boid'ы, птички и Unity3D

Время на прочтение10 мин
Количество просмотров49K


Вторая часть: Оптимизируем Boid'ов на Unity

Задумывались ли вы когда-нибудь о то, почему птицы летая большими стаями никогда не сталкиваются и не коллапсируют в огромный галдящий перьевой ком? Хм, если подумать, это было бы круто. В любом случае, однажды в 1986 нашёлся человек по имени Крейг Рейнольдс, который решил создать простую модель поведения птиц в стаях и назвал её Boids. В модели у каждого боида есть три базовых правила: Separation, Alignment и Cohesion. Первое заключается в избегании столкновения с соседями, второе заставляет лететь примерно в ту же сторону что и соседи, а третье говорит не летать в одиночку и держаться группы. Эти простые правила позволяют создать правдоподобные стаи птиц, рыб и другой живности, чем и пользуются в кино и игровой индустрии.

В статье я расскажу как можно реализовать эту модель на практике. Для разработки я использую Unity и C#, но большинство вещей верны для других движков и языков. В этом туториале я не разжёвываю основы работы с Unity, подразумевается, что вы знаете эффект комбинации Ctrl+Shift+N на сцене, умеете работать с инспектором, дублировать и двигать объекты. Если нет, то советую начать с этой статьи. Или можете просто посмотреть на картинки.
Прошу-с проследовать под кат, только после вас!