Знакомство с Modbus

Modbus — это протокол, который используют поверх TCP сокетов или в RTU варианте поверх работы с Serial портом, или 485 интерфейса насколько это встречалось в моей практике.

Для протокола существуют открытые спецификации на официальном сайте, где подробно разбирается Modbus по составляющим, правда на английском. Modbus нужен, как правило, чтобы читать регистры с устройств, или записывать в них данные, даже по 1 биту, и еще ряд дополнительных свойств. Это может обеспечить взаимодействие программы и устройства, чтобы считать измеренные устройством данные (заряд батареи, показания вольтметра, температуры) и произвести настройку устройства.

Кратко покажу что такое modbus rtu:

unsigned char* response; response = new unsigned char[8]; ReadFile(hSer, (char*)response, 8, &size, 0);

Так можно прочитать приходящие на сервер запросы modbus rtu. Структура 8 байт. FF это байт.
Может прийти сообщение вида: 02 03 A0 28 00 04 93 2A

Расшифрую сообщение. 02 — это номер устройства, к которому идет обращение. 03 — номер функции, т.е. 3 — читать регистры, а бывает еще записывать, регистры, коилы по 1 биту и т.д.

A0 28 если перевести в десятичную систему будет 41000 — номер регистра, 00 04 — значит еще 4 регистра нужно считать от 41000. Последние 2 числа — 2 байта кода CRC16.

Раз такое сообщение пришло, соответственно так же нужно заполнить массив на стороне отправки, и переправить либо через tcp сокеты, либо через com порт, или другим способом.

Ответ так же заполняется, но там будет уже сообщение вида: 02 03 08 00 01 00 02 00 03 00 04 95 В8 т.е. код устройства, код функции, количество передаваемых байт, 1234 данных (это как бы значения регистров). 2 байта код CRC.

Код CRC рассчитывается от сообщения не включая 2 байта кода CRC. Это для функции 3. В коде:

unsigned char* request request = new unsigned char[reqsize]; 

Заполнить данными и подсчитать CRC:

crc.i = CRC16((unsigned char *)request, reqsize-2); request[reqsize-2] = crc.ch[1]; request[reqsize-1] = crc.ch[0]; 

И отправить по Serial порту:

BOOL iRet = WriteFile(hSer, (char*)request, reqsize, &dwBytesWritten, NULL ); 

Таким образом отправили и ответили на функцию 3 (чтение нескольких регистров) по протоколу Modbus.

Спасибо за внимание! Читайте спецификации на официальном сайте протокола.
ссылка на оригинал статьи https://habrahabr.ru/post/318834/

Распознавание радиотехнических сигналов с помощью нейронных сетей

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

Направления исследований

Я считаю, что исследование нужно вести в двух направлениях. Первое направление — это первичная обработка сигналов, в которой сигнал во временной области "s(t)" заменяется на функционалы.[5] Набор функционалов является вектором в пространстве признаков, по которому и происходит распознавание.

Второе направление это исследование и разработка самих классификаторов так как классы в пространстве признаков могут иметь нелинейное разделение. Нейронные сети типа персептрона способны разделять только линейно разделимые классы. А нейронные сети типа радиально-базисных сетей, способны разделять только классы со сферическим разделением.[4]

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

Предлагаю ввести следующие критерии, по которым определять количество признаков:

1) Признаки должны отличаться для объектов принадлежащих разным классам.
2) Они должны совпадать по своим значением для объектов одного класса.

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

Сигналы относящиеся к разным классам образуют свои области. Задача классификатора состоит в том, чтобы отделить одну область от другой. Задача первичной обработки сводится к описанию сигнала конечным вектором, таким образом, чтобы сигналы относящиеся к одному классу находились близко друг другу в многомерном Евклидовом пространстве, а сигналы, относящиеся к разным классам — далеко, другими словами чтобы выполнялась гипотеза компактности.[1]

