- PVSM.RU - https://www.pvsm.ru -

Конвейер игр для магазинов от второкурсников с любовью

Промо-коды.apk

Сейчас у многих магазинов популярны так званые «промо-коды», по которым покупатели могут получить скиду на товар. В среднем клиентская база магазинов, использующих такие «инновации» состоит из покупателей в возрасте от 16 до 30 лет. Люди данной возрастной категории практически не расстаются со своими смартфонами. На лицо актуальность мобильных приложений, которая растёт с каждым годом. Это и навело нас с ребятами на мысль о создании приложения для раздачи этих самых промо-кодов.

Концепция и маркетинг

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

Преимущества для пользователя:

  • приложение бесплатное, клиент не должен ни за что платить;
  • увлекательная «гонка» за промо-кодом.

Преимущества для заказчика:

  • увеличение клиентской базы, за счёт оригинального игрового формата раздачи промо-кодов;
  • минимальные затраты на разработку и хостинг [1] приложения;
  • являясь владельцами приложения, возможность внедрения рекламы.

Преимущества для разработчиков:

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

Unity3D как основной инструмент для разработки

При выборе игрового движка, мы остановились на Unity3D [2]. Этому послужило сразу несколько причин:

  • бесплатная версия (если ваша организация имеет заработок меньше 100 000 $ в год);
  • широкий функционал бесплатной версии;
  • мы уже имели небольшой опыт в разработке на данном движке.

Хранение данных

Когда стал вопрос о хранении данных, таких как: название акций, номера промо-кодов, карта лабиринта и т.д., мы пришли к выводу, что хранить данные локально – как минимум глупо.
Во-первых, увеличивается объём приложения, что засоряет память устройства, и, во-вторых, возникнет проблема с обновлением (пришлось бы вечно делать новый build и заливать его на площадку). Так мы пришли к выводу, что игра будет работать по принципу “Клиент-Сервер-БД”.

image

Почему не “Клиент — БД”? – Потому что в таком случае каждый пользователь будет иметь прямой доступ к БД, что сводит её защищённость к нулю.
Так как БД будет находится удаленно, нам понадобился хостинг [1]. Для прототипа нашей игры мы выбрали бесплатный хостинг [1]. Основными критериями были: предоставление сразу двух БД и возможность редактирования данных через PhPMyAdmin. В силу скудного опыта работы с БД, последнее стало для нас ключевым.

Доступ к БД

Так как игра принимает принцип “Клиент-Сервер-БД” – логично, что клиент должен обратиться к серверу, чтобы тот в свою очередь сделал запрос к БД. Возврат данных происходит в обратном порядке. Обращение от клиента к серверу производится с помощью уже существующих в Unity WWW и WWWForm (подробнее смотрите в API Scripting [3] от Unity) с использованием C#, а от сервера к БД с помощью обычного php-скрипта. Для распределения данных, которые берутся из БД, в Unity был использован JSON.

<?php

  $servername = "**";

  $username = "**";

  $password = "**";

  $dbname = "**";

//Create connection_aborted

  
  $con = mysqli_connect($servername,$username,$password,$dbname);

  mysqli_set_charset($con, "utf8");


  
  $id = $_REQUEST["id"];


 

  $sql = "SELECT * FROM UnityDB WHERE id = {$id}";

  $result = mysqli_query($con,$sql);

  $rows = array();

  $rows = mysqli_fetch_assoc($result);

  $rows['Map'] = base64_encode($rows['Map']);

  
  echo json_encode($rows,JSON_UNESCAPED_SLASHES);



  

  mysqli_close($con);

?>

“Какое сегодня число?”

В каждой строке таблицы мы использовали id как идентификатор, по которому мы выбирали из всей таблице то, что нас интересует. Он имел значение от 1 до 31, в зависимости от числа данного месяца. Как вы уже поняли, на каждый id был готов свой лабиринт, промо-код и т.д. Проверка осуществлялась через короткий php-скрипт, который возвращает число в определенном часовом поясе (чтобы у всех было одно и то же число).

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

<?php
  
  date_default_timezone_set("UTC"); // Устанавливаем часовой пояс по Гринвичу
  
  $time = time(); // Вот это значение отправляем в базу
  
  $time += 5 * 3600; // Добавляем 3 часа к времени по Гринвичу
  
  echo date("d", $time); // Выводим время пользователя, согласно его часовому поясу


?>

Стилистика игры

После написания основной механики игры, нужно было определиться с дизайном графики. Мы остановились на простом “мультяшном” стиле, потому что:

  • несмотря на шаблонность, он приятен глазу;
  • его легко реализовать как в 3D так и в 2D;
  • данный стиль легко вариацируется в более сложные, что позволяет быстрее и эффективнее выполнить требования заказчика

image

3D модели

Все 3D модели, включая модель персонажа и развертку, были сделаны в 3D Studio MAX [4].
Анимация же была сделана при помощи Mixamo [5], так как там уже есть готовые пресеты, которых нам было вполне достаточно.

image

image

Текстурирование

Наша 3D модель состояла не более, чем из трёх цветов. Сама развертка выглядела таким образом:

image

Модель мы разделили на части в зависимости от цвета. В итоге сама текстура выглядела вот так:

image

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

Удобно и быстро создавать различные вариации цветов одежды персонажа, что является несомненным плюсом при корректировки приложения под конкретный заказ.
Создать нужный материал в движке тоже не составило труда — в Unity уже присутствует Toon Shader, который нам практически полностью подходил. Немного изменив его мы достигли нужного нам результата.

Дизайн UI

Интерфейс создавался в Adobe Illustrator.

image

Система создания анимации в Unity сделана довольно удобно, что позволило нам легко анимировать меню, кнопки и пр.

image

Заключение

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

Автор: warmonger349

Источник [6]


Сайт-источник PVSM.RU: https://www.pvsm.ru

Путь до страницы источника: https://www.pvsm.ru/startap/270410

Ссылки в тексте:

[1] хостинг: https://www.reg.ru/?rlink=reflink-717

[2] Unity3D: https://unity3d.com/ru/get-unity/download

[3] API Scripting: https://docs.unity3d.com/ScriptReference/

[4] 3D Studio MAX: https://www.autodesk.com/products/3ds-max/free-trial

[5] Mixamo: https://www.mixamo.com

[6] Источник: https://habrahabr.ru/post/344392/?utm_source=habrahabr&utm_medium=rss&utm_campaign=sandbox