Найти тему

Два года назад: я покинул Unity

Я покинул Unity в начале 2022 года. Итак, в этот ленивый день вторника, решил поделиться впечатлениями, которые написал в своем прощальном электронном письме. Никаких важных идей, просто воспоминания старика. И, кстати, текст уже написан, так что его легко скопировать - вставьте его в блог:

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

Итак, да, пока! Спасибо всем за это удивительное путешествие! ❤️

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

Еще в 2005 году я искал новую работу. Обращался в несколько компаний (NVIDIA, Lionhead, DICE, Rockstar), в основном без ответа. Но! Некий Тим Суини из Epic Games связался со мной и предложил работу. Это дошло до интервью на месте (это была моя первая поездка в США, оцените!), где я не преуспел в техническом собеседовании, и на это Epic ответил “нет”. Это было печально!

Однако несколько месяцев спустя эта компания, о которой я никогда не слышал (“Over the Edge Entertainment”), создающая игровой движок, о котором я никогда не слышал (“Unity”), написала мне с темой “Работаем над будущим промежуточного программного обеспечения” и текстом типа:

Мы хотим поговорить с вами о том, чтобы присоединиться к нашей команде и вместе с нами организовать эту революцию. Вы будете руководить версией для ПК и сможете определять свои собственные проекты, используя самые крутые технологии по эту сторону Солнца. Создайте инструмент для массового рынка, который может изменить способ создания игр .... напишите код, который изменит мир.
На что, как поступил бы любой здравомыслящий человек, я ответил “круто, но нет, спасибо, удачи”. Мир наполнен случайными игроками 20 с чем-то лет, воображающими, что они могут провернуть следующее крупное дело. Но потом они пригласили меня на организованный ими game jam. Мы сделали эту игру под названием “Пакимоно”.:
На что, как поступил бы любой здравомыслящий человек, я ответил “круто, но нет, спасибо, удачи”. Мир наполнен случайными игроками 20 с чем-то лет, воображающими, что они могут провернуть следующее крупное дело. Но потом они пригласили меня на организованный ими game jam. Мы сделали эту игру под названием “Пакимоно”.:

Итак, я начал работать в Unity 2006 4 января. Я абсолютно думал, что через год или два все это сойдет за очередную милую, но неудачную попытку создать еще один игровой движок. Потому что таковы были шансы! Но, по крайней мере, это будет весело, пока длится.

Тогда “черт возьми, да!” (альтернативное выражение для сегодняшнего “Win Wire”) моменты были ... иногда странными. Например, вот @joe, который очень рад получить модель автомобиля для веб-сайта. Зачем нашему веб-сайту машина? Никто не знает.

Типичный офисный опыт немного отличался от офисов, которые у нас есть сейчас (или, ну, были до 2020 года). Вот @david, спящий в офисе в Копенгагене в середине 2006 года:
Типичный офисный опыт немного отличался от офисов, которые у нас есть сейчас (или, ну, были до 2020 года). Вот @david, спящий в офисе в Копенгагене в середине 2006 года:

Конец 2006 года был "о, черт”, когда Microsoft выпустила “XNA Game Studio Express", бесплатную среду разработки игр на C #, предназначенную для независимых и небольших разработчиков. Это вполне могло убить нас; горстка людей против всего гиганта Microsoft. К счастью, они никогда не по-настоящему сосредотачивались на этом, и к 2010 году XNA была мертва. Вероятно, там есть какой-то урок.