Следует отметить, что сигналы почти всегда записаны на фоне шума, и методы распознавания на основе Фурье-преобразований или распознавание по отсчетам во временной области подразумевают в качестве первичной обработки фильтрацию сигнала.[5] Метод распознавания на основе статистик, не нуждается в фильтрации, если помеха является эргодическим случайным процессом. Т.к. всегда можно "вычесть" из модели сигнала с помехой модель помехи.[2]

Важно! Таким методом нельзя распознавать биологические сигналы. Т.к. биологические сигналы, являются очень специфичными, для их распознавания нужно учитывать механику процессов порождающих эти сигналы.[6] Скажем сигнал ЭКГ и сигнал ЭЭГ, исследуются различными методами.

Математические основы

На практике оказалось, что для решения большинства задач распознавания достаточно использовать всего 4 параметра для распознавания, такие как: мат. ожидание, СКО, эксцесс и асимметрия.

Для примера рассмотрим распознавание сигнала при следующих вариантах:

1) нет сигнала (только помеха)
2) синусоида + помеха
3) прямоугольный + помеха
4) радиоимпульс с прямоугольной огибающей + помеха.
Отношение сигнал/шум (image) в эксперименте равно 0.2.
Амплитуду сигнала возьмем равной 1 Вольт(чтобы не нормировать), и помеха в виде белого шума с нормальным распределением.

Для распознавания будем использовать двухслойный персептрон, с 4 входами, 4 выходами и 9 нейронами на скрытом слое(по теореме Колмогорова достаточное условие).[4]

Первичная обработка

Составим вектор в пространстве признаков, для начала определим модель шума:

image[2,3]

Теперь составим вектор для сигнала с помехой:

image

m — математическое ожидание, D — дисперсия, image — СКО, image — эксцесс, image — асимметрия.

Но это было в случае с непрерывными сигналами, и когда известно аналитическое выражение плотности вероятности f(x). С дискретным сигналом интеграл заменяется на сумму. И мы уже говорим не о статистических параметрах, а об их оценках.[2] А там вступают в силу погрешности определения оценок(о них мы поговорим в другой статье).

image

N — количество отсчетов.

После этого можем сформировать входной вектор для нейронной сети.

image

Переменные с индексом "x" — компоненты входного вектора, без индекса — характеристики сигнала с шумом, а с индексом"image" модель шума. Для нормировки СКО делится еще 2.5.

Практическая реализация

Вот-так выглядит интерфейс тестовой программы.

image

В данном эксперименте вероятность верного распознавания составила 94.6%. Нейронная сеть обучалась методом градиентного спуска на выборке в 50 реализаций на сигнал, в сигнале 2001 отсчет.

Литература:

  1. Классификация. Гипотеза компактности
  2. Вентцель Е.С. Теория вероятностей: Учеб. для вузов. — 6-е изд. стер. — М.: Высш. шк., 1999.
  3. В.И. Тихонов. Статистическая радиотехника.
  4. Станислав Осовский. Нейронные сети для обработки информации.
  5. А.М. Дейч. Методы идентификации динамических объектов
  6. Синютин С. А. Проектирование микроконтроллерных систем съема, обработки и анализа электрокардиосигнала.

ссылка на оригинал статьи https://habrahabr.ru/post/318832/

Закрытие сезона скидок: самые интересные предложения послерождественских распродаж в США

Некогда объяснять, добавляйте этот пост в «Избранное». Послезавтра, проснувшись после встречи Нового года, сперва откройте глаза, а затем — свои кошельки и интернет-банки, пересчитайте оставшиеся после встречи праздника деньги, а потом зайдите сюда ещё раз, чтобы узнать, какие из послерождественских распродаж в США вам нельзя пропустить.

image
Из пост-рождественских распродаж в США можно устроить неплохой предрождественский шопинг для России

