Giter Club home page Giter Club logo

defendmarsai's Introduction

Defend Marsai

A fireemblem like strategy game.

Design

  • Units will have fatigue. Each battle or action (not movement) will increase their fatigue. Support classes can reduce this for other units.
  • Weapons will have durability and classes.
  • I don't know if I'll have a weapons triangle, or some weapons will just be better than others (or the same all around).
  • Units can have sub-classes with a max of 2 (can normally be a swordsman but can learn to draw a bow, giving 2 ways to attack).
  • I want to have something to do between battles. FE is fun, but it can be repetitive to do batte after battle. I'd like to add more strategy by making you choose which battles on the main map (where to defend) and be responsible for villages' wellbeing. You'll also need enough supplies for your army (food, boots, weapons).

Enemy Design

Easy

Start with 'Easy' AI where it chooses a unit randomly within range.

Medium

AI picks the weakest unit to attack, priorizing finishing a unit off.

Hard

AI uses a deep search to 'lookahead' at the possible moves and chooses the best path for its advantage.

Impossible

AI model is trained over generations by other AIs.

defendmarsai's People

Contributors

dev-laurin avatar

Watchers

 avatar

defendmarsai's Issues

Move the pawn

Have the pawn move to the selected tile (if within movement range) when selecting the pawn and clicking the tile.

Create varying levels of enemy AI

Easy, Normal, Hard, Impossible

Easy should be more randomized.
Normal should have the AI attack based on units in range, and if it can finish them off. (possibly a smaller depth search of moves 1-2 deep).
Hard should have depth search of future moves.
Impossible should be a trained AI against other AIs.

Create flow diagrams displaying possible actions

Create some diagrams showing what a player can do and what ends their turn.

For example:

A pawn can move if not trapped by enemy units, has enough movement for the land, and is not blocked by friendly or 3rd party units.

A pawn can use a tool/weapon within that weapons range. A bow will have 2 range vs a sword's 1 range.

A pawn can start with either movement or a tool but cannot use a tool then move. A pawn must move first then use a tool then the turn ends.

Enemy turn attacks, player doesn't attack back

In FE whenever a unit battles another unit, as long as their weapon/class allows them to, they attack back. Right now the unit only attacks on the specific turn, no counter attacks are being made.

Create a way to 'pause' the board

When interacting with menus the tiles in the game board are still selectable. Make the game 'pause' when a menu pops up so the player can only interact with the menu.

Highlighting tiles bug

When highlighting a unit then the enemy unit, then trying to de-highlight them when next to each other leaves random tiles still highlighted in blue when they should be corresponding to whatever is selected.

Finish the 'Fatigue' mechanic

When a player engages in a battle they get a fatigue point to show they're getting tired. If fatigue is completely full _ happens. (I'm guessing strength/attack decreases, but defense and dodge will stay the same (will to live!)).

I think in the harder modes fatigue will effect every unit as time goes on (if you are still in the battle at night, your units' fatigue will increase by 1 each turn or every other turn). It creates an incentive to finish battles earlier.

Animation in UI bug

When clicking the enemy unit the portrait changes to the enemy portrait as expected, but then the portrait changes to the player's pawn after a second or two. I'm guessing the animation update on the object is causing the switch.

Add multiple weapons

A unit should have multiple weapons with different ranges. I suggest the following:

  • Create a 1 range weapon then a 2 range weapon. Assign one to the player unit, the other to the enemy unit. Test if they operate as expected. The enemy should be able to hit you from 2 spaces away, but you only can hit them from one. See if the enemy uses this to their advantage or just comes right next to you anyway.
  • Switch the weapons. See if the player can use the range as expected.
  • Give the enemy unit two weapons each with the different range. See if they use the greater range first. Shorten the weapon durability to see if they switch to the other one as expected?
  • Give multiple weapons to the player unit. See if the player can switch between them as expected.

Add Action item 'Cancel' so you can back out of attacking/moving

Right now there's no way to undo a movement or 'attack' besides ending the unit's turn. Moving a character to a spot to see what attack damage they'd do against a particular enemy is useful in FE. Let's add the ability to cancel movement/back out of a possible path.

Catch up on testing

So now that we've figured out how to do unit tests / game build tests in Unity (somewhat...) here are the list of scripts that need testing:

  • BattleSystem
  • Enemy Pawn (is this in use or deletable?)
  • GameManger
  • PathFinding
  • Pawn
  • PlayUISpriteAnimation
  • PriorityQueue
  • SpriteAnimation
  • Tile
  • UIManager
  • UISpriteAnimationManager

UI tests / possibly manual tests:

  • Windows don't clip even on different screen sizes
  • Controls work for (keyboard & mouse, gamepad, mobile/tap gestures)
  • Buttons all work as expected
  • Sliders update properly
  • Stats / images update properly for portraits and action menu
  • Menu popups pause the game beneath it and the game is not inter-actable until the menu goes away

Affinity

Add affinity mechanic so units that are in battles next to each other gain affinity with each other. It could boost stat levels, they could block or take the damage for the other character, or perform an attack along with the character. Or even some sort of boosted attack.

Essentially we want it to be good, but not too good.

Pair up

Add a pair up feature where you can snatch a weaker unit to save them or build up affinity with another unit. This would take the other unit's turn away though.

Add inventory per character

Each unit should have an inventory for equipment and items. 3 slots should be enough to start, probably max of 5.

Add tension like Xenoblade

I like the idea of adding tension - upping the stats of a character. In xenoblade you built up tension by being in battle after battle more frequently (I think) and for successfully encouraging your teammates during battle. This is one-on-one, but perhaps having a unit next to you ups the tension (trying to protect them). Or having high tension ups some stats battle after battle (skill/luck, dodge) but fatigue drains a certain stat, like attack.

Add the ability to use multiple units

So far the game works well with just one unit on both sides. Up the ante by adding multiple units. I suggest the following:

  • Add multiple enemy units first, with one player unit. Make them weaker units to test winnability. (Look for overlapping with each other around the player, a unit moving more than allowed taking another unit's turn, etc)
  • Then add multiple player units to one enemy unit. (test which one the enemy goes after, if the pathfinding gets confused, and player ability to switch between them and choose at any time during their turn)
  • Then open the bag of worms that is multiple units for each side.

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.