cobanja

Пикабушник
5258 рейтинг 28 подписчиков 0 подписок 10 постов 3 в горячем

Полезность

Все, кто хочет попробовать облачный VPS сервер, но не хочет платить деньги, могут перейти по ссылке https://m.do.co/c/4682d49b5c89 и получить $10 на счёт от DigitalOcean. Этого должно хватить примерно на 2 месяца беспрерывного использования, что более чем достаточно для использования в ознакомительных целях.



Имейте в виду, что сайт потребует от вас указания данных кредитной карты!



Из плюсов стоит отметить достаточно подробную пощаговую документацию для самых различных нужд (настройка серверов, установка модулей, настройка SSH и прочее), а также предустановленные сборки для наиболее популярных систем (NodeJS, LAMP, Docker, Ruby-On-Rails, Machine Learning, и прочие).


Кстати, по моему мнению, документацию смогут осилить даже те, кто не слишком хорошо знаком с Linux - всё, более менее, разжёвано. Для тех, кто боится что-то поломать, у сервиса есть "замечательная" функция сброса сервера, если его надо полностью перезапустить.



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



Из минусов - весь сайт и документация на английском, но, в паре с Google Translate, проблем возникнуть не должно.



Сразу уточню, что данная акция является частью реферальной программы, однако, в отличие от многих остальных, она предоставляет достаточно неплохой стартовый баланс для ознакомления с системой!



Happy Coding!

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

United Airlines

United Airlines на ту сумму, которую потеряла в связи с последними событиями, могла бы себе спокойно позволить купить по Боингу для каждого из тех четырёх сотрудников, а также вручить премию в сто миллионов долларов CEO за такую идею.

И, в итоге, это решение всё равно было бы дешевле, чем то, что мы имеем сейчас:)


https://www.aol.com/article/finance/2017/04/11/united-airlin...

Кто как намекает

В тему...

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

Так вот, как раз после школьного выпускного, предложила мне одноклассница пойти к ней и выломать дверь, мол "Заклинило - не открывается".

В тот момент у меня закрались сомнения (были парни и покрепче в классе), но правильная причинно-следственная связь никак не складывалась. Сложилась "неправильная", и, в итоге, я отказал, но по другой причине.


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

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

Из плюсов: Дверь осталась цела (предположительно);

Из минусов: Объяснять не нужно...

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

Создание простой (очень) игры для Windows 8/8.1/10

Огромное спасибо всем Вам за поддержку и конструктивную критику - я несказанно рад, что игра пришлась по душе многим читателям - это очень вдохновляет! Честно!


Вы также хотели видеть этапы создания игр на других платформах, поэтому, в продолжение поста http://pikabu.ru/story/sozdanie_mobilnoy_igryi_4061791, как и обещал, выкладываю небольшую историю создания игры для Windows платформ, основанную на личном опыте.


Опять же, как и предыдущий, данный пост содержит материалы, которые будут, как мне кажется, интересны людям, планирующим начать разработку, но не знающим, с какой стороны к этому подойти. Здесь будет достаточно много приятных плюшек (например, как раздобыть беспатные версии Visual Studio или Xamarin Studio на легальной основе, как бесплатно хоститься на Microsoft Azure, и что делать, если у Вас нет CorelDraw, а очень надо).

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


Предисловие, послужившее причиной разработки данной игры

Совсем недавно (пару месяцев назад) мне пришло приглашение поучаствовать в ежегодном студенческом мероприятии от Microsoft под названием Microsoft Student Accelerator (MSA), которое посещать, честно говоря, не особо хотелось (это мероприятие отнимало порядка двух месяцев и требовало периодически приходить на занятия, а это никак не укладывалось в мой рабочий график). Однако, друг, который также получил приглашение, предложил сходить хотя бы раз, так сказать, для "фана" и расширения кругозора. Ну, чтож, субботнее утро можно на это и выделить, пожалуй.

