Maths & Technologies for Games Console Development & Middleware

Slides:



Advertisements
Similar presentations
INSE - Lecture 16  Documentation  Configuration Management  Program Support Environments  Choice of Programming Language.
Advertisements

Creating a Program In today’s lesson we will look at: what programming is different types of programs how we create a program installing an IDE to get.
Linux vs. Windows. Linux  Linux was originally built by Linus Torvalds at the University of Helsinki in  Linux is a Unix-like, Kernal-based, fully.
OS Case Study: The Xbox 360  Instructor: Rob Nash  Readings: See citations in the slides.
Programming Creating programs that run on your PC
Chapter 3.2 C++, Java, and Scripting Languages. 2 C++ C used to be the most popular language for games Today, C++ is the language of choice for game development.
Chapter 3.2 C++, Java, and Scripting Languages “The major programming languages used in game development.”
Mobile Gaming and the Zune William Birmingham ASEE Conference June, 2010 Louisville, KY.
Chapter 3.1 Teams and Processes. 2 Programming Teams In the 1980s programmers developed the whole game (and did the art and sounds too!) Now programmers.
Chapter 3.2 C++, Java, and Scripting Languages hacked by jeffery.
SM3121 Software Technology Mark Green School of Creative Media.
From Concept to Silicon How an idea becomes a part of a new chip at ATI Richard Huddy ATI Research.
By Steven Taylor.  Basically a video game engine is a software system designed for the creation and development of video games.  There are many game.
ANDROID PROGRAMMING MODULE 1 – GETTING STARTED
Software Comparisons & Requirements By Alex Waldron.
Software Development. Chapter 2 – Programming on Windows 8.
Week 1 Game Design & Development for Mobile Devices.
Learning Outcomes At the end of this lesson, students should be able to: State the types of system software – Operating system – Utility system Describe.
A PRIMER ON INTEGRATING WIIMOTE FUNCTIONALITY Wiiiiii!-Mote Connections.
©Ian Sommerville 2004Software Engineering, 7th edition. Chapter 18 Slide 1 Software Reuse.
Computer Organization
Unit 70 Task 1 Matthew Wilson, Gary Rich, Callum Tracey, Luke Scrannage.
CO1301: Games Concepts Dr Nick Mitchell (Room CM 226) Material originally prepared by Laurent Noel.
CO1301: Games Concepts Dr Nick Mitchell (Room CM 226) Material originally prepared by Laurent Noel.
Computer Graphics Graphics Hardware
UFCEKU-20-3Web Games Programming Game Development Environments and Middleware.
Overview of System Development. Overview Selecting a Windows Embedded Operating System The Windows CE Platform Development Cycle The Application Development.
 2002 Prentice Hall Chapter 4 Software Basics: The Ghost in the Machine.
Software Engineering CS3003 Lecture 3 Software maintenance and evolution.
ANDROID 응용 프로그래밍 과정 – 목차 - 안드로이드란 - 안드로이드가 만들어지게 된배경 - 안드로이드의 철학 - 안드로이드 환경설정 ( SDK download, eclipse plug-in 설정, 간단한 프로그램 실행 ) - 안드로이드 동작원리 - 안드로이드 핵심.
Games Development Practices Sound Effects & OpenAL CO2301 Games Development 1 Week 15.
Developing software and hardware in parallel Vladimir Rubanov ISP RAS.
CE Operating Systems Lecture 3 Overview of OS functions and structure.
Development and Debugging Tools for Windows Phone 7 Series Cullen Waters Software Development Engineer II Advanced Technology Group, Microsoft Corporation.
MIS 105 LECTURE 1 INTRODUCTION TO COMPUTER HARDWARE CHAPTER REFERENCE- CHP. 1.
What is gaming console & platform? A game console is a device which outputs video signal into TV screen to display the video game. A platform is in which.
 Installation of Android Development Environment  Creating the App with OpenGL ES API  Running the App on Emulator Android App Development.
