Team Name: DeckTech Team ID: 6509
Proposed Level of Achievement: Apollo 11
Motivation
The motivation behind our project stems from the desire to revolutionize the mobile poker gaming experience. With the widespread popularity of poker games on mobile platforms, there is a growing demand for innovative solutions that cater to both casual players and enthusiasts. Our motivation stems from a shared interest in poker and technology. We are intrigued by the idea of merging the intricate dynamics of poker with the possibilities offered by Software Engineering, ultimately aiming to deliver an app that not only entertains but also educates and challenges players of all skill levels.
Aim
We hope to develop a poker mobile application with a wide range of features and functionalities to create a unique and engaging experience for players. By combining standard poker gameplay features with innovative additions such as a ‘Spectator Mode’ and singeplayer mode against computer opponents, we aim to create a platform that caters to both casual players and those seeking to improve their skills and strategy. Additionally, we aim to learn and apply SWE tools and techniques to train computer bots that mimic human gameplay behaviour and strategies, providing users with challenging and realistic opponents. By leveraging innovative technologies and creative design, we aim to create a poker mobile app that stands out in a crowded market and leaves a lasting impression on users.
User Stories
- As a casual poker player, I want to enjoy quick and easy access to poker games on my mobile device, with options for both solo and multiplayer gameplay.
- As a competitive player, I want to test my skills against bot opponents of varying difficulty levels and receive feedback and guidance to improve my game.
- As a spectator, I want to observe ongoing poker games and analyze players’ hands and betting patterns, enhancing my understanding of the game and improving my own gameplay.
- As a social gamer, I want to connect with other players through chat functionality, friend invites, and shared experiences, fostering camaraderie and friendly competition.
Features - Core Features:
Standard Poker Gameplay: Implement classic poker gameplay modes such as Texas Hold'em and Omaha. Multiplayer Support: Enable multiplayer functionality that allows players to join public or private games with friends or random opponents. Spectator Mode: Introduce a spectator mode that allows users to watch ongoing poker games as spectators and view real-time statistics and winning probabilities for each hand. Bot Opponents: Develop computer opponents that offer single-player gameplay experiences, with varying difficulty levels and adaptive strategies based on user feedback and gameplay data.
- Extension Features:
Hand History and Analysis: Provide users with the ability to review and analyze their hand history, including detailed statistics, hand replays, and insights into their gameplay decisions. Customization Options: Allow users to customize their gaming experience with options for table themes, card designs, avatar customization, and personalized settings. Social Integration: Integrate social features such as friend invites, chat functionality, and leaderboards to facilitate interaction and competition among players.
Timeline
Milestone 1 - Technical proof of concept (i.e., a minimal working system with both the frontend and the backend integrated for a very simple feature)
- Brainstorm, refine and finalize the features of the application, including standard poker gameplay, spectator mode, computer opponents, and multiplayer support.
- Research and identify suitable technologies for mobile app development, integration, and backend services.
- Create a development plan outlining milestones, tasks, and responsibilities
- Learn the required technologies, focusing on mobile app development frameworks (Flutter), communication servers (WebSockets), and backend services (Firebase).
- Set up a minimal system, including an integrated frontend and backend with basic login functionality
Milestone 2 - Prototype (i.e., a working system with the core features)
- Design and implement the core features of the mobile poker application, including standard gameplay modes.
- Develop the user interface for the spectator mode, incorporating real-time statistics and hand analysis.
- Conduct testing to ensure functionality and usability across different devices and platforms, addressing any bugs and issues to ensure a stable foundation before moving forward.
- Iterate on the design and implementation based on testing feedback, ensuring seamless integration and smooth user interaction across all features.
Milestone 3 - Extended system (i.e., a working system with both the core + extension features)
- Expand upon the core features by introducing additional functionalities, such as multiplayer support for synchronous gameplay sessions and a training mode for solo practice against computer bots.
- Refine the behavior of bot opponents through iterative experimentation and adjustment, based on extensive data sets of poker hands and strategies.
- Conduct comprehensive testing of the new features and extensions, focusing on performance optimization, scalability, and compatibility across different devices and platforms.
- Collaborate closely to address any identified issues or challenges, ensuring that the final product meets the highest standards of quality and reliability.
Tech Stack
- Flutter: For cross-platform mobile app development, providing a unified codebase for iOS and Android platforms, efficient performance, and a rich set of customizable UI components
- Flutter Widgets: For visually appealing user interfaces
- Flutter Testing Framework: For reliable widget and integration tests
- WebSockets: To enable real time two-way communication, facilitating multiplayer gameplay
- Firebase: For backend services such as user authentication, real-time database, and cloud storage, offering scalability, reliability and seamless integration with the frontend.
- Cloud Firestore: For storing game data, user profiles and game state in real-time to enable multiplayer gameplay
- REST APIs: For accessing services allowing for data retrieval, storage and manipulation
Software Engineering Skills We will employ software engineering techniques including Object Oriented Programming principles to ensure efficiency, reliability and scalability of our model. By adhering to OOP, we aim to encapsulate data and functionality into cohesive objects, facilitating modularity, extensibility and ease of maintenance. We will ensure continuous version control, while maintaining thorough documentation on GitHub, to enable efficient collaboration between the team members. Our development workflow will include rigorous testing and debugging procedures. We will employ a combination of unit tests, integration tests, and system tests to verify the correctness and robustness of our application at each stage of development. Moreover, we will implement comprehensive error handling mechanisms and logging strategies to facilitate the identification and resolution of potential issues.