Pull to refresh
4
0

Пользователь

Send message

Unity и MVC: как прокачать разработку игры

Reading time13 min
Views81K
От переводчика
Привет, Хабр!

Я ненастоящий сварщик и перевод статьи дался мне тяжело, поэтому я назову его вольным — заранее очищу совесть, если где-то слишком сильно перефразировал оригинал. Буду рад указаниям на ошибки перевода, грамматики и т.п. в личку.

Перевод публикую с разрешения сайта Toptal, где выложен оригинал автора Eduardo Dias da Costa.

Обычно программисты знакомятся с профессией, начиная с Hello World. Затем ставят всё большие и большие цели и каждая новая задача приводит к важному уроку: чем больше проект, тем запутаннее код.


image

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


Поэтому существуют шаблоны проектирования; они — сборники правил для стандартизированного структурирования проекта, которые помогают разделить и организовать большую кодовую базу, и упростить работу с незнакомым кодом.

Читать дальше →
Total votes 16: ↑13 and ↓3+10
Comments9

Quad-tree визуализация в реальном времени на Shader Model 2.0

Reading time6 min
Views17K

Пролог


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


Читать дальше →
Total votes 34: ↑33 and ↓1+32
Comments12

Наш опыт использования фотограмметрии при разработке компьютерной игры (Часть 1)

Reading time6 min
Views30K
image

В данной статье будет рассказано о фотограмметрии и опыте её использовании при создании контента для трёхмерной компьютерной игры во вселенной Half-Life, разработкой которой мы занимаемся уже не первый год.
Читать дальше →
Total votes 56: ↑52 and ↓4+48
Comments15

Процедурная генерация трёхмерных моделей

Reading time9 min
Views70K


Процедурная генерация — замечательная штука! Интереснее всего работать именно с графикой, особенно трёхмерной — сразу видно результат. Всего пары инструкций достаточно, чтобы создать облако треугольников как на картинке выше.

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

На примере движка Unity и C# я покажу как можно работать с моделями и превращать текст в графику. Большинство приводимого кода легко портируется на другие фреймфорки и языки.

Треугольник


Начнём с простейшей формы — треугольника. В Unity и во многих других движках используется популярный способ описания моделей: с помощью массивов вершин, треугольников и нормалей. Дополнительно для текстурирования используются uv-координаты вершин. Для работы с моделями есть класс Mesh, в котором для каждого набора данных имеется отдельный массив. В Mesh.vertices хранятся координаты вершин, в Mesh.triangles — индексы вершин группами по три. А в Mesh.normals и Mesh.uv лежат векторы нормалей и координаты uv-карт, индексы которых должны совпадать с индексами соответствующих вершин, т. е. порядок в массивах должен быть одинаковым. Покажу на примере, чтобы было понятнее.
Читать дальше →
Total votes 35: ↑26 and ↓9+17
Comments7

Процедурный генератор хрущёвок

Reading time9 min
Views110K
Сидел я как-то дома, читал статью про хрущёвки и восторгался гением архитектора. Потом меня отпустило, и я подумал, что унылость и однообразие хрущёвок очень легко можно описать математически. Прямые углы, равные интервалы, минимум украшений — что может быть проще?

На самом деле, у хрущёвок существует несколько десятков модификаций, но некая основа, сущность хрущёвки всё равно прослеживается.

В общем, недолго думая, я сел и написал генератор хрущёвок на C# под Unity3d. Под катом описание работы алгоритма и размышления на тему uv-карт, сабмешей и шейдеров.
Читать дальше →
Total votes 271: ↑264 and ↓7+257
Comments90

Unity 5 uNet – новая сетевая подсистема. Этюд по авторитарной архитектуре

Reading time8 min
Views38K
image

Пример реализации сетевой архитектуры в Unity3D с авторитарным сервером


В виду того, что:
а) старые сетевые принципы Unity3D, как говорится, устарели;
б) я всё равно не понимал, как у меня заработало то колдунство.
в) назойливо появился новый метод и начал прыгать в глаза при каждом запуске Unity.
я решил, что надо в сетевом обмене разобраться плотнее и устранить область “here be dragons”.
Читать дальше →
Total votes 16: ↑13 and ↓3+10
Comments7

Как за полгода разработать многопользовательскую 3D-игру без художников, дизайнеров и моделлеров

Reading time3 min
Views48K


Привет, Хабр!
Историй о разработке игр было немало, сегодня я попробую вкратце рассказать нашу.

Мир есть текст — Жак Деррида
Игра есть словарь — a11aud

Читать дальше →
Total votes 41: ↑30 and ↓11+19
Comments11

Ретроспектива разработки Crash Bandicoot, или как разработчики упаковывали целые игры в 2MB RAM

