Pull to refresh
30
0
Андрей Данилов @Andy_Ion

C# dev

Send message

Феномен инди-игры для Steam на миллион долларов

Reading time5 min
Views58K


В данной статье хотел поделиться своими наблюдениями по волнующем каждого инди-разработчика вопросу — «В чем секрет однопользовательских игр-миллионников?». В качестве объекта наблюдения мною выбрана относительно свежая игра – Undertale. Данная игра примечательна тем, что нарушает каноны общепринятой игровой индустрии и вызывает адскую зубную боль у «профессионалов», показывая такие финансовые результаты.
Читать дальше →
Total votes 44: ↑31 and ↓13+18
Comments26

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

Reading time3 min
Views32K
Серия публикаций

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



Можно задать собственный размер участка рендера нажав в рабочем окне Ctrl+B (Render Border). Сбросить размеры этого участка Ctrl+Alt+B.
Читать дальше →
Total votes 35: ↑34 and ↓1+33
Comments3

9 советов по локализации аудио

Reading time6 min
Views9K

Captain C-3PO by Jeff Nickel

Если вы имели дело с записью аудио — будь то персонажная озвучка для игры или дикторская начитка для видеоролика, — то наверняка заметили, что дело это недешевое. Важно сделать все правильно с первого раза, чтобы сократить расходы. То же самое и с локализацией аудио: каждая ошибка умножается на количество языков. В этой статье мы поделимся советами о том, как взаимодействовать со студиями звукозаписи и сервисами по локализации, как оптимизировать и ускорить процесс, уменьшить риски, а заодно и расходы на локализацию звука. И неважно, будете вы заказывать эти услуги у нас в Alconost или в другой компании — знание всех подводных камней вам точно пригодится.
Читать дальше →
Total votes 13: ↑11 and ↓2+9
Comments3

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

Reading time6 min
Views230K
image
КДПВ. По мотивам.

О чем пост


Пост написан по мотивам этого комментария . Особенно вдохновила картинка в ответах к этому комментарию. Изначально хотел здесь написать про UI и основы моделлинга в Blender, но выходит многовато (я словообилен). Поэтому, про моделлинг — позже (если публика захочет). А здесь — про UI Blender с точки зрения непрофессионала.
Тоже хочу танк нарисовать!
Total votes 55: ↑53 and ↓2+51
Comments38

Disposable без границ

Reading time3 min
Views14K

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

Но есть множество вариантов владения, которые не являются персональной ответственностью объекта:
  • Ресурсы, которыми владеют зависимости. При использовании Dependency Injection объект класса не только не должен отвечать за жизненный цикл своих зависимостей, он просто физически не может это делать: зависимость может разделяться между несколькими клиентами, зависимость может реализовать IDisposable, а может не реализовать, но при этом у нее могут быть свои зависимости и так далее. Кстати, этот довод сразу ставит крест на любых бизнес-интерфейсах, расширяющих IDisposable: такой интерфейс требует от своих реализаций невозможного — отвечать за себя и за того парня (зависимости)
  • Ресурсы, которые при некоторых условиях не надо очищать. Это, к примеру, дурная привычка StreamReader закрывать нижележащий Stream при вызове Dispose
  • Ресурсы, которые являются внешними по отношению к зависимости, но требуются клиенту в процессе ее использования. Самый простой пример — подписка на события объекта при присвоении его свойству.

Что же может здесь помочь?
Total votes 15: ↑12 and ↓3+9
Comments110

Вызываем обработчики событий потокобезопасно без лишнего присваивания в C# 6

Reading time8 min
Views12K

От переводчика


Часто начинающие разработчики спрашивают, зачем при вызове обработчика нужно копировать его в локальную переменную, а как показывает код ревью, даже опытные разработчики забывают об этом. В C# 6 разработчики языка добавили много синтаксического сахара, в том числе null-conditional operator (null-условный оператор или Элвис-оператор — ?.), который позволяет нам избавиться от ненужного (на первый взгляд) присваивания. Под катом объяснения от Джона Скита — одного из самых известных дот нет гуру.
Читать дальше →
Total votes 9: ↑9 and ↓0+9
Comments27

