SibylLab / Program-Wars

A web-based educational card game for teaching basic concepts of computer programming and cybersecurity
https://program-wars.firebaseapp.com
GNU General Public License v3.0
16 stars 4 forks source link

Choosing simple or advanced cards #606

Closed johnanvik closed 4 years ago

johnanvik commented 4 years ago

Is your feature request related to a problem? Please describe.

This has come up a few times in discussions, and I think we need to formalize this. We're getting some advanced concepts into the game (e.g. refinements to Malware and Hack). This would make dealing with #467 more relevant. We could start looking at groups of cards that the player can choose to play with. I think @strinsberg talked about thinking of these as expansion packs.

Describe the solution you'd like We allow the player to choose to use either the original card (i.e. Malware or Hack) or choose the refined set for each when they start the game. We choose one of the refined behaviours, or a variation, as the effect of the simple cards.

johnanvik commented 4 years ago

603 is also about this.

strinsberg commented 4 years ago

A couple of thoughts

  1. The original Malware and Hack are no longer in the game. I suggest the base version is just malware and that hack and extra cards be the additional cards. Or that once hack cards are in the game again we just pick one of each that we think can easily be used and understood by beginners.
  2. For all cards we have right now, excluding methods as they require slight UI changes, the way to achieve this is to have different deck layouts. I have the deck building using an object that contains all types of cards one wants in the game and the number of each value to add. It is not set up with the constructor yet, but it could easily be. Then the GameSetup could just return either a setup or an identifier to let the deck know which setup to use when building the deck. Any cards that are not in the deck will not be used in the game. Easy Peasy.
  3. For the methods we will have to setup some kind of flag to let the game know not to show the method box. This could just be to inspect the deck and see if it's layout includes method cards which would be pretty straight forward.
  4. Later on with V3 I can add to this system which will be a bit more complex in how it decides what things to include. Unless we want to build the new version as a sort of separate page that can be navigated to. That way we don't have to have anything that says "are we in game A, B, or C" and decide what code to run and make things a bit spaghetti.
strinsberg commented 4 years ago

I think this issue may be somewhat addressed by the beginner mode that I am adding to v3. It will only use say 3 malware cards, and 1 algorithm card to reduce the number of cards that a player has to learn to get started with the game.

I have also been thinking that as we add more malware, hack, and algorithm cards that the deck will become unbalanced if we add every card we can think of to the game. This will not affect agile mode as the decks will only contain a set amount of cards so the ratios are fixed. My solution for standard mode would be to find (using the deck tool I will eventually build) what number of each special card type is best for good deck balance. Then for each game to include a random selection of card types, 3 malware, 3 hack, 2 algorithm, etc. so that the deck makeup is balanced. This would allow us to add as many new cards as we want, without them affecting the balance of the game.

If we didn't like the random setup of card types for standard games, we could create some deck presets that include specific malware and algorithm cards. This could mean that the player could slightly customise their experience in standard mode, or play with a deck that includes more or less complex card types. It would be really easy to add a modal or a separate page where the players choose what deck of cards they would like to play with, and we could describe what special cards are in each deck. However, we could just choose a good set of cards or do the random selection for standard mode, and save players picking what cards to play with for agile mode where they are picking a deck and possibly customising it.

johnanvik commented 4 years ago

@maimoona-bashir, investigating and proposing deck presets could be a good way to get back up to speed with PW.

strinsberg commented 4 years ago

Version 3 has this feature available

You can pick from a few presets Screenshot from 2020-08-04 09-52-51

You can see what special cards will be used Screenshot from 2020-08-04 09-52-59