CMP9133 Assignment CRG 2223

You might also like

Download as pdf or txt
Download as pdf or txt
You are on page 1of 5

University of Lincoln Assessment Framework

CMP9133 Assessment Item1 Briefing Document 2022-2023

Module Code & Title: CMP9133 Advanced Programming


Contribution to Final Module Mark: 100%
Description of Assessment Task and Purpose:

Requirements
This component requires you to complete the following two tasks.
(1) Develop a playable online 3D curling game with rules similar to a physical curling game that
can be played by a good number of online teams and players, with potential to scale up for
massive online players. This game does not need to follow exactly standard curling game rules
and may be quite simple.
(2) Write a formal report covering the development details of the game, and your insights on the
challenges, solutions, programming languages and skills regarding large-scale programming
issues.
The purpose of this assignment is to evaluate your capability in evaluating, proposing and
implementing solutions for a large-scale programming problem, and your deep understanding of
different object-oriented programming languages and state-of-the-art tools for large scale
programming issues.
Your development can recycle and extend the materials used in the module workshops. Please
note that it still needs significant modification to the provided system design and implementation
to meet the requirements. Alternatively, you can opt for implementing your own GUI-based game
from scratch addressing the massive online challenges. To meet the minimum requirement, your
developed online game should allow at least 100 online players to play at the same time.
The detailed technical requirements are detailed below. Please note that you are expected to
submit the report on your development addressing these requirements below, along with all
source code and project files of your system.

The Playable Online Game


Similarly to the C++ classes Ball, Table, Cushion and Players — designed or restructured during
the workshops - you are required to think carefully about the classes you will design and
implement to make a playable online curling game suitable for large number of players with
potential to scale up for massive online players. To complete a playable game, the following
classes and effects must be implemented.
1. Curling sheets
A curling sheet shows the area for two teams of players to play the game with certain layouts.
The online game will have multiple curling sheets allowing multiple teams of players to pair
with and play at the same time. This means that a curling sheet class should be designed and
implemented, and your game should support large number of curling sheets, at least 5 curling
sheets for demonstration purpose.
2. Curling stones
Add programmatic curling stone class to curling sheet. The size, shape and other parameters
can be similar to a real curling stone or can be decided by yourself for your game. This will
require the design and implementation of a new class to support the attributes and
functionality of a curling stone. You will then be able to add curling stone objects to the
curling sheet, implement a method for detecting a curling stone collisions and positions, and
construct a system for managing curling stones and scores. Typically, there are two object
curling stones for one player in a team. Your game should allow 2 teams of players playing
in each curling sheet, each team can have 2 to 4 players.
3. Players, teams and scores
You should design and implement your curling game to accommodate teams of players at
the same time. You do not need to follow exactly the standard curling game rules, and may
be quite simple. However, it should be turn-based, and teams/players should score points.
Again, you should think carefully about a suitable class structure to represent the
teams/players and game rules. You should also consider how your game logic code could be
extended, and reflect this in your code design. For example, could your game be easily scaled
up to support 10,000 online players to play at the same time rather than just 10 players?
You should also design and implement functionality for displaying the current teams/players,
players’ scores and ranking. You can either display the text information in the game window
(ideal case), or print text to the console window as a basic/minimal solution.
4. Play from multiple computers over network
You should also design and implement functionality allowing game play in multiple
computers via a computer network. The scores and ranking of players, even in different
locations/computers, should be displayed and updated as well.
You should think about how to allow massive players to join the online game and implement
this to your game.
The completion of the above tasks will be evaluated via a software demonstration recorded and
a report documentation, where both the functionalities and the C++ source code will be evaluated
by two markers during the demonstration.

The Report
You should submit a report (1) describing your online curling game development in detail, (2)
describing the key challenges and your solutions, if your game is re-designed for massive online
players e.g. more than one million users at the same time.
The report should be maximum 8 pages with the font size of 11pt, excluding front cover,
references and appendices.
The report should be clearly structured and should include at least the following sections:

1. Your version of online curling game

Please describe your game including the rules of your game, how to play the game, and at
least one snapshot of your game (approx. 0.5 page).

2. Design and implementation

Please describe briefly your game design and the implementation of the classes and the key
functions you have used in the game, using diagram if necessary. Please include detailed
descriptions of the design and implementation for the four technical tasks i.e. 1. curling sheet
class, 2. curling stone class, 3. players, teams and scores classes, 4. network implementation.
Please include details of the new classes, functions and concepts you have implemented for
each of the above 4 requirements, using diagram, plots or snapshots of source code if
necessary. (approx. 5pages).