Конверсия платежей: 4 причины, снижающие успешность оплаты на вашем сайте и способы их устранения

Reading time4 min
Views9.4K


Друзья,

Сегодня мы хотим поговорить о конверсии платежей. Что это такое? По каким причинам чаще всего происходят отказы? Как оптимизировать проходимость платежей?

Разные люди считают конверсию по-разному: по проходимости платежей (отношение успешных платежей к общему количеству попыток), по количеству успешно оплаченных заказов (вне зависимости от количества попыток, потребовавшихся для успешной оплаты), и даже — в особо тяжелых случаях — по количеству переходов на платежную форму. Мы считаем по первому варианту — для нас, как для платежного шлюза, показатель проходимости платежей является наиболее важным и поддающимся оптимизации с нашей стороны.
Подробности
Total votes 10: ↑7 and ↓3+4
Comments4

Динамические свет и тени в моей 2d игре

Reading time5 min
Views25K
Я работаю над игрой в жанре стесл-экшн, где в геймплее большую роль будут играть тени. Поэтому я сделал динамическое освещение/затенение, используя WebGL шейдеры.

Читать дальше →
Total votes 24: ↑23 and ↓1+22
Comments27

Создание системы сцен для игрового движка

Reading time4 min
Views15K

Предисловие


В настоящее время я работаю над собственным игровым движком. С использованием минимального количества сторонних библиотек, после реализации игрового цикла (game loop), отрисовки кадра, функции «update», загрузки текстур и пр., основная «начинка» движка была готова. Пришло время реализации еще одной важной составляющей — сцены (scene).

Введение


В статье я предполагаю, что движок уже оснащен игровым циклом с «callback»-функциями. Весь код будет написан на Java, но может быть легко перенесен на любой другой язык, поддерживающий garbage collection. Что-ж, приступим.
Читать дальше →
Total votes 16: ↑12 and ↓4+8
Comments2

COUNT(*)

Reading time7 min
Views122K


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

Давайте начнем с простого… Эти запросы отличаются чем-то друг от друга с точки зрения конечного результата?

SELECT COUNT(*) FROM Sales.SalesOrderDetail
SELECT COUNT_BIG(*) FROM Sales.SalesOrderDetail
Подробнее
Total votes 84: ↑57 and ↓27+30
Comments74

C++/CLI — «клейкий» язык

Reading time5 min
Views41K
В этом топике я расскажу про C++/CLI — промежуточный язык для склеивания кода на C/C++ и .NET

Это довольно распространённая задача, ведь на C/C++ написаны тонны проверенного временем высокопроизводительного кода, который невозможно переписать на управляемые языки.

Наша задача — обеспечить .NET-интерфейс к этим библиотекам. Но как это сделать, если они написаны на C/C++?

Microsoft предлагает два варианта решения проблемы.
 
Читать дальше →
Total votes 46: ↑43 and ↓3+40
Comments17

Дайджест новостей из мира разработки на Unity

Reading time2 min
Views15K
Мы давно не радовали вас новостями о создании игр на Unity, но теперь вы можете убедиться, что это время мы потратили с пользой. Читайте самые познавательные, интересные, а порой и неожиданные материалы в нашем дайджесте.


Читать все
Total votes 13: ↑11 and ↓2+9
Comments1

Когда Photoshop отображает совсем не то, что надо

Reading time3 min
Views289K
example

Такая вот ситуация: дизайнер присылает макет, а у верстальщика открывается какая то лабуда светлая, или темная (если верстальщик испольует МасOS, а дизайнер Win.). Или же верстальщик сохраняет картинку, а там цвета другие стали.

Разберемся почему так и как с этим жить.

Читать дальше →
Total votes 173: ↑158 and ↓15+143
Comments139

