Git Product home page Git Product logo

hexcraft.ru's Introduction

hexcraft

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

Разработка

Первый запуск

Для начала работы вам потребуется nodejs. Склонируйте репозиторий и потом установите все зависимости проекта

npm i

Все необходимое для запуска будет установлено и собрано. Теперь остается только запустить проект

npm start

При изменении исходного кода, все будет собрано автоматически. Для api будет пересобрана документация и запущены все тесты.

Дополнительно

Для удобной работы вы можете установить bower, sequelize-cli и gulp глобально (если вы еще это не сделали)

npm i -g bower sequelize-cli gulp

Тесты

Для ручного запуска тестов api игры

npm test

Тестовые данные

Для заполнения базы тестовыми данными используйте команду

sequelize db:seed:all

Будет создано несколько новостей и тестовые пользователи с логинами\паролями test\test admin\admin Еще вы можете запустить конкретный seed указав его имя (прим. secondMap):

sequelize db:seed --seed secondMap

hexcraft.ru's People

Contributors

dcversus avatar twoabove avatar danilstoyanov avatar efim1382 avatar lisamgd avatar er-ant avatar karmagen avatar

Stargazers

 avatar Anastasiya Dobrynina avatar

Watchers

James Cloos avatar Dmytro Sokolov avatar

Forkers

olgakram

hexcraft.ru's Issues

Создание моделей для БД

  • map (id карты ... )
  • mapData (id карты, координата X, координата Y, состояние клетки: доступна для хода, размещена фишка игрока1 и фишка игрока2)
  • game (id игры, игрок1, игрок2, статус игры)
  • gameData (id хода, id игры, обьект хода)

Модули es6

Настроить export/import + babel

  • мини-приложения новостей (сайт)
  • игра

Логотип

  • предварительные варианты логотипа
  • выбор варианта для проработки
  • проработка
  • экспорт в svg

image

выбранный логотип

экран авторизации

Экран ввода логина и пароля (пропускается, если есть активная авторизация)

Скетчи #19

Каркас приложения

Необходимо развернуть каркас expressJS приложения. Как я это вижу:

.
├── index.js
├── ... (package.json итп)
├── test
├── migrations
├── config
├── public (сюда попадает ген. исключено из репы)
│   ├── assets 
│   ├── docs
│   └── ...
└── src (работаем тут)
    ├── game  (алсо, чистая статика, структуру еще нужно обсудить)
    │   ├── resources
    │   └── ...
    ├── site (логика публичного сайта, здесь же шаблоны итп)
    │   ├── stylesheets (sass)
    │   ├── javascripts (es6)
    │   └── templates (jade)
    └── api (только JSON)
        ├── models
        └── ...

игра (базовые методы)

  • /game (возращает список игр)
  • POST /game (создание игры)
  • /game/:gameId (возвращает данные игры включая игровую карту!)

Реализовать следующие методы

авторизация

  • /user/login (возвращает данные юзера и токен)
  • /user/logout (удаляет запись токена)
  • /user/verify(возвращает 200 и токен в случае успеха и 403 и код ошибки, если токен не действителен)

реализовать работу следующих методов
неймспейс user
используем passport js

миграции и сиды

  • механизм миграций
  • пример миграции
  • механизм сидов
  • пример сидов

Нужно наладить работу миграций и сидов, возможно используя таски для gulp. Лучше через https://github.com/sequelize/cli
Главное сделать так, чтобы при первом npm install запускался скрипт, который наполнял базу начальными данными (сидами) и был способ провести на production миграции.

Главная страница

Лендинг с названием, логотипом, кнопкой "играть" и ссылками на новости, об игре и гитхаб.
Что-то в духе https://www.gitkraken.com/

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

  • скетч
  • картинка для бекграунда

Новости