Сезон больших скидок, начинающийся в ноябре с чёрной пятницы, и плавно перетекающий в предрождественские распродажи, с самим Рождеством не заканчивается: остатки нераспроданного, возвраты, openbox-товары — сезон скидок окончательно завершится только к 10 января. Впрочем, самое интересное, как обычно, закончится гораздо раньше, поэтому сейчас самое время посмотреть, что же можно найти со скидкой в США в это время года.

Скидки конца года на «Амазоне» заканчиваются уже завтра: если вы не хотите пропустить скидки до 87%, то рекомендуем зайти на него до того, как займётесь готовкой салат «Оливье».

Gamestop даёт на сутки больше, завершая свои распродажи 1 января. Впрочем, чтобы узнать, с какой скидкой вы сможете купить PS4 или конкретные игрушки, вам понадобится VPN, потому что российские IP-адреса у них забанены. К сожалению, мы не в курсе, принимают ли они транзакции с российских карточек, но услуга «Полное сопровождение» избавит вас от любых проблем, потому что мы не только предоставим вам американский адрес доставки, но и олпатим покупку за вас с местного счёта.

Зимние распродажи Nike закончатся 4 января — стоит поспешить.

Спортовары

На сайте Dealnews можно найти отличную подборку скидок на фитнес-гаджеты и просто спортивные товары. От восстановленных трекеров Fitbit за $25 до велосипедов за полцены (скидка $250).

Если покопаться по этому сайту дольше, то можно найти и другие интересные вещи: например, восстановленный iPhone 6S с гарантией 2 месяца за $320 (19500₽).

Ноутбуки

image

На сайте Getrabbit предлагают Google Chromebook Pixel 32GB за $350 (оригинальная цена указана $900, хотя это выглядит малость завышенно для железки с такими скромными характеристиками).

image

Зато Microsoft делает без оговорок очень выгодное предложение на Surface Pro 4: всего $699 (42700₽) за версию со 128 ГБ памяти (скидка $300). Microsoft в принципе среди железячников радует самыми большими скидками — это мы отмечали ещё в прошлом обзоре. Впрочем, может, это означает, что надо было сразу цены ставить чуть пониже?

Телевизоры

Нельзя не упомянуть, хотя это уже получается рубрика «и хочется, и колется». Колется — потому что в силу своих габаритов и хрупкости мы в принципе не рекомендуем заказывать большие телеки в США, т.е. есть риски повреждения при покупке. Но всё же 50-дюймовый телевизор за $270 (всего 16 000₽). По нашему опыту телевизоры всё-так лучше заказывать не больше 32" — в этом случае предложения со скидкой стартуют от $110 (6700₽).

Всякая всячина

Ещё одна интересная подборка скидок разных магазинов и типов товаров — не только электроника, но и мебель, одежда и так далее:

И конечно, вам не помешают купоны на скидки.

Покупайте, пока можно:

По традиции, при первом заказе — скидка $5 по промо-коду supergeek.
ссылка на оригинал статьи https://geektimes.ru/post/284236/

Танцы роботов — новое искусство или шалость?

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

Один год — четыре «танцующих» мировых рекорда

Первый мировой рекорд этого года установила компания Intel Corporation с проектом Drone 100 на шоу, организованном в честь открытия Международной выставке CES 2016. В небе Лас-Вегаса развернулось настоящее световое шоу из 100 дронов под аккомпанемент Пятой симфонии Бетховена. Все движения квадрокоптеров были синхронизированы с оркестром, а в конце они выстроились в форме логотипа. Таким красивым образом они попали в Книгу рекордов Гиннеса, установив, на тот момент, рекорд по количеству беспилотных летательных аппаратов, одновременно находящихся в воздухе.

Авторы проекта — разработчики, которые смогли еще в ноябре 2015 года поднять в небо сотню дронов над немецким Торнешом. В ходе эксперимента дронами управляли специалисты с помощью ПК. Автором идеи и разработкой программного обеспечения занималась компания Intel, а Ars Electronica Futurelab отвечала за художественную реализацию.

Нашествие китайских роботов

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

