Chapter 3.2 C++, Java, and Scripting Languages. The major programming languages used in game development.



Similar documents
Characteristics of Java (Optional) Y. Daniel Liang Supplement for Introduction to Java Programming

McGraw-Hill The McGraw-Hill Companies, Inc.,

1/20/2016 INTRODUCTION

Chapter 13: Program Development and Programming Languages

BarTender Integration Methods. Integrating BarTender s Printing and Design Functionality with Your Custom Application WHITE PAPER

1. Overview of the Java Language

Jonathan Worthington Scarborough Linux User Group

Chapter 13: Program Development and Programming Languages

Open Source building blocks for the Internet of Things. Benjamin Cabé JFokus 2013

What is a programming language?

by Pearson Education, Inc. All Rights Reserved.

Overview. Open source toolchains. Buildroot features. Development process

CSE 373: Data Structure & Algorithms Lecture 25: Programming Languages. Nicki Dell Spring 2014

Language Evaluation Criteria. Evaluation Criteria: Readability. Evaluation Criteria: Writability. ICOM 4036 Programming Languages

Python, C++ and SWIG

Efficiency Considerations of PERL and Python in Distributed Processing

C# and Other Languages

Chapter 12 Programming Concepts and Languages

Programming Languages

A Comparison of Programming Languages for Graphical User Interface Programming

9/11/15. What is Programming? CSCI 209: Software Development. Discussion: What Is Good Software? Characteristics of Good Software?

USE OF PYTHON AS A SATELLITE OPERATIONS AND TESTING AUTOMATION LANGUAGE

Manage Software Development in LabVIEW with Professional Tools

Chapter 1. Dr. Chris Irwin Davis Phone: (972) Office: ECSS CS-4337 Organization of Programming Languages

Custom Penetration Testing

Evolution of the Major Programming Languages

Developing Embedded Software in Java Part 1: Technology and Architecture

Software: Systems and. Application Software. Software and Hardware. Types of Software. Software can represent 75% or more of the total cost of an IS.

Chapter 14. Programming and Languages. McGraw-Hill/Irwin. Copyright 2008 by The McGraw-Hill Companies, Inc. All rights reserved.

Last Class: OS and Computer Architecture. Last Class: OS and Computer Architecture

CS 253: Intro to Systems Programming

<Insert Picture Here> Java, the language for the future

System Structures. Services Interface Structure

Game Design From Concepts To Implementation

Microsoft SQL Server versus IBM DB2 Comparison Document (ver 1) A detailed Technical Comparison between Microsoft SQL Server and IBM DB2

Evaluation of Load/Stress tools for Web Applications testing

Lecture 12: Software protection techniques. Software piracy protection Protection against reverse engineering of software

Why (and Why Not) to Use Fortran

An Easier Way for Cross-Platform Data Acquisition Application Development

CS 209 Programming in Java #1

Chapter 13 Computer Programs and Programming Languages. Discovering Computers Your Interactive Guide to the Digital World

6.088 Intro to C/C++ Day 4: Object-oriented programming in C++ Eunsuk Kang and Jean Yang

VMware Virtualization and Software Development

BEST WEB PROGRAMMING LANGUAGES TO LEARN ON YOUR OWN TIME

HEP data analysis using jhepwork and Java

