SlideShare a Scribd company logo
1 of 19
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
3
C++: Strengths
 Performance
 Control over low-level functionality (memory
management, etc)
 Can switch to assembly or C whenever
necessary
 Good interface with OS, hardware, and
other languages
4
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
5
C++: Strengths
 C Heritage
 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
6
C++: Strengths
 Libraries
 STL (Standard Template Library)

Comprehensive set of standard libraries
 Boost: widely used library with wide variety
of functionality
 Many commercial C++ libraries also
available
7
C++: Weaknesses
 Too low-level
 Still forces programmers to deal with low-
level issues
 Too error-prone
 Attention to low-level details is overkill for
high-level features or tools
8
C++: Weaknesses
 Too complicated
 Because of its C heritage, C++ is very
complicated
 Long learning curve to become competent
with the language
9
C++: Weaknesses
 Lacking features
 No reflection or introspection features
 No method of object serialization
 No native support for message passing
10
C++: Weaknesses
 Slow iteration
 C++ is fully compiled into binary format from
source code
 Compiling large numbers of files is very slow
 This will only become more of a problem as
games become more complex
11
C++: When to Use It?
 When performance is crucial
 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
12
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
13
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 very close
 Uses Just-In-Time compiling and HotSpot
optimizations
 Now has high-performance libraries
 Also has access to native functionality
14
Java for Game Development
 Platforms
 Well suited to downloadable and browser-
based games
 Dominates development on mobile and
handheld platforms
 Possible to use in full PC games

More likely to be embedded into a game
 Not currently used in consoles
15
Java in Game Development
 Commercial games using Java
 Downloadable games like those from
PopCap Games: Mummy Maze, etc
 Online card games
 PC games using Java as a scripting
language: Vampire: The Masquerade, Star
Wars Galaxies
 PC games fully written in Java: You Don't
Know Jack, Who Wants to Be a Millionaire
16
Scripting Languages
 Why use scripting languages?
 Ease and speed of development
 Short iteration time
 Code becomes a game asset
 Offer additional features and are
customizable
17
Scripting Languages
 Drawbacks
 Slow performance
 Limited tool support
 Dynamic typing makes it difficult to catch
errors
 Awkward interface with the rest of the game
 Difficult to implement well
18
Scripting Languages
 Popular scripting languages
 Python
 Lua
 Other off-the-shelf options such as Ruby,
Perl, Javascript
 Custom scripting languages

UnrealScript, QuakeC, NWNScript
19
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?

More Related Content

Viewers also liked (20)

Santander Bank Dorchester picture
Santander Bank Dorchester pictureSantander Bank Dorchester picture
Santander Bank Dorchester picture
 
Open source an origin story to freedom
Open source   an origin story to freedomOpen source   an origin story to freedom
Open source an origin story to freedom
 
COMPANY PORTFOLIO
COMPANY PORTFOLIO COMPANY PORTFOLIO
COMPANY PORTFOLIO
 
Papéis e estatutos sociais (2)
Papéis e estatutos sociais (2)Papéis e estatutos sociais (2)
Papéis e estatutos sociais (2)
 
Informatica final
Informatica finalInformatica final
Informatica final
 
Apresentação1
Apresentação1Apresentação1
Apresentação1
 
Metodologia trabalhos acadêmicos
Metodologia trabalhos acadêmicosMetodologia trabalhos acadêmicos
Metodologia trabalhos acadêmicos
 
Nota informativa Programa Deportivo FEFA
Nota informativa Programa Deportivo FEFANota informativa Programa Deportivo FEFA
Nota informativa Programa Deportivo FEFA
 
Cdlcs
CdlcsCdlcs
Cdlcs
 
Recurso Digital da Atividade 2- Tema 4
Recurso Digital da Atividade 2- Tema 4Recurso Digital da Atividade 2- Tema 4
Recurso Digital da Atividade 2- Tema 4
 
Informe de lectura4
Informe de lectura4Informe de lectura4
Informe de lectura4
 