Первый мировой рекорд по количеству танцующих роботов был установлен весьма помпезно на Китайский Новый год в Гуанджоу на новогоднем представлении. Это шоу просмотрело более 700 миллионов зрителей и самой захватывающей его частью стало выступление 540 роботов и 29 дронов, исполняющими синхронный танец под песню китайского певца Сун Нана. Песня посвящена тому, как «Китай взмывает на вершину мира», а в подтверждение этого на фоне артиста армия роботов и дронов синхронно раскачиваются, выполняют танцевальные «па» руками и ногами, создавая величественно устрашающую картину. Но такая картинка сделана намеренно — камеры снимали роботов с таких ракурсов, чтобы они казались больше. На самом деле, высота каждого робота составляет 42 сантиметра при весе в 1,5 кг.

Гигантская антенна отвечала за синхронизацию движений роботов. Для управления одним или шестью роботами разработчикам хватало смартфона, но для синхронизации 540 роботов потребовалась более сложная система обмена данными. Главной проблемой для инженеров было не создание достаточно гибких машин, а подбор движений для песни, попадающих в ритм. Для этой композиции роботов научили выполнять 12 наборов танцевальных па. Это шоу помогло компании UBTECH Robotics Corp. в продвижении ее новой модели Apha 1S. Программируемые человекоподобные роботы Apha 1S предназначены только для развлекательных целей.

Новый самый роботизированный танец в истории

Следующий рекорд был установлен всего через полгода. Этот год стал очень плодотворным для компании Ever Win Company & Ltd. В августе на «китайском Октоберфесте» — Пивном фестивале Циндао, который проводится в провинции Шаньдун в Китае, им удалось побить мировой рекорд по количеству одновременно танцующих роботов.

Чтобы побить предыдущий рекорд, роботы должны были танцевать не менее минуты. И в этот раз это смогли сделать 1007 роботов модели QRC-2, но не все выдержали это испытание. Всего роботов было 1040, но 33 из них упали или остановились. Все роботы, высота которых составляла 43,8 сантиметров, управлялись с мобильного устройства и действовали под управлением ПО с особой технологией шифрования, которое предотвращало помехи от других мобильных устройств в зоне испытаний.

Новый рекорд летающих дронов — 500 квадрокоптеров в воздухе

После успеха проекта Drone 100, инженеры сразу же приступили к созданию совершенных алгоритмов координации полетов и вскоре компания подняла в воздух уже 500 беспилотников, получивших название Intel Shooting Star. И этим они побили собственный рекорд.

Intel Shooting Star — второй фирменный дрон компании после промышленной модели Falcon 8+. При весе в 280 грамм он может находится в воздухе до 20 минут. Конструкцией предусмотрена защита для винтов. Корпус не боится брызг, поэтому он может летать даже в дождь. Эта модель создана для сферы развлечений и будет использоваться для создания анимаций в ночном небе.

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

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

Но эти развлекательные навыки очень помогают в создании полезных роботов. Например, роботов предназначенных для раннего развития детей или роботов-помощников. Уже сейчас роботы выполняют социально-значимые функции по всему миру, например в Южной Корее они патрулируют границы государства, в Великобритании они используются в качестве помощников для студентов, в Японии так вообще с каждым годом все ближе продвигаются в создании идеального помощника для человека.
ссылка на оригинал статьи https://geektimes.ru/post/284212/

«Во все тяжкие» или суровые реальности идни разработки Dark Forester

