Pull to refresh
1
0
Алексей @Reposlav

Программист PHP

Send message

Ещё 20+ игр, которые прокачивают логику, алгоритмы и радуют умный мозг [по следам комментариев на Habr]

Reading time9 min
Views125K
image

Я выложила вчера подборку «15 игр, которые прокачивают логику, алгоритмы, ассемблер и силу земли». И столько классных ссылок в комментарии накидали, что я чуток опухла, но сделала отдельную подборку, по горячим следам. Спасибо большое всем, кто внес свой вклад.

Еще я веду канал в Telegram: GameDEVils, делюсь там клевыми материалами (про геймдизайн, разработку и историю игр).
Читать дальше →
Total votes 64: ↑63 and ↓1+81
Comments59

Про фразовые глаголы

Reading time7 min
Views63K
Фразовые глаголы английского языка гораздо проще, чем кажутся. Они работают точно так же, как в русском языке приставки. Выдающийся советский актёр Зиновий Гердт, узнав однажды о недостойном поступке, совершённом знакомым ему писателем, сказал: «Разрешите с вами раззнакомиться». Думаю, мало кто слышал в живой речи глагол «раззнакомиться». Но интуитивно всё равно понятно, что это противоположность «ПО-знакомиться».

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

Безответственные преподаватели рекомендуют значения фразовых глаголов «просто запоминать», не пытаясь понять их внутреннюю логику. Это порочная практика: фразовых глаголов только самых распространённых – тысячи. «Выучить» их принципиально невозможно. Вот, скажем, let – это «позволять, пускать». А фразовый глагол «let in on» означает «посвящать в тайну». Запомнить такое способен только человек, который понимает переносные значения частиц, образующих фразовые глаголы.

Если правильно усвоить эти переносные значения, можно начать понимать даже такие фразовые глаголы, с которыми сталкиваешься впервые. Знание нескольких принципов освобождает от необходимости знания многих фактов.
Читать дальше →
Total votes 88: ↑86 and ↓2+115
Comments157

MVC в Unity со Scriptable Objects. Часть 2

Reading time4 min
Views7.2K
Продолжение цикла статей от Cem Ugur Karacam (часть 1 можно прочитать здесь).

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

image
Читать дальше →
Total votes 9: ↑9 and ↓0+9
Comments0

Генерируем тайловые уровни и прячем квадраты от игрока

Reading time8 min
Views18K

Генерация уровней в Unexplored 2


Мы очень гордимся генератором уровней игры Unexplored 2, это программа, отвечающая всем современным требованиям. В посте я расскажу о том, как создаются уровни игры.

Нам не пришлось заново изобретать велосипед. В Unexplored 1 мы уже создали техники, которые сильно повлияли на успех первой игры. Unexplored 2 просто продолжила начатое. Фундамент нашей технологии состоит из двух частей: мы применяем многоэтапную генерацию, которая почти имитирует процесс, очень похожий на работу живого дизайнера уровней. Поверх него мы используем технику под названием "циклическая генерация подземелий", которая гораздо лучше справляется с генерацией естественно выглядящих уровней, чем большинство стандартных приложений генеративного создания контента. В этом посте я расскажу о первом аспекте. Адаптация циклической генерации подземелий к Unexplored 2 будет темой будущего поста.

Имитация «человеческого» дизайна уровней


Генератор уровней разбивает процесс генерации уровня на целое множество управляемых этапов. Он проходит путь от высокоуровневого планирования до низкоуровневой детальной карты уровня. По сути, он сначала создаёт набросок уровня, а затем начинает добавлять детали, пока уровень не станет завершённым и заполненным.
Читать дальше →
Total votes 50: ↑50 and ↓0+50
Comments7

Эволюция самого популярного инструмента любого разработчика (в Visual Studio)

Reading time2 min
Views11K
В любой среде разработки есть инструмент с названием «Output». Нет нужды описывать что он делает, поскольку абсолютно все разработчики его используют в своей работе ежедневно. Он прост и консервативен.

По сути не менялся десятилетиями и до этих пор выглядит как то так:


Текст, текст и еще раз текст. Много текста...

