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

Unity3D developer

Отправить сообщение

Unite Europe 2016: Обзор доклада “Overthrowing the MonoBehaviour tyranny in a glorious ScriptableObject revolution”

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


Недавно мы побывали в Амстердаме на конференции Unite Europe 2016, где получили массу эмоций и интересного опыта. На этой конференции было очень много увлекательных докладов по разным направлениям и различного уровня сложности. Темой одного из выступлений была “Overthrowing the MonoBehaviour tyranny in a glorious ScriptableObject revolution”, на котором Ричард Файн (https://twitter.com/superpig / https://github.com/richard-fine), специалист из Unity Technologies, подробно рассказал о ScriptableObject и на примерах показал, как он может быть применен в проекте.
Читать дальше →
Всего голосов 18: ↑16 и ↓2+14
Комментарии4

Мультиплеер в быстрых играх (Часть IV: Хэдшот! Путешествуем во времени)

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

  1. Части I, II (синглплеер с авторитарным сервером)
  2. Часть III (Появление врага)
  3. Часть IV (Хэдшот!)

Как повесить идеальный хэдшот если у тебя пинг 2 секунды? Вы узнаете в этой статье.

Текущий алгоритм работы мультиплеера


  • Сервер получает команды с клиентов и времена их отправления
  • Сервер обновляет состояние мира
  • Сервер с некоторой частотой отправляет свое состояние всем клиентам
  • Клиент отправляет команды и локально воспроизводит их результат
  • Клиент получает обновленные состояния мира и:
    • Применяет состояние от сервера
    • Заново применяет все свои команды, которые сервер не успел применить.
    • Интерполирует предыдущие состояния других игроков
  • С точки зрения игрока, есть два серьезных последствия:
    • Игрок видит себя в настоящем
    • Игрок видит других в прошлом.

Обычно это отлично работает, но это становится большой проблемой для событий, которым нужна высокая пространственно-временная точность. Например если хочется разнести врагу башку!
Читать дальше →
Всего голосов 65: ↑64 и ↓1+63
Комментарии77

Мультиплеер в быстрых играх (Часть III: появление врага)

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


  1. Части I, II (синглплеер с авторитарным сервером)
  2. Часть III (Появление врага)
  3. Часть IV (Хэдшот!)

Введение


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

В этой статье мы рассмотрим последствия одновременного подключения нескольких игроков к одному серверу.
Читать дальше →
Всего голосов 67: ↑66 и ↓1+65
Комментарии54

Мультиплеер в быстрых играх (части I, II)

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


  1. Части I, II (синглплеер с авторитарным сервером)
  2. Часть III (Появление врага)
  3. Часть IV (Хэдшот!)


Предлагаю вашему вниманию перевод статьи Fast-Paced Multiplayer (Part I): Introduction.

Разработка игры — само по себе непростое занятие. Но мультиплеерные игры создают совершенно новые проблемы, требующие разрешения. Забавно, что у наших проблем всего две причины: человеческая натура и законы физики. Законы физики привнесут проблемы из области теории относительности, а человеческая натура не даст нам доверять сообщениям с клиента.
Читать дальше →
Всего голосов 136: ↑132 и ↓4+128
Комментарии109

Apple, боль и сертификаты

Время на прочтение6 мин
Количество просмотров38K
Знакомьтесь, Боб — матёрый ios разработчик, Алиса — не менее матёрая тестировщица. Дело было вечером дело было в пятницу. Боб дофиксил багу, вроде бы протестил на своих девайсах. Затем Боб запускает уже отточенные до автоматизма команды:

git checkout develop
git merge bug_fix_#999
git checkout master && git merge develop --no-ff ....
git push ....


На пуш на сервере срабатывает jenkins/teamcity/travis, который запускает билд. В это же самое время наш Боб пишет Алисе, что скоро пойдет домой, и хочет, чтобы аппа ушла сегодня в app store на апрув, дабы выиграть лишние пару дней, так как на носу выходные, если, конечно, приложение пройдет ручное тестирование Алисы.

Приложение Боба довольно обычное: пару сотен компилируемых класс файлов, еще с десяток cocoapods зависимостей ну и кучка сторибордов — Боб ценит своё время и время коллег поэтому не пишет UI в коде. Боб знает, что его приложение с чистого старта на сервере собирается за 4 минуты для develop версии, которое идет на тест Алисе, и столько же или чуть больше для production версии. Боб также знает, что ему нужно около 10 минут, чтобы дождаться окончания полной сборки и затем сообщить Алисе, что она может приступать к тестированию. Боб человек ответственный, поэтому по истечении 10 минут после пуша проверяет статус билда, так как знает, что сервер — это отдельный параллельный мир со своими правилами, законами и странностями.

Пятница, вечер, Боба отделяет от долгожданных выходных только 10 минут, после которых передаст эстафету Алисе. Боб вбивает в сафари bobcompany.ci/dashboard, где видит красную лампочку напротив своего приложения, глаза Боба потускнели, разочарованию не было предела. Боб жмет на show more, где его встречает ошибка:

Code Sign error: No codesigning identities found: No codesigning identities (i.e. certificate and private key pairs) that match the provisioning profile specified in your build settings (“com.company.bob”) were found.


Тут нервы Боба совсем сдают:



Удастся ли Бобу решить проблему?
Всего голосов 29: ↑27 и ↓2+25
Комментарии27

Рендеринг капли с прозрачностью и отражениями на OpenGL

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

В этой статье мы рассмотрим как рендерить капли на OpenGL и расчитывать на лету нормаль для отражения и прозрачности. А так же, что такое Metaballs, баги графических чипсетов и какие трюки оптимизации можно применить для 60 FPS на мобильных девайсах.


Читать дальше →
Всего голосов 42: ↑42 и ↓0+42
Комментарии20

FLProg + nooLite

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


В первую очередь я хочу предупредить, что это не рекламный пост, я не имею никакого отношения к фирме – производителю оборудования описанного в статье и не имею никаких печенек от неё кроме предоставленного для интеграцию в программу оборудования. Это обучающий пост, который показывает, как с помощью программы FLProg управлять этим оборудованием. Естественно будет небольшой обзор имеющихся у меня блоков и моего личного отношения к этим устройствам.

Теперь небольшая предыстория. Один из пользователей программы обратился в фирму «Ноотехника» с предложением создать пользовательский блок (в то время в программе уже была такая возможность) для работы с производимым ими оборудованием через программу FLProg. Руководитель предприятия пошёл другим путём. Он связался со мной и предложил предоставить мне образцы своей продукции для интеграции их в программу. Изучив предложение, я согласился, поскольку на сайте была библиотека для работы с модулем передатчика, в наличии было хорошее описание, и проблем я не видел. Посылка пришла очень быстро (что странно для почты России) даже с учетом пересечения границы.
Читать дальше
Всего голосов 9: ↑9 и ↓0+9
Комментарии0

Оптимизация 2d-приложений для мобильных устройств в Unity3d

Время на прочтение13 мин
Количество просмотров107K
Недавно наша студия завершила разработку большого обновления — Captain Antarctica: Endless Run — для устройств на iOs. Кропотливая работа над обновлением затронула производительность, которая оказалась очень низкой на слабых устройствах. Я боролся с этим целую неделю и добился как минимум 30 FPS, а также значительного сокращения размера приложения. Хочу рассказать, как я это сделал, ну и как делать не стоит.
Статья пригодится любым разработчикам на Unity (причем не только менеджерам проектов и техническим специалистам, но и просто программистам, художникам и дизайнерам), потому что она затрагивает как оптимизацию на Unity в целом, так и конкретно оптимизацию 2d-приложений для мобильных устройств.

Читать дальше →
Всего голосов 55: ↑52 и ↓3+49
Комментарии87

Процедурно генерируемые карты мира на Unity C#, часть 3

Время на прочтение13 мин
Количество просмотров20K
image

Это третья статья из цикла о процедурно генерируемых с помощью Unity и C# картах мира. Цикл будет состоять из четырех статей.
Читать дальше →
Всего голосов 35: ↑34 и ↓1+33
Комментарии1

Сетевое программирование для разработчиков игр. Часть 4: Надежность, упорядочивание и избежание перегрузок поверх UDP

Время на прочтение13 мин
Количество просмотров24K
От переводчика: У меня возникла необходимость разобраться с работой UDP-сокетов в неблокирующем режиме в java и создать свой собственный класс для работы с сетевыми соединениями на их основе. К сожалению, толковой русскоязычной документации на эту тему я не нашёл. Зато наткнулся на несколько попыток на хабре осветить тему создания надёжного соединения поверх UDP. В том числе и перевод нескольких статей Гленна Фидлера, сделанный пользователем bvasilyev. И хотя статьи рассматривают создание подобного подключения для применения его в играх (не совсем то, что мне необходимо), а также языком реализации является не java, а c++, они стали для меня отправной точкой. К сожалению bvasilyev около года назад прервал перевод данного цикла, а самое интересное осталось на языке оригинала. Поэтому я решил перевести четвёртую статью цикла и переписать реализацию виртуального соединения из третей статьи цикла на java (чуть позже выложу). Ну а для того, чтоб данной статьёй мог воспользоваться кто-либо, кроме меня, выкладываю её здесь. Профессиональным переводом, к сожалению, никогда не занимался, всегда изучал англоязычную документацию. Но в данном случае, из-за многочисленного употребления некоторых слов в совершенно различных значениях, а также в роли наименования всевозможных определений, неоднократно — в пределах одного предложения, счёл более целесообразным осуществить перевод, а после уже работать с текстом на привычном для себя языке. Поправки и аргументированные предложения приветствуются.

Первая статья
Вторая статья
Третья статья

(напомню: переведены bvasilyev)




Надежность, упорядочивание и избежание перегрузок поверх UDP


Вступление


Привет, меня зовут Гленн Фидлер и я приветствую вас в своей четвёртой статье из цикла “Сетевое программирование для разработчиков игр”.

В предыдущей статье, мы создали свою собственную концепцию виртуального соединения на основе UDP.

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

Это, безусловно, самая сложная часть низкоуровневой сетевой работы в играх, так что эта статья будет весьма насыщенной, поэтому пристегнулись и поехали!

Проблемы с TCP


Те из вас, кто знаком с TCP, знают, что он уже имеет свою внутреннюю концепцию соединений, с надёжной и упорядоченной системой передачи пакетов и предотвращением перегрузок, так зачем же мы пишем свою собственную мини версию TCP на основе UDP?
Читать дальше →
Всего голосов 24: ↑23 и ↓1+22
Комментарии5

21 бесплатный учебный ресурс для разработчиков игр

Время на прочтение8 мин
Количество просмотров135K
В интернете полным-полно создателей контента, и каждый хочет привлечь к себе внимание. Но, как ни странно, хороший учебный ресурс найти нелегко, а бесплатный – еще сложнее. Мы публикуем перевод материала, в котором автор собрал ссылки на самые авторитетные и полезные обучающие площадки.


Читать дальше →
Всего голосов 32: ↑31 и ↓1+30
Комментарии7

Простой Blender. Часть 4

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

КДПВ. System's check.

Дисклеймер


Как вы заранее догадались, в этой серии я тоже не покажу, как нарисовать танк. В этой серии я напишу про менеджмент объектов (в прошлой писал про геометрию). Просто потому, что сейчас — самое время (вообще, я хотел вставить эту часть сразу после первой, но не срослось).
Где. Мой. Танк?!
Всего голосов 23: ↑22 и ↓1+21
Комментарии6

Приёмы работы в Blender. Часть 1

Время на прочтение3 мин
Количество просмотров76K
Серия публикаций

Вопросы ставившие меня в тупик когда я начинал осваивать Blender.

Перенос центра трансформации


Нужно, чтобы дверь поворачивалась вокруг петель, а не вокруг центра двери. Петли условно сейчас находятся на ребре. Переносим 3D курсор точно на центр ребра: Shift+S (Snap)> Cursor to Selected. Потом даём команду перенести центр трансформации в 3D курсор.


Читать дальше →
Всего голосов 27: ↑25 и ↓2+23
Комментарии2

Криптоанализ «Энигмы»

Время на прочтение7 мин
Количество просмотров83K
image

All specialists unanimously agreed that a reading [of the Enigma] is impossible.
Admiral Kurt Fricke, Chief of Naval War Command

Энигма — роторная шифровальная машина, использовавшаяся нацистской Германией в годы Второй мировой войны. Благодаря влиянию, оказанному на ход войны, взлом Энигмы стал, возможно, самым ярким моментом в многовековой истории криптоанализа. В этом топике я бы хотел рассказать о методе взлома, использовавшимся в Блетчли-парк, а так же описать устройство самой машины.
Читать дальше →
Всего голосов 56: ↑53 и ↓3+50
Комментарии20

Многопоточность в Unity средствами реактивных расширений

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


В данной статье будут рассмотрены основные проблемы, возникающие при разработке многопоточных мобильных игр средствами Unity, а также способы их решения с помощью UniRx (реактивные расширения для Unity).

Статья состоит из двух частей. Первая посвящена многопоточности для «самых маленьких», в ней доступным языком рассказывается о потоках и способах их создания, о синхронизации потоков. Вторая часть посвящена реактивным расширениям, их устройству, принципу работы и способам применения.
Читать дальше →
Всего голосов 22: ↑20 и ↓2+18
Комментарии7

После прочтения применить. 25 книг для игрового разработчика

Время на прочтение8 мин
Количество просмотров119K
Предлагаю подборку всегда актуальных книг по программированию, геймдизайну и концепт-арту для новичков и бывалых бойцов геймдева. Конечно, во главе профессионального развития стоит практика, но эти книги сэкономят ваше время и позволят не выдумывать велосипед заново.


Читать дальше →
Всего голосов 15: ↑14 и ↓1+13
Комментарии7

ASP.NET MVC. Урок 0. Вступление

Время на прочтение2 мин
Количество просмотров783K
Я пишу сайты на asp.net mvc. В этих 16 главах я хочу рассказать, как я это делаю. Это некий учебник-справочник всех тех знаний, которые я накопил в течение трех лет.

Почему именно asp.net mvc

ASP.NET MVC я люблю потому что:
  • Это .net. Я знаю .net и С#.
  • Это компилируемый код.
  • Это не ASP.NET WebForms, я работаю с html-кодом.
  • Используется MVC-паттерн.
  • Visual Studio – самое популярное средство разработки, в котором есть IntelliSense.
  • Отличные инструменты отладки.


Читать дальше →
Всего голосов 290: ↑215 и ↓75+140
Комментарии67

Основы многопоточности в .NET Framework

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


Многопоточность — одна из самых сложных тем в программировании, с ней постоянно возникает масса проблем. Без четкого понимания внутренних механизмов будет очень трудно предсказать результат работы приложения, использующего несколько потоков. Мы не будем здесь дублировать массу теоретической информации, которой очень много в сети и умных книгах. Вместо этого сконцентрируемся на конкретных и наиболее важных проблемах, на которые нужно обращать особое внимание и обязательно помнить о них в процессе разработки.
Читать дальше →
Всего голосов 41: ↑39 и ↓2+37
Комментарии15

Обзор C# библиотек для работы с PDF

Время на прочтение5 мин
Количество просмотров170K
topic image
На написание данной статьи меня подтолкнул топик HTML в PDF, правда по причине того, что он посвящен языку php, лично мне он был мало полезен, т.к. весь опыт работы с php у меня сводился в переводе нескольких скриптов на C#, поэтому я решил сделать небольшой обзор того, что доступно для работы с pdf по средствам языка C#.

Ко мне в список попало 7 библиотек, о которых я скажу несколько слов, а для самой популярной (судя по ответам на stackoverflow), я напишу, как с помощью неё сделать простейший документ. Сразу скажу, что это iTextSharp и работа с ней будет описана в конце статьи.
Читать дальше →
Всего голосов 87: ↑77 и ↓10+67
Комментарии24

Информация

В рейтинге
Не участвует
Зарегистрирован
Активность