Pull to refresh
5
0
Send message

Процедурная генерация планет

Reading time19 min
Views38K

От переводчика:
Представляю вашему вниманию статью авторства Andy Gainey, в прошлом независимого разработчика игровых инструментов, ныне сотрудника Paradox Development Studio. На мой взгляд, автор играючи создал один из лучших процедурных генераторов планет с открытым исходным кодом.

Читать дальше →
Total votes 96: ↑94 and ↓2+92
Comments17

Пирамида тестов на практике

Reading time45 min
Views258K
Об авторе: Хэм Фокке — разработчик и консультант ThoughtWorks в Германии. Устав от деплоя в три ночи, он добавил в свой инструментарий средства непрерывной доставки и тщательной автоматизации. Сейчас налаживает такие системы другим командам для обеспечения надёжной и эффективной поставки программного обеспечения. Так он экономит компаниям время, которое эти надоедливые людишки тратили на свои выходки.

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

Содержание

Примечания

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

Осторожный переезд в Нидерланды с женой и ипотекой. Часть 1: поиск работы

Reading time12 min
Views108K
На Хабре да и вообще в русскоязычном Интернете есть немало инструкций о том, как перебраться в Нидерланды. Я и сам немало полезного почерпнул из одной статьи на Хабре (ныне, видимо, скрытой в черновике уже нет, вот она). Но я все-таки расскажу о своем опыте поиска работы и переезда в эту европейскую страну. Помнится, и когда я только собирался рассылать резюме, и когда уже проходил собеседования, мне было очень интересно почитать об аналогичном опыте других коллег по цеху.

image

В общем, если вам интересен рассказ о том, как C++ программист из Подмосковья искал работу в Европе, желательно в Великобритании, а нашел-таки в Нидерландах, переехал туда сам и привез жену, все это с непогашенной ипотекой в России и с небольшими приключениями — добро пожаловать под кат.
Читать дальше →
Total votes 216: ↑202 and ↓14+188
Comments306

А в это время

Reading time19 min
Views43K

– Нет, так дело не пойдет! – почти кричал взбешенный Анатолий Викторович. – Я не понимаю, за что плачу такие – заметьте, не малые – деньги! Чем программисты лучше других? Они что, какие-то особенные?


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


– Вот этими сказками я уже сыт по горло, про таинство творческих профессий! Слава Богу, у нас еще дизайнеров нет…

Читать дальше →
Total votes 61: ↑52 and ↓9+43
Comments153

Neurotic Bikes: генезис

Reading time6 min
Views9.7K
На днях Youtube посчитал, что мне покажется интересным видео с названием «AI Learns to play Hill Climb Racing». Забавно, ведь за пару минут до этого я закоммитил очередные изменения в проект, где мы с коллегами в перерывах между работой и работой решаем именно эту задачу. Никакого «AI» в том видео, правда, не обнаружилось – автор поразвлекал публику баловством с Box2D и на том успокоился. Тем не менее, предлагаю считать этот факт убедительным доказательством актуальности темы и разобрать устройство нашей погремушки.

Коротко о задаче: транспортное средство – в нашем случае это то ли Чужой, то ли швейная машинка «Зингеръ» на колесах, назовем его просто «агент» – должно проехать по наперлинным одноименным шумом барханам от старта до финиша. Вот так выглядит агент в своей песочнице:



Агент, коснувшийся спиной трека или не демонстрирующий должного рвения в продвижении к цели, снимается с трассы.
Поехали
Total votes 34: ↑34 and ↓0+34
Comments9

Как одно изменение конфигурации PostgreSQL улучшило производительность медленных запросов в 50 раз

Reading time3 min
Views44K
Здравствуйте, хабровчане! Предлагаю вашему вниманию перевод статьи «How a single PostgreSQL config change improved slow query performance by 50x» автора Pavan Patibandla. Она очень сильно мне помогла улучшить производительность PostgreSQL.

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

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

Медленный запрос

image
Читать дальше →
Total votes 90: ↑89 and ↓1+88
Comments39

Король разработки

Reading time15 min
Views211K


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