Reading time3 min
Views76K
Вот вам анекдот из конца 90-ых. Я (Dave Baggett) был одним из двух программистов (вместе с Andy Gavin), разрабатывающих Crash Bandicoot для PlayStation 1.



Оперативная память была главной проблемой даже в те времена. У PS1 было всего 2MB RAM, и нам приходилось совершать безумные вещи, чтобы уместить в них игру. У нас были уровни, содержащие более 10MB чистых данных, и эти 10 мегабайт должны были постранично загружаться и выгружаться в память динамически, без каких-либо видимых задержек для игрока, при фреймрейте в 30 кадров в секунду.
Читать дальше →
Total votes 109: ↑107 and ↓2+105
Comments31

Beat-chart – лучший друг гейм-дизайнера

Reading time3 min
Views37K
Всем привет!

Я гейм-дизайнер и в данный момент вместе с небольшой командой занимаюсь разработкой двумерной адвенчуры на Unity3D. Цель этой публикации – рассказать о процессе дизайна локаций для нашей игры и приемах, которые я использую.
Ну и параллельно показать вам все стадии развития локации – от схемы до финальной версии.


Забегая немного вперед – так выглядит кусочек уже готовой локации в действии.
Читать дальше →
Total votes 43: ↑43 and ↓0+43
Comments12

Семь смертных грехов разработки ПО

Reading time6 min
Views47K
Перевод статьи Seven Deadly Sins of a Software Project автора Yegor Bugayenko.

Сопровождаемость — это наиболее ценное достоинство современной разработки программного обеспечения. Сопровождаемость может измеряться, в основном, рабочим временем, которое требуется новому разработчику, чтобы вникнуть в проект, до того, как он начнет вносить значимые изменения. Чем больше времени это занимает, тем меньше уровень сопровождаемости. В некоторых проектах это время близко к бесконечности, что означает, эти проекты практически не сопровождаемы. Я хочу рассказать вам о семи смертных грехах, которые делают программный продукт несопровождаемым.
Читать дальше →
Total votes 30: ↑26 and ↓4+22
Comments18

9 анти-паттернов, о которых должен знать каждый программист

Reading time9 min
Views148K
В программировании самокритика – это умение распознать контрпродуктивные решения в дизайне, коде, процессах и поведении. Знание о вредных шаблонах решений полезно для программиста. В этой статье я опишу анти-паттерны, которые я встречал на своём личном опыте время от времени.

Некоторые из них напрямую или косвенно связаны с когнитивными искажениями человеческого сознания – в этих случаях я даю ссылки на соответствующие вики-статьи. Также интересен список известных когнитивных искажений.

1 Преждевременная оптимизация


В 97% случаев надо забыть об эффективности малых частей программы: преждевременная оптимизация – корень всех зол. Но в 3% случаев об оптимизации забывать не нужно.
Дональд Кнут

Хотя никогда зачастую лучше, чем прямо сейчас
Тим Питерс, Зен языка Python


Что это

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

Почему плохо

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

Как избежать

Сначала пишите чистый, читаемый, работающий код, используя известные и проверенные алгоритмы и инструменты. При необходимости используйте инструменты для профилирования для поиска узких мест. Полагайтесь на измерения, а не на догадки и предположения.
Читать дальше →
Total votes 117: ↑97 and ↓20+77
Comments123

Как я нашел лучший в мире язык программирования. Часть Йо (2.72)

Reading time21 min
Views115K
Поскольку после второй части у меня случился перерыв на работу, я поимел возможность получить некоторый фидбек, который я хоть и еще не обработал, все же заставляет меня написать внеплановую часть Йо, которая мне кажется важной для дальнейшего разговора. С тем же перерывом на работу связана задержка третьей части, прошу меня извинить тех, кто действительно ждал и пока не дождался.
Читать дальше →
Total votes 127: ↑88 and ↓39+49
Comments236

Туннельное моделирование — версия 0.9

Reading time5 min
Views5.7K
Доброго времени чтения, уважаемые участники habrahabr.ru

Данный пост использует попытку ввода измерения терминов в сферической системе координат.

Вводятся понятия абстрактности, фазы деятельности, а также группы и периоды сложности.

Описывается графическая нотация для моделирования, основанная на предлагаемом выделении групп терминов.
Читать дальше →
Total votes 10: ↑7 and ↓3+4
Comments4

Спросите Итана №87: Форма вселенной: возможностей много, но реальность одна

Reading time3 min
Views45K
image

Перевод статьи Ask Ethan #87: The Shape Of The Universe

Не пытайтесь стереть прошлое. Оно формирует вас сегодняшнего и помогает вам стать тем, кем вы будете завтра.