В 2007 году я убедил одного из своих приятелей (@valdemar) присоединиться к Unity, чтобы поработать над портированием его на нашу первую консольную платформу! Конечно, это была Nintendo Wii (оглядываясь назад, не самая лучшая платформа для всех, кроме самой Nintendo). Но это положило начало долгому пути поддержки платформ, не основанных на ПК, в Unity.
В 2007 году я убедил одного из своих приятелей (@valdemar) присоединиться к Unity, чтобы поработать над портированием его на нашу первую консольную платформу! Конечно, это была Nintendo Wii (оглядываясь назад, не самая лучшая платформа для всех, кроме самой Nintendo). Но это положило начало долгому пути поддержки платформ, не основанных на ПК, в Unity.
В 2008 году я сделал эту (дерьмовую, в первый раз) ощутимую работу и, оглядываясь назад, правильно предсказал, каким будет наш биржевой символ дюжину лет спустя. Если это не сделает меня профессиональным аналитиком, я не знаю, что сделает.
В 2008 году я сделал эту (дерьмовую, в первый раз) ощутимую работу и, оглядываясь назад, правильно предсказал, каким будет наш биржевой символ дюжину лет спустя. Если это не сделает меня профессиональным аналитиком, я не знаю, что сделает.
Если говорить более серьезно, то в 2008 году мы начали переносить Unity editor на Windows ( до этого он был доступен только для Mac). И учитывая, что я был практически единственным человеком, использующим Windows с самого начала, это означало, что я делал перенос, ура (мы все еще страдаем от последствий сегодня, извините). В любом случае, в феврале у нас было это, что немного, но это начало:
Если говорить более серьезно, то в 2008 году мы начали переносить Unity editor на Windows ( до этого он был доступен только для Mac). И учитывая, что я был практически единственным человеком, использующим Windows с самого начала, это означало, что я делал перенос, ура (мы все еще страдаем от последствий сегодня, извините). В любом случае, в феврале у нас было это, что немного, но это начало:
И к сентябрю 2008 года у нас была первая внутренняя сборка для тестирования, всего размером 15,4 мегабайта для загрузки.:
И к сентябрю 2008 года у нас была первая внутренняя сборка для тестирования, всего размером 15,4 мегабайта для загрузки.:
В целом 2008 год был довольно насыщенным событиями. Например, мы открыли совершенно новый офис в Каунасе (Литва), который (я думаю) был первым офисом разработки за пределами Копенгагена. Это выглядело так же “модно”, как и это, поскольку это то, что мы могли себе позволить в то время:
 
Забавный факт: десять лет спустя некоторые сцены сериала HBO "Чернобыль" были сняты в том же здании.
В целом 2008 год был довольно насыщенным событиями. Например, мы открыли совершенно новый офис в Каунасе (Литва), который (я думаю) был первым офисом разработки за пределами Копенгагена. Это выглядело так же “модно”, как и это, поскольку это то, что мы могли себе позволить в то время: Забавный факт: десять лет спустя некоторые сцены сериала HBO "Чернобыль" были сняты в том же здании.

Также в 2008 году, я помню, мы смотрели презентацию Apple keynote, где они анонсировали App Store и весь SDK для создания сторонних приложений. Мы сказали “хорошо, это почти то же самое, что Mac, это будет простой порт, давайте сделаем это!!!1”. Знаменитые последние слова, да. В любом случае, я каким-то образом убедил @rej и @mantas присоединиться к созданию порта для Unity iPhone. Самая первая версия в очень грубом состоянии была выпущена в конце 2008 года. И, вероятно, повлияла на всю индустрию на десятилетия вперед.

Весной 2009 мы выпустили Unity 2.5 с редактором Windows и увеличили наш рынок разработчиков игр примерно в 10 раз. У @amir было предложение использовать это на главном веб-сайте, чтобы действительно донести суть сообщения:
Весной 2009 мы выпустили Unity 2.5 с редактором Windows и увеличили наш рынок разработчиков игр примерно в 10 раз. У @amir было предложение использовать это на главном веб-сайте, чтобы действительно донести суть сообщения:
К 2010 году компания выросла до огромных размеров, например, вот собрание всей компании:
К 2010 году компания выросла до огромных размеров, например, вот собрание всей компании:
Я нашел это в своем “ежегодном обзоре производительности / отзывах” за 2010 год. Мило! Кроме того, некоторые вещи на самом деле не меняются.
Я нашел это в своем “ежегодном обзоре производительности / отзывах” за 2010 год. Мило! Кроме того, некоторые вещи на самом деле не меняются.
2011 у нас был еще один массовый момент “о, черт, это может быть плохо”, когда Adobe решила добавить возможности 3D в Flash (“Stage3D”, как это будет называться). Наш плагин для веб-браузера все еще работал исправно, а Flash по-прежнему был огромным. Это могло быть очень, очень плохо! Итак, мы сделали единственное, что на тот момент казалось разумным, а именно: “давайте добавим Flash в качестве платформы для Unity”. Что означало преобразование кода C # в ActionScript и добавление поддержки пользовательского API 3D-графики Flash и их собственного странного языка шейдеров. В любом случае, это (вроде как, в основном) сработало: “Это полностью стандартный шейдер, написанный на Cg с использованием наших "surface shaders", скомпилированный в Direct3D9 assembly Cg, преобразованный в байт-код mojoshader и преобразованный в байт-код шейдера Flash (AGAL), ну, скажем, мной.”
2011 у нас был еще один массовый момент “о, черт, это может быть плохо”, когда Adobe решила добавить возможности 3D в Flash (“Stage3D”, как это будет называться). Наш плагин для веб-браузера все еще работал исправно, а Flash по-прежнему был огромным. Это могло быть очень, очень плохо! Итак, мы сделали единственное, что на тот момент казалось разумным, а именно: “давайте добавим Flash в качестве платформы для Unity”. Что означало преобразование кода C # в ActionScript и добавление поддержки пользовательского API 3D-графики Flash и их собственного странного языка шейдеров. В любом случае, это (вроде как, в основном) сработало: “Это полностью стандартный шейдер, написанный на Cg с использованием наших "surface shaders", скомпилированный в Direct3D9 assembly Cg, преобразованный в байт-код mojoshader и преобразованный в байт-код шейдера Flash (AGAL), ну, скажем, мной.”