Я хочу сразу сказать, что в первой части будет мало о самой разработке, а больше именно истории, трудности, социальные аспекты, проблемы с которыми может столкнутся инди разработчик, а также я не могу не упомянуть Москву, покер и спорт — без которых эта история не была бы полной. Итак, прежде, чем я начну с легенды, для того чтобы немного заинтересовать читателя, за время разработки с 2013 года по 2015 год я потолстел на 22кг и превратился из спортивного парня в человека, который с трудом узнавал себя в зеркале, я выпивал в год около тысячи банок ред булла, все началось с одной-двух, сейчас уже бывает редко, чтобы я пил меньше трех. Я спал по пять, а то и четыре часа. В течении двух лет я вставал в будние дни в пять утра и ехал на работу в другой город на электричке, чтобы вечером оставалось время поработать над игрой. Я по глупости отказался от предложения в 250.000 евро на разработку игры. Вероятно итогом такой жизни стало тяжелое воспаление легких, суд с бывшим работодателем, а также серьезные проблемы со спиной из-за постоянно сидячего образа жизни. Ах ну и если этого мало, то я бросил университет и сам уволился с работы!

Что ж поехали…

image

«You can be more, than just a man» — Вы помните знаменитую фразу из Batman Begins?

Так вот эта фраза не обо мне. А теперь немного о себе. Последние пять лет я работаю разработчиком программного обеспечения на Java в Германии. Всю свою сознательную жизнь, а именно лет так пятнадцать, я занимался полупрофессиональным спортом, играл в покер, читал и писал книги, сидел на близзардских играх, а также бесцельно учился, залезая в долговые немецкие «стипендии», пока моя девушка однажды не сказала мне, что беременна.

Вот отсюда и начнем отсчет этой истории.

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

Только начался 2013 год. Я как раз досматривал «Во все тяжкие» — и что-то после новости о ребенке в голове щелкнуло, не нужно было никакой мотивации, речей, бодрой музыки, просто пришло осознание, пришло время, впереди должна быть квартира, ребенок должен быть обеспечен, свой бизнес, своя империя. Я просто открыл книгу о разработке игр на андроид и решил что стану миллионером. Перечитав ее раза 4, я спрограммировал за пару месяцев, что-то среднее между змейкой и танчиками для Дэнди. Но что-то было не так, в игре была убогая графика, да и откуда ей взяться? Я начал искать варианты — художники, как оказалось стоили бешеных денег. Я рыскал по просторам интернета, искал какие-то пиксели, просматривал работы фрилансеров, как…

… сейчас должна звучать эпическая музыка, я нажал на линк ведущий в asset store на Unity 3d.

image

Unity 3d

Unity укрепил мое мнение, что можно в одиночку достучаться до небес и сделать миллионный проект. Конечно даже тут не обошлось без ошибок, недолго думая, я выбрал UnityScript для программирования. Ужасно что нигде на просторах интернета не описаны основные причины, почему этого делать не стоит. Меня же понять было можно, кроме явы я в основном имел дело с различными библиотеками и фреймворками JS, даже приложение для Бакалавра я писал на Java и JQueryMobile. В то время мне было невдомек, что C# по синтаксису очень напоминает Java. Но это естественно не главная причина по которой стоило бы взять C#.

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

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

Третья причина тоже выходит из профессиональной среды, так для маленького проекта это может и не играть большой роли, но для большого играет немаловажную! C# как язык и майкрософтовские библиотеки просто напросто обыгрывают UnityScript, как Аргентина Ямайку.
Чего стоит хотя бы то, что мне пришлось для Темного Лесника писать A* Алгоритм на UnityScript без вот этой вот фразы, взятой с официальной странички Unity:

//JavaScript does not allow generics to be defined. To utilize
//this functionality you will need to use C#

В целом Unity3d безусловно гениальное творение. На мой взгляд у Unity есть лишь один существенный недостаток. На данный момент в Steam Темный Лесник весит полтора гигабайта, но это лишь его малая, закинутая часть. Проект весит чуть больше двадцати гигабайт. Так вот попробуйте проект сделанный под Unity 4.6 запустить под Unity 5.1. Скажете, ну это понятно, ну тогда попробуйте запустить проект сделанный под Unity 5.1 под Unity 5.4. В случае перехода с четвертой версии на пятую у вас меняется API, ну это в общем-то всегда и везде так и вам нужно просто в тысяче мест подправить код. Но это лишь малая часть проблемы, меняется физика, shaders, просто все на свете — о чем мы даже и не могли себе представить. На мой взгляд, может быть я требую невозможного, но не хватает какого-то мягкого автоматизма, который бы смог справиться с такими проблемами. А еще было бы неплохо если бы Unity обновлялся, а не записывался как новая версия.

