iKoltcov

Пикабушник
Дата рождения: 22 сентября
747 рейтинг 0 подписчиков 10 подписок 2 поста 1 в горячем
Награды:
10 лет на Пикабу
566

Слишком агрессивный рекрутинг

В конце ноября некий аноним начал приглашать всю нашу группу(магистратура) в "команду мечты" с явным указанием что ЗП никакой нет. Оно и ладно, я вежливо отказался, пожелали друг другу удачи и попрощались.


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

Слишком агрессивный рекрутинг Мат, Быдло, IT, Отдел кадров, Работа, Длиннопост

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

Показать полностью 1
11

War Droids. Немного о игре или трудности с которыми я столкнулся во время разработки

В общем, еще класса с 7го я заинтересовался программированием. И начинал я с программирования игр: свой убогий minecraft, клон doom, doodle jump, всякие tower defense и т.д. Использовал разные технологии в разных связках от Delphi и Canvas(дурачек был) до C++ и OpenGL. Еще в то время я мечтал, наконец, заставить себя разобраться в мобильной разработке, и вот, к третьему курсу университета я созрел.


Анализируя всевозможные среды разработки и фреймворки мой выбор пал на Xamarin. Все плюсы и минусы можно вычитать в интернете, мне нет смысла их все зачитывать, но сильно повлияло на мой выбор то, что это кроссплатформенное решение и в перспективе(как куплю iPhone и Windows Phone) я смогу один и тот же проект с минимумом изменений портировать на все мобильные платформы.


Теперь немножко о игре. Получилась смесь Flappy Bird и Defender. Игрок управляет высотой полета дрона, летящего слева направо с постоянным ускорением. Встречает случайно появляющихся противников, если сможет пролететь далеко то встретит босса(пока всего одного). Противников нужно отстреливать из пулемета и ракетницы, пока они не отстрелили вашего дрона. За пройденное расстояние и уничтоженных вражин игрок получает очки, которые потом можно потратить на покупки новых пулеметов и корпусов. Так же во время игры случайно появляются всякие бонусы типа замедления времени, регенерации здоровья, неуязвимости и т.д.

Добавлена таблица лидеров и достижения, так что игроки могут мерится письками рекордами.


Вот пару скриншотов:

War Droids. Немного о игре или трудности с которыми я столкнулся во время разработки Xamarin, Opengl, Разработка, Android, Google Play, Gamedev, Длиннопост, Реклама
War Droids. Немного о игре или трудности с которыми я столкнулся во время разработки Xamarin, Opengl, Разработка, Android, Google Play, Gamedev, Длиннопост, Реклама

Трейлер игры: ссылка


Теперь о проблемах:


1) Если разрабатываешь игру один, то тебе постоянно приходиться думать о контенте - текстурах, звуке, музыке. Можно купить, можно заказать фрилансера. Но у нас, студентов, денег нет, вот мы и держимся. А держаться надо за инструменты, облегчающие нашу жизнь. Например, для создания спрайтов в игре я использовал 3ds max и взяв материал Ink'n Paint я добился плавного перехода цветов, создающего эффект объема, и тонкой черной обводки вокруг дронов.


2) Пиар. Эта проблема вытекает из-за отсутствия финансов. Сейчас мой проект затерялся в пучине Play Market'a. Дай бог чтобы через полгода было хотя бы 1000 скачиваний. Я вынужден регистрировать в сторонних маркетах(ужасно убогих, типа яндекс.store, где мою игру "модерируют" уже неделю). Я вынужден писать статьи. Я вынужден постоянно думать не о разработке, а о том, как сделать так, чтобы игру заметили.


Технические проблемы:

3) java.lang.NoClassDefFoundError:

Failed resolution of: Lcom/google/android/gms/ads/internal/zzl;

В отчетах о тестировании эта ошибка вылазила случайно, я не мог понять в чем проблема. Гугл давал ответы из разряда: "переустанови пакеты, пересобери решение т.д.". Я понимал что это как то связанно с рекламой в проекте, а в частности c NuGet пакетом Xam.FormsPlugin.AdMobView 1.0.23, который мне пришлось использовать, так как при использовании официальных Xamarin пакетов у меня происходили несовместимости с целевой версией Android API 23 или вылеты по Java Heap Size(изменение ничего не меняло).

Решением стала замена пакетов:

Xam.FormsPlugin.AdMobView 1.0.23
Xamarin.Android.Support.v4 22.2.0.0
Xamarin.Forms 1.3.1.6296
Xamarin.GooglePlayServices.Base 25.0.0.0
Xamarin.GooglePlayServices.Drive 25.0.0.0
Xamarin.GooglePlayServices.Games 25.0.0.0
Xamarin.GooglePlayServices.Plus 25.0.0.0

на пакеты:

Xamarin.Android.Support.v4 23.1.1.1
Xamarin.GooglePlayServices.Ads 29.0.0.2
Xamarin.GooglePlayServices.Base 29.0.0.2
Xamarin.GooglePlayServices.Basement 29.0.0.2
Xamarin.GooglePlayServices.Drive 29.0.0.2
Xamarin.GooglePlayServices.Games 29.0.0.2
Xamarin.GooglePlayServices.Plus 29.0.0.2

Как видно пришлось долго и упорно подбирать версии пакеты вручную. А вот так эта проблема выглядела в консоли разработчика:

War Droids. Немного о игре или трудности с которыми я столкнулся во время разработки Xamarin, Opengl, Разработка, Android, Google Play, Gamedev, Длиннопост, Реклама

4) В игре была необходимость выводить полупрозрачные или окрашенные текстуры. То есть в шейдер нужно передавать саму текстур + цвет её окрашивания в RGBA формате.

При использовании различных функций смешивания:

GL.BlendFunc(BlendingFactorSrc.One, BlendingFactorDest.OneMinusSrcAlpha);
GL.BlendFunc(BlendingFactorSrc.SrcAlpha, BlendingFactorDest.OneMinusSrcAlpha);
и т.д.

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

War Droids. Немного о игре или трудности с которыми я столкнулся во время разработки Xamarin, Opengl, Разработка, Android, Google Play, Gamedev, Длиннопост, Реклама

Решение:

Используем

GL.BlendFunc(BlendingFactorSrc.One, BlendingFactorDest.OneMinusSrcAlpha);

Код фрагментного шейдера:

precision mediump float;
varying vec2 textureCoordinate;
uniform sampler2D texture;
varying vec4 v_color;
void main() {
gl_FragColor = v_color * texture2D(texture, textureCoordinate);
gl_FragColor.rgb *= v_color.a;  //строчка исправляющая ошибку
}

Как было вычитано в аналах интернета, тут мы делаем "предумножение" альфа-канала.


Проблем на самом деле было гораздо больше...

Они были связанны с добавлением рекламы, матрицами поворота, прикручиванием Google Play Services, но все они решаются чтением документации и разбором механизма работы. И абсолютно нового я ничего более не напишу. Поэтому, пожалуй, я на этом закончу.


Всем большое спасибо за внимание, за орфографию не пинайте, я очень старался.

Баянометр ругается на пост о флаге Беларуси)


Страница Play Market: ссылка

Показать полностью 4
Отличная работа, все прочитано!