Даже в этом крошечном примере не сразу видно где строка с ошибкой. Для того чтобы это понять, нужно приложить усилия и потратить время. Просто потому что нужно читать текст и искать в нем слова “error”, “exception” или “warning”. Программисту искать, а заказчику платить за потраченное на это время.
Читать дальше →
Total votes 42: ↑34 and ↓8+26
Comments84

Objectives and Key Results: инструкция по применению

Reading time19 min
Views64K

Всем привет! Меня зовут Егор Толстой, я руковожу кластером App Platform в Авито. Мои команды в основном занимаются разработкой внутренних продуктов, инструментов и процессов — тем, что принято называть платформенной разработкой.


Год назад я рассказывал в этом блоге, как мы внедрили и используем performance review. Тогда я упоминал, что мы смотрим на него как на индикатор пользы, которую приносит компании каждый отдельный человек. Понимать это важно и полезно. Это помогает ответить на вопрос «насколько Вася молодец по сравнению с Петей?» и определить, какую премию кому выплатить. Но когда мы переходим на уровень команд, всё становится сильно интереснее. Здесь важно оценить конкретный результат команды и его влияние на успех компании. Высокое среднее значение перфоманса всех членов команды совсем необязательно значит, что команда достигла крутых результатов. Какая-то корреляция точно присутствует, но для оценки фактического вклада команды в успех компании этот инструмент использовать нельзя.


Для решения этой и ряда других проблем мы в Авито используем метод OKR — Objectives and Key Results. Он позволяет установить дерево понятных и легко измеримых целей во всей компании, связать результаты различных команд друг с другом и добиться достижения желаемых результатов.


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


Читать дальше →
Total votes 22: ↑21 and ↓1+20
Comments6

Создание собственной цветовой палитры

Reading time4 min
Views44K
Адаптировано из нашей будущей книги «Рефакторинг UI»

Видели эти модные генераторы цветовой палитры? Когда выбираешь цвет, настраиваешь несколько параметров с музыкальными словечками типа «триада» или «четвёртый мажор» — и получаете пять идеальных цветов для своего веб-сайта?



Такой вычислительный и научный подход к выбору идеальной цветовой гаммы крайне соблазнителен, но не очень полезен.
Читать дальше →
Total votes 94: ↑92 and ↓2+90
Comments12

Как я слил 1000$ в продвижение игры и что из этого получилось

Reading time6 min
Views60K


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

Для многих знакома ситуация, делал-делал, а кроме друзей так и никто и не увидел игру, а ведь так старался! Под катом не будет расплывчатых формулировок или предположений по продвижению. Конкретно ссылки — конкретно результат. Поехали!
Читать дальше →
Total votes 82: ↑81 and ↓1+80
Comments79

SALI — это Вам ~ язык программирования

Reading time3 min
Views7.2K

Зачем ещё один язык программирования?


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

К чёрту интриги, велком под CUT.
Читать дальше →
Total votes 47: ↑8 and ↓39-31
Comments68

Внедрение зависимостей через поля — плохая практика

Reading time6 min
Views76K
Перевод статьи Field Dependency Injection Considered Harmful за авторством Vojtech Ruzicka

image

Внедрение зависимостей через поля является очень популярной практикой в DI-фреймворках, таких как Spring. Тем не менее, у этого метода есть несколько серьезных компромиссов и поэтому стоит чаще избегать его.
Читать дальше →
Total votes 25: ↑21 and ↓4+17
Comments59

Аналоговый мир и его иллюзия

Reading time12 min
Views17K
Обычно выбор в играх выглядит примерно так:



Ситуация ясно очерчена и чётко сообщает о возможных вариантах. Хотя эта система в основном используется в интерактивном кино, такой тип выбора существует почти в каждом жанре. Его просто срежиссировать и он с лёгкостью создаёт ощущение моральной драмы. Однако при этом упускается очень важный аспект принятия решений в реальной жизни: в ней вы почти никогда не знаете, какие у вас варианты, и к чему они приведут.

Вот другой пример выбора:



Игрок может избежать снаряда, спустившись вниз или поднявшись наверх. Этот выбор очень похож на приведённый выше. Однако здесь никакой явной подсказки, спрашивающей игрока о выбираемом им направлении. Вместо этого выбор косвенно передаётся через механику игры. И в отличие от явного выбора, здесь варианты определены не так чётко. В этом случае выбору может быть и не хватает этической составляющей предыдущего примера, но он намного более интересный. Кроме того, он кажется неотъемлемой частью игрового процесса, а не искусственно созданной ситуацией.
Читать дальше →
Total votes 26: ↑26 and ↓0+26
Comments9

