Как стать автором
Обновить
4
0
Сергей Гальченко @BuccapuoH

Javascript-разработчик

Отправить сообщение

Мини-игра на Rust + macroquad

Время на прочтение11 мин
Количество просмотров6.7K

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

Читать далее
Всего голосов 24: ↑24 и ↓0+24
Комментарии8

Как делают вакцины

Время на прочтение15 мин
Количество просмотров42K

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

Под катом — расшифровка лекции специалиста по промышленным биотехнологиям, которая прошла при поддержке ярославской Точки при ЯрГУ. В ней — подробно о типах вакцин, механизмах их работы и способах массового производства.

Читать далее
Всего голосов 46: ↑45 и ↓1+44
Комментарии23

Руководство по перезаряжаемым литиевым аккумуляторам для начинающих

Время на прочтение6 мин
Количество просмотров60K


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

Так много типов!


Первые коммерческие литий-ионные аккумуляторы вышли на рынок в 1991 году, и за прошедшие с тех пор почти 30 лет мы наблюдали быстрый их прогресс. В итоге у нас появилось множество различных технологий и типов аккумуляторов, делящихся по типу конструкции и используемых материалов. Чтобы правильно обращаться с аккумуляторами, важно знать, какой именно тип попал к вам в руки, и очень важно обратить на это внимание.
Читать дальше →
Всего голосов 22: ↑19 и ↓3+16
Комментарии33

Искусственная глупость: искусство намеренных ошибок

Время на прочтение13 мин
Количество просмотров32K
image

Всё должно быть изложено так просто, как только возможно, но не проще.
— Альберт Эйнштейн

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

Частая ошибка в разработке и реализации систем ИИ в компьютерных играх заключается в слишком сложном дизайне. Разработчику ИИ легко увлечься созданием умного игрового персонажа и потерять из виду конечную цель, а именно создание развлекающей игры. Если у игрока есть иллюзия того, что компьютерный противник делает что-то умное, то неважно, каким образом ИИ (если он есть) создаёт эту иллюзию. Признак хорошего программиста ИИ — способность противостоять искушению добавить интеллекта туда, где он не нужен, и распознавание ситуаций, в которых достаточно более «дешёвых» и простых решений. Программирование ИИ часто больше похоже на искусство, чем на науку. Способность различать моменты, в которых достаточно дешёвых трюков, и тех, где требуется более сложний ИИ, даётся непросто. Например, программист, обладая полным доступом ко всем структурам игровых данных, легко может читерить, сделав NPC всезнающими. NPC могут знать, где находятся враги, где лежит оружие или амуниция, не видя их. Однако, игроки часто распознают такие дешёвые трюки. Даже если они не могут определить саму природу читерства, у них может создаться ощущение, что поведение NPC не похоже на естественное.
Читать дальше →
Всего голосов 53: ↑52 и ↓1+51
Комментарии84

Как создаются изометрические миры

Время на прочтение25 мин
Количество просмотров58K
image

Все мы играли в потрясающие изометрические игры, будь то первые Diablo, Age of Empires или Commandos. При первой встрече с изометрической игрой можно задаться вопросом: двухмерная она, трёхмерная или нечто совершенно другое. Сам мир изометрических игр обладает волшебной притягательностью для разработчиков. Давайте попробуем раскрыть тайну изометрической проекции и создадим простой изометрический уровень.

Для этого я решил использовать Phaser с кодом на JS. В результате у нас получится интерактивное приложение HTML5.

Учтите, что это не туториал по разработке на Phaser, мы просто используем его для удобного ознакомления с базовыми концепциями создания изометрической сцены. Кроме того, в Phaser есть простые способы создания изометрического контента, например, Phaser Isometric Plugin.

Для упрощения при создании сцены мы будем использовать тайлы.
Всего голосов 49: ↑49 и ↓0+49
Комментарии7

CSS и iOS Safari

Время на прочтение3 мин
Количество просмотров134K
image Доброго времени суток, дорогие хабрахабровцы!