Maramontessoridiapositivas 110310055118-phpapp01
Maramontessoridiapositivas 110310055118-phpapp01Maramontessoridiapositivas 110310055118-phpapp01
Maramontessoridiapositivas 110310055118-phpapp01
 
2013 Volume Top Team
2013 Volume Top Team2013 Volume Top Team
2013 Volume Top Team
 
Jlames' ((. _berp
Jlames' ((. _berpJlames' ((. _berp
Jlames' ((. _berp
 
HonestyInter R
HonestyInter RHonestyInter R
HonestyInter R
 
Redes sociales
Redes socialesRedes sociales
Redes sociales
 
dominios del internet
dominios del internetdominios del internet
dominios del internet
 
Agassiz almeida e linduarte noronha
Agassiz almeida e linduarte noronhaAgassiz almeida e linduarte noronha
Agassiz almeida e linduarte noronha
 
08. LPT Level II
08. LPT Level II08. LPT Level II
08. LPT Level II
 
Planificación de contenidos flipped
Planificación de contenidos flipped Planificación de contenidos flipped
Planificación de contenidos flipped
 

Similar to 3.2 languages

Games Technologies
Games TechnologiesGames Technologies
Games TechnologiesOded Sharon
 
The Difficulty of Going Mobile
The Difficulty of Going MobileThe Difficulty of Going Mobile
The Difficulty of Going MobileDietmar Hauser
 
Mobile Development
Mobile DevelopmentMobile Development
Mobile DevelopmentAlan Uthoff
 
Dev buchan leveraging the notes c api
Dev buchan leveraging the notes c apiDev buchan leveraging the notes c api
Dev buchan leveraging the notes c apiBill Buchan
 
Top programming Languages in software Industry companies
Top programming Languages in software Industry companiesTop programming Languages in software Industry companies
Top programming Languages in software Industry companiesKiran Patil
 
Trend of Visual Programming Language
Trend of Visual Programming LanguageTrend of Visual Programming Language
Trend of Visual Programming LanguageTeddy Marcus
 
Casual Engines 2009
Casual Engines 2009Casual Engines 2009
Casual Engines 2009David Fox
 
Introduction of c++ course
Introduction of c++ courseIntroduction of c++ course
Introduction of c++ coursekritikasoni15
 
The Ring programming language version 1.5.3 book - Part 5 of 184
The Ring programming language version 1.5.3 book - Part 5 of 184The Ring programming language version 1.5.3 book - Part 5 of 184
The Ring programming language version 1.5.3 book - Part 5 of 184Mahmoud Samir Fayed
 
Entrepreneur’s guide to programming
Entrepreneur’s guide to programmingEntrepreneur’s guide to programming
Entrepreneur’s guide to programmingChris Callahan
 
The Ring programming language version 1.5.1 book - Part 4 of 180
The Ring programming language version 1.5.1 book - Part 4 of 180The Ring programming language version 1.5.1 book - Part 4 of 180
The Ring programming language version 1.5.1 book - Part 4 of 180Mahmoud Samir Fayed
 
20210417-cppRelevancy-DataStructures.pptx
20210417-cppRelevancy-DataStructures.pptx20210417-cppRelevancy-DataStructures.pptx
20210417-cppRelevancy-DataStructures.pptxSuman Garai
 
Week Five - Software
Week Five - SoftwareWeek Five - Software
Week Five - Softwarechriswalton
 
Next mmorpg architecture-siggraph_asia2010
Next mmorpg architecture-siggraph_asia2010Next mmorpg architecture-siggraph_asia2010
Next mmorpg architecture-siggraph_asia2010Jongwon Kim
 
Introduction to computers
Introduction to computersIntroduction to computers
Introduction to computersLearn By Watch
 
C# vs Java What are The Differences.pdf
C# vs Java What are The Differences.pdfC# vs Java What are The Differences.pdf
C# vs Java What are The Differences.pdfchristiemarie4
 
The Ring programming language version 1.5.4 book - Part 5 of 185
The Ring programming language version 1.5.4 book - Part 5 of 185The Ring programming language version 1.5.4 book - Part 5 of 185
The Ring programming language version 1.5.4 book - Part 5 of 185Mahmoud Samir Fayed
 
Programing fundamentals with C++
Programing fundamentals with C++Programing fundamentals with C++
Programing fundamentals with C++farooq2016
 

Similar to 3.2 languages (20)

Games Technologies
Games TechnologiesGames Technologies
Games Technologies
 
The Difficulty of Going Mobile
The Difficulty of Going MobileThe Difficulty of Going Mobile
The Difficulty of Going Mobile
 
Mobile Development
Mobile DevelopmentMobile Development
Mobile Development
 
Flutter.pptx
Flutter.pptxFlutter.pptx
Flutter.pptx
 
Dev buchan leveraging the notes c api
Dev buchan leveraging the notes c apiDev buchan leveraging the notes c api
Dev buchan leveraging the notes c api
 
Top programming Languages in software Industry companies
Top programming Languages in software Industry companiesTop programming Languages in software Industry companies
Top programming Languages in software Industry companies
 
Trend of Visual Programming Language
Trend of Visual Programming LanguageTrend of Visual Programming Language
Trend of Visual Programming Language
 
Casual Engines 2009
Casual Engines 2009Casual Engines 2009
Casual Engines 2009
 
Introduction of c++ course
Introduction of c++ courseIntroduction of c++ course
Introduction of c++ course
 
The Ring programming language version 1.5.3 book - Part 5 of 184
The Ring programming language version 1.5.3 book - Part 5 of 184The Ring programming language version 1.5.3 book - Part 5 of 184
The Ring programming language version 1.5.3 book - Part 5 of 184
 
Entrepreneur’s guide to programming
Entrepreneur’s guide to programmingEntrepreneur’s guide to programming
Entrepreneur’s guide to programming
 
The Ring programming language version 1.5.1 book - Part 4 of 180
The Ring programming language version 1.5.1 book - Part 4 of 180The Ring programming language version 1.5.1 book - Part 4 of 180
The Ring programming language version 1.5.1 book - Part 4 of 180
 
20210417-cppRelevancy-DataStructures.pptx
20210417-cppRelevancy-DataStructures.pptx20210417-cppRelevancy-DataStructures.pptx
20210417-cppRelevancy-DataStructures.pptx
 
Week Five - Software
Week Five - SoftwareWeek Five - Software
Week Five - Software
 
Next mmorpg architecture-siggraph_asia2010
Next mmorpg architecture-siggraph_asia2010Next mmorpg architecture-siggraph_asia2010
Next mmorpg architecture-siggraph_asia2010
 
Introduction to computers
Introduction to computersIntroduction to computers
Introduction to computers
 
C# vs Java What are The Differences.pdf
C# vs Java What are The Differences.pdfC# vs Java What are The Differences.pdf
C# vs Java What are The Differences.pdf
 
Programming in c plus plus2
Programming in c plus plus2Programming in c plus plus2
Programming in c plus plus2
 
The Ring programming language version 1.5.4 book - Part 5 of 185
The Ring programming language version 1.5.4 book - Part 5 of 185The Ring programming language version 1.5.4 book - Part 5 of 185
The Ring programming language version 1.5.4 book - Part 5 of 185
 
Programing fundamentals with C++
Programing fundamentals with C++Programing fundamentals with C++
Programing fundamentals with C++
 

More from Sayed Ahmed

Workplace, Data Analytics, and Ethics
Workplace, Data Analytics, and EthicsWorkplace, Data Analytics, and Ethics
Workplace, Data Analytics, and EthicsSayed Ahmed
 
Python py charm anaconda jupyter installation and basic commands
Python py charm anaconda jupyter   installation and basic commandsPython py charm anaconda jupyter   installation and basic commands
Python py charm anaconda jupyter installation and basic commandsSayed Ahmed
 
[not edited] Demo on mobile app development using ionic framework
[not edited] Demo on mobile app development using ionic framework[not edited] Demo on mobile app development using ionic framework
[not edited] Demo on mobile app development using ionic frameworkSayed Ahmed
 
Sap hana-ide-overview-nodev
Sap hana-ide-overview-nodevSap hana-ide-overview-nodev
Sap hana-ide-overview-nodevSayed Ahmed
 
Will be an introduction to
Will be an introduction toWill be an introduction to
Will be an introduction toSayed Ahmed
 
Whm and cpanel overview hosting control panel overview
Whm and cpanel overview   hosting control panel overviewWhm and cpanel overview   hosting control panel overview
Whm and cpanel overview hosting control panel overviewSayed Ahmed
 
Web application development using zend framework
Web application development using zend frameworkWeb application development using zend framework
Web application development using zend frameworkSayed Ahmed
 
Web design and_html_part_3
Web design and_html_part_3Web design and_html_part_3
Web design and_html_part_3Sayed Ahmed
 
Web design and_html_part_2
Web design and_html_part_2Web design and_html_part_2
Web design and_html_part_2Sayed Ahmed
 
Web design and_html
Web design and_htmlWeb design and_html
Web design and_htmlSayed Ahmed
 
Visual studio ide shortcuts
Visual studio ide shortcutsVisual studio ide shortcuts
Visual studio ide shortcutsSayed Ahmed
 
Unit tests in_symfony
Unit tests in_symfonyUnit tests in_symfony
Unit tests in_symfonySayed Ahmed
 
Telerik this is sayed
Telerik this is sayedTelerik this is sayed
Telerik this is sayedSayed Ahmed
 
System analysis and_design
System analysis and_designSystem analysis and_design
System analysis and_designSayed Ahmed
 
Story telling and_narrative
Story telling and_narrativeStory telling and_narrative
Story telling and_narrativeSayed Ahmed
 

More from Sayed Ahmed (20)

Workplace, Data Analytics, and Ethics
Workplace, Data Analytics, and EthicsWorkplace, Data Analytics, and Ethics
Workplace, Data Analytics, and Ethics
 
Python py charm anaconda jupyter installation and basic commands
Python py charm anaconda jupyter   installation and basic commandsPython py charm anaconda jupyter   installation and basic commands
Python py charm anaconda jupyter installation and basic commands
 
[not edited] Demo on mobile app development using ionic framework
[not edited] Demo on mobile app development using ionic framework[not edited] Demo on mobile app development using ionic framework
[not edited] Demo on mobile app development using ionic framework
 
Sap hana-ide-overview-nodev
Sap hana-ide-overview-nodevSap hana-ide-overview-nodev
Sap hana-ide-overview-nodev
 
Invest wisely
Invest wiselyInvest wisely
Invest wisely
 
Will be an introduction to
Will be an introduction toWill be an introduction to
Will be an introduction to
 
Whm and cpanel overview hosting control panel overview
Whm and cpanel overview   hosting control panel overviewWhm and cpanel overview   hosting control panel overview
Whm and cpanel overview hosting control panel overview
 
Web application development using zend framework
Web application development using zend frameworkWeb application development using zend framework
Web application development using zend framework
 
Web design and_html_part_3
Web design and_html_part_3Web design and_html_part_3
Web design and_html_part_3
 
Web design and_html_part_2
Web design and_html_part_2Web design and_html_part_2
Web design and_html_part_2
 
Web design and_html
Web design and_htmlWeb design and_html
Web design and_html
 
Visual studio ide shortcuts
Visual studio ide shortcutsVisual studio ide shortcuts
Visual studio ide shortcuts
 
Virtualization
VirtualizationVirtualization
Virtualization
 
User interfaces
User interfacesUser interfaces
User interfaces
 
Unreal
UnrealUnreal
Unreal
 
Unit tests in_symfony
Unit tests in_symfonyUnit tests in_symfony
Unit tests in_symfony
 
Telerik this is sayed
Telerik this is sayedTelerik this is sayed
Telerik this is sayed
 
System analysis and_design
System analysis and_designSystem analysis and_design
System analysis and_design
 
Symfony 2
Symfony 2Symfony 2
Symfony 2
 
Story telling and_narrative
Story telling and_narrativeStory telling and_narrative
Story telling and_narrative
 

Recently uploaded

Breaking the Kubernetes Kill Chain: Host Path Mount
Breaking the Kubernetes Kill Chain: Host Path MountBreaking the Kubernetes Kill Chain: Host Path Mount
Breaking the Kubernetes Kill Chain: Host Path MountPuma Security, LLC
 
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdfThe Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdfEnterprise Knowledge
 
Unblocking The Main Thread Solving ANRs and Frozen Frames
Unblocking The Main Thread Solving ANRs and Frozen FramesUnblocking The Main Thread Solving ANRs and Frozen Frames
Unblocking The Main Thread Solving ANRs and Frozen FramesSinan KOZAK
 
Transcript: #StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
Transcript: #StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024Transcript: #StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
Transcript: #StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024BookNet Canada
 
A Call to Action for Generative AI in 2024
A Call to Action for Generative AI in 2024A Call to Action for Generative AI in 2024
A Call to Action for Generative AI in 2024Results
 
[2024]Digital Global Overview Report 2024 Meltwater.pdf
[2024]Digital Global Overview Report 2024 Meltwater.pdf[2024]Digital Global Overview Report 2024 Meltwater.pdf
[2024]Digital Global Overview Report 2024 Meltwater.pdfhans926745
 
How to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerHow to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerThousandEyes
 
Transforming Data Streams with Kafka Connect: An Introduction to Single Messa...
Transforming Data Streams with Kafka Connect: An Introduction to Single Messa...Transforming Data Streams with Kafka Connect: An Introduction to Single Messa...
Transforming Data Streams with Kafka Connect: An Introduction to Single Messa...HostedbyConfluent
 
#StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
#StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024#StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
#StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024BookNet Canada
 
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
08448380779 Call Girls In Diplomatic Enclave Women Seeking MenDelhi Call girls
 
CNv6 Instructor Chapter 6 Quality of Service
CNv6 Instructor Chapter 6 Quality of ServiceCNv6 Instructor Chapter 6 Quality of Service
CNv6 Instructor Chapter 6 Quality of Servicegiselly40
 
Data Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt RobisonData Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt RobisonAnna Loughnan Colquhoun
 
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...Igalia
 
Enhancing Worker Digital Experience: A Hands-on Workshop for Partners
Enhancing Worker Digital Experience: A Hands-on Workshop for PartnersEnhancing Worker Digital Experience: A Hands-on Workshop for Partners
Enhancing Worker Digital Experience: A Hands-on Workshop for PartnersThousandEyes
 
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...Miguel Araújo
 
Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...
Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...
Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...shyamraj55
 
Presentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreterPresentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreternaman860154
 
Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...
Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...
Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...Neo4j
 
From Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time AutomationFrom Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time AutomationSafe Software
 
Slack Application Development 101 Slides
Slack Application Development 101 SlidesSlack Application Development 101 Slides
Slack Application Development 101 Slidespraypatel2
 

Recently uploaded (20)

Breaking the Kubernetes Kill Chain: Host Path Mount
Breaking the Kubernetes Kill Chain: Host Path MountBreaking the Kubernetes Kill Chain: Host Path Mount
Breaking the Kubernetes Kill Chain: Host Path Mount
 
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdfThe Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
 
Unblocking The Main Thread Solving ANRs and Frozen Frames
Unblocking The Main Thread Solving ANRs and Frozen FramesUnblocking The Main Thread Solving ANRs and Frozen Frames
Unblocking The Main Thread Solving ANRs and Frozen Frames
 
Transcript: #StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
Transcript: #StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024Transcript: #StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
Transcript: #StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
 
A Call to Action for Generative AI in 2024
A Call to Action for Generative AI in 2024A Call to Action for Generative AI in 2024
A Call to Action for Generative AI in 2024
 
[2024]Digital Global Overview Report 2024 Meltwater.pdf
[2024]Digital Global Overview Report 2024 Meltwater.pdf[2024]Digital Global Overview Report 2024 Meltwater.pdf
[2024]Digital Global Overview Report 2024 Meltwater.pdf
 
How to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerHow to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected Worker
 
Transforming Data Streams with Kafka Connect: An Introduction to Single Messa...
Transforming Data Streams with Kafka Connect: An Introduction to Single Messa...Transforming Data Streams with Kafka Connect: An Introduction to Single Messa...
Transforming Data Streams with Kafka Connect: An Introduction to Single Messa...
 
#StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
#StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024#StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
#StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
 
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
 
CNv6 Instructor Chapter 6 Quality of Service
CNv6 Instructor Chapter 6 Quality of ServiceCNv6 Instructor Chapter 6 Quality of Service
CNv6 Instructor Chapter 6 Quality of Service
 
Data Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt RobisonData Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt Robison
 
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
 
Enhancing Worker Digital Experience: A Hands-on Workshop for Partners
Enhancing Worker Digital Experience: A Hands-on Workshop for PartnersEnhancing Worker Digital Experience: A Hands-on Workshop for Partners
Enhancing Worker Digital Experience: A Hands-on Workshop for Partners
 
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
 
Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...
Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...
Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...
 
Presentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreterPresentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreter
 
Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...
Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...
Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...
 
From Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time AutomationFrom Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time Automation
 
Slack Application Development 101 Slides
Slack Application Development 101 SlidesSlack Application Development 101 Slides
Slack Application Development 101 Slides
 

3.2 languages

  • 1. Chapter 3.2 C++, Java, and Scripting Languages
  • 2. 2 C++  C used to be the most popular language for games  Today, C++ is the language of choice for game development
  • 3. 3 C++: Strengths  Performance  Control over low-level functionality (memory management, etc)  Can switch to assembly or C whenever necessary  Good interface with OS, hardware, and other languages
  • 4. 4 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
  • 5. 5 C++: Strengths  C Heritage  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
  • 6. 6 C++: Strengths  Libraries  STL (Standard Template Library)  Comprehensive set of standard libraries  Boost: widely used library with wide variety of functionality  Many commercial C++ libraries also available
  • 7. 7 C++: Weaknesses  Too low-level  Still forces programmers to deal with low- level issues  Too error-prone  Attention to low-level details is overkill for high-level features or tools
  • 8. 8 C++: Weaknesses  Too complicated  Because of its C heritage, C++ is very complicated  Long learning curve to become competent with the language
  • 9. 9 C++: Weaknesses  Lacking features  No reflection or introspection features  No method of object serialization  No native support for message passing
  • 10. 10 C++: Weaknesses  Slow iteration  C++ is fully compiled into binary format from source code  Compiling large numbers of files is very slow  This will only become more of a problem as games become more complex
  • 11. 11 C++: When to Use It?  When performance is crucial  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
  • 12. 12 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
  • 13. 13 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 very close  Uses Just-In-Time compiling and HotSpot optimizations  Now has high-performance libraries  Also has access to native functionality
  • 14. 14 Java for Game Development  Platforms  Well suited to downloadable and browser- based games  Dominates development on mobile and handheld platforms  Possible to use in full PC games  More likely to be embedded into a game  Not currently used in consoles
  • 15. 15 Java in Game Development  Commercial games using Java  Downloadable games like those from PopCap Games: Mummy Maze, etc  Online card games  PC games using Java as a scripting language: Vampire: The Masquerade, Star Wars Galaxies  PC games fully written in Java: You Don't Know Jack, Who Wants to Be a Millionaire
  • 16. 16 Scripting Languages  Why use scripting languages?  Ease and speed of development  Short iteration time  Code becomes a game asset  Offer additional features and are customizable
  • 17. 17 Scripting Languages  Drawbacks  Slow performance  Limited tool support  Dynamic typing makes it difficult to catch errors  Awkward interface with the rest of the game  Difficult to implement well
  • 18. 18 Scripting Languages  Popular scripting languages  Python  Lua  Other off-the-shelf options such as Ruby, Perl, Javascript  Custom scripting languages  UnrealScript, QuakeC, NWNScript
  • 19. 19 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?