Готовим ASP.NET 5, выпуск №6: Continuous Deployment с Visual Studio Team Services — полное руководство

Reading time8 min
Views12K
Вслед за замечательными анонсами с конференции Connect 2015 мы продолжаем знакомить вас со сценариями использования новых технологий и сервисов для организации непрерывной разработки и тестирования ваших приложений.

Недавно мы рассказывали о реализации непрерывных процессов разработки и тестирования с помощью Visual Studio Team Services (ранее Visual Studio Online). В статье подробно описывается как на базе репозиториев Git в Visual Studio Team Services организовать процесс разработки на базе Scrum и с помощью интеграции с Visual Studio обеспечить непрерывные процесс тестирования и разработки кода (Continuous Integration & Testing).


В этой статье мы рассмотрим следующий шаг в построении полного цикла DevOps – обеспечение непрерывного развертывания (Continuous Deployment) с помощью новых возможностей настраиваемых шаблонов сборки и публикации проектов в Visual Studio Team Services. Мы будем использовать проект на базе ASP.NET 5 и увидим как для таких проектов обеспечить полный цикл от редактирования кода до автоматической сборки и развертывания в облаке Azure (может быть любым местом).
Читать дальше →
Total votes 15: ↑13 and ↓2+11
Comments2

Модульное приложение на ASP.NET 5

Reading time6 min
Views15K
Достаточно продолжительное время при разработке веб-сайтов для своих клиентов я использовал собственную несложную CMS (Платформус). Написана она была на ASP.NET+MVC и имела закрытый исходный код. С появлением первой беты новой ASP.NET 5 я решил переписать свою систему на этой технологии, чтобы сделать ее кроссплатформенной и, в конечном итоге, выложить на GitHub. Т. к. технология очень новая, информации по этому вопросу практически не было, поэтому решение некоторых проблем удалось найти либо случайно, либо в процессе изучения исходных кодов самой ASP.NET 5.

Для упрощения я подготовил и также выложил на GitHub специальное тестовое решение – AspNet5ModularApp. В основном, я буду опираться на него в этой статье, но также буду касаться некоторых приемов и идей, которые использовал в Платформусе (отчасти, в надежде получить по ним какие-либо замечания).


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

Итак, вы решили стать фронтендером: практическое руководство для роста начинающего разработчика

Reading time5 min
Views26K


Во фронтенд разработке за последние несколько лет наблюдается огромный скачок развития. JavaScript продолжает увеличивать отрыв от остальных языков как наиболее популярный на Github, а вакансия фронтенд разработчика с каждым годом набирает популярность. И это не удивительно, что c ростом популярности языка мы наблюдаем значительное увеличение числа многообещающих программ изучения фронтенд технологий, учебников, ускоренных курсов и прочего. Такой цикл естественен для любой бурно развивающейся отрасли, и это происходит следующим образом:

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


Конечным результатом является огромный «бассейн» слабо обученных кадров. Большинство студентов таких курсов уходят с небольшим портфолио сайта и несколькими демо на javascript. Им не хватает углубленных знаний в отрасли, которые позволили бы им решать реальные задачи, с которыми профессиональные разработчики сталкиваются каждый день.
Читать дальше →
Total votes 16: ↑5 and ↓11-6
Comments13

Игровой цикл

Reading time10 min
Views11K
Очень важно, какой тип игры вы создаете. Если игра динамическая, нам нужно всё время обновлять картинку на устройстве. Это значит, что сначала нужно создать её, применив новые координаты объектов, а затем вывести на экран. Наше зрение устроено так, что если мы будем делать это меньше, чем за 0,04 с, то нам будет казаться движение объектов непрерывным. Но объекты могут быть разными по сложности прорисовки, а устройства, на которых вы играете – разными по быстродействию.

