ХЕЙ ТЫ, ПИДОР/ПИДОРЕССА ! Ты программист ? 3д художник ? Умеешь в концепт арты и участвовал в разработке игр ? Хочешь постараться создать интересный стратегичекий симулятор, который точно взлетит с первого раза ?! (тебе не нужны деньги сразу) Тогда тебе сюда ! Серьезно - что может пойти не так ?)
А теперь немного подробностей, многоуважаемый читатель. Если ты любишь стратегии, средневековье, ОСАДЫ, мехов и при этом знаешь что-то о програмировании и разработке такого рода игр, то тебе сюда. Если ты хочешь попытаться создать свою эпическую " Katawa Sojo " только от мира стратегий, то тебе точно сюда !
Немного предыстории - уже почти год я раздумываю о создании хорошей стратегии и отличной игры в целом у меня были 80 страниц широченного блокнота исписанных описаниями общей концепции и всего вообще от сюжета до нюансов механик , но как часто бывает - когда думаешь о чем-то большом , рождаются конкретные идеи , которые могут быть не такими масштабными но ОЧЕНЬ ГОДНЫМИ.
Так вот буквально во время очередного " припадка вдохновения " я буквально за два дня полностью сформулировал эту вторую идею, на 8 страницах текста.
Немного о себе - я начинающий 3-д artist ,очень начинающий, пока балуюсь хайполи-моделями, но " база " как сделать остальное вроде бы есть, самое главное - я хочу делать классные модели и классные вещи, насколько бы меня это не выматывало и насколько бы моя криворукость и отсутствие ощутимых подвижек не выпивали из меня душу.
Так же я думаю, что у меня есть вполне себе хороший вкус и кое-какое понимание того, какой должна быть по настоящему хорошая история.
Я осознаю, что если я буду пытаться ковыряться еще и в ПРОГРАМИРОВАНИИ и в работе с кодом, то я скорее всего увижу релиз своей игры только в болезненном предсмертном припадке.
Поэтому , я ищу на ректоре , тех людей которые в этом разбираются, в частности, если вам нужен пример предстоящей работы, чтобы приблизительно оценить масштаб, то это будет очень близко к игры - " Frostpunk " , поэтому если вы представляете хоть приблизительно как такое можно сделать и если вы чувствуете НЕПРЕОДОЛИМОЕ ЖЕЛАНИЕ сделать что-то классное в своей жизни, как и я и довериться идеи незнакомого пидора с реактора, то это точно судьба !
И когда я говорю о НЕПРЕОДОЛИМОМ ЖЕЛАНИИ, то оно должно быть именно таким , потому что только это сможет провести нас через производство, только чистый, неподдельный энтузиазм.
Я не хочу чтобы все мои мечты и идеи умерли из-за невозможности воплотить их в одно лицо.
И я надеюсь что среди вас найдутся те, кто заинтересуется моей идеей, и сможет разделить ее со мной, насколько бы бесконечно наивно это бы не звучало/читалось.
Я могу взять на себя все включая общую концепцию, которая готова, кое-какие 3дмодели и сюжет, в общем почти все не считая самого главного - работы с движком который нам подойдет и кроме програмирования.
Почему пример был именно с Фростпанком ? Потому что это игра достаточно отличается от привычных дешевых игр, которые можно состряпать на инструментарии бесплатных движков .
Я не излагаю идею полностью тут, хотя намеки есть, потому что вот в чем а в ИДЕЕ я уверен ! И мне не хотелось бы вот ее, " свою самую лучшую в мире идею " отправлять " по рукам " ! Так что, надеюсь на вашу порядочность.
В заключении скажу лишь, что я уверен на 100 %, по объективным причинам, что если сделать игру хотя бы на 1/3 от заложенной идеи, то она " взлетит " и ТОЧНО окупит все старания и труды и принесет много радости игрокам и гордости - нашей маленькой команде ! В конце концов - у " Katawa Sojo " на 4chan вышло , чем Joyreator хуже ?!
Неужели у нас тут нет талантливых людей, которые нужны и которые смогут воплотить это в жизнь ?)
Если вам это интересно, то пишите пожалуйста в комментах и в личку, где мы сможем лично пообщаться.
Карательная электроника: Как нельзя разрабатывать интерфейс скоростной видеокамеры.
Кратко в статье будет:
Что же не так в первой же картинке: хоть и выглядит вполне аккуратно, или сказ о наводках и СВЧ чёрной цифровой магии и почему так делать нельзя.
Немного об отладочной плате FPGA и особенностях разработки.
О модуле камеры, её сенсоре, MIPI интерфейсе и как его испортить.
Как сделать связь с ПК в сотни мегабит, менее 100мбит/сек, и как в том числе и тут словить кару.
Внимание: в статье несколько хайрез фоток и видео, много тех терминов и лютого DIY, возможен взрыв мозга!
Начнём с пациента:
Что это на фото?
1. Белая плата - мозги: FPGA плата на базе Artix-7 от Xilinx, подключена к ПК по micro USB для прошивки и отладочных логов
2. Мини плата слева сверху - FTDI, обещала "скоростную" связь с компом...
3. Синяя плата справа сверху - сам модуль скоростной камеры с пимпкой "объектива" (извиняюсь за ругательство).
4. Куча проводков от ардуины.
Требовалось:
Захватить видеопоток с камеры и послать на ПК как есть, без сжатия, при этом достичь максимального количества кадров в секунду.
Что за зверь, FPGA плата?
Это процессор или миникомп как "малинка"?
Нет, но она как процессор может исполнять алгоритм, считать и управлять чем-нибудь.
По сути FPGA это набор блоков памяти, отдельных битов памяти и простых, проще сложения, логических элементов с управляемыми связями. А связями всего этого набора можно произвольно управлять софтом по своему желанию.
Стоп, а как оно считает, исполняет алгоритм и управляет?
А тем что специальный софт разбивает алгоритм, написанный на си подобном языке, на отдельные блоки: массивы размещает в большие блоки памяти,
переменные разбивает на биты и размещает в отдельные аппаратные биты,
вычисления, даже такие простые как инкремент разбивает на сотни и тысячи логических функций, для сложных использует готовые аппаратные блоки.
И потом всё это соединяет вполне реальными физическими связями. И работает всё это на частотах в несколько сотен мегагерц.
По сути алгоритм превращается в реальную и очень комплексную электрическую схему. Это настолько низкоуровневое программирование, что даже "ниже" не только ассемблера, но и машинных кодов и чёрт побери перфокарт!
100-200 Мгц медленно? и зачем такой дрочь нужен если есть обычная малинка или одноплатные ПК х86 на которых винда крутится?
Нет, это не медленно и есть задачи, где не возможно обойтись без FPGA физически.
Первая фишка: в том что это не проц, который исполняет алгоритм шаг за шагом. Это куча связанного "железа" которая исполняет весь алгоритм одновременно! Тотальное 100% распараллеливание алгоритма, даже если в нём несколько сотен тысяч строк кода!
Это даёт возможность такой магии, как сортировка массива за ноль тактов (например, в фильтре шума).
А ещё даёт возможность самому проектировать эмуляторы старых консолей и они будут работать в точности, нет, ТАК В ТАК, так-же как и их аппаратные дедушки, даже даёт возможность сэмулировать баги, и разные аппаратные нестабильности например в звуке чип-тюна ZX-Spectrum.
А ещё это и чудовищное быстродействие: делать расчёты на 66 Мгц быстрее чем Core i7 на 3700 МГц? запросто! Именно поэтому ASIC (FPGA с предзаказанными, не изменяемыми связями) так полюбились всеми майнерами.
Вторая принципиально непобедимая фишка: время реакции - раз всё работает параллельно и можно реагировать с нереальной скоростью, в десятки а порой единицы наносекунд. Робототехника, автопрома и оружейка - без FPGA и ASIC (захардкоженный FPGA) никак.
Третья фишка: можно реализовать любую переферию, любой интерфейс самому при помощи исходного кода, и если ты написал сам всё с нуля, включая интерфейсы, то это 100% переносимо, ну не мечта ли? Но с большими оговорками, и можно "отстрелить себе ногу", что я и сделал в интерфейсе камеры.
Модуль камеры:
Это плата модуля камеры: сверху чёрный цилиндр объектива, под ним чип сенсора который собственно и видит со всей логикой, который установлен на плате, два стабилизатора питания и разъём 40 контактный.
Камера:
5 мегапикселей.
"Объектив" полное гавно: мылит даже на VGA разрешении, света собирает мало, не настраивается фокус. Но для отладки пойдёт.
Чип сенсора выдаёт RAW формат как в профессиональных фотокамерах,
Интерфейс параллельный MIPI, он примитивный: каждый такт синхросигнала выдаёт 12 бит данных пикселя, с парой статусных сигналов "конец строки" и "конец кадра".
Для настройки юзает двух проводной I2C.
Коннектор - 40 пиновый, двухрядный с шагом 2.56мм, как в старых жестяках.
Казалось бы всё просто особенно для FPGA...
"Отстрел ноги"
Но чтоб достичь максимальной скорости надо выдать камере максимальную частоту в ~100Мгц (а с гармониками до гигагерца), от которой камера и тактируется, которая в свою очередь даёт обратно FPGA с сырыми данными изображения.
А это очень быстро, даже слишком быстро и было наивно с моей стороны надеется, что можно отдельными проводками соединить и ничего за это не будет...
Будет!
Во первых: в стародавние времена, когда у жестяков был широченный ParallelATA 40 пиновый коннектор и такой же шлейф, то этот 40 жильный шлейф работал только до частот 30-60МГц, а далее уже нужно было использовать особый магический 80 жильный шлейф. И это не спроста: на таких частотах взаимные наводки очень сильно влияют и портят сигнал. Но в этой связке его использовать нельзя т.к. на основной FPGA плате нет такого же 40пинового разъёма, а мудаки из Xilinx ради маркетинга (ну и чтоб продавать только их доп платки по конской наценке) и несовместимости запилили 4 группы по 12 контактов в два ряда.
Во вторых: длинна ардуино-проводов разная да и на самой плате очень сильно различается длинна дорожек, а это критично на таких скорстях и если даже не из за скорости света то из за разной индуктивности - которая усиливает взимные наводки, разносит их по разным фазам ещё сильнее и превращает сигнал в "кашу".
В третьих: маркетологи посчитали что при помощи платы "всего" за 100 баксов нельзя давать заниматься серьёзными вещами. И поэтому два из четырёх 12 контактных коннекторов GPIO подключили через много килоомные резисторы тем самым зарезав частоту и "завалив форнты" (когда тактовая нарастает не слишком быстро чип камеры, из за шумов может не понять время переключение, это было одно или несколько).
Не делайте так! Не надо пытаться ардуино-проводками подключать такие быстрые (свыше 30 МГц и многобитные интерфейсы)
Попытки профиксить и прочие бесполезные трепыхания
1. Тактовая пикселей MIPI что выходит из камеры оказалась в разы шумнее: это тактовая из FPGA которая набрала по пути до камеры шумы, а потом вернулась из камеры в FPGA набрав ещё шумов на обратном пути. Пришлось затактироваться внутренней частотой внутри FPGA что генерится и выдаётся наружу.
Фейл: чип камеры при каждом старте настраивается чуток поразному и поэтому выходящяя из него тактовая тоже на пару наносекунд то отстаёт то опережает.
Адский Костыль: Нужно вручную подстраивать каждый раз при каждом включении задержку.
2. Фейл: Взаимные шумы: так как лежит на первой картинке (плата связи рядом с платой камеры) не работает! В линке с ПК проскакивают лишние байты или он теряет байты.
Адский Костыль:
приходится буквально на пару сантиметров отгибать в сторону камеру вот так:
Чёртов бубновый шаманизм!
3. Мини Фейл: Ардуино проводки - они норовят отскачить при любом неосторожном движении любой платы! Это, просто, очень и очень не удобно, надо ОЧЕНЬ аккуратно всё двигать.
Костыль: расковырял иголкой разъём чтоб лучше держалось ... помогло мало но вроде помогло.
4. Связь с ПК при помощи модуля FTDI2232H оказалось не настолько крутой как её рекламировала фирма.
Фейл: скорость вместо 480 мегабит оказалась всего в 100 мегабит, т.к. внутри ФТДИхи два канала и они прибиты гвоздями, уже 240мегабит, USB не умеет в 100% пропускной, уже 200Мегабит, а чип не сразу видит такт записи а через пол дополнительного такта: вот тебе и 100 мегабит. Дрочиться собирать из двух каналов один не стал - драйвер фтди перемашивает рандомно. Дрочь.
5. так же производитель камеры обманул: вместо 150 фпс оказалось 128 фпс, сам сенсор оказался очень тёмным на такой скорости.
Дополнительно было сделано
Т.к. камера выдаёт сырой рав-поток как в проф камерах, то его надо обрабатывать как это делают тулзы цифровой проявки такие как Adobe Light room.
Для этого запилил на верилоге свой видеопроц:
в нём и MIPI приёмник, и свой i2c контроллер и такие страшные слова как баланс белого, гамма-коррекция, коррекция дин. диапазона, шумодав (где сортируется за 0 тактов в медианном фильтре), ресайз, усиление и коррекция цветов.
схемка для пущего устрашения (to NN это выход в фтди, и спойлер темы будущей статьи ;):
Итог и что получилось сделать:
Оно заработало:
слева рендеринг на ПК при помощи OpenCV,
справа отладочная консоль в формате VT100 с цветами и свистелко-перделками (реализованный аппаратно на FPGA при помощи той же логики и такой-то матери), да я люблю красиво, дорого и богато.
В первую секунду видна первичная инициализация и пуск камеры с логом адресов и значений команд записи.
Далее я ручками, посылаю текстовые команды в FPGA (лексический интерпретатор команд тоже сам сделал, тоже на логике) и настраиваю яркость и чёртову фазу сигналов, видно что после подстройки фазы обильный "розовый снег" исчезает.
После я машу перед камерой древним смартом с настроечной таблицей цветов.
косяки:
1. т.к. по скорости FTDI подвела то только 64 кадра в сек, в среднем каждый второй пропускается.
2. есть местами мусор в виде снега и цветных кластеров (показаны красными стрелочками)
3. сам модуль камеры на такой скорости оказалось лютым гавном, мутная, и шумов много т.к. ISO задран к небесам.
Использованные ресурсы чипа:
блочной BRAM памяти больше всего ушло на буфер одного кадра.
Ушло примерно 200 часов моего времени на разработку, из них 150 на видео проц (raw --> rgb).
Вывод:
Не делайте так! Не надо пытаться ардуино-проводками подключать такие быстрые (свыше 30 МГц и многобитные интерфейсы). Именно поэтому профессионалы порой недолюбливают ардуинщиков за такие дикие сопли с ардуино-проводками.
А отладить камеру и ip-корку (аппаратная либа) видеопроца я всё-таки смог. Благо сам алгоритм разработал и верифицировал формально и математически, а на FPGA только проверил, что оно в принципе работает и понял что надо копать в сторону само синхронных синфазных LVDS гигабитных интерфейсов без тактовой и всего этого дроча с шумами.
На этом всё, вот в завершение фотка с топологией чипа (светлосиним заюзанные аппаратные ячейки), зачем? незнай, просто красивый город как из сим-сити вышел.
Привет, Joy! Сегодня на steam выходит наш проект Despotism 3k, про него дальше и будет речь.
До этого я сначала пилил посты сюда, а потом рерайтил их на DTF. В этот раз делаю наоборот, да простит меня вождь. Язык получился слишком формальный, да и букаф через чур много - но что поделать. В этой статье я пройдусь по всей истории разработки нашей игры, поэтому, если вы просто хотите узнать о том, что это за Деспотизм такой, можете посмотреть на странице steam - мы там все описали максимально честно, и ничего не скрывая =)
Вступление. Рождение Деспота
До «Деспотизма» (как, впрочем, и сейчас) я трудился геймдизайнером в студии, производящей мобильные игры. Мне нравится моя работа, но на ней я всё же занимаюсь проектами, задуманными другими людьми и помогаю реализовать чужие амбиции. Свои же амбиции не дают сидеть на месте ровно и заставляют искать варианты, где бы развернуться во всю ширь и глубину фантазии.
В этот раз я решил впервые поучаствовать в игровом джеме Ludum Dare, на котором разработчики всего мира делают игры за два-три дня на заданную тему, а потом оценивают друг друга и пишут лестные комментарии. Я плохо пишу код и ещё хуже рисую, но был готов убить выходные, чтобы сотворить что-то в уютном одиночестве.
Но когда я сообщил о своем намерении в конфу друзей в Discord, в которой мы обычно играем в «Доку 2» и другие, пожирающие время, игры, на моё удивление сразу же ко мне присоединился мой друг художник-дизайнер Антон Rune_Drawer и тут же за ним подтянулся программист Сергей KapguHaJI. Парни занимаются производством сайтов на фриланс, но решили «по фану» вписаться в джем.
Разработка прототипа. Джем из человеков!
После объявления темы «Running out of power» я лежал, глядел в потолок, и думал об игре. Никаких методологий по придумыванию игр я не применял и не применяю — позволяю работать больному подсознанию. Может быть, идея бегающих в колесе людей, добывающих этим энергию для погибающего робота, пришла ко мне потому, что в этой же комнате в колесе бегали мои шиншиллы, а людей я в принципе люблю не особо?
На одном ресурсе далеко не уедешь, и я решил, что люди в колесе должны уставать и есть еду. А ещё число людей должно быть возможно увеличивать, при чём без всяких этих ваших аистов и пробирок — только хардкор и эксплуатация. Так появились механики усталости, питания и размножения, вдобавок к потере и восполнению энергии.
Все здания посвящены этим ресурсам. Даже биореактор — его мы добавили просто потому, что он сам напрашивался в наш городок. Какая деспотия может быть без личного биореактора? То, что ресурсы будут тратиться по таймеру, а добываться постепенно, казалось само собой разумеющимся. Это добавляет аркадности, даёт игроку периоды облегчения и периоды напряжения, создает моменты «вот-вот, ещё чуть-чуть».
При этом было понятно, что концепт не блещет разнообразием, и надо бы игрока чем-то удивить. Из личных предпочтений пришло то, что игра будет хардкорной, в которой проигрывать будешь чаще, чем выигрывать. Оттуда же движение в сторону рогаликов (roguelike) в виде случайных событий. При чем на джеме событий всего было 10 штук, как и уровней, которые нужно пройти. Но даже тогда случайность выпадения событий делала сессии разнообразными, что заставляло игроков пробовать снова и снова, пока они не проходили нашу небольшую игру.
За три дня джема мы мало спали, плохо ели, но результат превзошел ожидания — ничего себе, 11 место из 1361 игры! Позитивные комментарии, упоминание о нас на Gamin и на YouTube — всё это позволило поверить в себя, чтобы твердо решить: мы будем переть дальше. Слава Деспотизму!
Полгода разработки. Всё серьёзно!
Да, мы решили что будем делать полноценную игру, и что хотим именно на Steam в первую очередь. Во-первых, потому что сами в основном играем там. Во-вторых, опыт в мобильной разработке дал мне стойкое ощущение, что нефиг там делать без маркетингового бюджета. Мы использовали сервисы: Trello для задач и напоминалок, Google Doc для диз-дока и Google Sheets для баланса.
Диз-док, или его подобие, не описывает в нашем случае игру в целом, а описывает отдельные механики, которые понятно как реализовывать. Баланс сводится к тому, что есть две прогрессии: добыча ресурсов при идеальных действиях игрока, и бездушный расход ресурсов. Соотношение в конкретные моменты этих двух чисел образует кривую сложности, которую я уже и крутил в своё удовольствие
На джеме игра была написана на Construct, при этом особого опыта в нем у программиста не было. Из различных соображений он решил его выкинуть и переписать всё на Unity (в котором опыта не было совсем). Со страницей в Steam мы решили не откладывать, поэтому художник занялся нашим первым трейлером — как это мы страничку без трейлера заведём!
Пока у парней было чем заняться, я формулировал изменения в механике игры. Прокачка зданий напрашивалась, опять же, сама собой. Ограничение числа манипуляторов, таскающих людей, и покупка их отдельно — для большего разнообразия и усложнения жизни игроку. И самое главное — много, много самых разных модификаторов, появляющихся в результате случайных событий!
При этом было решено, что события не будут падать кирпичом на голову, а будут завернуты в диалоговые события. И вообще — игра будет с сюжетом! Благо, я раньше увлекался писаниной, даже в один малотиражный сборник рассказов попадал, поэтому в силах своих в этом плане уверен.
Тот самый старый трейлер
После оформления страницы в Steam, мы взялись за соцсети и сайт. Я ведь говорил, что парни сайтами зарабатывают? Вооот... Тут надо отметить важный момент об особенностях демократии в нашем «Деспотизме». У нас каждый имеет свою зону ответственности.
Другие могут что-то рекомендовать, ноо конечное решение на том, кто делает. Это правило помогло нам шатко-валко доехать до релиза, ведь для каждого это был «его собственный» проект. Поэтому, когда парни реализовывали очередную анимацию (которую, к слову, после редизайна пришлось выкинуть), я только плакал и ворчал «о, по моему мнению, зря теряемом времени», но ничего с этим не делал.
Мы разобрались со всеми промо-работами, и продолжили основные. Покопавшись в имеющихся редакторах квестов пришло решение делать свой!
А еще 8 ноября 2017 художник написал:
Ну, и далее:
24 ноября 2017
12 декабря 2017
Иии...
В течение трёх месяцев мы не говорили про «Деспотизм». Художник в 50 раз перерисовывал здания, пока программист большую часть времени занимался работой и немного допиливал редактор квестов. Я писал эти самые квесты, но делал это в 50 раз медленней чем планировал. Я понял, что мы «закапываемся». Я хотел доделать проект.
В итоге мы договорились до следующего: мы разбиваем всё что осталось доделать по игре на задачи и доделываем игру в течение двух месяцев. Парни при этом не занимаются своим фрилансом, а только делают игру. Деньги я в итоге «одолжил» только художнику, по простой и очень жадной схеме — он мне возвращает с первых доходов игры 200% от одолженного. (Но помните, что на том этапе не было никаких гарантий, что релиз вообще состоится. Опять же, по договоренности, вне доходов с игры — он мне ничего не должен)
27 апреля 2018 у нас был редактор квестов и вот это:
И это было хорошо! Я хотел закончить игру за два месяца, я боялся, что в итоге её вообще никогда не будет. Художник уменьшил размер пикселя в четыре раза, и скорость прорисовки анимаций уменьшилась раз в 16. Это понадобилось для того, чтоб можно было добавлять много разных мелочей с модификаторами, и при этом они оставались читаемыми. Да и в целом, конечно, так стало выглядеть лучше.
Но, само собой, мы ничего не доделали за два месяца, но все было не зря. Процесс снова пошёл с новой силой, да и я, со своей прагматичной осторожностью, не влазил ни в какие кредиты и был хоть и расстроен, но готов к отсрочке.
Примерно тогда же ко мне в гости на музыкальный подкаст зашел Вова Седых. Слово за слово оказалось, что он всегда хотел сделать музыку для игры, и наш концепт ему понравился. Так у нас в команде появился профессиональный музыкант!
Разработка шла, но дедлайн в виде «деньги кончатся» не сработал. И тут я нашел новый — конференция! Я подался на White Nights, и отступать стало некуда. Билет стоит вполне приличных денег, и идти туда с кривой демкой никому не хотелось. О конференции самой я уже писал, но самое главное было в ней то, что именно к конференции мы собрались и сделали первый работающий билд со всеми фичами, которые планировались в конечной игре.
И конференция прошла отлично! Да, я был на ней один, но как мог передал команде все хвалебные отзывы, которые услышал от залипавших у нашего стенда игроков.
Последний рывок. Он трудный самый
Казалось бы, что ещё? Но мы знали о недостатке контента, о багах, о недоделках. У нас большой список фичей на будущее, но все они нещадно убраны в бэклог уже на время после релиза. Но даже то, что мы считали обязательным, выглядело весьма пугающе по времени реализации.
Мне как раз вовремя начали задерживать зарплату, плюс появились непредвиденные но непреодолимые расходы — я больше вкладываться не мог. Надо сказать, что я то в наглую продолжал работать в офисе, поскольку по сути, разработка такого инди-проекта — это 90% код и графика, а мой геймдизайн — не более 10%. Да и не готов я был с женой и собакой бросать уютное кресло офисного планктона.
Парни же в процессе всей разработки периодически вкалывали неделями без перерыва. В итоге было два варианта: либо парни должны были найти фриланс и откладывали «Деспотизм», либо нужно было найти бабло. Конечно, мы всю дорогу неумело искали издателей и инвесторов, но результат был нулевой.
Мы решили начать с ближайших друзей. По той же схеме, по которой финансировал художника я, но уже под 150% — всё же проект уже больше похож на что-то, что может принести каких-то денег. И такой инвестор нашёлся (привет тебе!), и мы смогли ехать дальше.
А дальше что? Анимирование, эффекты, логика модификаторов, переписывание одного и того же кода раза по три (дали бы время Кардиналу, он и сейчас бы переписывал), споры за игровую логику (в итоге даже локальный мем появился «игровая условность»), участие в «VK Fest», переделывание всего интерфейса, выступление на Chaos Construction, , заказ локализации на английский (у нас юмор, сами переводить не решились, спасибо Альфине!), ещё одна поездка на White Nights... И вот, мы здесь!
Отдельно пару слов про партизанский маркетинг. В основном он сводился к участию во всех мероприятиях, до которых дотянулись, и в ведении социальных сетей. В нашем случае, мы постили раз в неделю в «субботу для скриншота» у себя и во всех мной найденных пабликах. Что-то это приносит, и если вы маленький инди, делать это стоит.
Ещё мы делали посты на reddit и DTF, кроме Джоя. Больше всего, кстати, просмотров дал именно Джой — слава вождю! За неделю до релиза я начал рассылать письма подходящим нам ютуберам с предложением поиграть в наш «Деспотизм» до официального релиза. Отвечают очень мало, но нами заинтересовался CRYSTAL, а затем — ViteC. Парням игра понравилась, и в итоге они принесли нам больше «вишлистов», чем вся наша активность за всё время до этого. Сейчас подтянулись ещё несколько летсплееров, включая одного западного. Надеюсь, будет ещё больше!
Больше просмотров богу просмотров!
Конечно, я рассказал не всё, но и так получилось «многабукаф». Задавайте ваши вопросы, с удовольствием отвечу! Всем Деспотизм!
Как-то, путешествуя по просторам Интернет, увидел разработку Rumbot. Мне всегда нравилось чем-то управлять и в итоге пришла идея улучшить разработку и привнести в нее новые элементы. Получился проект, включающий в себя не только разработку железа и софта, но также и 3D-моделирование корпуса, экскурс в изготовление мебели, работа со звуком, некоторые хитрости работы барменов и многое другое, что сопутствовало разработке. Получился забавный аппарат для вечеринок с друзьями. Главное было пройти весь путь от идеи до разработки конечного продукта. Аппарат позволяет делать алкогольные коктейли для пяти человек. Назвал я его «Алкомат».
За основу было взято шасси от старого струйного принтера. Рама как раз подходила для моих нужд. Необходимо было выкинуть все, кроме механизма подачи каретки (ось X) и механизма протяжки бумаги (ось Y). Саму раму пришлось поднять выше, чтобы под ней легко умещался стол с установленными рюмками.
Стол сделан из остатка столешницы. Размер 230x230. Края отделаны кромкой. Стол включает в себя посадочные отверстия для стопок. Отверстия сверлил фрезой потом обработал лаком. Такие посадочные места позволяют точно определить координаты стопок, не дают стопке упасть во время движения стола, а также сделать нижнюю подсветку и разместить фотодатчики наличия стопки. Чтобы не тянуть большое количество проводов к контроллеру, был сделан локальный контроллер, установленный в самом столе. Он собирает данные от всех датчиков и по последовательному порту передает информацию в основной контроллер. Всего от стола идет 4 провода. Также сбоку стола вывел разъем для программирования контроллера стола. Для посадочного отверстия стопки была напечатана на 3D-принтере вкладка на которую устанавливается фотодатчик и светодиод для подсветки. Стол установлен на мебельные рельсы.
Сопло может выдвигаться вниз на 4 см (Ось Z). Для этого на каретку установил платформу от 3,5" дисковода. Оставил только раму, шаговый двигатель и ползунок. Убрал лазерный модуль, а на его место закрепил напечатанный на 3D-принтере держатель. Держатель на конце выполнен в виде сопла. Изначально хотел делать сопло с одной трубкой, в которую через смеситель подаются разные жидкости, но потом прогнал эту мысль. Также аппарат задумывался для производства слоистых коктейлей, когда жидкости с разной плотностью красиво «уложены» в стопке. Для этого необходимо очень осторожно наливать жидкости, исключая их турбулентного перемешивания. Бармены это делают путем наливания по лезвию ножа или по стенке стопки. Я задумывал наливать напитки с синхронным подъемом сопла, но для этого ход сопла должен быть от дна стопки до верха. В моем случае механика от дисковода дает всего 4 см, а надо 7. В итоге слоистые коктейли получаются очень оригинальными.
Все оси имеют конечные выключатели. Программно считается время перемещения и, в случае превышения этого времени, выдается сообщение об ошибке механизма. Ошибки в основном происходят когда любопытные друзья пытаются остановить стол во время его движения. При исключении «человеческого фактора» ошибок нет.
Применены перистальтические насосы, предотвращающие контакт механических частей насоса с перекачиваемой жидкостью. Сзади корпуса имеются отсеки для бутылок. На дне каждого установлены кнопки для определения наличия бутылки и светодиод подсветки.
Корпус был разработан в программе для моделирования мебели. По чертежам был сделан распил ДСП организацией, занимающейся производством мебели.
Управление Алкоматом происходит с передней панели. Она также напечатана на 3D-принтере. Разные пункты меню отображены на фото.
Для начала работы необходимо заполнить напитками систему трубок. Из меню выбираем соответствующий пункт, после чего аппарат предложит установить стопку. Дальше последовательно выбирая каждый напиток, прокачиваем жидкость по трубке до тех пор, пока она не будет выливаться из сопла. При заправке всех напитков процесс подготовки аппарата можно считать завершенным.
Выбор коктейлей осуществляется через Web-браузер с любого устройства, подключенного к Алкомату через Wi-Fi. Это, в основном, конечно же, смартфоны. На модуле ESP8266 запущен Web-сервер, который обрабатывает запросы и выдает основному контроллеру таблицу параметров. Каждый клиент может выбрать для себя название коктейля и требуемый ему объем в миллилитрах.
После запуска процесса разлива Алкомат выдвигает стол и ждет установки стопок в соответствующие посадочные места. Как только количество установленных стопок равно количеству человек участвующих в процессе, то Алкомат задвигает стол и начинает процесс разлива. Для каждой стопки включаются необходимые для выбранного коктейля насосы и каждый ингредиент дозируется в соответствии с рецептом на данный коктейль. Рецепты коктейлей включают в себя таблицу с дозировкой каждого напитка в коктейле.
После того как налиты все стопки, то аппарат выдвигает стол, ждет когда все стопки будут убраны и затем задвигает стол обратно. Первые три тоста идут автоматически с перерывом в 1 минуту. Далее тосты идут вручную. Все действия сопровождаются музыкальным оформлением. Тосты могут озвучиваться шутливыми фразами, например, из фильмов или же тематичной мелодией.
Электроника простая и типовая: PIC контроллер, драйверы шаговых двигателей от 3D-принтера, буфер для управления насосами ULN2003, MP3 декодер VS1011k, Wi-Fi модуль ESP8266, OLED-дисплей. Программу писал на HT-PICC. Самое сложное было написать систему меню.
Web-страница для выбора коктейлей простая, ввиду малого объема памяти в ESP8266, да и дизайнер из меня никакой. Сейчас осваиваю Android, планирую написать приложение для Алкомата.
&attribute_insert_20&
Видео, демонстрирующее процесс:
Разработка заняла около 6 месяцев и шла поэтапно, без спешки, в свободное время которого катастрофически мало. Было много чего изучено в процессе, но самое приятное было видеть готовый продукт, который все-таки работает!
Данная разработка не пропагандирует употребление спиртных напитков, а отображает полный процесс воплощения идеи в железе.
Доброго времени суток, обитатели джоя. Я не любитель разглагольствовать о своих проблемах, и стараюсь все их решать самостоятельно, но сейчас я в, пожалуй, самом бедственном положении в моей сраной жизни. Постараюсь кратко описать что происходит.
1)Я не закончил ни один из 3 универов, в которые поступал, по причине дикой депрессии от которой я излечился буквально 2 года назад.
2)Я работал курьером\упаковщиком\менеджером ИМ и, наконец, заведующим складом в небольшом розничном магазине. В последнем случае я по факту был мастером на все руки - админил БД, сайт, поставки, настройки роутеров, сборка офисных компов, в общем любая техническая туфта сваливалась на меня.
3)В 19 году я решил что не хочу вечно работать менеджером ИМ, и решил пойти в ту специальность, которая мне действительно нравится - программирование\аналитика\машинное обучение. Тогда только начинали зарождаться все эти многочисленные курсы "Стань мидл-специалистом за 3 месяца обучения". Я наткнулся на гикбрейнс от mail.ru и мне понравилась программа их курса, ну и я взял самый полный набор за 200к. Курс был довольно хорошим, и я многое из него подчерпнул и сделал некоторое количество проектов.
4)В 20 году я курс закончил и начал искать работу по своей специальности. И вот тут я начал постепенно вращаться..... Я отправлял тысячи откликов и все они заканчивались ничем. В последствии я взял еще один продвинутый курс, который позволил мне глубже погрузиться в свою область и сделал еще один проект, который защитил у "реальных специалистов", которые все сказали что проект очень клевый и мы бы взяли тебя с ним на работу, но нужно подучиться писать код красиво. Это подняло мое настроение и самооценку, но на итоговый результат это никак не повлияло.
5)Вместе с HR я составил себе крутое, по мнению уже 4 HR-ов, резюме.
6)Получил хуй в рот. Сначала меня наебали и уволили с новой работы в апреле. Затем я решил что ну вот оно - пора уже найти позицию джуна и вкатиться, так сказать, тем более что сейчас нехватка IT-специалистов. Но за более чем 1.5к откликов на протяжении 1.5 лет я побывал на 5 собеседованиях, которые мне не ответили или ответили отказом.
Если честно, я заебался получать отказы в виде стандартной копипасты без объяснения причин. Я не понимаю что я делаю не так и почему меня не могут последние 6 месяцев позвать хотя бы на одно ебучее собеседование, чтобы я хотя бы понял чего мне не хватает.
Изо всех щелей все кричат что им не хватает IT-специалистов и предлагают тонну курсов и прочей еболы. Я прошел курсы. Хочу работать. Я знаю на джое сидит определенное количество айтишников, и я бы очень хотел реальных советов как можно найти позицию джуна хоть в какой-то смежной с IT области. Осенью кончаются деньги и если ничего не найду то придется либо идти в Мак.... то есть "Вкусно и тОЧКУ" работать касса-куном либо сидеть на шее у родителей. Ни того ни другого делать желания нет.
P.S. Из последних проектов я перенес БД 1с УТ через апишку в мойсклад, и это были последние деньги, которые я получил.
Развернуть
Отличный комментарий!
Вот мое текущее резюме, о котором мне все HRы говорят что оно хорошее.
Ничего личного, но CV просто вырвиглазное. Не самое худшее что я видел, но лучше переделать. 1. Зайди на resume.io и выбери заготовку попроще. 2. Язык резюме обязательно на английском. Они это резюме будут заказчику показывать. Никто за тебя его переводить с русского не будет. 3. Фото. Убери его. 4. Оформи страницу на LinkedIn. Там тебя сами искать будут. Страница только на английском. 5. Личные качества выкинь из резюме. 6. Перечень скиллов/технологий без воды. Оставь только перечень. 7. SQL. Что по-твоему сложные запросы? Джоины, кроссджоины, вложенные запросы - перечисли. Наври, что занимался оптимизацией запросов и даже использовал CTE для читаемости. 8. Опыт работы. Выкинь всё, что не относится к IT. Опыт работы должен быть наверху. Тем более, что работал с SQL. Если это твой единственный реальный опыт - оформи его как конфетку. Выкинь нахер консультацию клиентов. Писал/оптимизировал запросы. Остальное никого не интересует. 9. Образование. Обязательно после опыта работы. Здесь без изменений, но на английском будет звучать намного лучше. 10. Курсы. Спокойно выбрасывай, примерно как ты на них деньги выкинул. Увы.
Итог: У тебя есть реальный опыт с SQL и базовые навыки Python (ибо без коммерческого опыта). Нафиг всю воду из резюме (вино не сделаешь). Много текста !== хорошее CV. Спокойно оставляй треть. Оформляй нормальное CV. С таким же перечнем оформи страницу на LinkedIn. Если что - демпингуй.
-высылка 23 российских дипломатов, которых считают сотрудниками разведки. Неделя на высылку,
- заморозка активов, усиление проверок в отношении определенных россиян. "В Великобритании нет места коррумпированным элитам",
- заморожены контакты высокого уровня. Отмена приглашения Сергею Лаврову; британские дипломаты и политики не поедут на ЧМ,
-договоренность о координации наших действия с США, Германией и Францией, для дальнейших усиленний санкций.
Терезы Мэй:
"Тут нет другого вывода, кроме как тот, что Россия виновна в попытке убийства господина Скрипаля и его дочери и угрозе жизни других британских граждан". "Это является незаконным использованием силы российским государством против Соединенного королевства".
Сегодня очередное кораблекрушение, БАТМ «Дальний восток» (в девичестве "Стенде"). Давно хотел о нём написать, ибо тема лично мне близкая, эту кухню я повидал изнутри. Так что присаживайтесь поудобней, сейчас я расскажу, как это всё работает.
Аббревиатуры из текста: БАТМ - Большой автономный траулер морозильный
РТМ - Рыболовный траулер морозильный
БЖС - Борьба за живучесть судна
Летом недоброй памяти четырнадцатого года я с голодухи завербовался на рыбообработку на траулер (не «Дальний восток», но плюс-минус похожий). Вам что-нибудь говорит слово «крюинг»? В общем, в моря обычно вербуются через крюинговое агентство. Это такой посредник между моряком и судовладельцем. Оно подыскивает кадры для работодателей и работу для моряков соответственно. Именно крюинг сделает вам документы матроса за неделю, даже если вы выросли посреди Сахары, и моря в глаза не видели, и подберёт подходящую вакансию. На рыбообработку набирают вообще любого, кто готов работать, работа собачья, зарплаты невеликие, так что и работает там, скажем так, ни разу не элита. Но это ещё полбеды. Как человек, который ВНЕЗАПНО матросское образование (а не просто документы) за плечами имеет я дико охуел, едва попав на борт. Ни с какими действиями по аварийному расписанию меня не ознакомили, ни к какой аварийной команде не приписали. Где находятся спассредства я выяснял сам, а матчасть судна была в таком состоянии, что у меня волосы зашевелились везде. Большинство же моих коллег были набраны вообще с улицы, и такими сложными вопросами просто не заморачивались. Крашеный на десять слоёв суриком РТМ последний раз видел капремонт, подозреваю, ещё до моего рождения. Офицерский состав вызывал острое желание взять и уебать, а пухленький, пидороватого вида капитан, по слухам был родственником кого-то из судовладельцев. Во всяком случае, ни как рыбак, ни как моряк профессионализмом он не блистал. В общем траулер был типичным представителем лучшей части рыболовецкого флота в Охотском море.
«Дальний Восток» же относился к худшей части. Это значит, что владельцы экономили вообще на всём. Траулер не просто был ушатанный – он вообще не соответствовал нормам и в море выходил за откаты соответствующим проверяющим. Для ещё большей экономии часть команды набиралась по иностранным крюиговым агенствам. То есть если у нас моряк платит фиксированную, вполне посильную, сумму крюингу наперед за помощь с трудоустройством и оформлением документов, то какой-нибудь филиппинский/малазийский крестьянин тамошнему агентству просто продает свою жопу в аренду на определённый срок и прав там никаких не имеет. Их там сгоняют в загон и практически продают в рабство на срок действия контракта тому судовладельцу, кто готов за них платить. Квалификация у них никакая, зато стоят они недорого, кормить их можно практически помоями и ропщут они значительно меньше, чем «зажравшиеся» отечественные кадры, которым то душ подавай хотя бы раз в несколько дней, то корми не протухшей капустой. Поскольку мало кто из них владеет хотя бы английским, общение обычно идёт через их локального бригадира. Дёшево, сердито, для конвейера практически идеально. Звериный лик капитализма во всей красе.
Что меня больше всего удивляло в этом бардаке, так это уникально малое количество катастроф при такой концентрации распиздяйства. Лично я отпахал полтора месяца до истечения договора (покойный «Дальний Восток», кстати, тогда видел у берегов Камчатки), сошел на берег, сплюнул и зарёкся связываться с рыболовным флотом, даже если буду с голоду помирать. А полгода спустя увидел в новостях репортаж о крушении «Дальнего Востока»…
Теперь, когда вы представляете себе атмосферу дальневосточной рыбодобычи, вы без труда поймёте причины катастрофы. Ушатаный, не имевший право выходить в море траулер с командой, набранной где попало, вел добычу посреди зимнего(!) Охотского(!) моря (пусть дата второе апреля вас не смущает, в тех широтах это ещё полноценная зима), что же могло пойти не так? Для пущей оптимизации процесса траление велось поочередно обоими тралами (пока один с уловом на палубе судно вымётывает второй). При сильной волне перегруженное судно, взяв на левый борт трал со 130 тоннами рыбы потеряло остойчивость, перевернулось и затонуло около четырёх часов ночи (чему также поспособствовали малое количество топлива и вырезанные для увеличения объёма трюма водонепроницаемые переборки). Кто сказал «экономия»? Набранный с миру по нитке экипаж не умел не то что в БЖС, но даже в элементарный русский, а поскольку учения там отродясь не проводились, многие не сумели найти ни гидрокостюмы, ни спасжилеты (которых всё равно на всех не хватало). 63 человека сумели спастись, 69 – не сумели.
По итогам расследования посадили пятерых: экс-капитана (ибо действующий погиб при крушении), двух замов директора компании-судовладельца (один сразу попал под амнистию, впрочем, бог шельму метит – он помер через год), начальника отдела безопасности мореплавания, сертификации, наблюдения за флотом "Сахалинрыбвод" (за халатность) и государственный инспектор морского отдела Северо-Восточного территориального управления Федерального агентства по рыболовству (за взятку). Получили они по шестерочке в среднем. Компанию оштрафовали на 6,25 млн рублей за гастарбайтеров на борту (да, они там ещё и нелегально были!), бурление постепенно улеглось. До следующего раза. Сколько таких корыт по-прежнему бороздит просторы Охотского моря, и когда утонет следующее – не знает никто…
P.S. Траулер, на котором я плавал, сгорел через год на рейде в Совгавани. Никто не погиб.
Отличный комментарий!
1. Зайди на resume.io и выбери заготовку попроще.
2. Язык резюме обязательно на английском. Они это резюме будут заказчику показывать. Никто за тебя его переводить с русского не будет.
3. Фото. Убери его.
4. Оформи страницу на LinkedIn. Там тебя сами искать будут. Страница только на английском.
5. Личные качества выкинь из резюме.
6. Перечень скиллов/технологий без воды. Оставь только перечень.
7. SQL. Что по-твоему сложные запросы? Джоины, кроссджоины, вложенные запросы - перечисли. Наври, что занимался оптимизацией запросов и даже использовал CTE для читаемости.
8. Опыт работы. Выкинь всё, что не относится к IT. Опыт работы должен быть наверху. Тем более, что работал с SQL. Если это твой единственный реальный опыт - оформи его как конфетку. Выкинь нахер консультацию клиентов. Писал/оптимизировал запросы. Остальное никого не интересует.
9. Образование. Обязательно после опыта работы. Здесь без изменений, но на английском будет звучать намного лучше.
10. Курсы. Спокойно выбрасывай, примерно как ты на них деньги выкинул. Увы.
Итог:
У тебя есть реальный опыт с SQL и базовые навыки Python (ибо без коммерческого опыта).
Нафиг всю воду из резюме (вино не сделаешь). Много текста !== хорошее CV. Спокойно оставляй треть.
Оформляй нормальное CV. С таким же перечнем оформи страницу на LinkedIn. Если что - демпингуй.