Coder Social home page Coder Social logo

zhenyatos / gyboml Goto Github PK

View Code? Open in Web Editor NEW
2.0 2.0 0.0 75.78 MB

A two-player game for Android. The goal is the destruction of your opponent's base by bombarding it with various missiles, and the protection of your own base by shielding it with constructions made of destructible blocks.

License: MIT License

Java 87.07% PLSQL 7.97% Kotlin 4.96%
android destruction game

gyboml's People

Contributors

jiija avatar kystyn avatar slmtnm avatar via8 avatar zhenyatos avatar

Stargazers

 avatar  avatar

Watchers

 avatar  avatar  avatar

gyboml's Issues

Первая версия приложения

Для получения первой версии необходимо:

  • Установить и настроить Android SDK
  • Создать проект, присоединить необходимые модули, настроить
  • Собрать и получить .apk файл

Необходимая информация https://www.jetbrains.com/help/idea/android-support-overview.html
Коммитить в ветку first-version (создать)

Класс PhysicalTower

Отдельно для каждой части текстуры получить tower_%part_name%_.xml, затем создать экземпляры класса Body им соответствующие и скрепить их при помощи Joint'ов. Обернуть все данные в PhysicalTower - наследника Tower.

Описание продукта

Добавить описание продукта на русском и английском в Readme.md, оно включает в себя:

  1. Под какую платформу
  2. Цель игры
  3. Key feature's

Выстрел!

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

  • Реализовать механику с вращением дула вокруг оси для выбора углового направления игроком
  • Реализовать обработку столкновений PhysicalBasicShot как наследника Shot с PhysicalCastle как наследника Destructible.

Графические версии классов

Добавить графические версии классов Tower, Castle и Ball, которые могут быть отрисованы на экране по их физическим версиям. Здесь как удобно, желательно использовать паттерны.

Изучаем инструменты LibGDX, связанные с графикой (LWJGL+) (1)

Здесь лежит краткий гайд по инструментам которые будут нам полезны при работе с графикой (менеджер текстур, редактор физики и т.д.):
https://www.codeandweb.com/texturepacker/tutorials/libgdx-physics

Требуется освоить целиком, изучайте только если планируете работать в проекте с графикой (2 человека максимум)

Интерфейс игрока: стрельба

Отображать выбранный снаряд на кнопку начала выстрела после которой будет осуществляться отправка снаряда из пушки указанным в Documentation способом.

Нарисовать бэкграунд

Разработать фон графической сцены, на выходе получить файл который может быть использован LibGDX.

Релиз очередной версии приложения

Собрать, запустить, протестировать, чеклист

  • Связь с сервером
  • Передача хода
  • В свой ход можно выбрать снаряд и сделать выстрел,
  • Все стабильно отображается на экране

Принять решение по работе с сервером

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

  • Выбрать способ, с помощью которого игроки будут подключаться к игровой сессии. Вкратце описать суть способа
  • Выбрать способ обмена игровых данных в игровой сессии (p2p/сервер и т.п.). Вкратце описать суть способа
  • Расписать какие технологии потребуются

Файл в котором будет вся необходимая информация залить в папку Description, в ветку
docworks-server (создать), после согласования вся документация будет слита в master

Класс PhysicalBasicShot

Для текстуры базового снаряда получить basic_shot.xml, затем создать экземпляр класса Body ему соответствующий. Обернуть в PhysicalBasicShot - наследника BasicShot созданного на основе Shot.

Кнопка передачи хода

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

Текстура башни

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

Изучаем JBox2D (2)

Физический движок который мы будем использовать, туториал под C++, но аналогичные классы Java интуитивно находятся: https://www.iforce2d.net/b2dtut/ Ключевые моменты вынесены в качестве подзадач, изучайте только если планируете работать в проекте с физикой (2 человека максимум)

  • Что такое Testbed и как добавить туда свой тест
  • Основные классы и как они связаны: BodyDef, FixtureDef, Shape (предок PolygonShape, EdgeShape)
  • Типы тел и как в зависимости от них меняется поведение объекта
  • Collisions: как регистрировать столкновения и отвечать на это каким-то действием

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

Изучаем JBox2D (1)

Физический движок который мы будем использовать, туториал под C++, но аналогичные классы Java интуитивно находятся: https://www.iforce2d.net/b2dtut/ Ключевые моменты вынесены в качестве подзадач, изучайте только если планируете работать в проекте с физикой (2 человека максимум)

  • Что такое Testbed и как добавить туда свой тест
  • Основные классы и как они связаны: BodyDef, FixtureDef, Shape (предок PolygonShape, EdgeShape)
  • Типы тел и как в зависимости от них меняется поведение объекта
  • Collisions: как регистрировать столкновения и отвечать на это каким-то действием

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

Физические версии классов

Для следующих классов:

  • Tower
  • Castle
  • BasicShot

получить их физические версии, для этого использовать PhysicsEditor LibGDX и текстуры соответствующих объектов сцены.

Описать спорные механики

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

  • Могут ли блоки висеть в воздухе?
  • Будут ли фазы и если да, то какие?

Файл с информацией залить в папку Documentation, в ветку docworks-client (создать), после согласования вся документация будет слита в master

Дополнение иерархии классов

Дополнить класс Shot (снаряд), с учетом генерации оным Damage'а при столкновении с Destructible объектом. Написать систему материалов для Destructible объектов.

Деревянный блок

Создать класс PhysicalWoodenBlock, отнаследовав от Destructible, сделать графическую версию.

Выбрать git workflow

Для проекта требуется единый способ работы с VCS Git: выбрать набор правил, желательно с ссылками на примеры использования оного и записать в Readme.md.

Изучаем инструменты LibGDX, связанные с графикой (LWJGL+) (2)

Здесь лежит краткий гайд по инструментам которые будут нам полезны при работе с графикой (менеджер текстур, редактор физики и т.д.):
https://www.codeandweb.com/texturepacker/tutorials/libgdx-physics

Требуется освоить целиком, изучайте только если планируете работать в проекте с графикой (2 человека максимум)

Развернуть серверное приложение

Развернуть серверное приложение так, чтобы любое клиентское приложение с доступом в интернет имело возможность подключения к серверу.

Слей это!

Необходимо слить все наработки, которые были сделаны в третьем спринте и не влиты в девелоп

Текстура замка

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

Нарисовать текстуру блока и снаряда

В ближайшее время потребуются текстуры пассивных игровых объектов. Разработать текстуру одного блока (деревянного) и одного снаряда (самого стандартного).

Описать игровой дизайн

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

  • Описать как распределяется право первого хода
  • Описать внешний вид игрового поля
  • Описать ключевые игровые механики

Файл с информацией залить в папку Documentation, в ветку docworks-client (создать), после согласования вся документация будет слита в master

Класс PhysicalCastle

Отдельно для каждой части текстуры (основа замка и башенка-выступ), получить castle_%part_name%_.xml, затем создать экземпляры класса Body им соответствующие и скрепить их (как вариант расположением в пространстве т.к. замок неподвижен). Обернуть все данные в PhysicalCastle - наследника Castle.

Иерархия классов

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

Cклад снарядов - интерфейс

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

Work: Вторник - Четверг

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.