The Game room is a medium level project Mainly done in HTML/Java using Maven. Using standard Security procedures.
Description of assignment and requirements: Draw It or Lose It is loosely similar to the 1980s television game Win, Lose or Draw, where teams compete to guess what is being drawn. Rather than a player drawing images on an easel to help team members guess the puzzle (a phrase, title, or thing), the application will render images from a large library of stock drawings as clues. A game consists of four rounds of play lasting one minute each. Drawings are rendered at a steady rate and are fully complete at the 30-second mark. If the team does not guess the puzzle before time expires, the remaining teams have an opportunity to offer one guess each to solve the puzzle with a 15-second time limit.
The staff at The Gaming Room does not know how to set up the environment. To facilitate the development of the web-based version of the gaming app, they will need your help in streamlining the development. You have been asked to prepare a software design document and begin developing the game application, addressing their software requirements. Keep in mind that the hardware requirements will come later as a result of the software application decisions. Your technical manager will want to review your progress with this client.
Specifically, the client has requested that the following software requirements be met for the game application:
A game will have the ability to have one or more teams involved. Each team will have multiple players assigned to it. Game and team names must be unique to allow users to check whether a name is in use when choosing a team name. Only one instance of the game can exist in memory at any given time. This can be accomplished by creating unique identifiers for each instance of a game, team, or player.
Now that you know what the differences are and can design the code for various operating platforms, you will use your experience to evaluate the characteristics, advantages, and weaknesses of each to present to your client. Consider the requirements outlined below and articulate your findings in the table under Evaluation in the software design template. As you complete the table, keep in mind your client’s requirements and look at the situation holistically, as it all has to work together. Specifically, you must address the following requirements in your evaluation of each traditional operating platform (Linux, Mac, and Windows), as well as mobile platforms.
Server Side: The client has asked you to create a web-based application. This implies a server-style configuration for hosting the website and allowing it to scale up to thousands of players. What does this mean for your ability to host the software application on each operating platform listed above?
Evaluate various platforms for their characteristics, advantages, and weaknesses for hosting a web-based software application. Consider the following in your evaluation and articulate your findings in the software design template: Does each of the operating platforms offer a server-based deployment method where the website will be hosted? What are the potential licensing costs to the client, The Gaming Room, for the server operating system? Client Side: The client wishes to move beyond their current Android-only application to supporting players on iOS and Android mobile platforms, as well as traditional desktop-based operating systems. The application must be delivered as a modern, responsive HTML interface running inside the web browser for desktop clients (Linux, Mac, Windows), as well as on mobile platforms. Each will be capable of communicating with the back-end web application running on the server.
Determine the software development considerations (cost, time, expertise) that are necessary for supporting multiple types of clients. Consider the following in your evaluation and articulate your findings in the software design template: What is required of the application development process to ensure the application is compatible with all web browser platforms and mobile devices? Development Tools
Identify the relevant programming languages and tools (IDEs and other tools) that are used to build this type of software for deploying on each operating platform. Consider the following and articulate your findings in the software design template: What impact do these technical requirements have on a development team? Consider whether multiple development teams may be needed. Are there licensing costs related to the development tools?
Questions:
Briefly summarize The Gaming Room client and their software requirements. Who was the client? What type of software did they want you to design?
- The client is The game room room they wanted a game simular to Win, Lose, or draw where teams compete for to guess what is being drawn. They also wanted a detailed documentation in the case of exapnsion.
What did you do particularly well in developing this documentation?
- What I did particularly well was creating graphs for the company so it's easier for them to view the code and documentation. It also made it simpler to follow the coding pattern.
What about the process of working through a design document did you find helpful when developing the code?
- I found the design document when fully completed made it relatively simple to follow along while coding. Due to having almost everything named before coding and all nessary componts it was just like following a map to treasure.
If you could choose one part of your work on these documents to revise, what would you pick? How would you improve it?
- I would definintely pick the design contraits as I feel I didn't do a completely accurate job on the scope of this project. I could have made it a lot more detailed so when I went into the coding segement I was mentally prepared better.
How did you interpret the user’s needs and implement them into your software design? Why is it so important to consider the user’s needs when designing?
- The User's needs will always be the top priority in any code that is being developed as there would be no need for a program if they weren't there to use it. It's also imporant to make the client happy as they are the ones who are fincially backing the project without these two the project would not even exist.
How did you approach designing software? What techniques or strategies would you use in the future to analyze and design a similar software application?
- Using a UML diagram is something that I found extreamly valuable to have for this program. It was able to keep me focused and make clean psuduo code that I can work off of. When going forward I plan to use UML diagrams or more graphs in the future to demonstrate my points. While not on this github repository yet I am creating a game with friends and I created a UML diagram of all plugins that are needed as well as file strucutures to follow.