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.

Slides:



Advertisements
Similar presentations
Configuration management
Advertisements

Configuration management
Test process essentials Riitta Viitamäki,
Week 3. Assembly Language Programming  Difficult when starting assembly programming  Have to work at low level  Use processor instructions >Requires.
10 Software Engineering Foundations of Computer Science ã Cengage Learning.
CSCE 590E Spring 2007 Game Design II By Jijun Tang.
©Ian Sommerville 2004Software Engineering, 7th edition. Chapter 17 Slide 1 Rapid software development.
Rapid software development
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.
FUNDAMENTALS OF PROGRAMMING SM1204 Semester A 2010/2011.
1 Presentation for Professor Sergiu Dascalu IGT: The Company and Its Products.
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.1 Teams and Processes Being a programmer.
Chapter 3.2 C++, Java, and Scripting Languages “The major programming languages used in game development.”
CS350/550 Software Engineering Lecture 1. Class Work The main part of the class is a practical software engineering project, in teams of 3-5 people There.
1 Chapter 6 Systems Development. 2 Learning Objectives  Know the characteristics of systems development.  Understand what professional systems analysts.
SM3121 Software Technology Mark Green School of Creative Media.
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.
©Ian Sommerville 2004Software Engineering, 7th edition. Chapter 17 Slide 1 Rapid software development.
Programming. Software is made by programmers Computers need all kinds of software, from operating systems to applications People learn how to tell the.
Software Development Unit 6.
Gearbox Software PRODUCTION PIPELINE – JOBS TITLES – JOB DESCRIPTIONS.
G51FSE Version Control Naisan Benatar. Lecture 5 - Version Control 2 On today’s menu... The problems with lots of code and lots of people Version control.
 Advantages  Easy to learn  Graphical Advantages  Help and Support  Widely used  Software compatibility  Customisable  Customisable Hardware 
Agile Methodologies for Project Management By – Komal Mehta.
©Ian Sommerville 2004Software Engineering, 7th edition. Chapter 17 Slide 1 Extreme Programming.
Software Development Concepts ITEC Software Development Software Development refers to all that is involved between the conception of the desired.
©Ian Sommerville 2004Software Engineering, 7th edition. Chapter 18 Slide 1 Software Reuse.
Lecture 18 Page 1 CS 111 Online Design Principles for Secure Systems Economy Complete mediation Open design Separation of privileges Least privilege Least.
Chapter 3 – Agile Software Development 1Chapter 3 Agile software development.
Programming and Application Packages
FUNDAMENTALS OF PROGRAMMING SM1204 SEMESTER A 2012.
Extreme Programming(XP)
Software Project Planning CS470. What is Planning? Phases of a project can be mostly predicted Planning is the process of estimating the time and resources.
Quality Attributes of Web Software Applications – Jeff Offutt By Julia Erdman SE 510 October 8, 2003.
Painless Bug Tracking Michael Tsai 2011/9/30. Reference  html 2.
Software Engineering CS3003 Lecture 3 Software maintenance and evolution.
CSCE 552 Spring 2009 Game Design III By Jijun Tang.
Extreme/Agile Programming Prabhaker Mateti. ACK These slides are collected from many authors along with a few of mine. Many thanks to all these authors.
The Software Development Life Cycle. Software Development SDLC The Software Development Life-Cycle Sometimes called the program development lifecycle.
Just as there are many human languages, there are many computer programming languages that can be used to develop software. Some are named after people,
Rapid software development 1. Topics covered Agile methods Extreme programming Rapid application development Software prototyping 2.
Computer Game Development By Jijun Tang. Contents for the Presentation Group members, group name, logo Description, specification, goals, game play System.
Software Development Process.  You should already know that any computer system is made up of hardware and software.  The term hardware is fairly easy.
1 Planning – Agile Style Highsmith, Ch 7 All kinds of iterations! CSSE579 Session 3 Part 1.
Systems Life Cycle. Know the elements of the system that are created Understand the need for thorough testing Be able to describe the different tests.
CE Operating Systems Lecture 3 Overview of OS functions and structure.
Chapter 3.1 Teams and Processes. CS Programming Teams In the 1980s programmers developed the whole game (and did the art and sounds too!) Now programmers.
Intermediate 2 Software Development Process. Software You should already know that any computer system is made up of hardware and software. The term hardware.
Chapter 2 Software processes. Topics covered Software process models Process activities Coping with change.
MIS 105 LECTURE 1 INTRODUCTION TO COMPUTER HARDWARE CHAPTER REFERENCE- CHP. 1.
0 Content Management and the Need for Change in Technical Communication Written by: Scott P. Abel 20 June 2007 Nick Savillo ENG 393.
CS5103 Software Engineering Lecture 02 More on Software Process Models.
MNP1163 (Software Construction).  SDLC and Construction Models  Construction Planning  Construction Measurement.
WATERFALL DEVELOPMENT MODEL. Waterfall model is LINEAR development lifecycle. This means each phase must be completed before moving onto the next!!! WHAT.
©Ian Sommerville 2006Software Engineering, 8th edition. Chapter 4 Slide 1 Software Processes.
Chapter 10 Information Systems Development. Learning Objectives Upon successful completion of this chapter, you will be able to: Explain the overall process.
Oman College of Management and Technology Course – MM Topic 7 Production and Distribution of Multimedia Titles CS/MIS Department.
CS223: Software Engineering Lecture 16: The Agile Methodology.
CS223: Software Engineering Lecture 18: The XP. Recap Introduction to Agile Methodology Customer centric approach Issues of Agile methodology Where to.
OPERATING SYSTEMS (OS) By the end of this lesson you will be able to explain: 1. What an OS is 2. The relationship between the OS & application programs.
Software Design and Development Development Methodoligies Computing Science.
Game programming 1.
FOP: Multi-Screen Apps
The Software Development Cycle
Programming.
CHAPTER 10 METHODOLOGIES FOR CUSTOM SOFTWARE DEVELOPMENT
Chapter 7 –Implementation Issues
Extreme Programming.
The Software Development Cycle
Presentation transcript:

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 write code to support designers and artists (who are the real content creators)

