Обновить
0
Данил Калашников@scrolltexread⁠-⁠only

Fullstack Developer

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

Viola Jones на собственной шкуре, часть 2. — Emotion? — OMG, Yes!!!

Время на прочтение16 мин
Охват и читатели42K
Привет всем еще раз! Я решил сразу попробовать выпустить две статьи, практически в одно время, чтобы не прерывать цепь повествования, т.к. начало данной статьи очень важно!
Итак, многие ждали примеры моей программы и объяснения ее работы с точки зрения написания кода. Я же рассказываю последовательно, чтобы каждый смог ее повторить у себя на компьютере. Обращайте внимание побольше на обильные комментарии в коде, в них сила! И не бойтесь мега-мелкого скролла, т.к. информации много. Передислоцируйтесь в место с хорошим интернетом, в статье много схем и фотографий!
Let's get it started!

Секс в автомобиле или ещё одна кнопка старт-стоп с ардуино и светодиодами

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

ножки
больше фоток

Пишем графическую программу на Python с tkinter

Время на прочтение4 мин
Охват и читатели242K
В работе со студентами и учениками я заметила, что при изучении какого-либо языка программирования большой интерес вызывает работа с графикой. Даже те студенты, которые скучали на заданиях про числа Фибоначчи, и уже казалось бы у них пропадал интерес к изучению языка, активизировались на темах, связанных с графикой.

Поэтому предлагаю потренироваться в написании небольшой графической програмки на Python с использованием tkinter (кроссплатформенная библиотека для разработки графического интерфейса на языке Python).

Код в этой статье написан для Python 3.5.

Задание: написание программы для рисования на холсте произвольного размера кругов разных цветов.

Не сложно, возможно программа «детская», но я думаю, для яркой иллюстрации того, что может tkinter самое оно.

Хочу рассказать сначала о том, как указать цвет. Конечно удобным для компьютера способом. Для этого в tkinter есть специальный инструмент, который можно запустить таким образом:
Читать дальше →

Да пребудет с вами прокрутка: теория и практика по камере в платформерах [2/2]

Время на прочтение17 мин
Охват и читатели30K
Первая часть

От переводчика. OlegKozlov рассказал о приёмах камеры в своей игре «Несыть». Из-за большого количества трафика и не слишком верно действующего JS якорь перебрасывает куда угодно, только не на комментарий, поэтому сделаю копию здесь.
Что сделано в «Несыти»…
1. Упреждение по движению: точка привязки камеры вынесена вперёд от центра червя, причём чем быстрее он ползёт, там дальше она выносится.
2. Упреждение по управлению: когда игрок начинает сжимать червя для прыжка, то вынос точки привязки камеры ещё усиливается заранее передвигая камеру в ту область, куда червь сейчас прыгнет.
3. Линейное сглаживание — камера плавно стремится к точке своей привязки, тем быстрее, чем больше разница между фактическим положением камеры (центра экрана) и точкой её привязки.
4. Плюс масштаб всего происходящего завязан на размер червя, когда червь увеличивается, то камера «отъезжает». Причём делает это тремя-четыремя ступенчатыми переключениями, чтобы игрок ощущал, что его червь вырос. Если делать плавно, то рост и изменение масштабов игры нивелируются и не приносят удовольствия.
5. Упор в край. Камера «упирается» в края уровня, становясь более статичной и позволяя голове червя сильно смешаться от центра экрана, буквально упираться головой в его край.
image

Ну и по поводу навязчивости и комфорта. Было тяжело переводить и ещё тяжелее вычитывать, анимация в периферийном зрении очень мешала, да и нагруженные анимацией страницы заглючивали «рыжую». И простите, что на день бросил первую часть под замок.

Направление


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

Мы уже рассмотрели, как сделать, чтобы поле зрения игрока соответствовало управлению, и как показать то, что игрок хочет видеть — в нашем треугольнике это взаимодействие. Также мы осветили множество способов сделать прокрутку ненавязчивой, но действенной (комфорт). Теперь, как режиссёры игры, попробуем обратить внимание публики на то, что мы сами хотим ей показать — то ли ради контекста, то ли чтобы подчеркнуть течение игры, то ли ради драмы и сюжета.

Wonder Boy, ещё одна моя любимица, быстрый платформер, в котором можно идти только вперёд через старое доброе одностороннее окно свободного хода. В отличие то Super Mario Bros., там нет зоны разгона, плавно ускоряющей камеру, но есть другая интересная техника, которую я называю «рельсы». Камера ставится и движется так, чтобы предвосхищать будущие преграды.

Wonder Boy (Sega, 1986)
Рельсы: запрограммированный маршрут камеры
Зона свободного хода (односторонняя)
Статическое упреждение

