Feature Wishlist - uchicago-cs/chigame GitHub Wiki
This page is intended as a space to list and brainstorm possible new features for chigame. Since chigame is in its infancy, most of these target core functionality that is needed to build a minimally-functional site.
Most features can be completed using the skills that CMSC 22000 students learn in the lectures and homeworks, but some features may require researching additional topics, doing additional data modeling, etc.
Adding Games to Chigame
At the moment, chigame provides a fair amount of core functionality, including the ability to add and edit games on the site, but there are no actual playable games on the site. We would like to add 2-3 games to the site, to start exploring how those games would integrate into the overall structure of chigame.
This feature would involve a mix of frontend and backend work. The game itself would have to be implemented in the frontend (using HTML and JavaScript), but we will need to update the backend to be able to keep track of individual game scores, stats, etc.
Game Authoring API
Related to the above, we would eventually like to have a Game Authoring API for game authors. In other words, it should (in theory) be possible for someone (not involved in the development of ChiGame itself) to write a game that can be contributed to ChiGame, as long as it conforms to certain conventions.
At this stage, this component would be very experimental, and would involve working with the teams that are developing games, to get a sense of how their games would integrate with ChiGame, and start designing a database model and API for those games to store/update their game state on ChiGame.
Achievements
We would like to add a mechanism for games to specify achievements ("Played Chess 20 times", "Played a Royal Flush in Poker", "Scored a perfect game", etc.) that users can earn. This would be similar to the Trophy mechanism on PlayStation consoles, where each game can have its own set of achievements, but there is a central mechanism to keep track of those achievements.
Leaderboards
Somewhat similar to Achievements, ChiGame could benefit from a general mechanism to keep track of leaderboards. For example:
- A leaderboard for each game, showing the top scoring players for that game (where each game defines how a player earns points in a game)
- In games where players could, in theory, earn an unbound amount of points, we could have two leaderboards: "top score in a single game" and "aggregate score across all plays of the game"
- A global leaderboard aggregating the scores across all games (this would require figuring out a scheme for normalizing points, to avoid users from point-farming with a game that awards a large amount of points)
- Filtering any leaderboard by region ("World Leaderboard", "Europe Leaderboard", etc.)
- Allowing users to create custom leaderboards with their friends, so they can keep track of scores just between a group of users.
Live Chat
The Tournaments component currently includes some basic chat functionality, but this could be refactored into a component that could be used in various parts of ChiGame, including during a play of a single game.
The current implementation involves periodically polling the server for new messages, so this feature would involve a bit of frontend work to turn this into a real-time chat, where new messages are immediately pushed to users in the chat.
Knowledge Base
While Forums provide a good mechanism for users to discuss games, we would also like to have a repository of guides ("How to play Checkers", "Advanced Chess Techniques", etc.) and common questions/issues.
Interactive Fiction
Harkening back to the original CS 220 project, chiventure, we would like to add support for interactive fiction games. Because there is already so much software related to Interactive Fiction (including languages for describing text adventure games), this component would be very different from the "implementing a game" component mentioned above. This component would largely focus on two things:
- Researching existing interactive fiction libraries, and figuring out which ones could be integrated with ChiGame
- Coming up with a frontend interface for displaying and playing interactive fiction games.
ChiGame Frontend
As a more cross-cutting component, the ChiGame frontend is very basic, and could be improved in many ways. A team could focus entirely on improving the general look-and-feel of the entire site, and then work with individual teams to support any frontend needs they may have.
Miscellaneous Tasks
This is not really a component that could be assigned to a team, but rather a list of miscellaneous tasks that anyone in the project could undertake if they wanted to work on more tasks (beyond the ones they committed to doing in a given sprint):
- Making the ChiGame repository more public-facing: The ChiGame repository is already public, but if someone randomly stumbled upon it, there is very limited information on how to set up and run ChiGame. There are a number of things we could do to make the repository more "public-friendly":
- Add a README file
- Create a documentation site that explains how to set up and run ChiGame, how to use it, etc.
- Create a Contributor's Guide
- ChiGame Test Data: If you clone the ChiGame repository and run ChiGame, it contains no games, users, etc. It would be nice to have some test data that can be loaded into ChiGame to show what the site looks like with active users, games, etc.
- Making ChiGame Deployable: Eventually, we'd like to have a reference instance of ChiGame running on a cloud provider. This would involve adding the necessary configuration files to deploy it to a platform like GCP, Heroku, Azure, etc. and testing that it works correctly when deployed to one of those platforms.
- Tests: One can never have enough tests. If you're looking for more tasks to work on, writing tests is always an easy way to rake in more task points.