Giter Site home page Giter Site logo

etchelon / gaiaproject Goto Github PK

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

Full implementation of the Gaia Project board game as a web app

Home Page: https://gaiaproject.azureedge.net

License: MIT License

C# 46.47% Dockerfile 0.06% HTML 0.13% TypeScript 39.71% SCSS 0.27% CSS 0.56% Java 0.09% Swift 0.24% Ruby 0.06% JavaScript 0.08% Svelte 12.35%

gaiaproject's People

Contributors

dependabot[bot] avatar etchelon avatar

Stargazers

 avatar  avatar

Watchers

 avatar  avatar

gaiaproject's Issues

Fix deep linking issues on mobile

Figure out why, on Chrome/Edge for iOS (and who knows which other combinations of browser/OS), reloading the game page results in the UI showing you're not logged in, but not on Safari/iOS or Android/Chrome and desktop.
The UI should wait for Auth0 before performing any HTTP requests.

Define all tracked statistics

Define what should be tracked in stats.
E.g.:

  • For each Faction: pick frequency, min/avg/max bid in auctions, avg placement, min/avg/max scores, preferred tracks...
  • For tech tiles: avg picks, maybe in relation to being free or bound to a track
  • For tracks: avg steps...

Analysis: check if picking a Tech tile and performing the Research step is doable all in one action alongside the upgrade, to reduce dead times in turn based games

Study how this could be implemented.
Ideally the Upgrade building workflow should offer the choice every time a player builds a RL/AC:

  • Wait for leech before proceeding (current behavior);
  • Pick tech tile right away (new choice).

In the second case, need to understand if it's possible to switch to another workflow (to reuse the existing code), then go back to the parent one (upgrade) or to just copy part of the code into the upgrade workflow, and dispatch a single action to the backend (an enriched Upgrade action with new data).
Also, how to handle the case when the research step would allow the user to place the Lost Planet?

Implement a Player's stats view with personal stats

Maybe turn the current History page into a "My Games and Stats" kind of page with a tab showing a list of all played games and another showing the personal stats like avg placements, scores, most picked factions and other interesting stats.

Decide when stats calculation should happen

Most likely it should just happen at the end of the game because rollbacks would be annoying to handle.
But maybe it's just best to do an incremental calculation with special handling of rollbacks (e.g.: recalculate everything upon rollback) in case there are a lot of hot data in action handlers that would be easy to use for the calculation but would be cumbersome to extract once again in separate handlers.

Delete games

Add the ability, for the game creator, to delete a game.
Other players shall be notified that the game was deleted.

Add "Pass" button in Conversions dialog

In the Conversions dialog, when it's opened to do conversions before passing the turn, add the Pass button which behaves like the Cancel button currently, and change the Cancel button's behavior to just close the dialog without dispatching the pass turn action.
This allows users to review the board state before deciding which conversions to perform.

Spectator mode

Add the ability to spectate games.
Initially just make the game page work with non players, if accessed by url.
In the future add a view with active games (by player or in the whole platform?! Need a cache!!).

Federation marker not visible

Federation marker, which should show up (by convention) on the highest value building on the federation, does not show up.
The marker is applied to an in-memory building instead of the actual game state which will be persisted.

Skip Tech tile selection when you have only 1

When a player only has 1 usable Tech tile and chooses the action "Use Tech Tile", the UI should automatically propose to activate that tile instead of needlessly asking the player to choose which tile to activate.

Add "Confirm and pass" button

To the following actions:

  • Colonize
  • Upgrade (if no tech tile needs to be picked)
  • Place Lost Planet
    to allow a player to skip final conversions without having to wait other players' decisions, to reduce the time wasted in turn based games

Taklons charge: 0 x -1 VP

When Taklons have passed and have:

  • 0 chargeable power
  • 1+ power income
  • PI
    and someone builds near them, they are asked to charge 0 x -1 VP.

Lantids parasite mine have power value 2

When Lantids acquire tech tile PI-AC -> 4 Power, their parasite mines that are on a hex with another player's PI or AC also get their power value increased by 1.

Implement the Stats view in the game page

After the game has ended, enable a view with the game stats similar to BGA's view for Terra Mystica.
Some kind of grid with players and how they got their resources/VP.

Add Federation validation logic

Currently there is very little validation on the Federations that are formed by players.
In order to enable a wider code base to use the app, this hole needs to be closed as illegal federations could impact final scoring conditions and just invalidate the whole game.

Additional checks that need to be implemented are:

  • Check that all needed satellites have been placed
  • Check that placed satellites follow one of the shortest paths among the federated buildings
  • Check edge cases where the Federation's power value exceeds the required amount by 1 but there's a mine that is "in the middle" of the Federation and therefore cannot be removed.

Fix Ivits counter of power inside Federation

Fix Ivits counter of power inside/outside the Federation is not updated when colonizing from a gaiaformer (but the newly built mine seems to be correctly added to the Federation)

Fix SignalR reconnection problems

When a tab is reactivated (on mobile only?) the warning toast is displayed saying that you're not connected and you should rejoin the game.
Coupled with the deep linking issue it makes playing on some mobile browsers annoying.

Better filtering for available actions

Improve filtering of possible actions:

  • when minerals are < 2, do not show Upgrade, or maybe even hide it if minerals are < than the cost of the cheapest upgrade you can do (e.g.: all TS have been built, you can only build RL or more so you need at least 3 minerals). Same for credits
  • filter out planets that require too many minerals to terraform
  • other?

Show faction playing order when picking

When selecting a faction, explicitly show the faction's turn order.
Suggested to just show in the status bar a "Select your race <to play 2nd>" <-- new part between angular parenthesis.
Maybe also add it to the dialog's title

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.