Зиад К. Абдельнуар

Вселенная даже больше, чем мы с вами, сформирована условиями, существовавшими во время её рождения. Но какую же форму она приняла? Я выбрал вопрос читателя Тома Берри, который спрашивает:

Я так понимаю, что у вселенной форма седла. Интересно, почему в момент Большого взрыва вся материя не разлетелась равномерно во все стороны и не придала вселенной шарообразную форму?

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

Что это значит? Например, можно нарисовать треугольник и сложить размеры внутренних углов. Если мы получим 180 градусов, то поверхность – плоская. Если нарисовать две параллельные линии, они останутся такими на всём протяжении.

Но это лишь один из вариантов.
Читать дальше →
Total votes 59: ↑46 and ↓13+33
Comments15

Введение в дискретно-ориентированные многогранники для задачи определения столкновений

Reading time5 min
Views34K


Обнаружение столкновений (collision detection) виртуальных объектов является довольно значимой частью для задач визуализации.
Читать дальше →
Total votes 34: ↑34 and ↓0+34
Comments8

Семинар в LA и инициативы в России по MIPSfpga и преподаванию электроники

Reading time5 min
Views6.2K
Компания Imagination Technologies, известная как разработчик графического процессора PowerVR внутри Apple iPhone, с одобрением от президента Стенфорда Джона Хеннесси приглашает преподавателей и аспирантов электроники и программирования на бесплатный семинар рядом с Лос-Анжелесом, который пройдет 13-14 мая. Другим организатором семинара, помимо Imagination, является Xilinx — компания №1 в ПЛИС-ах / FPGA. Если вы занимаетесь исследованиями или преподаете, особенно рядом с Лос-Анжелесом (UCLA, Caltech, UC San Diego, CalPoly, UC Santa Barbara, UC Irvine, Arizona State, University of Nevada Las Vegas и т.д.) вы можете присоединиться — будет много интересного.
Читать дальше →
Total votes 12: ↑11 and ↓1+10
Comments12

Арбелос

Reading time15 min
Views31K

Скачать статью в виде документа Mathematica (NB), CDF-файла или PDF.
Выражаю огромную благодарность Кириллу Гузенко за помощь в переводе.

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

Введение


Будучи мотивирован вычислительными преимуществами, которыми обладает Mathematica, некоторое время назад я решил приступить к исследованию свойств арбелоса — весьма интересной геометрической фигуры. С тех пор я был впечатлен большим количеством удивительных открытий и вычислительных проблем, которые возникали из-за всё расширяющегося объёма литературы, касающейся этого примечательного объекта. Я вспоминаю его сходство с нижней частью культового велосипеда пенни-фартинг из The Prisoner (телесериал 1960-х), шутовской шапкой Панча (знаменитых Punch and Judy) и символом инь-ян с одной перевёрнутой дугой; см. рис. 1. В настоящее время существует специализированный каталог архимедовых кругов (круги, содержащиеся в арбелосе) [1] и важные применения свойств арбелоса, которые лежат вне поля математики и вычислительных наук [2].

Многие известные исследователи занимались этой темой, в том числе Архимед (убитый римским солдатом в 212 г. до н.э.), Папп (320 г. н.э.), Кристиан О. Мор (1835-1918), Виктор Тебо (1882-1960), Леон Банкофф (1908-1997), Мартин Гарднер (1914-2010). С недавних пор свойствами арбелоса занимаются Клейтон Додж, Питер Ай. Ву, Томас Шох, Хироши Окумура, Масаюки Ватанабе и прочие.

Леон Банкофф — человек, который привлекал всеобщее внимание к арбелосу в последние 30 лет. Шох привлёк внимание Бэнкоффа к арбелосу в 1979 году, открыв несколько новых архимедовых кругов. Он послал 20-страничную рукописную работу Мартину Гарднеру, который направил её Бэнкоффу, который затем отправил 10-страничный фрагмент копии рукописи Доджу в 1996 году. Из-за смерти Бэнкоффа запланированная совместная работа была прервана, пока Додж не сообщил о некоторых новых открытиях [3]. В 1999 году Додж сказал, что ему потребуется от пяти до десяти лет, чтобы отсортировать весь материал, которым он располагает, разложив всё это дело по стопкам. В настоящее время эта работа все ещё продолжается. Не удивительно, что в четвертом томе The Art of Computer Programming, сказано о том, что важная работа требует большого количества времени.


Рис. 1. Велосипед пенни-фартинг, куклы Панч и Джуди, физический арбелос.

