Module Special Admissions Requirements
Previous study of CESCOM10113-5 Further Games and Graphics Concepts or equivalent.
Module Indicative Content
- Hardware platforms (general-purpose computer, game console, handheld device)
o Features and programming constraints.
o Configuration of Internal architectural
o Operating system features
- Low level concepts such as pipelining / SIMD and MIMD execution / register banks and usage / floating point operations / bus architecture and operation (CPU/DMA control)
- Instruction level parallelism, Task-level Parallelism
- Memory systems (scratchpad, cache, and local memories).
- Coding in Assembler and Disassembling object code to diagnose faults.
- Software intrinsics.
- Embedding low level code in high level source code
- Performance issues: bottlenecks, profiling techniques, code optimization, Granularity
- Multithreading and multiprocessor programming for both the PC and Playstation 4
Module Resources
Visual Studio 2010 or Above
Access to PlayStation 4 development kit
Module Texts
Video Game Optimization, Eric Preisz and Ben Garney (2010), Course Technology, ISBN: 1598634356
C++ for Games Programmers, Noel Llopis, ISBN: 1584504528
Module Learning Strategies
- 13 hours of lectures.
- 13 hours of tutorial/practicals.
The module presents contextual and explanatory material, together with recommended reading and research in lectures. Practicals will implement this theory and students will develop a portfolio of practical work which will be assessed in an examination. There will normally be 1 lecture and 1 practical per week.
Module Addititional Assessment Details
Optimisation and extension of a ray tracer written in C++ for the PC and PS4. The assessment will be marked on a variety of improvements and changes to the code. Marks are given as specified in the assessment documentation.
Learning Outcomes: 1, 2 and 3
Web Descriptor
Low-Level Game Programming provides programming techniques required to optimise C++ programs, fully exploiting the low-level power of C++. The student will take control of memory allocation, implement memory pooling and tracking to analyse memory usage in games. Optimisation techniques will include tracking, recording and improving the efficiency of a program. In addition, skills in porting to Linux or a Games console, and the specific threading / interprocess communication techniques required to fully exploit for multi-core processors.