Сучасна диджитал-освіта для дітей — безоплатне заняття в GoITeens ×
Mazda CX 30
×

DOU Проектор: Як ми створили Free Mind Today — гру для розширення власної зони комфорту

Від редакції:
В рубриці DOU Проектор всі бажаючі можуть презентувати свій продукт (як стартап, так і ламповий pet-проект). Якщо вам є про що розповісти — запрошуємо прийняти участь. Якщо ні — можливо, серія надихне на створення власного made in Ukraine продукту. Питання і заявки на участь надсилайте на [email protected].

Ідея

Вітаю! Сьогодні я вам розповім про те, чим я з братом займався останні два роки. Мій брат та я розробники програмного забезпечення, але це не дуже допомогло нам в реальному житті:).

Одного разу ми звернули увагу на те, що існують декількасекундні періоди в нашому житті, коли ми не в силах контролювати наші дії, думки та емоції. Наче вмикається якийсь механізм, який блокує наш розум, наприклад, під час публічного виступу. Нам захотілося подолати це дивне відчуття безпорадності, тому ми почали створювати приватні челленджі одне для одного в реальному житті.

Через деякий час ми вирішили створити спеціальний сайт для цього, і згодом наші зусилля вилилися у створення гри — FMT. Це безплатна гра, призначена для двох гравців, яка допоможе вам пізнати свої сильні та слабкі сторони в реальному житті. Гра підтримує англійську, українську та російську мови, ви можете грати її в будь-якому браузері, включаючи мобільні:

Зображення головної сторінки та ігрового поля

Також гра має систему нотифікацій та чат для миттєвих повідомлень. Зверніть увагу, ми не вимагаємо електронної адреси під час реєстрації.

Реалізація

Працює все наступним чином: ви створюєте гру та обираєте набір навичок (зону), які ви хочете вдосконалити:

Форма вибору набору навичок (зони)

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

Ось так гра працює в реальному житті:

Також більше деталей можна знайти тут.

Стек технологій

Коли ми починали розробку, ми довго вирішували, які базові інструменти обрати, бо вони визначають: чи буде успішним проект, і чи складно буде його підтримувати в майбутньому. Ключовими факторами, які впливали на наші рішення — це досвід роботи з тим чи іншим інструментом та його популярність:

— Nginx. Безплатний веб- та проксі- сервер, який використовувався в багатьох проектах, які я розробляв.

— Twitter Bootstrap. Ще раз переконався, що ця бібліотека значно спрощує життя розробнику. Я був здивований, як легко ми змогли змінити його базові налаштовування та адаптувати його до нашого проекту, використовуючи SASS.

— Angular. На даному етапі повністю задовольняє вимоги проекту, крім того підтримується Google, що означає подальшу підтримку фреймворка та його розвиток.

— Python. Беккенд написаний на Python з використанням фреймворка Django. Окремо хочу виділити бібліотеку Fabric, яку ми використовуємо для створення програмної інфраструктури та оновлення вихідних кодів. Буде цікаво почути в коментарях про те, наскільки часто використовуєте його ви.

— PostgreSQL. Застосовуємо для збереження даних користувачів.

— Redis. Документно-орієнтована база даних, яку ми використовуємо для передачі миттєвих повідомлень між користувачами та кешування даних.

Передача повідомлень

На серверній стороні є два типи процесів, які обслуговуються двома окремими програмами (Django та Websocket for Redis). Одні процеси відповідаю за обробку користувацьких запитів та внесення змін до бази даних, а інші за доставку повідомлень до користувача. Передача повідомлень між двома програмами здійснюється за допомогою Redis Pub/Sub:

Процес передачі повідомлень

Розглянемо приклад того, що відбувається, коли користувач заходить на сторінку, де міститься, наприклад, чат:
1) Засобами Javascript створюється веб-сокет, який звертається до сервера (Websocket for Redis) та інструктує його про те, що йому потрібно повідомляти про нові повідомлення, які відбуваються в чаті;
2) Коли будь-який користувач надсилає нове текстове повідомлення, Django публікує його в Redis. Далі через веб-сокети дані передаються на клієнтську сторону потрібним користувачам.

Для того, щоб дізнатися більше, пропоную прочитати документацію пакета django-websocket-redis. Там міститься інформація про основи, які будуть корисні для всіх, хто починає розробляти подібні програми.

Результати

FMT розробляється та підтримується за допомогою наших власних ресурсів. Нещодавно ми запустили краудфандингову Indiegogo кампанію, де визначили основні напрямки подальшого розвитку та запропонували цікаві подарунки, які будуть корисні для користувачів FMT, стартап-проектів та інженерів програмного забезпечення.

Сподіваюся, що вам сподобалася гра, та ми зробимо все можливе, щоб підтримувати та залишити її безкоштовною в майбутньому, незважаючи на результати краудфандингової кампанії.

Все про українське ІТ в телеграмі — підписуйтеся на канал DOU

👍ПодобаєтьсяСподобалось0
До обраногоВ обраному0
LinkedIn

Схожі статті




9 коментарів

Підписатись на коментаріВідписатись від коментарів Коментарі можуть залишати тільки користувачі з підтвердженими акаунтами.

Что-то мне не понятно. После создания челенджа я ничего не могу сделать, в смысле до того как друг аксептнет? А если я ошиблась, или передумала, или друг оказался не друг — все, только акк менять или что?

Дякую за сайнап! Аккаунт міняти не потрібно. В правому верхньому кутику екрану є кнопочка «Вийти з гри». Коли ви її натиснете, ви зможете покинути дану гру та розпочати нову.

Це якраз один із напрямків подальшого розвитку, який ми визначили в краудфандинговій кампанії. Дякую, що ще раз звернули нашу увагу на 1-player mode.

Доречі, можна обійтись без Node.js, використовуючи тільки засоби Python і той самий Redis.
Недавно була стаття про це.

Cаме так, в даному проекті ми не використовували Node.js для передачі повідомлень. За статтю дякую, не читав ще.

Якщо у вас метод відмінний від того, що в статті, то можете написати свою статтю про це)
Було б цікаво почитати)

Стек радує, лойс
Зараз поклацаю)

Підписатись на коментарі