Project - TheJosephChen/Chen-Joseph-webdev GitHub Wiki

Duelyst Social / Tournament Hosting Website

The premise of this project is to create a social networking website revolving around Duelyst. Duelyst is an online Collectable Card Game (CCG) with a moderate following developed by the independent video game studio Counterplay Games. The game has a small competitive scene with several tournaments held monthly; a few officially sanctioned by Counterplay Games and many hosted by independent parties. The majority of independently hosted tournaments make use of a 3rd-party tournament hosting website but require participants to submit more information which is not made available through the website via other channels (ex. creating a deck via 3rd-party site).

The problem the project is addressing is that the primary venues for hosting Duelyst tournaments are generic tournament websites which require the use of other 3rd-party websites to create decks for tournament organizers to review. As such, the project will be a one-stop tournament organizing website in which tournament participants are able to export their decks from the game into the website and tournament organizers can view participants’ decks on the website; all this in addition to other features expected of a tournament organizing website. Tournaments will also possess a means of commenting for Organizers and (hopeful) Participants to converse. In addition to the core tournament features, the website will provide users with profiles which can include information pertaining to tournaments hosted on the website (their individual performance in tournaments). Additionally, a rating system could exist for each User's profile independent of their tournament performance but as a grading system for their desirability as a tournament organizer or a participant.

Duelyst has an in-game feature which allows players to take a saved deck of cards and export that deck as an encoded string. The website is to make use of a public community-hosted API at http://decklyst.xyz which can decode the encoded deck string into JSON format. The website will then parse this JSON to represent in a human-readable format for both tournament participants and organizers to review. In this manner, the middleman that is the 3rd-party deck-building website is cut out from the equation, allowing for more efficient organization. This is the core feature of the website. A secondary feature of the site is the ability to use a search feature to look up cards. The search will rely on the https://duelyststats.info public API which allows for card searching by name. The limitation of the API is that when the search query is too ambiguous, the response is cut off after the first ten cards found. However, the game is at the moment small enough that any search that is considered “too ambiguous” is precisely that. After searching for a card, a results page will be given from which a user can click a result and be redirected to a card details page. On the details page for each card will be a comments section in which users may create public comments which can be viewed and responded to by other users.

Domain Objects

  1. A Tournament is a domain object. In addition to being recorded with its own details (time/date, description, rules, etc), tournaments are to consist of one tournament organizer and many tournament participants. Tournaments and Decks exist in a one-to-many relationship (a Tournament consists of many Decks representing players but each Deck is only created for a single Tournament). Tournaments and Comments exist in a one-to-many relationship (a Tournament can have many Comments but each Comment only exists for a single Tournament).

  2. A Deck is a domain object. As per the rules of the game, a deck consists of 40 cards. A deck is represented as a list of cards as well as the Tournament Participant who owns the deck and the Tournament for which the Deck is purposed. Decks and Tournaments exist in a many-to-one relationship (see Tournament domain object). Decks and Cards exist in a many-to-many relationship (a Deck consists of many Cards and each Card can be used in multiple Decks).

  3. A Card is a domain object. A card simply consists of the information found on the card. Cards and Decks exist in a many-to-many relationship (see Deck domain object). Cards and Comments exist in a one-to-many relationship (a Card can have many Comments but each Comment only exists for a single Card).

  4. A Comment is a domain object. Comments are represented as text linked to the User who issued the comment. Comments and Tournaments exist in a many-to-one relationship (see Tournament domain object). Comments and Cards exist in a many-to-one relationship (see Card domain object).

Human Users

  1. A Tournament Organizer is a human user. Tournament Organizers can create tournaments and are responsible for overseeing the Participants of the Tournament. The website will allow Tournament Organizers to create Tournaments and review the Decks submitted by Tournament Participants without having to use a 3rd-party site for the latter. In addition, Tournament Organizers may check the profiles of Tournament Participants to see their desirability as a Participant and remove a Participant from a Tournament if they have a history of being uncooperative. Organizers can converse with Participants through Tournament comments. After a Tournament, they may go on to rate each Participant. Organizers may still be active on the site as a normal user, conversing with other users through card comments.
  • Tournament Organizers and Tournaments exist in a one-to-many relationship (an Organizer can be responsible for multiple Tournaments but each Tournament has only one Organizer). Organizers and Comments exist in a one-to-many relationship (an Organizer can make many Comments but each Comment is only composed by one Organizer).
  1. A Tournament Participant is a human user. Tournament Participants will be able to join Tournaments and submit their decks for the Tournament without having to use a 3rd-party site for the latter. In addition, Tournament Participants may check the profiles of Tournament Organizers to see their desirability as an Organizers and therefore may abstain from joining a Tournament if they have a history of being uncooperative. Participants can converse with Organizerss through Tournament comments. After a Tournament, they may go on to rate the Organizer. Participants may still be active on the site as a normal user, conversing with other users through card comments.
  • Tournament Participants and Tournaments exist in a many-to-many relationship (a Participant can join multiple Tournaments and each Tournament can have many Participants). Participants and Comments exist in a one-to-many relationship (a Participant can make many Comments but each Comment is only composed by one Participant). Participants and Decks exist in a one-to-many relationship (a Participant can make many Decks but each Deck belongs to a single Participant).
  1. A Casual Player is a human user. Casual players may not participate in Tournaments but may still use the site as a resource to learn about cards through the search function of the site and engage in discussions on cards. Casual players are still able to view Tournaments but what sets them apart from other users is that they are not related to the Tournament in any way. They may still view the profiles of any user and converse with any other user through card comments.
  • Casual Players and Comments exist in a one-to-many relationship (a Casual Player can make many Comments but each Comment is only composed by one Casual Player).