Полбеды, если он просто шутит, вроде, «разработка приносит мне столько бабок, что поработаю два часа и найму трех нищих врачей стричь мне лужайку». Хуже, когда говорит серьезно: «Ты зря стал писать код. Вся ирония этой индустрии в том, что став хорошим разработчиком, ты обретаешь навыки, которые приводят тебя к выводу, что разработчиком быть плохо».

Недавно у него дела пошли в гору, и там где нормальные люди радуются и расцветают, этот парень, кажется, совсем съехал с катушек. Мы с ним как следует выпили, и он рассказал мне много искреннего дерьма, которое, честно, я бы хотел расслышать обратно.
Читать дальше →
Total votes 375: ↑315 and ↓60+255
Comments667

Заблуждения Clean Architecture

Reading time15 min
Views424K
Превращаем круги в блоки

­­ 


На первый взгляд, Clean Architecture – довольно простой набор рекомендаций к построению приложений. Но и я, и многие мои коллеги, сильные разработчики, осознали эту архитектуру не сразу. А в последнее время в чатах и интернете я вижу всё больше ошибочных представлений, связанных с ней. Этой статьёй я хочу помочь сообществу лучше понять Clean Architecture и избавиться от распространенных заблуждений.

Читать дальше →
Total votes 58: ↑56 and ↓2+54
Comments203

Про одного парня

Reading time14 min
Views191K
История реальная, я все видел своими глазами.

Несколько лет один парень, как и многие из вас, работал программистом. На всякий случай напишу так: «программистом». Потому что он был 1Сником, на фиксе, производственной компании.

До этого он пробовал разные специальности – 4 года во франче программистом, руководителем проектов, умел закрывать по 200 часов, одновременно получая процент с проекта, за руководство и немного занимаясь продажами. Пробовал самостоятельно разрабатывать продукты, был начальником IT-отдела в большой компании, численностью 6 тысяч человек, примерял разные варианты применения своей кавычечной профессии – программиста 1С.

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

Этому парню стало интересно, как можно зарабатывать больше денег, не занимаясь продажами и не создавая свой собственный бизнес.
Читать дальше →
Total votes 272: ↑239 and ↓33+206
Comments247

Как создать игровой ИИ: гайд для начинающих

Reading time31 min
Views97K


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

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

UPD. Извиняюсь, но собственный перевод этой статьи на Хабре уже делал PatientZero. Прочитать его вариант можно здесь, но почему-то статья прошла мимо меня (поиском пользовался, но что-то пошло не так). А так как пишу в блог, посвященный геймдеву, решил оставить свой вариант перевода для подписчиков (некоторые моменты у меня оформлены по-другому, некоторые — намеренно пропущены по совету разработчиков).
Читать дальше →
Total votes 60: ↑60 and ↓0+60
Comments19

Повесть о создании классической RTS в домашних условиях с нуля + разбор основных этапов разработки (AI, сеть и т.д.)

Reading time38 min
Views76K
image

В статье речь пойдет об одном очень не новом проекте, который создавался совсем в другое время и совсем в других условиях. Это моя старенькая RTS под названием Земля онимодов (Onimod land). Чтобы было сразу понятно, что она собой представляет, можно посмотреть коротенькое видео:
Читать дальше →
Total votes 117: ↑116 and ↓1+115
Comments119

Конференция DEFCON 23. Как я потерял свой второй глаз, или дальнейшие исследования в области уничтожении данных. Часть 1

Reading time12 min
Views6.1K
Привет, DEFCON! Я собираюсь нарушить традицию и на этот раз начать выступление на минуту раньше, потому что хочу вам показать столько всего, что боюсь не успеть. Я уверен, что в этой презентации намного больше взрывных моментов, чем во всей истории презентаций за 25 лет существования «Дефкон».



