Ссылка на статические данные для наполнения таблиц в нашей базе данных
Ссылка на Project Management app
Ссылка на Project CI(Continues Integration)
- /src/main/resources/webapp/*.html - все HTML файлы разметки отображения для отрисовки View (нашего MVC приложения)
- /src/main/resources/webapp/css/*.css - все CSS файлы стилизации отображения (расположение, размеры, цвета, толщина, отступы, закругления и т.д.)
- /src/main/resources/webapp/font/*.ttf - файлы шрифтов
- /src/main/resources/webapp/images/*.png, *.jpg, *.svg - картинки для наполнения HTML страниц и CSS стилей
- /src/main/resources/webapp/javascript/*.js - все Front End скритпы (или программы), наиважнейший из них
routing.js
который позволяет делать AJAX http запросы на наш Java Back End на написанные нами эндпоинты запуская замапленные на них методы в Controllers классах. - /src/main/resources/webapp/music/*.mp3 - файлы фоновой музыки
- /src/main/resources/webapp/sounds/*.mp3 - файлы разных звуковых эфектов(например звук нажатия кнопки)
- Maven
- JUnit
- Hamcrest
- OkHttp
- MySql
- h2
- JDBC
- SQL
- REST
- Jetty (Web server and javax.servlet container)
- Jersey (JAX-RS)
- Enterprise патерны
- J2EE патерны
- Web патерны
- Патерны
- Chain of responsibility
- DTO
- DAO
- MVC
- ORM
- JPA
- POJO
-
/src/main/java/ua/od/game/controller - контроллеры содержщие эндпоинт методы которые вызываются в зависимости от того какой пришел HTTP запрос на Jetty сервер
-
/src/main/java/ua/od/game/dto - классы обертки данных, служат для обмена данными между слоем контроллеров и сервисов
-
/src/main/java/ua/od/game/service - классы содержащие бизнес логику приложения
-
/src/main/java/ua/od/game/model - классы обертки данных, служат для обмена данными между слоем сервисов и слоем DAO классов
-
/src/main/java/ua/od/game/repository/dao - DAO классы в которых находятся методы содержащие SQL CRUD операции для взаимодействия с сущностями реляционных баз данных и превращения их в Entity Java обьекты, или другими словами классы которые занимаются ORM задачами
-
/src/main/java/ua/od/game/config/AppContextConfig.java - настройки контекста приложения(!!!тут вручную надо регистрировать новые классы проекта!!!)
-
/src/main/java/ua/od/game/config/DataBaseConfig.java - загрузка
db.properties
файла с конфигурациями базы данных при старте проекта для доступа из Java -
/src/main/java/ua/od/game/ApplicationStarter.java - загрузка всех конфигураций и запуск Jetty сервера
-
/src/main/java/ua/od/game/DataBaseDeployer.java - развертывание базы данных согласно SQL скриптам собранным в папке
/src/main/resources/db/*.sql
-
/src/main/java/ua/od/game/repository/helper/SqlHelper.java - обычный класс помощник который упрощает работу с JDBC
-
/src/main/resources/config/db.properties - тут находятся все конфигурации которые позволяют работать с базой данных
-
/src/main/resources/db/*.sql - тут находятся все SQL скрипты которые позволяют развернуть базу данных и заполнить ее начальными статичными данными
-
/src/test/java/ua/od/game/repository/dao/DbTest.java - super класс всех тестов связанных с базой данных - автоматически разворачивает h2 базу используя настройки из файла
/src/test/resources/config/db.properties
и файлы SQL скриптов из папки/src/test/resources/db/*.sql
-
/src/test/resources/config/db.properties - тут находятся все конфигурации которые позволяют работать с базой данных на этапе тестирования
-
/src/test/resources/db/*.sql - тут находятся все SQL скрипты которые позволяют развернуть базу данных и заполнить ее данными для тестов
User
- таблица в которой сохранены все зарегистрированые в игре пользователи
Room
- таблица в которой хранятся все комнаты.
Account_Room
- таблица в которой хранятся айди комнат и айди двух аккаунтов чтобы обьединять пары игроков для проведения игр.
Message
- таблица в которой хранятся все сообщения которые создаются игроками в чате
Building
- таблица в которой хранится статическая информация о здании - название и описание (билдинги позволяют производить ресурсы - больше билдингов больше ресурсов)
Account_Building
- таблица котороя отображает сколько билдингов пользователь уже нажил в течении одной игры, обнуляется на старте игры
Resource
- таблица в которой хранится статическая информация о ресурсе - название и описание (ресурсы это основные элементы количество которых надо накапливаь в игре)
Account_Resource
- отображает сколько пользователь заработал в текущей игре ресурсов - таблица постоянно обновляется так как здания потребляют и производят ресурсы каждую минуту динамически, обнуляется на старте игры
Upgrade
- таблица в которой хранится статическая информация об апгрейде - название и описание (апгрейды улучшают производство зданий на N процентов)
Account_Upgrade
- отображает какие апргрейды игрок приобрел в течении игры - эти апгрейды в свою очередь влияют на количество ресурсов произведенных зданиями в зависимости от указаных процентов, обнуляется на старте игры
Achievement
- таблица в которой хранится статическая информация о ачивменте - название и описание (просто награды типа звезд и медалей за достижения)
Account_Achievement
- отображает все достижения сделаные пользователем за все игры которые он когда либо сиграл - нужна для показания успеха игрока и сравнения с успехами других в одной теблице в фигишном UI на фронтенде, таблица обнуляется только когда создается новый пользователь
Notification
- таблица в которой хранится статическая информация о нотификейшене - название и описание (нужна для придания игре динамики по смыслу тоже самое что и ачивменты)
Account_Notification
- отображает все возможные сообщения в игре - нужны для отображения прогресса игрока когда он достиг определеного количества задний, ресурсов или апгрейдов
Card
- таблица в которой хранится статическая информация о картах - название и описание (основная еденица управления процессом игры)
Card_Group
- таблица в которой хранится список групп на которые деляться карты. Например некоторые возможные названия групп: 'Покупка зданий', 'Покупка ресурсов', 'Атакова противника', 'Апгрейд зданий'
Resource_Set
- наборы ресурсов обьедененых одним айдишником set_id (этот айдишник одинаковый у всех кто в наборе)
Building_Set
- наборы зданий обьедененых одним айдишником set_id (этот айдишник одинаковый у всех кто в наборе)
Upgrade_Set
- наборы апгрейдов обьедененых одним айдишником set_id (этот айдишник одинаковый у всех кто в наборе)
===========================
Упрощенная RTS игра в которую можно играть вдвоем по сети.
Остовные правила:
Используя карты нужно достичь максимального показателя определенного ресурса(например Власти) или добиться нулевого показателя этого ресурса у противника.
Карты являются единственной возможностью управлять процессом игры и они могут влиять(плюсовать и минусовать) на "Ресурсы" "Здания" и "Апгрейды" собственные и противника.
Чтобы сделать любой экшен(действие) в игре например: купить здание, проапгрейдить здание, пополнить ресурс, нанести удар по зданиям апгрейдам или ресурсам противника, обменять один ресурс на другой и т.д. нужно применять доступные карты.
Эти или какие либо иные придуманые экшены будут реализовываться по средствам описания действия той или иной карты.
Применение карты выражается в плюсовании или минусовании набраных Ресурсов Зданий и Апгрейдов в таблицах - Account_Building, Account_Resource, Account_Upgrade.
В списке карт каждая карта может появиться тогда когда для нее есть все ее требуемые "Ресурсы" "Здания" и "Апгрейды".
После использования карты мы создаем запрос в REST API нашего серверсайда и вычитаем все расходники из таблиц:
Account_Building, Account_Resource, Account_Upgrade, для себя и для противника.
===========================
Игра состоит из 4-х html страниц(с которых будут делаться все наши запросы в наш REST сервис с использованием JavaScript+Ajax+Json):
Станица Login-а или Create new User.
Страница списка всех доступных игровых комнат (Room-ов) в которых можно играть, каждый элемент списка состоит из "номер комнаты", "названия комнаты", "количесво игроков в комнате". и кнопки:
"Join Room" - если в выбраной комнате есть один игрок то сразу начать игру, если вы в комнате один то занять место в ожидании когда прийдет другой игрок и стартанет игру.
Страница где и происходит сам бой между игроками куда мы попадаем после старта игры. Состоит из следующих компонентов:
- "Список Построеных Зданий" (table Building and Account_Building)
- "Список Полученых Ресурсов" (table Resource and Account_Resource)
- "Список Полученых Апгрейдов" (table Upgrade and Account_Upgrade)
- "Список Построеных Зданий Противника" (table Building and Account_Building)
- "Список Полученых Ресурсов Противника" (table Resource and Account_Resource)
- "Список полученых Апгрейдов Противника" (table Upgrade and Account_Upgrade)
- "Список Карт текущего игрока(список карт противника не показываем)" (table Сard and CardGroup)
Страница достижений. Таблица в которой отображаются все Ачивки набраные в играх всех игроков упорядоченая по убыванию достижений. (edited)