A short video clip of max.180 seconds (markers will only check the first 180seconds of a
video clip) should be provided with yourself explaining the key coding structures for the
above 4 game requirements and how to play the curling game showing the functionalities
implemented. This clip needs to be uploaded as supporting material along with the code and
other source files to confirm your games development and implementation.

3. The strengths and weaknesses of different programming languages

Please address the strengths and weaknesses of different programming languages in


implementing the game, including your own reflective thinking about the strengths and
weaknesses of C++ programming language, as compared to other development tool(s) such
as Python/Java/C#, especially on your own experiences in the development of the game
(approx. 1 page).

4. Scalability and memory issues

The method you use to cope with memory (e.g. too many detailed objects to be loaded) and
scalability (e.g. 1,000 or even more online players at the same time) issues, with
diagram/plots/snapshots of source code if necessary (approx. 0.5 page).

5. Challenges and solutions if your game to be scaled up for massive online players

Please provide a brief review/examples of similar large scale projects or online games you
have investigated.

Please list key challenges if your game is scaled up for more than one million online users
play at the same time and propose your solutions to these challenges. Your solutions may
not be restricted to only one specific program language or specific platform or network
structure. (approx. 1 page).

Appendix

You are expected to include your own code as an appendix to the report, or any other material
related to your solution such as detailed design diagrams or screenshots.

Learning Outcomes Assessed:


On successful completion of this component a student will have demonstrated competence in the
following areas:
§ [LO1] Evaluate the strengths and weaknesses of different object-oriented programming
languages in comparison to alternative development tools
§ [LO2] Propose and implement solutions for a large-scale programming problem
§ [LO3] Critically evaluate different solutions for large-scale programming problems

Knowledge & Skills Assessed:


Advanced Programming Knowledge, Skills and Understanding: e.g. Literature searching,
Referencing, Project Planning, Techniques and Advanced Skills for large scale programming.
Professional Graduate Skills: e.g. independence and personal responsibility, adaptability, verbal
communication, written communication, creativity, critical thinking, self-reflection, problem
solving, group or team skills, effective time management, working under pressure to meet
deadlines.

Assessment Submission Instructions:


The deadline for submission of this work is included in the school submission dates on
Blackboard.
You must make an electronic submission of your work by using the assessment link on
Blackboard for this component. Your report should be submitted in PDF format. At the same
time, you should also submit a .zip file containing all code and project files necessary to run your
game. It is important that you check that your .zip file decompresses to a Visual C++ 2022, 2019,
2017, or 2015 or Visual Studio Community 2017, 2015, or 2010 project which can be built and
executed on another PC.

DO NOT include this briefing document with your submission.

Date for Return of Feedback: Within three weeks after submission


Format for Assessment:
Assessment will include (1) demonstration of the code via online meeting tools such as Microsoft
Teams to shown the functionalities of the developed artefacts and explain the key code segments
to the markers; (2) submit a report describing the development of the artefacts and also the
investigations as detailed in the above sections.

Feedback Format:
Feedback will be in a written format with scores against each Criteria, e.g. CR1, CR2, and CR3.
Final weighted score for this assignment will be given in the feedback.

Additional Information for Completion of Assessment:


Effective Modern C++, Meyers, Scott, 2015
https://docs.microsoft.com/en-us/cpp/build/projects-and-build-systems-cpp?view=vs-2019
https://www.python.org/
https://en.wikipedia.org/wiki/Curling
https://www.youtube.com/watch?v=IOk9SVzqHsk
https://www.youtube.com/watch?v=jXVjgvaqjSc

Assessment Support Information:


This assessment is an individually assessed component. Your work must be presented according
to the School of Computer Science guidelines for the presentation of assessed written work.
Please make sure you have a clear understanding of the grading principles for this component as
detailed in the accompanying Criterion Reference Grid (CRG).
If you are unsure about any aspect of this assessment component, please seek the advice of a
member of the delivery team.

Important Information on Dishonesty & Plagiarism:


University of Lincoln Regulations define plagiarism as 'the passing off of another person's
thoughts, ideas, writings or images as one's own...Examples of plagiarism include the
unacknowledged use of another person's material whether in original or summary form.
Plagiarism also includes the copying of another student's work'.
Plagiarism is a serious offence and is treated by the University as a form of academic dishonesty.
Students are directed to the University Regulations for details of the procedures and penalties
involved.
For further information, see www.plagiarism.org

You might also like