Это не соло-проект, я использовал много идей моих друзей. На эту презентацию меня вдохновили выступления Брюса Поттера, который здесь уже выступал, Шейна Лоусона и Дивианта Оллама на конференции DefCon 19. Они рассказывали, как запустили какой-то дата–центр, в котором разместили очень ценную информацию на сетевых жестких дисках, и они выдвинули некоторые идеи. Как вы знаете, это может действительно стать мишенью для некоторых преступников, желающих выкрасть все данные, поэтому они рассматривали возможность некоего переключателя, который можно включить и физически уничтожить все диски в дата-центре. Я подумал, это было бы довольно круто, и я захотел сделать что-то вроде продолжения, провести ряд моих собственных экспериментов, а потом, четыре года спустя, я увидел, что несколько центров обработки данных подверглись физическим нападениям, и все данные на дисках были украдены – это и TorMail, и Silk Road(s), и Сноуден.
Total votes 22: ↑22 and ↓0+22
Comments3

OpenVPN: создание сервера на Windows

Reading time4 min
Views473K
Openvpn — виртуальная частная сеть. С ее помощью мы можем:
  • Создать защищенный канал свзяи, в то время, когда мы сидим с бесплатного Wi-Fi в кафе.
  • Обмениваться файлами между участниками сети.
  • Раздавать интернет испульзуя общий шлюз.

Основные преимущества:
  • Простота настройки.
  • Безопасность.
  • Не требует дополнительного оборудования.
  • Высокая скорость и стабильность.

Как и автор статьи об установке OpenVPN на Linux, я не нашел нормальной статьи, да еще и такой, чтоб описывалось все до мелочей. В этой статье на Хабрахабре я постараюсь максимально доступно все объяснить. Итак, поехали!
Читать дальше →
Total votes 14: ↑8 and ↓6+2
Comments11

Фантастика и фентези за два с половиной года, почти сто хороших книг

Reading time22 min
Views246K
На этот пост меня подтолкнула публикация «Почему я ворую книги, бедные авторы, и как это исправить», а именно — скепсис и возражения на мой комментарий о том, что я не читаю плохие книги. Мне предложили рассказать, как я выбираю книги для чтения и что именно читаю. Ну я и повелся.
Оформить список было сравнительно просто, FBReader любезно хранил на GoogleDrive все скачанные книги с того момента, как там появилась эта услуга. Предлагаю вашему вниманию список прочитанного мной за 2,5 года из жанров фентези и фантастики.
Читать дальше →
Total votes 70: ↑66 and ↓4+62
Comments553

Машины состояний и разработка веб-приложений

Reading time17 min
Views54K
Настал 2018-й год, найдено множество замечательных способов создания приложений, но бесчисленные армии фронтенд-разработчиков всё ещё ведут борьбу за простоту и гибкость веб-проектов. Месяц за месяцем они проводят в попытках достигнуть заветной цели: найти программную архитектуру, свободную от ошибок, и помогающую им делать их работу быстро и качественно. Я — один из этих разработчиков. Мне удалось найти кое-что интересное, способное дать нам шанс на победу.


Инструменты вроде React и Redux позволили веб-разработке сделать большой шаг в правильном направлении. Однако, самих по себе их недостаточно для создания крупномасштабных приложений. Похоже, что ситуацию в разработке клиентских частей веб-приложений может значительно улучшить применение машин состояний. О них и пойдёт речь в этом материале. Кстати, возможно вы уже построили несколько таких машин, но пока ещё об этом не знаете.
Читать дальше →
Total votes 19: ↑17 and ↓2+15
Comments11

Постъядерный караван в 35 килобайт

Reading time12 min
Views21K
35 килобайт минифицированного кода на обычном JavaScript, семь городов, пустоши, радиоактивные гекконы, съедобные кактусы, встречные караваны и бандиты. Что это? Это небольшая игра, которая запускается в браузере. Ее принципы довольно просты для повторения и в самой примитивной версии ее можно воссоздать, наверное, на любом устройстве, если там есть устройство вывода и генератор случайных чисел. Но сегодня я хочу рассказать, как я реализовал ее для современных браузеров.

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

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

Читать дальше →
Total votes 52: ↑51 and ↓1+50
Comments76

Создаем match-3 игру при помощи Flash и ActionScript