«An idea is like a virus»

Вам никогда не казалось что рынок игр совсем не исчерпан? Я не раз слышал мнение, что разрабатывать нечего — уже все есть. Так ли это? Я вырос на третьих героях, варкрафте, Dungeon Keeper, Carmageddon, после тех времен появилось много других крутых хитов, о которых я читал, но уже не застал, я застрял лет так на пятнадцать в мире близзарда. Но я знал точно, что никто так и не смог за последние почти двадцать лет спихнуть с трона Heroes of Might and Magic 3. Я точно знал, что несмотря на некоторые попытки, никто там и не смог даже близко приблизится к Dungeon Keeper 2. Я мог бы упомянуть Carmageddon, но его воскрешение все же началось недавно. О варкрафте и разработке чистой стратегии говорить нет смысла, перебить Starcraft 2 невозможно даже на мой взгляд, имея миллиарды — эта игра фактические похороны любой стратегии в реальном времени еще лет на 5, пока близзард не начнет разработку Warcraft 4. Я до сих пор не могу понять, почему компании имея деньги не могут сделать нормальных героев, может быть просто не надо ничего придумывать? В Шахматах 64 клетки… в покере 52 карты… В героях было всего больше и она была гениальна. Нужна лишь новая оболочка и Esport, но оставим эти мысли тем, кто владеет лицензией на героев.

Идеи одна за другой влетали в мою голову и как в покере на 12 столах, я отсеивал в доли секунды все, что не подходило. В итоге я остановился на клоне Dungeon Keeper и The Horde, переместив место событий в лес — В итоге скажу, что на данном этапе в Dark Forester от Dungeon Keeper осталось не так много, игра действительно напоминает старый добрый The Horde — но об этой игре знают, возможно лишь люди когда-то обладавшие приставкой Panasonic 3do.

Также отмечу, что со мной сыграло злую шутку, что я не играл ни во что, кроме Warcraft 3, World of Warcraft, Diablo 3 и Starcraft 2 последние 15 лет, я отстал и даже не представлял себе что на Steam творят историю и чуть ли не каждый день там появляются новые идеи игр.

image

Крестовый поход

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

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

Проект быстро двинулся с места, где-то за три месяца я уже накатал подобие какой-то игры в красивой оболочке. В начале проекта я еще работал и учился, точнее числился в университете, написав бакалавра мне оставалось не так много, но в итоге я решил, что у меня больше нет на это времени и нет просто напросто сил учится еще около года. Отмечу что у меня уже была работа на 40 часов в неделю, хорошая зарплата и бессрочный контракт, который я в скором времени спущу в унитаз. Шли недели, месяцы, родился ребенок, я стал меньше заниматься спортом, практически перестал, стал очень много из-за стресса есть, по вечерам и ночам работал над игрой. Подошел 2014 год и помчался вперед с новой силой, две банки ред булла в день сменились тремя, на работе мне отказались давать повышение из-за того что я не закончил университет, фактически меня взяли в заложники ситуации. Год был жестким, когда я засыпал в 12 или час ночи, я просыпался в пять утра и ощущал будто только что лег в кровать — я не мог поверить что уже прошло 5 часов. По сути проект не имел никакой отдачи, я тратил деньги, тратил время, я сдавал физически, проводил мало времени с женой и ребенком, бросил после стольких лет учебу, да, и родители у меня были из тех, кто вечно тюкали по этому поводу. Но где-то должно было пойти в плюс?

Jesse, you asked me if I was in the meth business or the money business. Neither. I’m in the empire business.

