• 4 причины, почему люди чего-то не делают или “Как раскачать low-performer’а”

      Так получилось, что тесть и теща у меня доктора педагогических наук. Что приводит к тому, что волей-неволей начинаешь постигать различные полезные методики :)

      Однажды, после какого-то ученого совета за виски чаем на кухне тесть говорит: Саш, а вот как ты считаешь, почему люди чего-то не делают?

      Честно сказать, вопрос поставил меня в тупик. Я начал фантазировать: ну, обстоятельства мешают, черты характера, недостаток опыта…

      Не-не, сказал, тесть, все не так. Если люди чего-то не делают, для этого может быть 4 причины. После чего мой арсенал управленческих инструментов пополнился еще одним. И именно об этом инструменте мы сегодня поговорим, а заодно разберем несколько историй из реальной жизни:
      • Почему менеджеров проектов надо пересаживать в отдельное здание
      • Что делать, когда ваш заказчик не пользуется вашей системой отчетов
      • Как раскачать low-performer’а


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

      • Translation

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

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

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


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

      Обычно это отлично работает, но это становится большой проблемой для событий, которым нужна высокая пространственно-временная точность. Например если хочется разнести врагу башку!
      Читать дальше →
    • Портирование OpenWRT на новое устройство на примере ASUS DSL N12U

      • Tutorial
      Что делать если вашего роутера не оказалось в списке поддерживаемых устройств OpenWRT? Конечно же сделать свой порт. Это можно сделать довольно быстро, если поддержка данной платформы уже реализована.
      В этой статье я расскажу о процессе портирования прошивки в целом и о моем опыте портирования OpenWRT на ASUS DSL N12U.

      Читать дальше →
      • +19
      • 26.4k
      • 4
    • Правильная сумка для правильного гика

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

        Помните пост «Что хабровчане носят с собой», где народ хвастался содержимым своего рюкзака? Меня, если честно, больше интересовало не содержимое, а то, в чем народ носит свои вещи. Вот так, к слову, выглядела одна из наиболее интересных вещей — фотосумка Boomburum.



        Сегодня мне бы хотелось зайти к той теме с другой стороны и показать десяток отличных (действительно отличных) сумок на разный вкус, цвет и кошелек.
        Читать дальше →
      • Лекции Технопарка. 3 семестр. Проектирование высоконагруженных систем

        • Tutorial


        И снова в эфире наша постоянная рубрика «Лекции Технопарка». На этот раз предлагаем вам ознакомиться с материалами курса «Проектирование высоконагруженных систем». Цель курса — получение студентами навыков проектирования высокоэффективных программных систем.
        Читать дальше →
        • +50
        • 65.4k
        • 5
      • Секреты экспорта из Blender в Unity

        • Tutorial

        — Теория о системе координат (правосторонней и левосторонней)
        — Теория правильного создания 3d моделей в blender
        — Быстрый экспорт файлов из Blender в Unity3d.
        — Как правильно сопоставить масштабы модели в Blender и Unity.
        — Экспорт с правильной ориентацией модели
        — Почему количество вершин по-разному отображается в Unity и Blender?

        Скрипты для автоматического экспорта из Blender в Unity3d (Ссылку предоставил пользователь darkfrei )
        Читать дальше →
      • Создание мультиплеерного 3D-шутера на Webgl без опыта и денег

        Это первая часть истории о том, как маленькая команда веб-разработчиков разработала мультиплеерный 3d-шутер без опыта в геймдеве, больших денег и штата сотрудников.

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




        2011 год. С чего все началось


        В 2011 году мы были маленькой питерской веб-студией из 4 человек. Тимлид/сеошник, программист (вернее считал себя программистом), дизайнер и менеджер по продажам. На тот момент тимлид и программист занимались сайтами уже 3 года, но особых успехов на этом поприще не достигли. Хотя мы имели уже несколько постоянных клиентов на продвижении и обслуживании, но львиную долю дохода съедали налоги, аренда офиса и прочие расходы. Оставшихся копеек на четырех человек явно не хватало. Хроническое безденежье и отсутствие перспектив угнетали. Дизайнер уже навострил лыжи, да и остальные члены команды едва держались. Вот в такой обстановке и пришла в голову потрясающая по наивности мысль: «чего это мы все для всяких дядь делаем проекты, а давайте свое что-нибудь сделаем, например, игру браузерную и запилим её во вконтакте». Все, кроме дизайнера, восприняли идею с воодушевлением.
        Читать дальше →
      • Unity 3d 4.6 (5) проект Survival shooter game на русском

        Здравствуйте!

        Сегодня мы приступаем к изучению и сборке готового проекта от команды Unity 3d под названием Survival Shooter.

        При детальном изучении проекта мы коснемся таких игровых аспектов в изучении, как новая UI (версия Unity 3d 4.6), создание скриптов для движения камеры, управления игровым персонажем, точки спауна врагов и многое другое.

        Рассмотрим виды анимации и ее логического применения с помощью Animator Controller.
        Читать дальше →
        • +10
        • 25.1k
        • 2
      • Учим рекрутеров нанимать программистов

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

          Типичное рекламное объявление:



          Звучит почти как объявление из анекдота «Нужны рабочие для работы на работе, оплата деньгами».
          Подробности
        • 10 самых распространённых ошибок при программировании на JavaScript

          • Translation


          Сегодня JavaScript лежит в основе большинства современных веб-приложений. При этом за последние годы появилось большое количество JavaScript-библиотек и фреймворков для разработчиков Single Page Application (SPA), графики, анимации и даже серверных платформ. Для веб-разработки JavaScript используется повсеместно, и поэтому качество кода обретает всё большее значение.

          На первый взгляд, этот язык может показаться довольно простым. Встраивание в веб-страницу базового функционала JavaScript — это не проблема для любого опытного разработчика, даже если он ранее не сталкивался с этим языком. Однако это обманчивое впечатление, поскольку JavaScript гораздо сложнее, мощнее и чувствительнее к нюансам, чем кажется поначалу. Немало тонкостей в этом языке приводит к большому количеству распространённых ошибок. Сегодня мы рассмотрим некоторые из них. На эти ошибки нужно обратить особое внимание, если вы хотите отлично программировать на JavaScript.
          Читать дальше →
        • DLNA-сервер для дома и семьи

          Как-то так сложилось, что тег DLNA сервер чаще встречается в постах-вопросах, чем в ответах. И если в вопросах установки на домашний Windows-ПК какой-то пользовательский опыт накоплен, то определиться с выбором ПО для домашнего сервера/NAS-а/медиацентра — оказалось непросто. Распределившись по песочницам народ обособленно решает проблемы каждой программы в отдельности. А понять что из них чего стоит и нужно ли оно вообще — лично мне не удалось.

          И вот, я вооружившись ссылкой с Википедии Как выбрать DLNA-сервер под Windows, Mac OS X или Linux — опробовал почти всё, что есть под Linux.

          Читать дальше →
        • Сетевое программирование для разработчиков игр. Часть 3: виртуальные соединения поверх UDP

          • Translation
          От переводчика: Это перевод третьей статьи из цикла «Networking for game programmers». Мне очень нравится весь цикл статей, плюс всегда хотелось попробовать себя в качестве переводчика. Возможно, опытным разработчикам статья покажется слишком очевидной, но, как мне кажется, польза от нее в любом случае будет.
          Первая статья — http://habrahabr.ru/post/209144/
          Вторая статья — http://habrahabr.ru/post/209524/



          Виртуальные соединения поверх UDP


          Введение

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

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

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


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

          Но сначала, нам нужно более плотно разобраться, как работает интернет.
          Читать дальше →
          • +28
          • 36.6k
          • 5
        • 10 малоизвестных возможностей Objective-C

          • Tutorial
          Приветствую уважаемых хабражителей!

          Objective-C — язык с богатым рантаймом, но в данной статье речь пойдёт не о содержимом хедера <objc/runtime.h>, а о некоторых возможностях самого языка, о которых многие разработчики и не догадываются. Да, на них натыкаешься, читая документацию, отмечаешь про себя «хм, интересно, надо как-нибудь копнуть», но они обычно быстро вылетают из головы. А начинающие разработчики часто вообще читают документацию наискосок.

          В этой статье я собрал 10 удивительных на мой взгляд свойств языка Objective-C. Некоторые свойства самоочевидны, некоторые далеко не таковы. За использование некоторых в боевом коде надо бить по рукам, другие же способны помочь в оптимизации критических мест кода и в отладке. В конце статьи имеется ссылка на исходник, показывающий на примере все эти фичи.

          Итак, начну с самого «вкусного» на мой взгляд: безымянные методы.

          1. Безымянные методы


          Читать дальше →
        • Создание игры на ваших глазах — часть 1: Идея, вижен, выбор сеттинга, платформы, модели распространения и т.п



            Введение


            Данная статья является первой из запланированного цикла статей, посвященного разработке, дизайну и становлению нашей игры. Я намеренно не буду называть ни названия проекта, ни давать ссылок на него, чтобы пост не попал в “я пиарюсь”. Да, собственно, еще и пиарить толком нечего, т.к. проект находится в самом начале пути и мы планируем пройти этот путь вместе с теми, кому интересно понаблюдать за кухней true-инди.

            Этот цикл задуман как некий живой дев-лог игрового инди проекта. Здесь я планирую рассказывать обо всем, что будет встречаться на пути — от решений по выбору сеттинга, гейм-дизайна и арта до технической реализации всего это дела.
            Читать дальше →
          • Как устроены облака Яндекса: Elliptics

              За последние несколько лет в мире IT появилась модная тенденция – использование всего «облачного» для разработки новых продуктов. Публичных облачных провайдеров не так много, самый популярных среди них – Amazon. Однако многие компании не готовы доверять приватные данные кому-либо, при этом хотят хранить их надежно, и поэтому поднимают частные небольшие облачка.

              Любое облако состоит из двух основных компонентов: Единой Точки Входа (ЕТВ) и Облачной Магии (ОМ). Рассмотрим облачное хранилище Amazon S3: в роли ЕТВ используется довольно удобный REST API, а Облачную Магию обеспечивают эльфы, работающие на долларах. Компании, желающие разместить в S3 небольшие видеофайлы или базу данных, предварительно считают на калькуляторе сумму, которую они будут платить в месяц при планируемой нагрузке.

              Эта статья про другое облачное хранилище, в котором эльфы питаются Духом Свободы, электричеством и еще им нужно немножечко «кокаина».

              Называется это хранилище Elliptics.
              Есть желающие стать Повелителями Облаков? Прошу под кат.
            • Облачный API для мобильных приложений своими руками. Часть 1

                Вместо вcтупления


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

                Однако с появлением мобильных устройств, веб сайтов с богатой логикой и социальных сетей все стало меняться. Сейчас программы, которые не выходят в сеть, не умеют что-то выкладывать в фейсбуки и вообще работают сами в себе, практически не имеют права на жизнь. Даже професcиональные инструменты, такие как, Microsoft Office 2013, стали поддерживать облачные хранилища для обмена документами.

                Мир меняется. Теперь, чтобы заработать денег на продаже софта, необязательно писать свою собственную операционную систему или антивирус, потратив кучу времени и ресурсов. Достаточно просто попросить свою жену и вдвоем разработать мировой хит. Поэтому многие сегодня мечтают создать своих злых птичек или кат-зе-роуп, изучая разработку под iOS, Android, Windows Phone.

                Допустим, вы написали свое приложение и опубликовали его в каком-то из магазинов. Все отлично, вы получаете прибыль, но хочется больше. Вы понимаете, что надо писать приложения еще и для других платформ, чтобы расширить пользовательскую базу. Здесь-то и кроется первая засада — как минимизировать количество кода, который вы пишете, если приложения будут работать по большей степени одинаково и отличаться будут только внешним видом (и то не факт) и языком программирования?
                Читать дальше →
                • +16
                • 20.8k
                • 9
              • Привлечение пользователей в мобильную игру

                  Многие начинающие разработчики впадают в довольно наивное заблуждение: сделаем игру, в которую интересно играть, и заработаем на этом денег. К сожалению, рынок мобильных игр перенасыщен, каждый день выходят сотни новых тайтлов, игрок же способен оценить «интересность» от силы десятка игр в неделю. И вряд ли ваш проект окажется в этой десятке, если не предпринять дополнительных усилий.
                  Читать дальше →
                • Реалии мобильного геймдева


                  Последние несколько лет я руковожу небольшой геймдев студией, и на протяжении всего это времени ко мне периодически обращаются люди не из индустрии, которые «хотят дать денег» и получить себе проект. При этом представление этих людей о том, что такое игровая индустрия, скажем так, далеко от реального. Это статья — моя попытка рассказать о том, что сделать игру стоит больше, чем 200$, сделать поярче и заработать миллион — это не бизнес-план, и вообще, геймдев — это высокорискованный бизнес, а не принтер для денег.
                  Читать дальше →
                • Мобильная игра: где деньги?

                    Иногда, начиная обсуждать с гейм-дизайнером его новый концепт, понимаешь, что он считает его интересным и перспективным только потому, что в это будет интересно играть. К сожалению, делать игры, в которые интересно играть, это прерогатива инди. Если вы собираетесь зарабатывать на этой игре, нужно делать продукт, в который будут играть, более того такой, за который будут платить. И тут творчество отступает перед расчетом, и возникает ряд вопросов, на которые нужно ответить прежде, чем садиться за концепт.
                    Читать дальше →
                  • Сетевое программирование для разработчиков игр. Часть 2: прием и передача пакетов данных

                    • Translation
                    От переводчика: Это перевод второй статьи из цикла «Networking for game programmers». Мне очень нравится весь цикл статей, плюс всегда хотелось попробовать себя в качестве переводчика. Возможно, опытным разработчикам статья покажется слишком очевидной, но, как мне кажется, польза от нее в любом случае будет.
                    Первая статья — http://habrahabr.ru/post/209144/



                    Прием и передача пакетов данных


                    Введение

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


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

                    А сейчас я собираюсь рассказать вам, как на практике использовать UDP для отправки и приема пакетов.

                    BSD сокеты

                    В большинстве современных ОС имеется какая-нибудь реализация сокетов, основанная на BSD сокетах (сокетах Беркли).

                    Сокеты BSD оперируют простыми функциями, такими, как “socket”, “bind”, “sendto” и “recvfrom”. Конечно, вы можете обращаться к этим функциями напрямую, но в таком случае ваш код будет зависим от платформы, так как их реализации в разных ОС могут немного отличаться.

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