Reading time32 min
Views61K
Всем коллегам, здравствуйте.
Я начинающий FlashGame-разработчик. Мне понравился урок по созданию игры на механике match-three. Сам урок я понял с первого раза, а для чего же я сделал перевод? Во-первых, надеюсь это поможет кому-то, кто не силен в «инглише». Во-вторых, перевод позволил мне разобрать весь код по косточкам, очень тщательно. Ну и в-третьих, отталкиваясь от этой механики вы можете начинать создавать мач-3 вашей мечты. И он необязательно должен быть на Flash.

Перед тем как я начну, выдам пару соглашений. Урок взят мной из книги Gary Rosenzweig — «ActionScript 3.0 Game Programming University». Я уже писал в своем личном блоге, что не все наши флеш-разработчики положительно относятся к этой книге. Перевод может показаться немного деревянным и не очень приятным на слух. Некоторые слова, выражения могут иметь более подходящие аналоги в русском языке. Если это будет критично, исправлю. В программе используется дополнительный класс PointBurst. Я не буду его сейчас описывать, а скорее всего сделаю это в личном блоге, т.к. это довольно интересный класс. Просто пока будем знать, что этот класс выдает эффект всплывающих очков в определенном месте.
И последнее, я не придумывал ничего нового, а просто сделал перевод, т.е. все благодарности автору книги Gary Rosenzweig.



Читать дальше →
Total votes 43: ↑38 and ↓5+33
Comments26

Как и почему мы написали свой ECS

Reading time13 min
Views38K
В прошлой статье я описал технологии и подходы, которые мы используем при разработке нового мобильного fast paced шутера. Т.к. это была обзорная и даже поверхностная статья — сегодня я копну глубже и подробно расскажу, почему мы решили написать собственный ECS-фреймворк и не стали использовать существующие. Будут примеры кода и небольшой бонус в конце.

Читать дальше →
Total votes 37: ↑36 and ↓1+35
Comments48

Грязные трюки разработчиков видеоигр

Reading time12 min
Views78K

Предыдущие части: раз, два, три.

Благодарим за игру!


В первой части Wing Commander при выходе из игры мы получали от нашего менеджера памяти EMM386 исключение. Экран очищался и на него выводилась единственная строка, что-то типа «Ошибка менеджера памяти EMM386. Бла-бла-бла».

Нам нужно было выпустить игру как можно быстрее, поэтому я отредактировал ошибку менеджера памяти в hex-редакторе, чтобы она выглядела как «Благодарим за то, что играли в Wing Commander».

— Кен Демарест

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

Unity, ECS и все-все-все

Reading time7 min
Views108K


Сколько уже было мануалов "Как сделать игру на Unity за 3 часа", "Делаем Counter-Strike за вечер" и т.п.? Низкий порог входа — это, несомненно, главный плюс и минус Unity. Действительно, можно накидать “ассетов”, дописать несколько простых “скриптов”, обмотать синей изолентой и это даже будет как-то работать. Но когда проект обрастает игровыми механиками, сложной логикой поведения, то проблемы при подобном подходе нарастают как снежный ком. Для внедрения новых механик требуется переписывание кода во многих местах, постоянная проверка и переделывание префабов из-за побившихся ссылок на компоненты логики, не говоря уже об оптимизации и тестировании всего этого. Разумеется, архитектуру можно продумать изначально, но на практике это всегда недостижимая цель — дизайн-документ довольно часто меняется, какие-то части выкидываются, добавляются абсолютно новые и никак не связанные со старой логикой поведения. Компоненты в Unity — это шаг в правильном направлении в виде декомпозиции кода на изолированные блоки, но особенности реализации не позволяют достичь необходимой гибкости, а самое главное, производительности. Разработчики придумывают свои фреймворки и велосипеды, но чаще всего останавливаются на ECS (Entity Component System). ECS – одно из решений, продолжающее идею компонентной модели Unity, но придающее ей ещё больше гибкости и сильно упрощающее рефакторинг и дальнейшее расширение приложения новым функционалом без кардинальных изменений в текущем коде.

Читать дальше →
Total votes 27: ↑26 and ↓1+25
Comments30

Information

Rating
Does not participate
Registered
Activity