Всегда хочется, что бы твой сайт выглядел одинаково хорошо на разных устройствах, включая и мобильные. Но, если поведение в браузерах Android во многом предсказуемо, то с iOS возникает ряд «сюрпризов». О них сегодня и поговорим!
Читать дальше →
Всего голосов 24: ↑23 и ↓1+22
Комментарии32

Жизнь, смерть и наследие джейлбрейка iPhone

Время на прочтение15 мин
Количество просмотров29K

Как разношёрстная группа молодых хакеров участвовала в формировании современного iPhone


image

Шторы на окнах наполовину опущены, из-за чего в спальне царит полумрак. Сумрачный день в Бассано-дель-Граппа, городе на северо-востоке Италии, более всего известном миру благодаря бренди с таким же названием – граппа. Я сижу на двуспальной кровати – сидеть тут больше негде. Слева стоит книжный шкаф, забиты комиксами про Микки-Мауса – обязательный атрибут детской спальни любого итальянца. Передо мной, сидя в кресле, стилизованном под сиденье гоночного автомобиля, находится Люка Тодеско [Luca Todesco], 19-летний паренёк, и, возможно, лучший хакер iPhone на планете.

Я передаю ему свой новый iPhone 7 с последними обновлениями.

«Можешь его джейлбрейкнуть?» – спрашиваю я.
Всего голосов 28: ↑23 и ↓5+18
Комментарии134

Графика для инди игр. Что делать если кругляшки и палочки вас не устраивают

Время на прочтение3 мин
Количество просмотров25K
И снова добрый день. Вчера я опубликовал статью по разработке игры на Kotlin и вполне ожидаемо первый блин вышел комом. Ну да ничего страшного, любая ошибка это опыт. Главное сделать правильные выводы и двигаться дальше. Что было неправильно вчера и что я рассчитываю исправить сегодня. Не стоит мешать в кучу разные материалы, это первое. И второе — имеет смысл сдобрить статью иллюстрациями и ссылками на внешние источники. Итак, погнали.

Графика, это первое что бросается в глаза пользователю, запустившему ваше приложение. И хотя в Google Play есть несколько игр чисто текстовых, это исключение из правил. И в разработке подобных игр без сомнения полно своих подводных камней. Что же следует сделать инди-разработчику, чтобы не провалить то самое первое впечатление? В первую очередь следует на первых этапах разработки определиться с основным интерфейсом. Есть несколько практик как сделать это быстро и дешево:
Читать дальше →
Всего голосов 37: ↑30 и ↓7+23
Комментарии15

Внутренняя структура игры Contra

Время на прочтение22 мин
Количество просмотров50K
image

Как и многие из тех, кто программирует видеоигры, в детстве я часто играл в игры для NES. Меня всегда поражало, как разработчики смогли добиться столь многого минимальными усилиями, поэтому я потратил кучу времени на анализ внутренней работы некоторых игр. Сегодня я начинаю серию постов, в котором буду документировать то, чему научился, с точки зрения программиста игр. Я постараюсь сосредоточиться на работе систем игры на уровне движка, а не на аппаратном уровне (то есть буду говорить о том, как игра решает, что нужно отрисовать в текущем кадре, а не о том, как работают спрайты на NES). Также я постараюсь добавить любые крупицы информации об играх, которые мне покажутся интересными, например, неочевидное с точки зрения игрока поведение или примеры багов в логике игры.
Читать дальше →
Всего голосов 113: ↑112 и ↓1+111
Комментарии32

Синхронизация состояний в многопользовательских играх

Время на прочтение13 мин
Количество просмотров45K
image

Проблема многопользовательских игр


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

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

Обычно программа игры должна симулировать следующее:

изменения в окружении с учётом времени и вводимых игроками данных.

Игра — это программа, хранящая состояние, поэтому она зависит от времени (реального или логического). Например, PACMAN симулирует окружение, в котором постоянно перемещаются призраки.