В любом случае, к 2014 году Flash, включая все материалы Stage3D, был практически мертв. Вероятно, где-то там есть еще один урок, возможно, типа “не стоит слишком бояться последней попытки умирающей платформы сделать себя релевантной” или что-то в этом роде.

В любом случае, весь этот опыт преобразования C # -> ActionScript оказался весьма полезным, когда в 2014 году Apple решила, что отныне все приложения для iOS должны быть 64-разрядными. Специалисты по написанию сценариев и мобильным устройствам пытались заставить это работать, создав конвертер C # -> C ++, также известный как IL2CPP, поскольку наша существующая в то время технология написания сценариев (Mono) просто не работала на 64-разрядных устройствах iOS.

Я ни в чем подобном не участвовал, но весной 2014 года мы получили приглашение участвовать в секретном проекте на месте в Apple. Двух инженеров должны были отправить туда на месяц, не имея представления о том, что они будут делать. Итак, мы с @alexey пошли, и оказалось, что секретным проектом был Metal graphics API. Вопреки всему и ко всеобщему удивлению, Apple первой выпустила “новый / современный” графический API (до Microsoft DX12 и Khronos Vulkan). Месяц в Apple был ... интересным опытом. В тот месяц Unity действительно работала над Metal, но для конференции WWDC Apple решила использовать демо-версию keynote от Epic / Unreal. Тогда они все еще были друзьями, да :)
Я ни в чем подобном не участвовал, но весной 2014 года мы получили приглашение участвовать в секретном проекте на месте в Apple. Двух инженеров должны были отправить туда на месяц, не имея представления о том, что они будут делать. Итак, мы с @alexey пошли, и оказалось, что секретным проектом был Metal graphics API. Вопреки всему и ко всеобщему удивлению, Apple первой выпустила “новый / современный” графический API (до Microsoft DX12 и Khronos Vulkan). Месяц в Apple был ... интересным опытом. В тот месяц Unity действительно работала над Metal, но для конференции WWDC Apple решила использовать демо-версию keynote от Epic / Unreal. Тогда они все еще были друзьями, да :)

О, вот забавная вещь, которую я нашел в 2015 году, в электронном письме от Йоахима о неделе взлома основной команды:

Цель. Как нам спроектировать Unity, чтобы он мог открывать проект объемом 100 ГБ, и вы начинали работать в нем менее чем за 10 секунд. <...> Чтобы сделать это правильно, я думаю, нам скоро придется сформировать команду по разработке активов из 2-3 человек, которая сможет владеть этим проектом и довести его до завершения.

Да, может быть, нам стоит заняться этим :)

Недавно я по–настоящему горжусь тем, что в 2019 году нам удалось создать то, что раньше называлось “Основной командой Каунаса” (теперь команда “Quality of Life” - да, мы не сильны в названиях). Очень маленькая команда, состоящая в основном из молодых людей, которые делают "случайные улучшения повсюду”. Изо дня в день это звучит не очень, но теперь, когда я читаю наши резюме за 2019, 2020 и 2021 годы (ред.: все это были ссылки на внутренние документы Unity), да, это не так уж плохо! Помимо всего того, что мы на самом деле сделали, возможно, мы повлияли на некоторые другие команды, чтобы они также работали над улучшением “качества жизни”. Зажигайте.

В целом, github (в нашем “основном” репозитории кода) говорит, что мой общий вклад за эти годы составил около минус миллиона строк кода, так что 🎉. Почему он думает, что я № 1 по количеству коммитов кода, я понятия не имею.
В целом, github (в нашем “основном” репозитории кода) говорит, что мой общий вклад за эти годы составил около минус миллиона строк кода, так что 🎉. Почему он думает, что я № 1 по количеству коммитов кода, я понятия не имею.

Вот и все! Делайте хорошую работу и заботьтесь друг о друге.

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

Оригинальная статья