Lesson 06: Basics of Software Development (W02D2

VOCOLLECT VOICEARTISAN. Extending Your Vocollect Configuration

Building Applications Using Micro Focus COBOL

Course MS10975A Introduction to Programming. Length: 5 Days

Programming. Languages & Frameworks. Hans- Pe(er Halvorsen, M.Sc. h(p://home.hit.no/~hansha/?page=sodware_development

APACHE SLING & FRIENDS TECH MEETUP BERLIN, SEPTEMBER APACHE SLING & SCALA Jochen Fliedner

The 8 th International Scientific Conference elearning and software for Education Bucharest, April 26-27, / X

Instructor Özgür ZEYDAN BEU Dept. of Enve. Eng. CIV 112 Computer Programming Lecture Notes (1)

Dynamic website development using the Grails Platform. Joshua Davis Senior Architect Cognizant Technology Solutions

Merchant Solutions. The pages are published to " domain, for example, "

Using EDA Databases: Milkyway & OpenAccess

Cross-platform IL code manipulation library for runtime instrumentation of.net applications

How do Users and Processes interact with the Operating System? Services for Processes. OS Structure with Services. Services for the OS Itself

COMPUTER SCIENCE (AS) Associate Degree, Certificate of Achievement & Department Certificate Programs

Java in Education. Choosing appropriate tool for creating multimedia is the first step in multimedia design

AQA GCSE in Computer Science Computer Science Microsoft IT Academy Mapping

Programming Language Inter-conversion

Chapter 1 Fundamentals of Java Programming

Instructional Design Framework CSE: Unit 1 Lesson 1

The Decaffeinated Robot

The Learn-Verified Full Stack Web Development Program

Python for Series 60 Platform

Virtual Machines. Virtual Machines

The Use of Hardware Abstraction Layers in Automated Calibration Software

Introducing Tetra: An Educational Parallel Programming System

Source Code Review Using Static Analysis Tools

Embedded Systems. Review of ANSI C Topics. A Review of ANSI C and Considerations for Embedded C Programming. Basic features of C

Cache Database: Introduction to a New Generation Database

A White Paper By: Dr. Gaurav Banga SVP, Engineering & CTO, Phoenix Technologies. Bridging BIOS to UEFI

2 Introduction to Java. Introduction to Programming 1 1

General Introduction

Embedded Software development Process and Tools: Lesson-3 Host and Target Machines

Chapter 12. Development Tools for Microcontroller Applications

Section 1.4. Java s Magic: Bytecode, Java Virtual Machine, JIT,

Java Embedded Applications

Image credits:

Fundamentals of Java Programming

12/22/11. } Android by Pearson Education, Inc. All Rights Reserved by Pearson Education, Inc. All Rights Reserved.

Levels of Programming Languages. Gerald Penn CSC 324

Programming Languages The McGraw-Hill Companies, Inc. All rights reserved.

Software: Systems and Application Software

The shortest path to cellular communications: Cellular Development Platform

YouTrack MPS case study

CSCI E 98: Managed Environments for the Execution of Programs

Mobile Development Frameworks Overview. Understand the pros and cons of using different mobile development frameworks for mobile projects.

The Fastest Way to Parallel Programming for Multicore, Clusters, Supercomputers and the Cloud.

CSC230 Getting Starting in C. Tyler Bletsch

Chapter 1. Introduction to ios Development. Objectives: Touch on the history of ios and the devices that support this operating system.

.NET and J2EE Intro to Software Engineering

ICAPRG409A Develop mobile applications

The power of IBM SPSS Statistics and R together

Tec: A Cross-Platform Game Engine

GUI and Web Programming

Introduction to Programming System Design. CSCI 455x (4 Units)

Mobile Game and App Development the Easy Way

Transcription:

Chapter 3.2 C++, Java, and Scripting Languages The major programming languages used in game development.

C++ C used to be the most popular language for games Today, C++ is the language of choice for game development C#, Objective C, ARM-C 2

Performance C++: Strengths Control over low-level functionality (memory management, etc) Can switch to assembly or C whenever necessary Good interface with OS, hardware, and other languages 3

C++: Strengths High-level, object-oriented High-level language features are essential for making today's complex games Has inheritance, polymorphism, templates, and exceptions Strongly typed, so it has improved reliability 4

C Heritage C++: Strengths C++ is the only high-level language that is backwards-compatible with C Has APIs and compiler support in all platforms Easier transition for experienced programmers 5

Libraries C++: Strengths STL (Standard Template Library) Comprehensive set of standard libraries Boost: widely used library with wide variety of functionality Most commercial C++ libraries also available (Open GL, DirectX) 6

C++: Weaknesses Too low-level Still forces programmers to deal with lowlevel issues (memory allocation) Too error-prone Attention to low-level details is overkill for high-level features or tools If 90% of code is NOT performance critical, is it worth writing it at such a low level 7

C++: Weaknesses Too complicated Because of its C heritage, C++ is very complicated Historical baggage left behind in languages like Java, C#, Objective C. Long learning curve to become competent with the language 8

C++: Weaknesses Lacking features No reflection or introspection features Object: What size are you? No method of object serialization Reading from media state of an object. No native support for message passing Not the same as function calls. Custom buffer solution. 9

Slow iteration C++: Weaknesses C++ is fully compiled into binary format from source code Compiling large numbers of files can be very very slow This will only become more of a problem as games become more complex Workarounds exist (precompiled headers, dynamic linking, etc.) 10

C++: When to Use It? When performance is crucial (core features may include assembly, register) If your current code base is mostly C and C++ If you have a lot of in-house expertise in C++ Avoid using it for high-level code, such as tools 11

Java for Game Development Why use Java? It's a high-level OO language that simplifies many C++ features Adds several useful high-level features Easy to develop for multiple platforms because of intermediate bytecode Good library support Lower learning curve 12

Java for Game Development Performance Has typically been Java's weak point Has improved in the last few years Still not up to C++ level, but getting close Uses Just-In-Time compiling and HotSpot optimizations Also has access to native functionality Now has high-performance libraries JIN (Java Native Interface) 13

Java for Game Development Platforms Well suited to downloadable and browserbased games Strong player in mobile and handheld platforms Possible to use in full PC games More likely to be embedded into a game Not currently used in consoles 14

Java in Game Development Commercial games using Java Downloadable games like those from PopCap Games: Bejeweled, etc. Online card/table/casino games PC games using Java as a scripting language: Star Wars Galaxies, DDO PC games fully written in Java: You Don't Know Jack, Who Wants to Be a Millionaire 15

Scripting Languages Why use scripting languages? Ease and speed of development Typing, memory management May be simple enough for designers Short iteration time No need to compile Code becomes a separate game asset (AI) Offer additional features and are customizable Reflection, serialization 16

Scripting Languages Drawbacks Slow performance Limited tool support (debugger) Dynamic typing makes it difficult to catch errors Can be awkward to interface with the game Difficult to implement well 17

Scripting Languages Popular scripting languages Python Lua Other off-the-shelf options such as Ruby, Perl, Javascript Custom scripting languages UnrealScript, QuakeC, NWNScript 18

Scripting Languages How to choose a scripting language Consider whether you need one at all What features do you need? What kind of performance do you need? What debugging facilities does the language have? On what platforms does it need to run? What resources and expertise are available? 19