Данное мероприятие состояло из трёх фаз (каждая из трёх модулей), на каждой из которых для прохождения в следующую фазу необходимо было выполнить какой-то набор определённых действий - достаточно стандартная процедура для отсева людей, которые как раз приходят для "фана" и просто занимают место. Но я "прошёл" первую фазу с успехом - требования у этой фазы были из разряда "Посмотри десять роликов от Microsoft о создании приложений". 

Вторая же фаза заключалась в практической демонстрации навыков разработчика и требовала для перехода на неё предоставить работающее приложение написанное для Windows платформы. Благо, не было необходимости приходить на занятия - всё можно было делать дома. Поэтому небольшой азарт взял своё, и я занялся поиском идеи для приложения. Идея пришла достаточно быстро и спонтанно - мой знакомый из Китая показал мне игру "24 очка" (или Китайский покер), в которую он с друзьями любит играть для поддержания мозгового тонуса. Эта игра меня достаточно сильно затянула и представляет собой математический тренажёр для мозга. В итоге, она и легла в основу моего будущего приложения. А почему бы и нет? Легкие правила, небольшой, по прикидкам, объём работы, да и польза самому себе (хорошая тренировка перед игрой с реальными противниками).


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

Собственно, это всё.

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

К примеру, выпали карты Король(13), Шестерка(6), Дама(12), Тройка(3). То есть, по сути, нам необходимо составить уравнение с этими четыремя значениями в левой части и с числом 24 в правой. К примеру, вычисление можно выполнить так: (13-12+3)*6=24. И после этого, раунд выигран.

Или, например, на столе карты четверка(4), тройка(3), четверка(4), десятка(10). В таком случае, вы можете забрать карты, если озвучите вычисление такого вида: (10-3)*4-4=24. И в этом случае, карты тоже Ваши!


Но, это, скорее, прелюдия. Теперь давайте перейдём к созданию игры, как и в предыдущем посте, по пути от идеи и до публикации.


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

А вот друг успешно завершил требования по всем трём фазам! Привет тебе, Серёг!


Также, одним из требований для приложения была публикация на Azure-облачке или в Windows store. Но здесь есть плюс - студентам за Windows Store ничего платить не придётся - тут можно пройти более доступным путём. Для этого отлично подходит студенческий билет, по которому каждый студент или школьник может заполучить кучу бесплатных няшек для своей учёбы или работы. Вот выдержка из блога Microsoft на Хабре:

"В рамках облака Microsoft Azure всегда существовала возможность размещать бесплатные Azure Web Sites, однако для получения доступа к облаку была необходима регистрация с кредитной картой, что многих останавливало. Теперь же студенты в рамках программы DreamSpark могут получить доступ к Azure Web Sites и некоторым другим возможностям облака Microsoft Azure без кредитной карты. Это означает, что всем студентам и школьникам доступен бесплатный облачный хостинг, где они могут размещать не только свои приложения на ASP.NET, PHP, Python, Node.js и других технологиях, но и разворачивать сайты на системах управления контентом типа WordPress и Joomla! Подробные инструкции и небольшой видеокурс доступен на сайте studentazure.ru". - Microsoft блог


Такие условия действуют для многих программ. Например, таким образом я выбил себе бесплатный Xamarin Studio (среда для разработки под мобильные устройства разных платформ), который имеет достаточно высокую цену для обычного пользователя. Это всё производители предлагают не от жизни хорошей, а для "долгосрочных вложений" в условиях жёсткой конкуренции. Ведь, если студенты знают Xamarin лучше, чем, например, Cordova, то и работать они будут именно с Xamarin, а значит потом, с большой долей вероятности, будущему работадателю раскошелиться придётся именно на Xamarin Studio.

По такой же схеме, кстати, есть возможность заполучить даже Windows 7, 8, 10 или Visual Studio Professional, но это зависит исключительно от Вашего учебного заведения. Таким же способом, есть возможность создать и Windows Store Developer аккаунт, что я, в итоге и сделал.


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