Пятое поколение приставок, среди них PlayStation и Nintendo 64, открыло новые аппаратные возможности, положив начала грубому, но настоящему 3D. Приёмы трёхмерной камеры — сами по себе захватывающая и многогранная тема, но поддержка 3D повлияла и на двухмерные игры. Разработчики теперь могут приближать камеру, наклонять вид и даже сочетать 2D и 3D — то, что мы сейчас называем 2,5D, когда игра идёт на двухмерной плоскости, но в объёмном мире.
Очень много трафика...

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

Время на прочтение8 мин
Охват и читатели61K

КДПВ. System's check.

Дисклеймер


Как вы заранее догадались, в этой серии я тоже не покажу, как нарисовать танк. В этой серии я напишу про менеджмент объектов (в прошлой писал про геометрию). Просто потому, что сейчас — самое время (вообще, я хотел вставить эту часть сразу после первой, но не срослось).
Где. Мой. Танк?!

50 типичных ошибок проектирования игровой камеры (часть 2)

Время на прочтение11 мин
Охват и читатели18K
image

Эта статья — вторая часть перевода выступления Джона Нески (John Nesky) с GDC14.

Первая часть тут.


#26 Оставлять угол съёмки постоянным в то время, как персонаж бежит по склону


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

Векторный, открытый и удобный: Inkscape 0.91

Время на прочтение4 мин
Охват и читатели46K
Давно увлекаюсь векторной графикой, особенно ее созданием, отрисовкой с нуля. Много программ я пробовал, но в основном моим рабочим инструментом был CorelDraw, который меня всем устраивал. Не помню, почему и зачем я начал искать ему альтернативы, но в один прекрасный день я наткнулся на Inkscape. Это была любовь с первого взгляда…

Я все ждал, что на Хабре появится статья-обзор новых возможностей версии Inkscape 0.91, а ее все нет. Решил написать сам, если что не так – не судите строго, пишу редко.

Под катом будет много иллюстративных примеров и технических деталей.

image
Читать дальше →

Unity3d. Реализация зон видимости и слышимости

Время на прочтение5 мин
Охват и читатели40K
Добрый день, хабра.

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

Больше видимости.


Читать дальше →

Marshmallow. Это должен сделать каждый. Добавляем поддержку SDK 23 в наши приложения

Время на прочтение6 мин
Охват и читатели35K
Мне повезло стать Google Developer Expert Android в России, и поэтому я вдвойне переживаю, что не все из вас подготовились к релизу заранее. Сейчас мы с вами постараемся запрыгнуть на уплывающий пароход с зефирками.

Вы можете не читать, а просто посмотреть мой доклад на прошедшем DroidCon.

Но специально для тех, кто любит читать хабр больше чем смотреть youtube — добро пожаловать под кат. Там мы пройдемся по чеклисту действий, которые каждый обязательно должен сделать в своем приложении, а потом посмотрим на новые возможности для разработчиков в sdk 23.
Читать дальше →

Онлайн-компиляция на статическом сайте, рецепт для начинающих

Время на прочтение6 мин
Охват и читатели29K

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

Для приготовления простого сайта вам понадобится:
  • репозиторий на GitHub — 1 штука
  • готовый html шаблон, для придания приятного вида — 1 штука
  • кусочек свежего компилирущегося C++ кода — минимум 1 строка кода
  • готовые javascript соусы из магазина — ~500Kb
  • картинки и анимашки по вкусу

Меняйте любые компоненты, экспериментируйте и готовьте свои сайты для любимого языка!
Приступить

Режимы управления с помощью мыши и с помощью сенсорного экрана в Windows 10 и Windows 8

Время на прочтение4 мин
Охват и читатели23K
В этом проекте демонстрируется определение режима работы ноутбука-трансформера (режим планшета либо режим ноутбука) под управлением Windows 8(.1), а также новый режим управления с помощью мыши и сенсорного экрана в Windows 10. Режим управления с помощью мыши и сенсорного экрана аналогичен режиму планшета и ноутбука, но в Windows 10 пользователи получили возможность вручную переключать режим, тогда как в Windows 8 режим переключается только в зависимости от физического состояния устройства. Поэтому пользователи Windows 10 могут использовать расширенный графический пользовательский интерфейс, предназначенный для сенсорного управления, даже на устройствах, не являющихся трансформерами: важно только наличие сенсорного экрана. Эта новая возможность реализована на основе новых API UWP (Universal Windows Platform). Нужно добавить несколько строк кода в приложения, предназначенные для Windows 8, чтобы воспользоваться этой функцией в Windows 10. В этом документе показана доработка приложений Win32 для использования API UWP с помощью WRL (библиотеки шаблонов C++ среды выполнения Windows) в Windows 10. Сведения о включении приложений UWP см. в образце кода Microsoft.
Читать дальше →

Инструкция: Как создавать ботов в Telegram