Когда-то много лет назад, когда СССР только распалось мой отец устроил у нас в квартире подпольное казино. Там собирались довольно интеллигентные люди поиграть на деньги в преферанс, дурака, шахматы, сику, нарды и другие игры. К чему это я вообще? Неудивительно, что лет в 6 я уже умел играть в 5 Card Draw Poker. Нет речь совсем не об этом. После переезда в Германию, мои родители совсем исчезли из жизни, она превратилась в какой-то депрессивный нескончаемый поток лет. Затем у отца нашли рак простаты в продвинутой стадии. Операция прошла нормально и неожиданно это его вернуло к жизни, он начал заниматься Антиквариатом.
Теперь все же поясню с чего я зашел с какого-то непонятного угла.

Занимаясь антиквариатом, отец познакомился с людьми из бывшего СССР которые хотели диверсифицировать свой бизнес и вложить свободные деньги в какой-то проект. В общем и целом все сводилось к тому что 250.000 евро на развитие за 50% процентов игры. Не буду вдаваться в подробности «переговоров». Скажу честно сейчас бы я естественно согласился. Но тогда мой неадекватный максимализм был не готов делится такой частью проекта, и я захотел 250.000 евро за 20% проекта, естественно на этом все закончились. Отмечу, что и ментально, смотря назад — я был абсолютно не готов.

Так а причем здесь казино в СССР спросит меня внимательный читатель.

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

image

Kickstarter, Greenlight, Facebook and Co

Итог. 2014 год подходил к концу. Я встал на весы — 102 килограмма. Но, не все должно было быть неудачно, я поставил игру в Greenlight на Steam и 30-го Декабря мне пришел подарок — игра в короткий срок прошла отбор. Думаю, забавным фактом моей отсталости в играх является то, что начиная разработку Темного Лесника в 2013 году, я мало что знал о Steam и даже не уверен, был ли у меня на то время там аккаунт.

Естественно кроме Greenlight были совсем неудачные кампании в Kickstarter и Indiegogo, а также бесполезная трата денег на рекламу в Facebook. Да и в том же Кикстартере я умудрился заплатить пару сотню долларов, чтобы мою игру разместили на каких-то неизвестных и богом забытых сайтах.

А теперь коротко о каждой платформе.

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

Фейсбук — лайки, это фейк, у меня около 2000 лайков на фейсбуке в группе Dark Forester. Я уверен никто из этих людей не покупал мою игру. Я даже почти уверен, что этих людей не существует. Не тратьте свои деньги.

Indiegogo — это смешно. Если вы не спроецировали машину времени или у вас готов аппарат телепортации, то там ловить нечего.

Greenlight — Вот он победитель, но нет, не потому, что они обратили на мой проект внимание. У Steam база игроков в 100.000.000. Как вы думаете сколько посмотрело людей на мой проект на Indiegogo? 50 человек. А сколько на Кикстартере? 500 человек! А сколько на Steam Greenlight? 100.000 человек!!!

Но все же, вы должны ваш проект естественно засовывать и на Indiegogo, и на Кикстартер, и естественно на Steam Greenlight, и даже создать группу в Facebook, просто не тратьте деньги.

И затем все стало совсем плохо

Два первые месяца после одобрения Steam проходят в великой эйфории, я прибавляю еще сил. И делаю, следующую большую ошибку — запускаю игру в Early Access, как Альфа версию. За неделю я заработал около 3.000 долларов, впрочем нет 1600, остальное ушло на налоги и Steam, но урон нанесенный этим решением гораздо больше этих наконец-то сладких денег, этой хоть какой-то отдачи за два года. Игра падает в рейтинге, мне поначалу все это не понятно, как так, ведь игра моя и что вам товарищи американцы не понятно, что это ранняя альфа и тут еще не может все работать! Но, на самом деле игра жутко сыра. Игра напоминает игры конца девяностых, когда вы покупали диски вместе со вторым варкрафтом, там был десяток стратегических игр, которые вы тут же после первого бага выключали.

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