Многопользовательская игра не является исключением, однако из-за взаимодействия игроков её сложность намного выше.
Читать дальше →
Всего голосов 48: ↑48 и ↓0+48
Комментарии38

Создание вашей первой игры на Phaser. Часть 0 — Подготовка к работе

Время на прочтение7 мин
Количество просмотров22K

Phaser


Оглавление


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


Эта серия статей научит вас основам и "хорошему тону" игрового фремворка Phaser. За данный курс, я постараюсь объяснить вам основные идеи и возможности фреймворка, а также покажу как его грамотно использовать в связке с TypeScript и Webpack.

Читать дальше →
Всего голосов 24: ↑19 и ↓5+14
Комментарии8

Continuous delivery с Travis CI и Ansible

Время на прочтение4 мин
Количество просмотров11K

Настройка непрерывной доставки (Continuous delivery CD) для вашего проекта c github.com

Hеобходимо:

  • Репозиторий на github.com
  • Сервер для Ansible (для примера ip: 1.1.1.1)
  • Сервер для развертывания вашего проекта (для примера ip: 2.2.2.2)
  • Локальная машина с настроенным проектом
  • Базовые знания работы в командной строке, Travis CI и Ansible
Читать дальше →
Всего голосов 19: ↑17 и ↓2+15
Комментарии9

Splunk. Введение в анализ машинных данных — часть 1. Примеры SPL запросов и визуализация логов

Время на прочтение4 мин
Количество просмотров37K


В данной статье мы расскажем и покажем как загрузить данные в Splunk, как строить поисковые запросы в системе на основе встроенного языка SPL и как можно их визуализировать. Это чисто практическая «How to» статья на основе тестовых данных, доступ к которым предоставляется свободно и доступен для скачивания всем желающим.

После прочтения и практического повторения Вы научитесь:

  • Пользоваться базовым функционалом системы
  • Загружать данные в Splunk
  • Строить базовые поисковые запросы
  • Визуализировать полученные результаты

Всего голосов 12: ↑12 и ↓0+12
Комментарии11

Борьба с читерами в онлайн-играх: 22 «нужно» и «нельзя»

Время на прочтение10 мин
Количество просмотров56K
image

Почти невозможно найти успешную многопользовательскую онлайн-игру (кроме тех, в которые играют только друзья разработчика), в которой нет читеров. Другими словами, если в вашей публичной игре нет читеров, она или недостаточно популярна, или распознавание мошенников работает не слишком хорошо. Во всех остальных случаях вам придётся иметь дело с читерством. Изучите список шагов которые НУЖНО и НЕЛЬЗЯ совершать (подробное обсуждение темы читерства приведено в моей трёхтомной книге, см. примечание в конце статьи) при борьбе с мошенничеством в играх.
Читать дальше →
Всего голосов 90: ↑75 и ↓15+60
Комментарии140

Уроки дизайна миссий в открытом мире, полученные из Assassin’s Creed III

Время на прочтение9 мин
Количество просмотров14K
image

Assassin’s Creed III стала игрой, побудившей меня начать вести блог, в котором я рассказывал о дизайне её разных уровней. Эта серия постов стала довольно популярна в сообществе любителей Assassin’s Creed. Хотя, если быть честным, недавно я пытался перечитать их, и лучше бы мне было оставить их в покое. Написанное мною несколько лет назад теперь заставляет меня испытывать стыд (даже если со стороны кажется, что причин для него нет). С другой стороны, этот стыд по крайней мере показывает, что за эти годы я набрался опыта.
Всего голосов 30: ↑27 и ↓3+24
Комментарии9

Про жиры с точки зрения химика

Время на прочтение18 мин
Количество просмотров116K
КДПВ Витязь на распутье