Уровень сложностиПростой
Время на прочтение7 мин
Охват и читатели1.8M
24 июня 2015 разработчики Telegram открыли платформу для создания ботов. Новость кого-то обошла стороной Хабр, однако многие уже начали разрабатывать викторины. При этом мало где указаны хоть какие-то примеры работающих ботов.
Попробую это исправить

Голосовое управление компьютером и Python

Время на прочтение4 мин
Охват и читатели42K
Начитавшись разных постов о Google Voice и его использовании, решил написать что-то свое. А именно — голосовое управление компьютером. Сразу оговорюсь, что ОС — Windows.

Нам понадобится:

— Python 2.7
— библиотеки:
pyaudio
pycurl
pywin32
+ набор стандартных библиотек
— какой-либо аудиоконвертер поддерживающий flac и wav, а также работу из командной строки, я использовал этот.
Читать дальше →

Назад в будущее, или Hello World сегодня и тридцать лет назад

Время на прочтение11 мин
Охват и читатели48K


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

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

Поэтому мы решили немножко перенестись в прошлое и посмотреть, как изменились инструменты разработки, примеры кода и SDK за 30 лет. А что может быть более показательным, чем сравнить создание оконного приложения “Hello World”?
Читать дальше →

Пятничный формат: Как писать код, который никто не сможет сопровождать

Время на прочтение16 мин
Охват и читатели95K


Благодаря советам экспертов в области Java вы научитесь писать код, который будет настолько сложно сопровождать, что любому, кто будет с ним работать после вас, потребуются годы, чтобы внести даже малейшие правки. Более того, если будете неизменно следовать этим правилам, вы сможете гарантировать себе пожизненное рабочее место, так как никто кроме вас не сможет разобраться в вашем коде.
Читать дальше →

19 советов по повседневной работе с Git

Время на прочтение14 мин
Охват и читатели293K


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

Содержание:
  1. Параметры для удобного просмотра лога
  2. Вывод актуальных изменений в файл
  3. Просмотр изменений в определённых строках файла
  4. Просмотр ещё не влитых в родительскую ветку изменений
  5. Извлечение файла из другой ветки
  6. Пара слов о ребейзе
  7. Сохранение структуры ветки после локального мержа
  8. Исправление последнего коммита вместо создания нового
  9. Три состояния в Git и переключение между ними
  10. Мягкая отмена коммитов
  11. Просмотр диффов для всего проекта (а не по одному файлу за раз) с помощью сторонних инструментов
  12. Игнорирование пробелов
  13. Добавление определённых изменений из файла
  14. Поиск и удаление старых веток
  15. Откладывание изменений определённых файлов
  16. Хорошие примечания к коммиту
  17. Автодополнения команд Git
  18. Создание алиасов для часто используемых команд
  19. Быстрый поиск плохого коммита

Читать дальше →

Печатаем картинки с помощью Arduino

Время на прочтение9 мин
Охват и читатели53K


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

Развёртывание приложений Qt в Windows

Время на прочтение6 мин
Охват и читатели110K

Вступление


Добрый день, уважаемые читатели! Совсем недавно я завершил разработку одного своего приложения на Qt, и мне захотелось создать профессиональную программу установки, чтобы всё было «как у взрослых». Как оказалось, сделать это непросто, учитывая, что на официальном сайте инструментария информации по развёртыванию почти нет. В данной статье рассмотрены некоторые этапы подготовки программ на Qt версии 5.2 или выше для распространения на компьютеры других пользователей. Итак, вот план руководства:

  1. Подготовка проекта Qt к развёртыванию
  2. Компоновка дистрибутива программы
  3. Подписание кода и создание установщика

Не будем терять времени и приступим к работе.
Читать дальше →

Unity3d: эксперименты с Social Interface

Время на прочтение10 мин
Охват и читатели24K
Современную мобильную игру трудно представить без социальной интеграции, общих таблиц рекордов (leaderboards) и достижений (achievements). Дабы не отставать от тенденций, решил интегрировать Game Center и Play Services для iOS и Android версий моей игры.

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

Python-бот выиграл тысячу призов в Twitter

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



Программа представляет собой скрипт на Python, который логинился, искал твиты с сообщениями вроде “retweet to win!”, а затем ретвитил их.

Бот работал непрерывно в течение девяти месяцев и выигрывал в среднем четыре приза в день. «Я не уверен, проделывал ли кто-нибудь подобное, но не видел никаких свидетельств ботов, работающих так же. Зато видел реальных людей, которые вручную проделывали такую работу, ретвитя сотни конкурсов за несколько часов», — пишет Хантер в своем блоге.
Читать дальше →

Информация

В рейтинге
Не участвует
Откуда
Новосибирск, Новосибирская обл., Россия
Дата рождения
Зарегистрирован
Активность

Специализация

Фулстек разработчик
Средний
C#
.NET
Entity framework
Git
TypeScript
Dart
Flutter