Страница новостей генерируется на клиенте. Используем angular. Подгружаем новости через api. Ждем скетча (#12).
Детальной страницы новостей нету.

кнопка играть

image
кнопка играть
сделать слово играть прозрачным
для этого нужна svg в стиле логотипа (белый фон и вырезанный из него текст "играть" \ шрифт ROBOTO

Новости

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

image

Возможно в стиле гитхаба (как на примере).

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

Об игре

Нужны тексты для страницы "об игре"
Примерная структура (нужно обсудить):

  • Суть игры
  • Правила игры
  • ...
  • ЧаВо

экран игры

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

! без игрового процесса !

Скетчи #19

игровая фишка

необходимо зарисовать варианты (минимум 3) игровых фигур. Они должны быть сделаны в стиле логотипа, но с меньшим количеством деталей. Дальше нужно проработать анимации (например через spine) всего три состояния:
простой
простой + ожидание действия (срабатывает через какое-то случайное время само по себе или при наведении мышкой на фигуру)
ход (в момент когда фигурой сделали ход)

Структура сайта

Цель сайта

Общение с аудиторией и публикация информации о проекте.

главная (одноэкранный лендинг)

  • название проекта
  • ссылка для перехода в игру
  • навигация ссылки на гитхаб, правила игры

об игре

большая страница с оглавлением и разделами (на одной странице!) с описанием игры, механики, включает в себя ЧАВО итп

новости

лента событий проекта, возможно полуавтоматизированная. Анонсы обновлений с описанием итп (которые пишутся в ручную) и информация об автоматических сборках на разных реалмах игры.

скетчи игровых экранов

  • экран загрузки (не обязательно)
  • авторизация\вход (только ввод логина и пароля, если авторизован пропускаем)
  • экран выбора игры (список игр, список игроков, кнопки создания игры и выхода)
  • экран игры (требуется обсуждение)

Экраны игры

Примечание. Вся игра в канвасе (для phonegap).

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

Экран начала игры
Выводим имя реалма, список активных игр (для возможности понаблюдать ИЛИ присоединиться если игра не началась) и список активных игроков. Ниже размещаем кнопку "быстрая игра". Еще нужна кнопка для разлогина.

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

внедрение логотипа

  • установить его на главной странице
  • установить на внутренних страницах

Логотип размещен в /images/logo.svg

выспаться

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

правки по странице новости

  • прижать футер к низу страницы
  • увеличить горизонтальное расстояние между логотипом и меню
  • выровнять кнопку играть (и логотип uz0) по правому краю
  • убрать иконку газеты (заменить на простую точку
  • разместить линию строго сквозь "точки" недопустимо просвечивание линии сквозь блок новостей
  • сверстать логотип uz0, оранжевый цвет фон и белая буква U (как на uz0.ru но без тени)
  • мобильная версия
  • фильтр для даты (сегодня + время ИЛИ дата)

image

Об игре

Страница представляет из себя большое полотно текста и изображений. Заголовки, подзаголовки, абзацы, списки и таблицы. Простая статичная страница (шапку и подвал см. Новости #12).

Нужен сам материал #8

Заглушки страниц сайта

Файлы шаблонов и стилей. Роуты и заглушки логики.

Главная
Новости проекта
Обсуждения
Об игре

порядок пунктов меню

  • Навигация на внутренних страницах должна соответствовать навигации на главной: Об игре Новости Гитхаб Авторы (на внутренних не нужна ссылка "главная", тк есть логотип)
  • Ссылка на на логотипе должна вести на / а не /index.html

правки по главной странице

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

image

правки экспорта логотипа

  • на выходе получили восьмиугольник - пофиксить
  • нужно сделать внутреннюю часть не белой а прозрачной

Каркас игры приложения

  • инициализация pixijs
  • демо приложение (возможно квадрат который передвигается за курсором)
  • index.html (точка входа) с растягиванием canvas на весь экран
  • структура каталогов и пустые файлы скриптов для моделей

За основу возьмем движок http://www.pixijs.com/
Нужно развернуть в папке game демо приложение и настроить раздачу статики.

игровой процесс

Обсуждение деталей игрового процесса. Здесь будем собирать вопросы по игре.

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

пользователи

  • /user (возвращает список пользователей)
  • /user/:userId (данные пользователя)
  • POST /user (создание пользователя, требует токена с ключем admin:true)
  • DELETE /user/:userId (удаление пользователя, требует токена с ключем admin:true)

Реализовать работу следующих методов

статус бар

  • логин авторизованного пользователя
  • методы для вывода на статус бар информационных сообщений
  • кнопки выхода из игры (logout и surrender)

используется на экранах игры и ожидания игры

мелкие правки

  • jshint правки, чтобы не ругалось на api/site js код
  • корнем для всех api запросов должен быть /api/... сейчас в app.use написано от корня, будут конфликты app.use('/users' ... итп
  • тест для проверки юзеров пофиксить (сейчас валится с тем, что пароль не может быть пустым... https://travis-ci.org/uz0/hexcraft/builds/123879845 )
  • подключить полифил для fetch api https://developer.mozilla.org/ru/docs/Web/API/Fetch_API потому что http://caniuse.com/#feat=fetch только для игры (на сайте юзаем $http от ангуляра)
  • первый запуск не видно стилей
  • изменение структуры game
  • фикс расстояния футера
  • коррекция тени на главной странице
  • утилсы для игры
  • ...

новости

  • GET /news (возвращает список новостей)
  • POST /news (создание новости, требует токена юзера, с полем admin: true)
  • DELETE /news (удаление новости, требует токена юзера, с полем admin: true)

Реализовать следующие методы

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.