Арбелос (“нож сапожника” в греческом языке) назван так из-за своего сходства с лезвием ножа, использующегося сапожниками (Рис. 1). Арбелос — плоская область, ограниченная тремя полуокружностями и общей базовой линией (рис. 2). Архимед, вероятно, был первым, кто начал изучать математические свойства арбелоса. Эти свойства описаны в теоремах с 4-ой по 8-ую его книги Liber assumptorum (или Книги лемм). Возможно, эту работу написал не Архимед. Сомнения появились после перевода с арабского Книги лемм, в которой Архимед упоминается неоднократно, но ничего не сказано о его авторстве (однако, существует мнение, что эта книга — подделка [4]). Книга Лемм так же содержит знаменитую архимедову Problema Bovinum [5].

Эта статья направлена на систематическое изложение некоторых свойств арбелоса и не носит исчерпывающий характер. Наша цель состоит в том, чтобы выработать единую вычислительную методологию для того, чтобы преподнести данные свойства в формате обучающей статьи. Все свойства выстроены в рамках определённой последовательности и представлены с доказательствами. Эти доказательства были реализованы посредством тестирования эквивалентных вычисляемых утверждений. В ходе выполнения данной работы автором было совершено несколько открытий и сделано несколько обобщений.
Читать дальше →
Total votes 73: ↑69 and ↓4+65
Comments29

Визуализация данных OpenStreetMap в 3D налету с помощью Unity3D

Reading time3 min
Views33K

Предыстория


image
Некоторое время назад, в связи с наличием свободного времени, я задумался над применением карт для решения каких-либо интересных и нестандартных задач. Одна из идей, которая меня заинтересовала, была идея применения карт для рендеринга мира в игровом движке c возможностью интерактивного взаимодействия: разрушения Макдональдсов в выбранном городе, локальный апокалипсис у соседей в огороде и тому подобные приятные, но только в случае виртуального мира, мелочи.
Однако несмотря на примитивность идеи, не было найдено каких-то готовых решений под сформулированные мной условия:
  • Открытый исходный код
  • Реал тайм рендеринг мира в игровом движке
  • Поддержка основных платформ (mobile, web, desktop)
  • Желательно C# как основной язык разработки

Подробности
Total votes 31: ↑28 and ↓3+25
Comments17

10 заповедей программирования без эго

Reading time3 min
Views57K
image«Программирование без эго» — перевод понятия egoless programming. Смысл в том, что разработчик осознанно отодвигает эго на второй план ради эффективности в работе. При разработке Web-payment.ru — сайта о платежных системах с каталогами и мониторингом обменников — мы стараемся руководствоваться этими принципами. Если кто-то благодаря этому посту тоже начнет применять их в своем проекте, мы будем очень рады, ведь они помогают избежать конфликтов и несут в себе добро. Перевод и редактура moigagoo.

О программировании Стивен начал говорить с отцом за 2 недели до его смерти. Стивену было 22, он изучал графдизайн в колледже и почти получил степень бакалавра. Его отцу было 62 — больше, чем большинству отцов. Когда он только начинал программировать в Теннессийском техническом университете в 60-е, то писал код на Фортране на перфокартах. Знал он очень много.

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

Когда Стивен приехал домой на каникулы, отец рассказал ему про 10 заповедей программирования без эго. Он распечатал их, и вдвоем со Стивеном они обсудили каждый пункт. Из-за внезапной смерти отца Заповеди стали одной из немногих программистских тем, которые Стивен успел обсудить вместе с ним. Возможно, именно поэтому они ему так запомнились.
Читать дальше →
Total votes 72: ↑58 and ↓14+44
Comments37

Нейропластичность в искусственных нейронных сетях

Reading time17 min
Views53K
Привет, Хабр, давно не виделись. В этом посте мне хотелось бы рассказать о таком относительно новом понятии в машинном обучении, как transfer learning. Так как я не нашел какого-либо устоявшегося перевода этого термина, то и в названии поста фигурирует хоть и другой, но близкий по смыслу термин, который как бы является биологической предпосылкой к формализации теории передачи знаний от одной модели к другой. Итак, план такой: для начала рассмотрим биологические предпосылки; после коснемся отличия transfer learning от очень похожей идеи предобучения глубокой нейронной сети; а в конце обсудим реальную задачу семантического хеширования изображений. Для этого мы не будем скромничать и возьмем глубокую (19 слоев) сверточную нейросеть победителей конкурса imagenet 2014 года в разделе «локализация и классификация» (Visual Geometry Group, University of Oxford), сделаем ей небольшую трепанацию, извлечем часть слоев и используем их в своих целях. Поехали.
Читать дальше →
Total votes 58: ↑56 and ↓2+54
Comments38
1

Information

Rating
Does not participate
Location
Белебей, Башкортостан(Башкирия), Россия
Date of birth
Registered
Activity