Giter VIP home page Giter VIP logo

infochess's People

Watchers

 avatar  avatar  avatar

infochess's Issues

Turn Numbers Incorrect

Instead of turn numbers increasing after each opponent takes a turn, it should go Turn 1 White, Turn 1 Black, Turn 2 White, Turn 2 Black, etc. Like baseball innings.

Create a tutorial system framework.

The entire tutorial script should be managed here in an easy to use structure that will handle an interactive tutorial without actually effecting the current game.

Pawn Capture should show all available captures first

Pawn Capture should show all available captureable pieces first for the player to select and then they select the pawn to capture it (unless only one pawn can capture the selected piece, in which case it should just automatically choose that pawn to move).

Observer role should be optional

This issue impacts both the game and the Raven framework. It also impacts the lobby.

(please don't work on raven without first merging Lochemage/raven#1)

The observer role should not be required in order to create a game. There are a few use-cases:

  1. No observer is ever involved. (normal game play)
  2. A game in progress is joined by an observer who was not identified at game instantiation time. (normal game play, plus allowing for people to look in on games in progress)
  3. The game is set up initially with a specific authorized person as the observer. (this is the new classroom-use case)

The last case is supported now by the game and by Raven and (in principle) by the lobby. Case 1 must also be supported, but case 2 can be done without (it is tricky and filled with issues because it might create opportunities for cheats and it creates a mountain of conditionals)

Here's one possible approach:

In the raven bridge we currently have

var metadata = {
  name: "InfoChess",
  slug: "infochess",
  roles: [
    { name: "White", slug: ROLES.WHITE },
    { name: "Black", slug: ROLES.BLACK },
    { name: "Observer", slug: ROLES.OBSERVER },
  ]
};

This could be expanded to include limiting info for the roles; something along these lines

var metadata = {
  name: "InfoChess",
  slug: "infochess",
  roles: [
    { name: "White", slug: ROLES.WHITE , required: 1, optional: 0},
    { name: "Black", slug: ROLES.BLACK , required: 1, optional: 0},
    { name: "Observer", slug: ROLES.OBSERVER , required: 0, optional: 1},
  ]
};

Then raven would need to act accordingly.

The /new endpoint would need to be prepared to validate and process query strings in a more general way. Consider, e.g., a game that could have teams of one or two players. The config might look like this:

var metadata = {
  name: "teamChess",
  slug: "teamchess",
  roles: [
    { name: "White", slug: ROLES.WHITE , required: 1, optional: 1},
    { name: "Black", slug: ROLES.BLACK , required: 1, optional: 1 },
    { name: "Observer", slug: ROLES.OBSERVER , required: 0, optional: 1},
  ]
};

So case 1 is a bug, because it is missing. Case 3 is implemented already, but fixing case 1 will probably cause a re-think of how case 3 is done.

Case 2 is tricky and I think should not be attempted at this time.

To support case 2, the /play endpoint would need a broader way of thinking about authorization. It would have to check and see if there was an authorized observer in the game setup -- if so, treat it like a regular role. But if the optional role was not specified, then any system user should be allowed to access \play.

Enforcing limits might be tricky, and the state of such things will need to be added to the info transmitted to the lobby in updates. For example, if there's a game in progress with no specified observer, but someone has taken the observer position after the fact, how does the lobby know not to expose a notional "join as observer" link?

Handle Observer's view of IW attacks.

Currently, Observer only gets a log message to show an attack was made, but when the defense method is chosen, Observer gets the popup result box.

Both should either be completely done in the log messages, or there should be some other method to show the attack and results.

Fix server throw errors.

Currently, server will throw an error and shut down the server if any invalid messages were requested by a client. These errors should be handled in a way that does not require the server to be shut down.

Also, if valid, these error messages should be sent to the clients.

IW Defend alert covers up important parts of the screen.

When you are attacked and it is showing the defend/ignore option box, the box covers up the attack costs portion of the screen. It may be helpful to know what those costs were so the defender can better decide how to react.

Tooltip Styles Mismatch

The tooltips for the army selector elements (the elements when placing pieces on the board at the beginning of the game) don't match the other tooltips in the game.

IW result message should have a close button.

Big red popup message that alerts you the result of an IW attack flashes on the screen too fast. This should be changed so the message stays on the screen until the user manually closes it.

Add options for the Observer player

Options should appear in the empty area on the right panel and should allow for the following options:

  • View the board from the perspective of either player (possibly even a side perspective that shows black and white on either side instead of top and bottom).
  • View the full board, or just the board that the player see's.

Implement En Passant

Pawns should be able to do an en passant move if possible when Pawn Capture is clicked.

Observer board is flipped

Much the same issue that we had before with Black player board being flipped, except it is now happening on the Observer player.

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.