В этот раз, к самостоятельному дизайну у меня душа не лежала, поэтому было принято волевое решение задники и игральные карты качать из интернета. В интернете выложено достаточно много материалов, которые можно бесплатно использовать в любых (даже коммерческих целях). Этим видом ресурсов я, собственно говоря, и воспользовался. К примеру, карты я взял с ресурса snap2objects (первые в выдаче при поиске "playing cards free" по изображениям), задник - с какого-то ещё. Операторы (+, -, *, /) были достаточно быстро созданы в Gimp.


Вы можете сильно сэкономить время и силы, если поищите сопутствующие материалы в сети. Многие ресурсы выкладывают материалы под лицензиями "Creative Commons" или "Бесплатно для частного и коммерческого использования", которые означают, что Вы вправе ими распоряжаться полностью или с некими ограничениями.


Проблема может быть только в формате скачиваемых материалов. Например, карты, которые я скачал, были в векторном формате, который не читается с помощью растровых редакторов типа Photoshop или Gimp. Но тут на помощь приходит Inkscape - достаточно мощный, а главное бесплатный, аналог для CorelDraw!


Итак, дизайн приблизительно в голове собран - настал черёд выбора среды разработки. Здесь, благо, выбор был невелик и пал, само собой, на Visual Studio. С версии VS2013, если не ошибаюсь, Microsoft стала предлагать пользователям бесплатную версию Visual Studio под рабочим именем Community. Любой желающий (НЕ ТОЛЬКО СТУДЕНТ) может скачать, установить и использовать данную версию для разработки почти любого ПО. Само собой, там есть небольшие ограничения, но для обучения (да и для работы, честно говоря), версия подходит идеально.

Всё написание кода, компиляция и тесты выполняются в среде Visual Studio - больше дополнительных приложений нам не понадобится.


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

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

Достаточно сложно было понять, каким образом реализовывать само уравнение для нахождения числа 24 - ведь оно может быть практически любого вида. Но, недолго думая, я решил просто разделить всё построение уравнения на отдельные части, в котором участвуют только два числа. В таком случае, последовательность действий игрока для привера (10-3)*4-4=24 будет такой:

10-3=7 (7 записывается для будущего действия),

7*4=28 (28 записывается для будущего действия),

28-4=24.

Такая же модель поведения реализована в игре.


Старайтесь визуализировать этапы разработки ещё до начала разработки. Таким образом, Вы сэкономите себе кучу времени и сил, которые тратятся на нестыковки и переделки.


Ну а дальше пошло кодирование (порядка 1500 строк) и присвоение каждому объекту на экране своих функций и параметров. Так, как карты должны имет свои значения, то каждая картинка была пронумерована от 1 до 54 (два джокера я вставил на всякий случай, но они не пригодились).

Далее, программа выдаёт четыре случайных числа от 3 до 54 и передаёт номера картинок, соответствующих выпавшим номерам, на экран. 


Ну а потом уже были допилены счётчик очков, стандартные ошибки (типа, только целое число при делении и проч, вот только деление на ноль не учёл тогда - игра вылетает). И, в целом, игра готова.

