【CMP5327 游戏编程】BIRMINGHAM CITY UNIVERSITY
FACULTY OF COMPUTING ENGINEERING AND THE BUILT ENVIRONMENT
COURSEWORK ASSIGNMENT BRIEF
CMP5327 C++ Programming for Games
1 CEBE UG Assignment brief revised 03/08/2018
Coursework Assignment Brief
Assessment - Undergraduate
Academic Year 2020-21
Module Title: C++ Programming for Games
Module Code: CMP5327
Assessment Title: Development of a 2D shooting game
Assessment Type: CWRK Weighting: 100 %
School: School of Computing and Digital Technology
Module Co-ordinator: DR CARLO HARVEY
Hand in deadline date: Monitoring Points: Week 6, 9, 12.
Deliverables: 12pm Mid-day on 8
th January 2021
Return of Feedback date
and format
20 working days from date of submission (see Moodle for
details).
Re-assessment hand in
deadline date:
12pm Mid-day on Monday 26th July 2021
Note: the reassessment work may be different.
Support available for
students required to
submit a re-assessment:
Timetabled support sessions will be arranged for the period
immediately preceding the hand-in date
NOTE:
At the first assessment attempt, the full range of marks is
available. At the re-assessment attempt the mark is capped
and the maximum mark that can be achieved is 40%.
Assessment Summary This coursework comprises of formative monitoring points, one
shooting game project written in C++ and a video demonstration.
? (15%) Monitoring Points: demonstration of progress at 3
monitoring points throughout the delivery of the module.
? (65%) The Game: develop a 2D shooting game in C++.
This game must use the SDL2 (https://www.libsdl.org/)
development library to implement graphics. The game may
take inspiration and amalgamate from other existing
games but must not attempt to replicate entirely the game
mechanics of any existing commercial game
? (20%) Video: A video showcase of your work where you
will embed narrative that rationalises any problems
encountered, how you overcame these and provide a
critical analysis on the strengths and weaknesses of your
implementations.
2
IMPORTANT STATEMENTS
Undergraduate Regulations
Your studies will be governed by the BCU Academic Regulations on Assessment,
Progression and Awards. Copies of regulations can be found at
https://www.bcu.ac.uk/student...
Cheating and Plagiarism
Both cheating and plagiarism are totally unacceptable and the University maintains a strict
policy against them. It is YOUR responsibility to be aware of this policy and to act
accordingly. Please refer to the Academic Registry Guidance at
https://icity.bcu.ac.uk/Acade...
The basic principles are:
? Don’t pass off anyone else’s work as your own, including work from “essay banks”.
This is plagiarism and is viewed extremely seriously by the University.
? Don’t submit a piece of work in whole or in part that has already been submitted for
assessment elsewhere. This is called duplication and, like plagiarism, is viewed
extremely seriously by the University.
? Always acknowledge all the sources that you have used in your coursework
assignment or project.
? If you are using the exact words of another person, always put them in quotation
marks.
? Check that you know whether the coursework is to be produced individually or
whether you can work with others.
? If you are doing group work, be sure about what you are supposed to do on your
own.
? Never make up or falsify data to prove your point.
? Never allow others to copy your work.
? Never lend disks, memory sticks or copies of your coursework to any other student in
the University;
this may lead you being accused of collusion.
By submitting coursework, either physically or electronically, you are confirming that it is your
own work (or, in the case of a group submission, that it is the result of joint work undertaken
by members of the group that you represent) and that you have read and understand the
University’s guidance on plagiarism and cheating.
You should be aware that coursework may be submitted to an electronic detection system in
order to help ascertain if any plagiarised material is present. You may check your own work
prior to submission using Turnitin at the Formative Moodle Site. If you have queries about
what constitutes plagiarism, please speak to your module tutor or the Centre for Academic
Success.
3
Electronic Submission of Work
It is your responsibility to ensure that work submitted in electronic format can be opened on
a faculty computer and to check that any electronic submissions have been successfully
uploaded. If it cannot be opened it will not be marked. Any required file formats will be
specified in the assignment brief and failure to comply with these submission requirements
will result in work not being marked. You must retain a copy of all electronic work you have
submitted and re-submit if requested.
Learning Outcomes to be Assessed:
1 Create object-oriented programs in C++ making use of class libraries.
2 Develop and apply testing and debugging strategies to C++ programs.
3 Utilise code optimisations, including compiler optimisations, and apply them to a
program.
4 Select and use code profilers to determine performance of a program and devise a
strategy to optimise the program to meet space and time requirements.
Assessment Details:
Title: Developing a 2D shooting game using C++
Style: Milestones, Code and Video Demonstration
Rationale:
This assessment has been designed to incorporate several areas within game development that are
recognised as key skills when working in industry. A pass grade in this assessment will demonstrate
that you have enough skills to develop your own software and implement the strategies to test,
profile and optimise your code to make a product which meets industry standards.
Description: Your task is to develop a 2D shooting game in C++. This game must use the SDL2
(https://www.libsdl.org/) development library to implement graphics. The game may take inspiration
and amalgamate from other existing games such as space invaders but must not attempt to replicate
entirely the game mechanics of any existing commercial game. Graphics and other game assets can
be used from online sources but must be referenced within your README markdown file within your
project directory. Any use of external code from online sources more than three lines long which are
copied without modification must be referenced within the code as a code comment which contains a
URL to the source of information and the date of access.
Alongside developing the game, you must use code profiling to determine the performance of your
software and devise a strategy to optimise the program to meet time and space requirements. You
should utilise code optimisations, including compiler optimisations and apply them to your program.
Finally, as a part of developing professional skills you will implement your code using version control,
specifically a GitHub repository. As part of the assignment deliverables you will be required to
commit your work through GitHub which will be checked by your tutor intermittently.
4
Assessment Tasks:
Milestone 1 (5%) - Week 6
Demonstrate your project is set up on GitHub along with a working Game Loop implemented and
have a finalised design of your game which identifies two unique game mechanics which will be
implemented.
Milestone 2 (5%) - Week 9
Demonstrate a basic prototype which implements at least 1 of the required game components. You
should also demonstrate continued professional development techniques by implementing GitHub
into your workflow.
Milestone 3 (5%) - Week 12
Demonstrate an advanced prototype which implements at least 2 of the required game components.
You must perform code profiling and optimisation techniques and demonstrate the statistics of the
data you have gathered.
Final Game (65%)
For this Task, you are working individually on producing a game-based software application written
in C++ which will demonstrate your capabilities of creating 2D tile-based games using low level
languages and graphics libraries. You must use C++ and the SDL library for this assignment.
Required Components: In order to meet a pass grade in this module, your game should contain all
the required components.
- Evidence the ability to shoot at enemy entities and demonstrate collision detection
mechanics. - Implementation of a game map which uses tiled mapping mechanics.
- Implementation of scoring mechanics which can be measured and is demonstrated in a
graphical user interface.
Extensions: Extra merit can be achieved by implementing further advanced game mechanics. Some
ideas are listed below. If you intend to implement advanced mechanics that are not listed here, then
it is advised that you discuss these with your tutor first. Up to 20 additional marks can be added to
your final demonstration for this. - Implement game sound effects and music using a chosen external library.
- Menu screens, high scores and loading screens.
- Load game configurations (such as map layout, high scores and settings) from external files.
Encryption and checksums could be used to prevent access and modification. - Advanced path finding techniques for enemies such as the A* search algorithm.
- Special effects such as particles, playing video files and using animations.
Video (20%)
Alongside the entire source code and assets required for the project you should submit a video. Your
video submission should be a maximum of 10 minutes in duration and demonstrate key aspects of
your work and be used as a portfolio showcase of the development work. At least two minutes of the
video should be dedicated to gameplay footage.
The video narrative should rationalise the following:
? An overview of your project and an early specification of what you set out to be doing.
? Any problem solving or research you undertook while writing the program (including looking
at what work others have done in this area), and details coupled with comparisons of
mathematical solutions or algorithms you used.
? The internal class structure of your project and the reasons for laying it out like this.
5
? A high-level description of your program describing how it works and justifying the design and
technical choices you made.
? The video should illustrate performance metrics you have gathered and present any
optimisation techniques you have used.
? A critical analysis of your program, identifying its strengths and weaknesses. This can
potentially consider time and space complexity considerations but should also consider
testing and algorithm correctness.
Additional information:
For advice on writing style, referencing and academic skills, please make use of the Centre
for Academic Success: https://icity.bcu.ac.uk/celt/...
Workload: This assessment is equivalent to 4000 words and a typical student would be
expected to take 40 hours to pass this assessment.
Transferable skills:
This module will involve the following skills which are transferrable to other modules as well
as in industry:
? Mathematical and Algorithmic Knowledge and Application
? Presentation and speaking
? Software design
? Version Control
? Object oriented programming
? Software testing
? Software performance profiling
6
Marking Criteria:
Learning
Outcomes
1
Create
objectoriented
C++ making
use of class
libraries.
2
Develop and
apply testing and
debugging
strategies to C++
programs.
3
Utilise code
optimisations,
including compiler
optimisations, and
apply them to a
program.
4
Select and use code
profilers to determine
performance of a program
and devise a strategy to
optimise the program to
meet space and time
requirements.
Milestone 1 (5%) – Week 6
Tasks: (LO1, LO2) Marks
available:
GitHub repository has been created for the project with at least one code
commit.
50
Basic game loop has been created with update and draw functions within a
loop.
25
Game design complete. Identify two unique game mechanics which must be
applied within the game.
25
Milestone 2 (5%) – Week 9
Tasks: (LO1, LO2) Marks
available:
Basic game prototype which demonstrates at least one of the required game
components.
75
Code has been continuously committed through GitHub repository with
suitable titles and comments for commits.
25
Milestone 3 (5%) – Week 12
Tasks: (LO1, LO2) Marks
available:
At least two of the required components has been implemented into the game. 60
Code has been continuously committed through GitHub repository with
suitable titles and comments for commits.
20
Initial statistics of performance have been gathered through code profiling. 20
Final Game (65%)
Note: The number of marks awarded for each element within this table will depend on the
quality of the implementation. Each of the elements of the marking table are separate and
do not depend on other features being implemented in order to achieve the marks. For
example: To be awarded 4 marks for implementing a circle collider, you do not have to
implement a box collider first.
Tasks: (LO1, LO2, LO3, LO4) Marks
Available:
Game Implements appropriate player shooting mechanics.
? Player can control shooting with a keyboard and/or mouse (4 marks)
10
7
? Appropriate memory techniques have been considered for shooting
performance (i.e. object pooling) (6 marks)
Game implements collision detection mechanics:
? Box colliders (6 marks)
? Circle colliders (4 marks)
10
Tiled mapping:
? Mapping with different images for tiles (4 marks)
? Collision within mapping (4 marks)
? Ability to change game tiles within gameplay (2 marks)
10
User interface:
? Player score (5 marks)
? Additional non-text elements, such as health bars. (5 marks)
10
Rationalised code profiling and performance statistics, evidenced via testing. 10
Justified code optimization and resultant increases in performance measures. 10
Animated game elements. 5
Implementation of sound and audio:
? Sound effects (3 marks)
? Background audio (2 marks)
5
Game data reading or writing from/to custom external files (Loading formats
such as PNG through SDL does not count):
? Text files (2 marks)
? Binary files (3 marks)
? Additional file security features (5 marks)
10
Showcase of additional advanced game features. See Extensions for
examples.
20
Video (20%)
Tasks: (LO1, LO2, LO3, LO4) Marks
available:
10-minute video. Mp4 container, h264 video encoding and AAC audio
encoding
25
Video has at least a 2-minute segment dedicated to gameplay footage with
appropriate narration.
25
Video is edited to improve engagement. 25
Video uses intelligent annotation and narrative throughout that addresses the
technical descriptions required.
25
Submission Details:
Format:
Your final demonstration must be uploaded to Moodle. For milestone deliverables you are to use
your GitHub classroom repository for the elements required for each milestone.
Note that for your game implementation you must upload all the source code and resources, e.g.
model files, sound files, texture files, etc. for the tutor to be able to build and run your scene without
modification. Tutors will not modify your source code to make it build and run. You will lose marks if
8
you submit an implementation that cannot be built and run on the tutor’s PC or the PC mentioned in
your submitted README markdown.
Your directory structure for the submission should be as follows:
? firstname_lastname_id
- code
- bin
- README.md (make appropriate use of this in your GitHub repo)
- video.mp4 (h264/aac)
Please submit an archive file (7z/zip) containing the following:
? code: complete source code with appropriate build files for compiling and asset files so that it
will be able to run. Build files should be via a MS Visual Studio 2019 project, asset files
should all be relatively linked so no path changes are required.
? bin: a Windows executable (compiled in release-mode) with all required asset files and
libraries relatively accessible. Please do not submit any unnecessary and large build files.
Please also do test that your executable runs on a PC in the Games lab, MP135.
? README: a simple markdown file. Provide the clearly labelled file in your project directory
explaining how to run and use your program. An in-program user guide can also be provided.
Note the tested PC in MP135. The user guide should be where you cite any references.
? video: A video using an mp4 container, with h264 video encoding, AAC audio encoding. This
video should be a maximum of 10 minutes in duration and summarise the key achievements
of the project. The video should make use of annotation and audio narrative.
Regulations:
? The minimum pass mark for a module is 40%
? Re-sit marks are capped at 40%
Full academic regulations are available for download using the link provided above in the IMPORTANT
STATEMENTS section
Late Penalties
If you submit an assessment late at the first attempt then you will be subject to one of the
following penalties:
? if the submission is made between 1 and 24 hours after the published deadline the
original mark awarded will be reduced by 5%. For example, a mark of 60% will be
reduced by 3% so that the mark that the student will receive is 57%. ;
? if the submission is made between 24 hours and one week (5 working days) after
the published deadline the original mark awarded will be reduced by 10%. For
example, a mark of 60% will be reduced by 6% so that the mark the student will
receive is 54%.
? if the submission is made after 5 days following the deadline, your work will be
deemed as a fail and returned to you unmarked.
The reduction in the mark will not be applied in the following two cases:
9
? the mark is below the pass mark for the assessment. In this case the mark achieved
by the student will stand
? where a deduction will reduce the mark from a pass to a fail. In this case the mark
awarded will be the threshold (i.e.40%)
Please note:
? If you submit a re-assessment late then it will be deemed as a fail and returned
to you unmarked.
Feedback:
Marks and Feedback on your work will normally be provided within 20 working days
of its submission deadline via Moodle.
Where to get help:
Students can get additional support from the library for searching for information and
finding academic sources. See their iCity page for more information:
http://libanswers.bcu.ac.uk/
The Centre for Academic Success offers 1:1 advice and feedback on academic
writing, referencing, study skills and maths/statistics/computing. See their iCity page
for more information: https://icity.bcu.ac.uk/celt/...
Additional assignment advice can be found here: https://libguides.bcu.ac.uk/MA
推荐阅读
- 后端|大名鼎鼎的 Linux —— 进程,线程,协程
- DMIT1530
- 面试|四面美团开发岗,成功斩获offer,这份面经总结终结篇看完就是血赚!
- 程序员|Android面试题精选——再聊Android-Handler机制-2,android实战教程
- Python|被女友吐槽不细心不关心她(教你用Python感知女友的情绪变化(连节日祝福都帮你自动发送))
- 程序员|Python实现自动批改作业系统~
- 程序员|用Python快速实现一个垃圾分类APP|附带微信小程序
- 程序人生|行天礼重风水的程序员行业
- 159.341