Но в начале года случается, то что в итоге сбивает меня и выводит на путь войны. Теперь я расскажу, как все стало совсем плохо и я начал крестовый поход во имя своей игры.

В мае 2015 года меня напрочь сваливает сильнейшее воспаление легких на пять недель, после первой недели я выглядел, как зомби из The Walking Dead. Не знаю, был ли это недосып за два года, ред булл льющийся по моим венам вместо крови, наверное все вместе или просто несчастный случай, что в поезде около меня может быть сидел больной человек. Так или иначе все это сопровождает череду неприятных событий. С работы после третьей недели болезни приходит два письма, инициированные моим шефом: «Abmahnung» и «Ermahnung» — это что-то вроде вас ставят на работе на учет, если вы допускаете хоть одну ошибку, то вас могут по любому поводу уволить. А теперь что же стояло в этих письмах. В первом из них стояло, что под страхом увольнения мне запрещено заниматься разработкой игры в свободное время. Во втором письме стояло что я во время болезни обещал на Steam выпустить патч, и соответственно, если я могу писать в чате на стиме, то вероятно мог и работать.

image

Nobody fucks with blowfish

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

На работе я был довольно ценным работником из-за быстрого выполнения задач. работая в Scrum каждый работник получал примерно на две недели 10 Storypoints, я выполнял в основном не меньше 20, мне просто было скучно сидеть без дела. Многие работники после выполнения задач уходят с головой в социальные сети или другие странички.

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

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

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

Деньги заканчивались и на мне навис в дополнение к студенческим кредитам еще один кредит с выплатами 650 евро в месяц.

Напоследок в компьютере который я взял за 3.000 евро в рассрочку по моей вине сломалась материнская плата и процессор (лучше даже не описывать, как такое могло случиться с человеком работающим программистом). На пятый месяц ситуация стала критической — деньги исчезли. На то время Unity стоил 75 долларов, а у меня была еще и лицензия на Android Pro. Без денег я уже не мог платить за Unity. В итоге я остался лишенным движка Unity Pro и основного компьютера на ближайшие 6 месяцев, а соответственно и разработка игры зависла в воздухе.

Мне с семьей пришлось в срочном порядке отказываться от съемной квартиры и переезжать в квартиру к родителям (да, это все с маленьким ребенком и женой).

The Empire Strikes Back

Это первая часть истории. У меня есть план написать 5 частей этой “увлекательной” литературы. Для тех же, кто расстроился и негодует над безалаберным разработчиком, я лишь упомяну, что будет ждать вас в продолжении, в 2016 году я выиграл суд без адвоката в чужой стране по трем пунктам, четвертый был аннулирован. Я все таки нашел довольно быстро работу и Темный Лесник уже играл роль на собеседованиях! Оказалось что игра на Steam все таки имеет какой-то вес. Моя зарплата увеличилась на 10.000 евро в год в сравнении с бывшей работой. Бросить университет — было лучшим решением в моей жизни, но я никому этого не советую, где бы вы не жили — вы живете в системе. Я выплатил не только последний взятый кредит, но и в сумме за год порядка 30.000 евро. Я снова вошел в отличную спортивную форму, а также выпустил Бетку Dark Forester, в которой все еще тупит A* Алгоритм, и которую я все еще надеюсь, никто не будет покупать до релиза. И конечно это история о том, как я менялся сам. Ну, а как все это было, я расскажу в продолжении этой истории, если будет какой-то интерес.

Часть первая: «Во все тяжкие» или суровые реальности разработки Dark Forester.
Часть вторая: A* Алгоритм на JS для Unity 3d или как медленно умнеет Темный Лесник (полный код и описание на JS)
Часть третья: “Во все тяжкие 2” — Темный Лесник карабкается вверх.
Часть четвертая: «Теория одной карты» — по мотивам Темного Лесника
Часть пятая: Equity Dark Forester или как должен кончится сериал.

ссылка на оригинал статьи https://habrahabr.ru/post/318824/