Computer Software Types Three layers of software Operation.
Maths & Technologies for Games Production Processes & Asset Management CO3303 Week 10.
The Effects of Parallel Programming on Gaming Anthony Waterman.
 Programming - the process of creating computer programs.
Getting Started with.NET Getting Started with.NET/Lesson 1/Slide 1 of 31 Objectives In this lesson, you will learn to: *Identify the components of the.NET.
GAM666 – Introduction To Game Programming ● Programmer's perspective of Game Industry ● Introduction to Windows Programming ● 2D animation using DirectX.
Chapter 1 Basic Concepts of Operating Systems Introduction Software A program is a sequence of instructions that enables the computer to carry.
Oman College of Management and Technology Course – MM Topic 7 Production and Distribution of Multimedia Titles CS/MIS Department.
The Development Process Compilation. Compilation - Dr. Craig A. Struble 2 Programming Process Problem Solving Phase We will spend significant time on.
1 Topics: Introduction to Game Engine Course Overview What is a game engine? Advantages and Disadvantages Torque Game Engine.
GPU Computing for GIS James Mower Department of Geography and Planning University at Albany.
1 Get All Answers Get All Answers. Contents History of Android Android Fragmentation The Role of Google Features and Architecture Android Software Development.
Ori Hanegby Pixtazy Blog:
Introduction to Programming 1 1 2Introduction to Java.
UNIX U.Y: 1435/1436 H Operating System Concept. What is an Operating System?  The operating system (OS) is the program which starts up when you turn.
Android. Android An Open Handset Alliance Project A software platform and operating system for mobile devices Based on the Linux kernel Developed by Google.
Computer Graphics Graphics Hardware
Introduction ITEC 420.
Unit 20 – Computer Game Platforms & Technology – Software Technology
Current Generation Hypervisor Type 1 Type 2.
LINUX WINDOWS Vs..
Introduction to .NET Framework Ch2 – Deitel’s Book
LINUX WINDOWS Vs..
CSCI/CMPE 3334 Systems Programming
CSC235 - Visual Studio Getting Started.
CO1301: Games ncepts 2016 Lecture 2
Unit 20 Software Part 2.
Unit 20 Software Part 2.
Computer Graphics Graphics Hardware
Delivering great hardware solutions for Windows
Computer Graphics Introducing DirectX
Games Development 2 Tools Programming
Console Game Development
Presentation transcript:

Maths & Technologies for Games Console Development & Middleware Week 18

Today’s Lecture Comparing PC & Console Development Development Environments Commercial Dev Kits Indie Development Middleware Note: All material here can be found in the public domain

PC & Console Development Historically, console development has been much closer to the hardware than the PC Known hardware specification Tendency to drive hardware with assembly language, direct I/O, interrupts, etc. To get maximum performance Early PC games were similar, but gradually moved to higher level programming Due to wide range of possible hardware Two layer approach – API <-> Driver

PC & Console Development Lifespan of a console is up to 7-8 years Between release and eventual fall from use E.g. PS1: 1994->2002, PS2: 2000->2008, PS3: 2006/7->2014/15 XBox One & PS4 2013->2021? Hardware barely changes during this time Need to gain maximum performance, especially during latter years Low level work essential for best performance PC hardware constantly evolves Can increase minimum spec slightly every year Higher level approach more suitable

Current Gen: PC vs Console However, the current generation of consoles are very close in specification to a PC Multi-core CPU Powerful GPU (similar to PC variants) Concurrent programming very important Shader programming key for graphics Ability to develop using higher level APIs Xbox One uses a variant of the Windows 8 APIs Games of the standard of a moderately powerful PC Although PC games usually have better graphics now Latest gen titles, so far, do not seem to be outstripping recent PC titles. This is unusual so early in console lifetime…

Current Gen: PC vs Console Still some differences between PC / console development: Hardware is known So little need to query hardware, run performance tests. Assumptions about available features are OK More requirements on the operation of software e.g. being locked into the platform holders UI (e.g. Sony’s XMB) Closer integration between parts E.g. CPU / GPU memory have symmetrical performance (shared on 360 / Xbox One), unlike a PC Low-level development can still be key Especially for commercial games, and later in the console lifetime Custom development environments help with this