3 Programming Areas Game code Anything related directly to the game Game engine Any code that can be reused between different games Tools In house tools Plug-ins for off-the-shelf tools

4 Team Organization Programmers often have a background in Computer Science or sciences They usually specialize in some area (AI, graphics, networking) but know about all other areas Teams usually have a lead programmer They sometimes have a lead for each of the major areas

5 Skills and Personalities Successful teams have a mix of personalities and skills: Experience vs. new ideas Methodical vs. visionary

6 Methodologies A methodology describes the procedures followed during development to create a game Every company has a methodology (way of doing things), even if they don't explicitly think about it

7 Methodologies: Code and Fix Unfortunately very common Little or no planning Always reacting to events Poor quality and unreliability of finished product “Crunch” time normal

8 Methodologies: Waterfall Very well-defined steps in development Lots of planning ahead of time Great for creating a detailed milestone schedule Doesn't react well to changes Game development is too unpredictable for this approach

9 Methodologies: Iterative Multiple development cycles during a single project Each delivering a new set of functionality The game could ship at any moment Allows for planning but also for changes

10 Methodologies: Agile Methods Deal with the unexpected Very short iterations 2-3 weeks Iterate based on feedback of what was learned so far Very good visibility of state of game Difficult for publishers or even developers to adopt because it's relatively new

11 Common Practices Version control Database with all the files and history. Only way to work properly with a team. Branching and merging can be very useful. Used for source code as well as game assets.

12 Common Practices Coding standards Set of coding rules for the whole team to follow Improves readability and maintainability of the code Easier to work with other people's code They vary a lot from place to place Get used to different styles

13 Common Practices Automated builds Dedicated build server builds the game from scratch Takes the source code and creates an executable Also takes assets and builds them into game-specific format Build must never break

14 Quality Code reviews Another programmer reads over some code and tries to find problems Sometimes done before code is committed to version control Can be beneficial if done correctly

15 Quality Asserts and crashes Use asserts anytime the game could crash or something could go very wrong An assert is a controlled crash Much easier to debug and fix Happens right where the problem occurred Don't use them for things that a user could do Open a non-existing file Press the wrong button

16 Quality Unit tests With very large codebases, it's difficult to make changes without breaking features Unit tests make sure nothing changes Test very small bits of functionality in isolation Build them and run them frequently Good test harness is essential

17 Quality Acceptance test (or functional tests) High level tests that exercise lots of functionality They usually run the whole game checking for specific features Having them automated means they can run very frequently (with every build)

18 Quality Bug database Keep a list of all bugs, a description, their status, and priority Team uses it to know what to fix next Gives an idea of how far the game is from shipping Doesn't prevent bugs, just helps fix them more efficiently

19 Leveraging Existing Code A lot of code that games use is the same It's a total waste of time to write it over and over Instead, spend your time in what's going to make your game unique Avoid Not Invented Here (NIH) syndrome!

20 Leveraging Existing Code Reuse code from previous project Easier in a large company if you have an engine and tools group Use freeware code and tools No support Make sure license allows it

21 Leveraging Existing Code Middleware Companies provide with components used in game development physics, animation, graphics, etc Commercial game engines You can license the whole engine and tools and a single package Good if you're doing exactly that type of game

22 Platforms PCs Includes Windows, Linux, and Macs Can have very powerful hardware Easier to patch and allow for user content Need to support a wide range of hardware and drivers Games need to play nice with other programs and the operating system

23 Platforms Game consoles Current generation PS2, Xbox, GameCube Fixed set of hardware – never changes Usually use custom APIs – not very mature They have very limited resources Currently much better sales than PC games (although that changes over time)

24 Platforms Handhelds and mobiles Extremely limited hardware (although rapidly improving) Programming often done in lower-level languages (C or even assembly) However, DS and PSP in C++ Much smaller projects, teams, and budgets Emerging market

25 Platforms Browser and downloadable games Small games – mostly 2D Need to be downloaded quickly Run on the PC itself (on any browser usually)

26 Platforms Multiplatform development The closer the platforms, the easier the development Use abstraction layers to hide platform- specific code Choice Target the minimum common denominator for platforms (easy, cheap), vs. do the best you can in each platform (more expensive and time consuming)