Авторизация OAuth для Xamarin-приложений

Reading time5 min
Views15K
Итак, сегодня мы продолжаем разбираться с различными механизмами авторизации пользователей в приложениях на Xamarin. После знакомства с SDK от Facebook и ВКонтакте (здесь и здесь), можем перейти к одному из самых популярных (на текущий момент) механизмов внешней авторизации пользователей — OAuth. Большинство популярных сервисов вроде Twitter, Microsoft Live, Github и так далее, предоставляют своим пользователям возможность входа в сторонние приложения с помощью одного привычного аккаунта. Научившись работать с OAuth вы легко сможете подключать все эти сервисы и забирать из них информацию о пользователе.

Все статьи из колонки можно найти и прочитать по ссылке #xamarincolumn, или в конце материала под катом.


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

Усатый стрелок из двадцати трёх полигонов

Reading time20 min
Views30K

А давайте отвлечёмся немного и напишем игру в google play? И не такую огромную и неподъёмную фигню, про которую я обычно пишу статьи, а что-нибудь простое и милое сердцу?


На самом деле, всё очень просто: я наконец-то зарегистрировал аккаунт разработчика и очень хочу его опробовать. На момент написания этих строк у меня нет ни одного написанного класса и ни одного нарисованного пикселя. По сути, эта статья — самый настоящий devlog.

Total votes 87: ↑86 and ↓1+85
Comments26

Russian Minesweeper — мультиплеерная версия игры «Сапёр»

Reading time5 min
Views17K
image

Здравствуйте, уважаемые читатели. Искренне надеюсь, что среди читателей Хабра найдутся любители такой замечательной игры как «Сапёр».

Если верно помню, то впервые эта игра появилась на операционной системе Windows 3.1 ещё в далеком 1994-ом году. В то время эта игра позиционировалась как средство для обучения использованию компьютерной мыши и в целом графическому интерфейсу ОС. Выглядела она примерно так:

image

Принцип игры согласно Wikipedia
Плоское или объёмное игровое поле разделено на смежные ячейки (квадраты, шестиугольники, кубы и т. п.), некоторые из которых «заминированы»; количество «заминированных» ячеек известно. Целью игры является открытие всех ячеек, не содержащих мины.
Игрок открывает ячейки, стараясь не открыть ячейку с миной. Открыв ячейку с миной, он проигрывает. Мины расставляются после первого хода, поэтому проиграть на первом же ходу невозможно. Если под открытой ячейкой мины нет, то в ней появляется число, показывающее, сколько ячеек, соседствующих с только что открытой, «заминировано» (в каждом варианте игры соседство определяется по-своему); используя эти числа, игрок пытается рассчитать расположение мин, однако иногда даже в середине и в конце игры некоторые ячейки всё же приходится открывать наугад. Если под соседними ячейками тоже нет мин, то открывается некоторая «не заминированная» область до ячеек, в которых есть цифры. «Заминированные» ячейки игрок может пометить, чтобы случайно не открыть их. Открыв все «не заминированные» ячейки, игрок выигрывает.

Однако, время идет, популярность сапера падает, и хочется внести новую жизнь и краски в эту игру. Именно так и родилась мультиплеерная версия игры, именованная как "Russian Minesweeper", которая представляет собой браузерную онлайн игру. Заинтересовавшихся прошу под кат.
Читать дальше →
Total votes 24: ↑24 and ↓0+24
Comments49

Теория близости: главное правило дизайна, которое помогает перейти от субъективных ощущений к конкретике

Reading time3 min
Views73K
Впервые о теории близости я прочитал в 2007 году. Она была сформулирована так: «объекты, расположенные близко друг к другу, воспринимаются связанно». Тогда я подумал: «спасибо, Кэп! Я как-то и сам догадался, что букву “М” нужно вешать ближе к мужскому туалету, а не к женскому». Тогда я не осознал, что это одно из главных правил дизайна, которое помогает подбирать расстояния между элементами, размеры полей, расположение кнопок, размер логотипов и многое другое. А главное, теория позволяет быстро понять, хороший перед вами дизайн или нет, даже если вы не дизайнер.
image
Читать дальше →
Total votes 64: ↑60 and ↓4+56
Comments23