Может так случиться, что на одних планшетах или мобильниках наше приложение будет «летать», так что пользователь не будет даже успевать играть, а на других – будет тормозить так, что пользователь, скорей всего, удалит её со своего устройства. Возникает мысль, проходить один игровой цикл за 0,04 с (25 кадров (циклов) в секунду) на всех устройствах. Всё было бы хорошо, если бы все устройства могли это сделать. Представьте, что у вас 10 динамических объектов в игре, которые взаимодействуют между собой, порождая новые объекты, например, взрыв при столкновении. Также надо не забыть воспроизводить звуки и реагировать на включения пользователя в игру. Я уже не говорю о реалистичной графике окружающего мира.

Что же делать, если наше устройство не успевает в какой-то сцене создать игровой цикл? Решений несколько, ниже рассмотрено одно из них.

Создаем игровой цикл

Читать дальше →
Total votes 19: ↑10 and ↓9+1
Comments3

Создание динамически изменяемого ландшафта для RTS на Unity3D

Reading time21 min
Views35K
Давным-давно я имел радость играть в замечательнейшую RTS под названием «Периметр: Геометрия Воины» от отечественного разработчика K-D Labs. Это игра о том, как огромные летающие города под названием «Фреймы» бороздят просторы «Спанджа» — цепи соединенных между собой миров. Сюжет достаточно странный и абстрактный, но гораздо более интересной и инновационной составляющей игры была одна из ее технических особенностей, а не сюжет. В отличие от большинства RTS, где сражения происходят на статической местности, в «Периметре», одной из ключевых игровых механик был терраформинг. У игрока были средства манипулировать ландшафтом с целью возведения на нем своих сооружений а также целый арсенал боевых единиц, способных этот ландшафт превратить в потрескавшийся, поплывший и изрыгающий раскаленные камни/противных насекомых ужас.

Как известно, мир RTS нынче переживает некоторый упадок. Инди-разработчики слишком заняты тем, что клепают ретро-платформеры и rouge-like игры зубодробительной сложности, и поэтому, переиграв в «Периметр» некоторое время назад я решил, что должен и сам попробовать реализовать что-то подобное — идея была интересной и с технической и с геймплейной точек зрения. Обладая некоторым практическим опытом в разработке игр (ранее я совершал попытки сделать кое-что на XNA), я подумал, что чтобы добиться хоть какого-то успеха в одиночку мне придется воспользоваться чем нибудь более высокоуровневым и простым. Выбор мой пал на Unity 3D, чья пятая версия только-только вышла из под пресса.

Вооруженный вагоном энтузиазма, вдохновением от только что пройденного «Периметра» и просмотренной серией видеотуториалов по Unity, я начал делать наброски и знакомиться с инструментарием, который мне предложил Unity Editor.
Читать дальше →
Total votes 26: ↑23 and ↓3+20
Comments5

Изометрический плагин для Unity3D

Reading time9 min
Views47K


Сказ о том, как написать плагин для Unity Asset Store, поломать голову над решением известных проблем изометрии в играх, да еще и немного денег на кофе с этого поиметь, а так же понять на сколько Unity имеет расширяемый редактор. Картинки, реализации, графики и мысли под катом.
Читать дальше →
Total votes 37: ↑34 and ↓3+31
Comments27

Алгоритм поиска смещения объекта на изображении

Reading time5 min
Views19K
В прошлой статье я описал простой алгоритм распознавания движущихся объектов на динамической картинке. А сейчас я опишу несколько другую ситуацию. Допустим, у нас уже есть координаты объекта и нам надо определить, в какую сторону он сместился. Под координатами я подразумеваю координаты какой-либо условной точки на объекте, для простоты принимая допущения, что объект не меняет ориентацию в пространстве. То, что сам объект сместился, можно определить путем вычитания определенной области кадра из области другого кадра. В прошлой статье я как раз это и делал, только для целого кадра.
Читать дальше →
Total votes 24: ↑19 and ↓5+14
Comments6

Information

Rating
Does not participate
Location
Лазаревское, Краснодарский край, Россия
Date of birth
Registered
Activity