Приветствую всех! Статью про взгляд на проблему жиров с моей, химической точки зрения я обещал написать уже давно, да больно уж вопрос непонятен. Однако, попробуем разобраться. Хотя на эту тему существует громадное количество публикаций — ясности они не приносят — так как часто противоречат и друг другу и здравому смыслу. Так что, собравшись с духом, решил рыться в материалах до момента понимания. Вас же приглашаю ознакомиться с моими изысканиями. Нам придётся копать несколько глубже обычного, постараемся разобраться с этим вопросом «с точки зрения банальной эрудиции»… в смысле — логики. На вход — факты, только факты. Причём, моя цель просто выяснить для себя этот вопрос, каких-либо других целей не имею. Меня интересует — какие жиры более полезны, какие вредны, сколько их употреблять и каких, на чём жарить, как сохраняются, разъяснить странности с маргариновыми транс-жирами(для меня объяснения изготовителей выглядят туманными и неполными). Всё это в рамках официальных рекомендаций ВОЗ и российских уполномоченных органов — то есть никакой конспирологии. Если Вам это интересно — прошу под кат.
Читать дальше →
Всего голосов 63: ↑61 и ↓2+59
Комментарии242

Удлинение геймплея и создание реиграбельности

Время на прочтение4 мин
Количество просмотров14K
Иногда игра, над которой вы/ты работал/ли, оказалась слишком короткой и вам в голову просто вбилось, что нужно её растянуть. Какими способами это можно сделать? Почему удлинение игрового процесса схожа с реиграбельностью? Да потому что они оба преследуют цель, чтобы в игру играли как можно больше. Заранее предупрежу, что это не всегда хорошая идея, удлинять геймплей игры.


Читать дальше →
Всего голосов 16: ↑11 и ↓5+6
Комментарии6

Математика для искусственных нейронных сетей для новичков, часть 2 — градиентный спуск

Время на прочтение8 мин
Количество просмотров130K
Часть 1 — линейная регрессия

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

Градиентный спуск


В прошлой части был показан пример вычисления параметров линейной регрессии с помощью метода наименьших квадратов. Параметры были найдены аналитически — , где — псевдообратная матрица. Это решение наглядное, точное и короткое. Но есть проблема, которую можно решить численно. Градиентный спуск — метод численной оптимизации, который может быть использован во многих алгоритмах, где требуется найти экстремум функции — нейронные сети, SVM, k-средних, регрессии. Однако проще его воспринять в чистом виде (и проще модифицировать).
Читать дальше →
Всего голосов 27: ↑26 и ↓1+25
Комментарии18

Эффективное использование Github

Время на прочтение13 мин
Количество просмотров123K

Github — важная часть жизни современного разработчика: он стал стандартом для размещения opensource-проектов. В «2ГИС» мы используем гитхаб для разработки проектов web-отдела и хостинга проектов с открытым кодом.

Хотя большинство из нас пользуются сервисом практически каждый день, не все знают, что у него есть много фишек, помогающих облегчить работу или рутинные операции. Например, получение публичного ключа из URL; отслеживание того, с каких сайтов пользователи приходят в репозиторий; правильный шаринг ссылок на файлы, которые живут в репозиториях гитхаба; горячие клавиши и тому подобное. Цель этой статьи — рассказать о неочевидных вещах и вообще о том, что сделает вашу работу с гитхабом продуктивнее и веселее (я не буду рассматривать здесь работу с API гитхаба, так как эта тема заслуживает отдельной статьи).


Содержание



Читать дальше →
Всего голосов 149: ↑148 и ↓1+147
Комментарии38

Использование ES6 в AngularJs 1.x со сборкой Browserify+Babel

Время на прочтение5 мин
Количество просмотров29K
В статье рассмотрим как написать на ES6 составляющие части AngularJs приложения, затем собрать с помощью Browserify и Babel на основе небольшого приложения, которое вы можете скачать с github и поиграться.
Читать дальше →
Всего голосов 12: ↑10 и ↓2+8
Комментарии4
1

Информация

В рейтинге
Не участвует
Откуда
Stockholm, Stockholms Län, Швеция
Дата рождения
Зарегистрирован
Активность