Все вопросы по коду можете задавать в комментариях или же просто можете скачать архив с исходниками на этой странице (http://24points.azurewebsites.net/download.aspx). Там же доступна и ссылка на готовую версию игры, опубликованная в Windows Store (для лл: https://www.microsoft.com/en-us/store/apps/24points/9nblggh5...).

На разработку этой игры ушло порядка трёх дней, на публикацию - чуть больше. Регистрация в Microsoft Development Centre проблемой большой не была - для студентов эта процедура также бесплатна, как и прочие няшки. Поэтому просто зарегистрировался да и опубликовал скомпилированное приложение на сайте.

Несколько дней заняла сертификация приложения. Дело в том, что каждое приложение проходит достаточно строгий контроль на соответствие требованиям (наличие нежелательного ПО, возрастные рейтинги, описание приложения, скриншоты и т.д.). Одним из требований являлось получение возрастного рейтинга для игры. И вот тут появился момент, который мной предусмотрен не был. Так как игра использует изображения и значения карт для покера, она автоматически становится не достуной для детей, которым ещё не дозволено законом играть в карты. Поэтому, рейтинг, который я получил, в итоге оказался в некоторых странах 16+.

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


Каждая игра обязательно проходит сертифицирование на определение возрастного рейтинга. Учитывайте это на начальных этапах разработки.


Ну а далее я, стандартно, наклепал несколько скриншотов, небольшие пояснения по игре (всё на английском, однако сам геймплей проблемным быть не должен - слов там крайне мало).

Смотрится немного устрашающе, но всё достаточно просто и понятно:

- Четыре карты на экране, под ними эквиваленты (для тех, кому лень переводить карты в цифры);

- сверху операторы, которые можно использовать (+, -, *, /);

- между картами и операторами  кусок уравнения, которое игрок решает в данный момент;

- Стрелка вправо (слева от карт) - это знак равно, сохраняющий часть уравнения в виде результата;

- Цифра под "Restart round" перезапускает данный раунд;

- Самая большая цифра означает конечный получившийся результат (он и должен быть равен двадцати четырём).

- Draw запускает следующий раунд (вне зависимости от результата).

- Таймер сверху посередине.

Вот, вроде бы, пока и всё. Всем спасибо!

Тренируйте мозги!

Показать полностью 5
56

Создание мобильной игры

Предисловие

В продолжение комментария http://pikabu.ru/story/quotya_sdelal_igruquot_nakipelo_4059294#comment_62458685, в котором я на крик души пользователя @Perja предложил выложить пост о разработке НЕ говно-игры (как мне кажется) собственного производства, если кому-то это будет интересно.

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

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


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


Те, кто решат, что это - игра на говнокоде и автор #@$^#, - отличная критика в мой адрес, и нет мне оправдания! У меня действительно на тот момент было больше желания и рвения, чем каких-либо практических знаний по разработке игр.


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


Прим. Материалы актуальны для 2013-2014 годов, поэтому сразу извиняюсь, если какие либо элементы повествования будут не совпадать с нынешним раскладом в IT мире.

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


Итак, вводная прошла, давайте попробуем пройти по порядку от и до. Сама игра называется Robot's eye, доступна только в Google Play для мобильных устройств (разработка была кросплатформенной, но выложить по объяснённым далее простым причинам я её мог только для Android платформы), и представляет собой головоломку, основанную на физических законах и цветовом восприятии.

Никакой рекламы в игре нет, только 40 уровней (20 в первом разделе и ещё 20 в обучении).

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

Поначалу, когда было только огромное желание удариться в разработчики игр, было очень тяжело понять, что же должно быть тем проектом, который мне нужно выполнить. Тут, за основу попадалось много хороших вариантов, наподобии Angry birds или Doodle Jump, но меня заинтересовала Cut the rope, весьма добротная игровая серия от отечественных разработчиков, которая интересна не только маленьким пользователям телефонов, но также и взрослым, ввиду наличия уникальной и интересной игровой механики. И тут, желание что-то создать, которое было, но на уровне ниже среднего, примерно в течение года до этого, вдруг прорвало порог лени и страха. 

Я стал думать о создании собственного продукта для мобильных устройств. Почитал дневники разработчиков Cut the rope на Хабре (кстати, рекомендую) и увидел, что ребята, действительно, творят какую-то магию, которая проходила всегда где-то мимо меня. Но я не мог просто взять, и скопировать их или чью-то ещё идею - это не красит человека, и решил выдумать эдакую головоломку, которая может и похожа, но скорее по жанру, чем по механике геймплея. В итоге, решение пришло само собой - создать геймплей с физическими законами цветовым восприятием. И не использовать верёвки!!! 

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

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

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

Далее, камнем преткновения стал выбор среды разработки, которую нужно использовать для создания всей архитектуры приложения. Так, как игра должна была использовать физические законы, то выбор сужался до выбора игровых движков, которые предоставляют такие возможности. После ознакомления с основными доступными движками на тот момент, я отфильтровал два основных кандидата - Corona SDK и Stencyl. Оба из них имели достаточно неплохой послужной список, набор возможностей и кроссплатформенность. Сейчас, конечно, есть и другие достаточно неплохие варианты (особенно Unity хорош в последнее время по соотношению качества и доступности), но тогда именно Stencyl и Corona SDK попали в мой личный топ. Я слышал на тот момент про Eclipse+Android SDK, но я был "не бум-бум" в написании кода, а также хотел получить именно кроссплатформенный продукт, поэтому, его рассматривал только в последнюю очередь. 

И как я ни старался освоить LUA (язык написания скриптов для Corona SDK), на тот момент я понять его не смог (хотя, оборачиваясь сейчас назад, понимаю, что это был бы немного лучший вариант, в основном, из-за гибкости и доступности разработки в последующем). Что, в итоге, привело меня к Stencyl.

Сразу оговорюсь, что сама разработка на Stencyl абсолютно бесплатна, однако для публикации хоть где-нибудь, кроме Flash или HTML5, нужно в обязательном порядке приобрести лицензию за $200. Забегая вперёд, скажу, что разработка в Stencyl действительно была удобна и проста, и, в знак благодарности, я решил подкинуть ребятам деньжат.

Да, было жалко... Да, я понимал, что это мне нужно только на момент создания этой игры... Но уж очень пригорало в одном месте - очень хотелось потестировать игру на мобильнике и поделиться с друзьями, и, видимо из-за этого, палец случайно соскочил на мышке как раз в тот момент, когда курсор проносился над кнопкой "Купить".

Итак, система выбрана, осталось только её запустить и сделать игру. Просто! Как бы не так!Было крайне тяжело понимать, что необходимо от меня на самом первом этапе. Поэтому, для начала, я просто скачал и разворотил до основания несколько примеров, которые поставлялись с движком.


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

После же этого, поняв, как устроен данный движок со всеми своими сценами, поведениями, персонажами, я просто нажал "Add new game" и начал экспериментировать.

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


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


В директории с файлами (вне зависимости от выбранного движка), само собой, необходимо было создать систему, по которой можно было хоть как-то ориентироваться и понимать, что где.


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


Я распихал элементы вот так для самих сцен:

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

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


Когда элементов немного, называйте их хоть 00, 01, 02, 03...  Но, если элементов больше десяти, сразу задумайтесь над именованием, чтобы потом не запутаться. Простые аббривеатуры или сокращения спасут вам много времени и сил.


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

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

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

Самое интересное, это как в данном движке подаётся программирование:

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

Были правда и четырёхэтажные формулы

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


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

Используйте библиотеки, созданные до этого. Нет смысла изобретать велосипед, тем более когда вокруг столько мотоциклов.


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


После того, как 20 первых уровней были наполнены и оттестированы (достаточно большой промежуток времени ушёл на многочисленные перезапуски и отладки каждого уровня), я задумался о создании звукового сопровождения, которое тоже добавил в игру к каждому соответствующему персонажу. Почти все звуки я создавал сам, пыхая и угукая в микрофон ноутбука, а после отправляя их в программу Audacity (бесплатная), которая позволяет изменять звуки, обрезая их, регулируя их громкость, тембр, скорость и прочее. И, в итоге, все основные элементы, требующие звукового сопровождения (вентиляторы, звуки отскока, гусеницы и прочее), таки получили его. Но это всё смотрелось скучно без какой-то музыки. Поэтому, было решено вставить какую-нибудь ненавящивую тему. В интернете много различных Musicbox, которые позволяют создать музыкальный бэкграунд из смеси заготовленных звуков. ОСТОРОЖНО, в таких Musicbox часто могут обитать вирусы. Также, Freesound, Royaltymusic и библиотека звуков Youtube Вам в помощь - там можно найти много композиций, доступных для использования в любых целях.

Далее, необходимо было сделать стандартные настройки, типа "Выключить музыку", "Выключить звук" и т.д. Для этого было создано пара глобальных переменных, которые переносились неизменными между сценами и представляли собой всего лишь значения True/False, при которых музыка и звуки, соответственно, работали или не работали. Все звуки происходят в момент какого-либо события, а музыка же идёт на своём канале между сценами и не прерывается до тех пор, пока пользователь не отключит её в настройках либо не выйдет из игры совсем.


Когда с этой проблемой было покончено, настало время показа приложения друзьям. Самым удобным вариантом была демонстрация у каждого на телефоне - тут-то мне и пригодилась лицензия, которую я приобрёл. До этого, у меня уже был настроен аккаунт разработчика Google Play, был приобретён заранее пару месяцев до этого (как я говорил, желание было, но ещё не достаточное, поэтому дело остановилось), и я спокойно смог отправить на публикацию свой первый, скажем так, релиз из 20 уровней.

Сам аккаунт разработчика Google Play создаётся достаточно просто. Единственный неприятный нюанс только в том, что будущему разработчику необходимо уплатить единовременную мзду, которая необходима, чтобы попасть в список тех самых разработчиков. В AppStore, для примера, эта плата выше в несколько раз и взимается ежегодно. А, так, как я приложение планировал для демонстрации, то на AppStore, волевым решением, было принято забить.

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


Что мы имеем в итоге? Игра из 40 уровней была создана (вместе с рисовкой и изучением движка) за десять дней на коленке. Не спорю, это были десять достаточно упорных дней - я погряз в это с головой и надолго не вылезал. Поэтому этот срок можно спокойно растягивать втрое. Но, так или иначе, могу смело утверждать, что данная вещь вполне посильная человеку, который совсем не знаком с программированием. Тут ведь, самое главное - это начать! Правда, серьёзно я до сих пор не занимаюсь разработкой игр - у меня разработка Web-систем и 3D web-приложений, но порой, опять начинает припекать создать что-нибудь.

Как-то так.


P.S. Если данный пост будет интересен, то, также, я могу рассказать о небольшом и более простом (он занял всего три дня) проекте, который я выполнил пару месяцев назад для понимания принципов разработки игр для Windows 8 и Windows 10.

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

Темы

Политика

Теги

Популярные авторы

Сообщества

18+

Теги

Популярные авторы

Сообщества

Игры

Теги

Популярные авторы

Сообщества

Юмор

Теги

Популярные авторы

Сообщества

Отношения

Теги

Популярные авторы

Сообщества

Здоровье

Теги

Популярные авторы

Сообщества

Путешествия

Теги

Популярные авторы

Сообщества

Спорт

Теги

Популярные авторы

Сообщества

Хобби

Теги

Популярные авторы

Сообщества

Сервис

Теги

Популярные авторы

Сообщества

Природа

Теги

Популярные авторы

Сообщества

Бизнес

Теги

Популярные авторы

Сообщества

Транспорт

Теги

Популярные авторы

Сообщества

Общение

Теги

Популярные авторы

Сообщества

Юриспруденция

Теги

Популярные авторы

Сообщества

Наука

Теги

Популярные авторы

Сообщества

IT

Теги

Популярные авторы

Сообщества

Животные

Теги

Популярные авторы

Сообщества

Кино и сериалы

Теги

Популярные авторы

Сообщества

Экономика

Теги

Популярные авторы

Сообщества

Кулинария

Теги

Популярные авторы

Сообщества

История

Теги

Популярные авторы

Сообщества