Commercial Development: Dev Kits Commercial console development requires a Development Kit (Dev Kit) A special form of console that can be hooked into a PC for programming / debugging etc. Various types: from a basic console that can just run user code, to machines with additional hardware to assist debugging Supplied with a custom SDK Development environment Compiler and linker Graphics, Sound, Storage and other libraries Complete technical and software documentation Note that console development can emulated on a PC Testing on a development kit in the later stages

Commercial Development Dev kits must be licensed: Apply to platform holder Only experienced & viable developers accepted Licensing is easier later in console lifecycle Developer must sign NDA (Non-Disclosure Agreement) Dev kit details are a trade secret Until the current gen, dev kits have been expensive £10,000+ each at launch, price dropping with time Fair sized team could expect outlay > £100,000 However, the costs for development on the latest gen have been greatly reduced, or even disappeared To boost indie development (see later)

PS4 Development Kit Note: limited public domain info on latest gen dev kits Playstation 4 dev kits cost ~$2,500 each Although Sony have a dev kit loan program Initial version looked like a tower PC There have been several subsequent versions available GameMaker: Studio and MonoGame (as well as Unity) are made available for free to indie developers

Xbox One Development Kit All retail Xbox One’s can operate as a debug station. Simplest kind of dev kit, which can run user code This may possibly be used later to encourage indie development Fully featured dev kits are available to developers Again, the initial version looked like a tower PC, but latest iterations look like ordinary consoles Although current dev kits are more powerful than retail consoles Indie developers can get two dev kits free.

Final Dev Kit is same shape as standard PS3 Prev-Gen: PS3 Dev Kit Playstation 3 dev kits (called the PS3 Reference Tool) eventually dropped in price to ~£1,000 each: Final Dev Kit is same shape as standard PS3 Original Dev Kit Included development tools (SN Systems): ProDG – development environment Distributed C++ compiler, linker, build tool Can compile and link on multiple PCs

Prev-Gen: PS3 Dev Kit Two graphics libraries are part of the SDK: libgcm: low-level – direct access to RSX chip and graphics memory PSGL: [rarely used] implementation of OpenGL ES (full source code provided) Also a full game engine – PhyreEngine is available (free for developers) Use a special debugging station for testing Standard console that can run user code or discs burned by the developer (effectively no copy protection)

Prev-Gen: Xbox 360 Dev Kit Much like the Xbox one, an Xbox 360 dev kit looks similar to the retail console Compiles C or C++ using Visual Studio variant Old Version New Version Uses variations of PC libraries: DX 9+: like DX9 with low level extras (command buffer, predicated tiling) XAudio2: Successor to DirectSound Many low level tools provided

Indie Development The cost & licensing of professional development kits used to limit hobbyist, homebrew or indie games However, in the latest gen, Sony and Microsoft have begun to make indie development easier Lower price points, loans, or even free kits Lower barriers to register as a developer More indie developer support, conferences etc. Still, the support for indie development may not be as rich as that offered for AAA titles. Maybe limited tools, generic or simplified libraries Possible less low-level hardware access Too early to tell which platform will be better. Microsoft have the “all consoles are dev kits” advantage, but Sony have been very active in supporting indies…

Middleware Middleware traditionally describes software used to connect different components or applications However, in games development, the term middleware is used differently, describing self-contained software libraries Performing distinct tasks, e.g. AI, physics or rendering I.e. Use middleware instead of own technology Typically this allows the developer to cut costs Less technology to develop Rely instead on a pre-built, robust solution At the expense of flexibility for their own needs

Middleware Middleware ranges from very general engines, to specialist technologies There are many middleware options, choosing an appropriate one is often a challenge Here is a random selection of popular middleware: Unity [free], Unreal [free], Source, etc. (game engines) Havok, Bullet, Box2D (physics [free]) Euphoria (human animation synthesis) Speed Tree (Tree rendering) fmod (audio [free]) ScaleForm, Coherent UI (vector UIs) [Those noted as free are for non-commercial use only]