Создание вашей первой игры на Phaser. Часть 1 — Введение

Reading time3 min
Views19K

Phaser


Оглавление


0. Подготовка к работе
1. Введение [Вы тут]
2. Загрузка ресурсов
3. Создание игрового мира
4. (wip) Группы
5. (wip) Мир физики
6. (wip) Управление
7. (wip) Добавление целей
8. (wip) Последние штрихи


Добро пожаловать в наш первый урок по созданию игр на Phaser. Здесь я расскажу вам, как создать небольшую игру — платформер, которая познакомит вас с основными функциями данного фремворка и работу с ним в нынешних реалиях (ES6 / TypeScript + WebPack).


Что такое Phaser?


Phaser — это HTML5 (JavaScript / TypeScript) игровой фреймворк, который призван помочь разработчикам создавать крутые, кросс-браузерные HTML5 игры в короткие сроки и, в отличии от других фреймворков, phaser изначально затачивался под мобильные устройства. Единственное требование выдвигаемое данным фреймворком — поддержка тега <canvas />. Он также много чего унаследовал от Flixel.

Читать дальше →
Total votes 22: ↑16 and ↓6+10
Comments2

Планирование ассортимента: «Гипермаркет» vs. «бутик»

Reading time10 min
Views8.7K
Сегодня я решил опубликовать одну из глав книги «Ваш интернет-магазин от А до Я», которую я написал, основываясь на своём опыте работы в сфере eCommerce, популярности тех или иных тем моих статей, докладов или интервью, а также вопросах, которые задают слушатели и читатели.

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

Всех, кому интересна тема планирования ассортимента, прошу под кат.

Читать дальше →
Total votes 21: ↑19 and ↓2+17
Comments12

Нейронные сети для начинающих. Часть 1

Reading time7 min
Views1.5M
image

Привет всем читателям Habrahabr, в этой статье я хочу поделиться с Вами моим опытом в изучении нейронных сетей и, как следствие, их реализации, с помощью языка программирования Java, на платформе Android. Мое знакомство с нейронными сетями произошло, когда вышло приложение Prisma. Оно обрабатывает любую фотографию, с помощью нейронных сетей, и воспроизводит ее с нуля, используя выбранный стиль. Заинтересовавшись этим, я бросился искать статьи и «туториалы», в первую очередь, на Хабре. И к моему великому удивлению, я не нашел ни одну статью, которая четко и поэтапно расписывала алгоритм работы нейронных сетей. Информация была разрознена и в ней отсутствовали ключевые моменты. Также, большинство авторов бросается показывать код на том или ином языке программирования, не прибегая к детальным объяснениям.

Поэтому сейчас, когда я достаточно хорошо освоил нейронные сети и нашел огромное количество информации с разных иностранных порталов, я хотел бы поделиться этим с людьми в серии публикаций, где я соберу всю информацию, которая потребуется вам, если вы только начинаете знакомство с нейронными сетями. В этой статье, я не буду делать сильный акцент на Java и буду объяснять все на примерах, чтобы вы сами смогли перенести это на любой, нужный вам язык программирования. В последующих статьях, я расскажу о своем приложении, написанном под андроид, которое предсказывает движение акций или валюты. Иными словами, всех желающих окунуться в мир нейронных сетей и жаждущих простого и доступного изложения информации или просто тех, кто что-то не понял и хочет подтянуть, добро пожаловать под кат.
Читать дальше →
Total votes 70: ↑60 and ↓10+50
Comments64

Symfony: обработка запросов в API

Reading time2 min
Views11K
image

Я думаю, для многих не секрет, что компонент Form плохо подходит для работы в API,
каждый изобретает свой велосипед на замену, одним из таких велосипедов я решил поделиться. На звание “лучшего решения” я не претендую, но если мое решение кому-нибудь окажется полезно, либо я получу новые знания – будет очень здорово.
Читать дальше →
Total votes 15: ↑9 and ↓6+3
Comments19
1

Information

Rating
Does not participate
Location
Санкт-Петербург, Санкт-Петербург и область, Россия
Date of birth
Registered
Activity