SFML Game Development: If you've got a firm grasp of C++ with a secret hankering to create a great game, this book is for you. Every practical aspect of programming an interactive game world is here – the only real limit is your imagination.
2/5
()
About this ebook
Game development comprises the combination of many different aspects such as game logics, graphics, audio, user input, physics and much more. SFML is an Open Source C++ library designed to make game development more accessible, exposing multimedia components to the user through a simple, yet powerful interface.
If you are a C++ programmer with a stack of ideas in your head and seeking a platform for implementation, your search ends here.Starting with nothing more than a blank screen, SFML Game Development will provide you with all the guidance you need to create your first fully featured 2D game using SFML 2.0. By the end, you'll have learned the basic principles of game development, including advanced topics such as how to network your game, how to utilize particle systems and much more.SFML Game Development starts with an overview of windows, graphics, and user inputs. After this brief introduction, you will start to get to grips with SFML by building up a world of different game objects, and implementing more and more gameplay features. Eventually, you'll be handling advanced visual effects, audio effects and network programming like an old pro. New concepts are discussed, while the code steadily develops.SFML Game Development will get you started with animations, particle effects and shaders. As well as these fundamental game aspects, we're also covering network programming to the extent where you'll be able to support the game running from two different machines. The most important part, the gameplay implementation with enemies and missiles, will make up the core of our top-scrolling airplane shoot' em-up game!You will learn everything you need in SFML Game Development in order to start with game development and come closer to creating your own game.
Related to SFML Game Development
Related ebooks
SFML Game Development Rating: 0 out of 5 stars0 ratingsSFML Game Development By Example Rating: 0 out of 5 stars0 ratingsSFML Blueprints Rating: 0 out of 5 stars0 ratingsOpenGL Game Development By Example Rating: 0 out of 5 stars0 ratingsSDL Game Development Rating: 0 out of 5 stars0 ratingsBuilding an RPG with Unity 5.x Rating: 0 out of 5 stars0 ratingsMastering SFML Game Development Rating: 0 out of 5 stars0 ratingsiOS Game Development By Example Rating: 0 out of 5 stars0 ratingsUnity 2018 By Example: Learn about game and virtual reality development by creating five engaging projects, 2nd Edition Rating: 0 out of 5 stars0 ratingsMobile Game Design Essentials Rating: 0 out of 5 stars0 ratingsPhaser.js Game Design Workbook: Game development guide using Phaser JavaScript Game Framework Rating: 0 out of 5 stars0 ratingsHTML5 Game Development with GameMaker Rating: 0 out of 5 stars0 ratingsUnity Artificial Intelligence Programming: Add powerful, believable, and fun AI entities in your game with the power of Unity 2018! Rating: 0 out of 5 stars0 ratingsFlash 10 Multiplayer Game Essentials Rating: 0 out of 5 stars0 ratingsBeginning C++ Game Programming: Learn C++ from scratch by building fun games Rating: 0 out of 5 stars0 ratingsCrafting Games with Python & Pygame: Game Development Unleashed Rating: 0 out of 5 stars0 ratingsPhaser III Game Prototyping Rating: 0 out of 5 stars0 ratingsMastering Unity 5.x: Create amazing games with brilliant game play features using Unity 5.x Rating: 0 out of 5 stars0 ratingsSwift Game Development: Learn iOS 12 game development using SpriteKit, SceneKit and ARKit 2.0, 3rd Edition Rating: 0 out of 5 stars0 ratingsUnity from Zero to Proficiency (Proficient): Unity from Zero to Proficiency, #5 Rating: 5 out of 5 stars5/5Mastering Game Development with Unreal Engine 4: Build high-performance AAA games with UE 4, 2nd Edition Rating: 0 out of 5 stars0 ratingsLet’s Build a Multiplayer Phaser Game: With TypeScript, Socket.IO, and Phaser Rating: 0 out of 5 stars0 ratingsThe Essential Guide to HTML5: Using Games to Learn HTML5 and JavaScript Rating: 0 out of 5 stars0 ratingsUnity Game Development Essentials Rating: 5 out of 5 stars5/5Linux Shell Scripting Bootcamp Rating: 0 out of 5 stars0 ratingsLearning AndEngine Rating: 0 out of 5 stars0 ratingsGameMaker Essentials Rating: 0 out of 5 stars0 ratingsPhaser III Game Design Workbook Rating: 0 out of 5 stars0 ratingsLearning AWS Lumberyard Game Development Rating: 0 out of 5 stars0 ratings
Programming For You
Coding All-in-One For Dummies Rating: 4 out of 5 stars4/5Python Programming : How to Code Python Fast In Just 24 Hours With 7 Simple Steps Rating: 4 out of 5 stars4/5Grokking Algorithms: An illustrated guide for programmers and other curious people Rating: 4 out of 5 stars4/5Excel 101: A Beginner's & Intermediate's Guide for Mastering the Quintessence of Microsoft Excel (2010-2019 & 365) in no time! Rating: 0 out of 5 stars0 ratingsLinux: Learn in 24 Hours Rating: 5 out of 5 stars5/5HTML in 30 Pages Rating: 5 out of 5 stars5/5SQL QuickStart Guide: The Simplified Beginner's Guide to Managing, Analyzing, and Manipulating Data With SQL Rating: 4 out of 5 stars4/5C Programming For Beginners: The Simple Guide to Learning C Programming Language Fast! Rating: 5 out of 5 stars5/5Excel : The Ultimate Comprehensive Step-By-Step Guide to the Basics of Excel Programming: 1 Rating: 5 out of 5 stars5/5SQL All-in-One For Dummies Rating: 3 out of 5 stars3/5Python: For Beginners A Crash Course Guide To Learn Python in 1 Week Rating: 4 out of 5 stars4/5Learn to Code. Get a Job. The Ultimate Guide to Learning and Getting Hired as a Developer. Rating: 5 out of 5 stars5/5Learn PowerShell in a Month of Lunches, Fourth Edition: Covers Windows, Linux, and macOS Rating: 5 out of 5 stars5/5Beginning Programming with C++ For Dummies Rating: 4 out of 5 stars4/5Python Data Structures and Algorithms Rating: 5 out of 5 stars5/5Blender 3D Printing Essentials Rating: 0 out of 5 stars0 ratingsSQL: For Beginners: Your Guide To Easily Learn SQL Programming in 7 Days Rating: 5 out of 5 stars5/5Coding All-in-One For Dummies Rating: 0 out of 5 stars0 ratingsWindows 11 For Dummies Rating: 0 out of 5 stars0 ratingsPython Crash Course, 3rd Edition: A Hands-On, Project-Based Introduction to Programming Rating: 4 out of 5 stars4/5The Most Concise Step-By-Step Guide To ChatGPT Ever Rating: 3 out of 5 stars3/5
Reviews for SFML Game Development
1 rating0 reviews
Book preview
SFML Game Development - Artur Moreira
Table of Contents
SFML Game Development
Credits
Foreword
About the Authors
About the Reviewers
www.PacktPub.com
Support files, eBooks, discount offers and more
Why Subscribe?
Free Access for Packt account holders
Preface
What this book covers
What you need for this book
Who this book is for
Conventions
Reader feedback
Customer support
Downloading the example code
Errata
Piracy
Questions
1. Making a Game Tick
Introducing SFML
Downloading and installation
A minimal example
A few notes on C++
Developing the first game
The Game class
Game loops and frames
Input over several frames
Vector algebra
Frame-independent movement
Fixed time steps
Other techniques related to frame rates
Displaying sprites on the screen
File paths and working directories
Real-time rendering
Adapting the code
Summary
2. Keeping Track of Your Textures – Resource Management
Defining resources
Resources in SFML
Textures
Images
Fonts
Shaders
Sound buffers
Music
A typical use case
Graphics
Audio
Acquiring, releasing, and accessing resources
An automated approach
Finding an appropriate container
Loading from files
Accessing the textures
Error handling
Boolean return values
Throwing exceptions
Assertions
Generalizing the approach
Compatibility with sf::Music
A special case – sf::Shader
Summary
3. Forge of the Gods – Shaping Our World
Entities
Aircraft
Alternative entity designs
Rendering the scene
Relative coordinates
SFML and transforms
Scene graphs
Scene nodes
Node insertion and removal
Making scene nodes drawable
Drawing entities
Connecting entities with resources
Aligning the origin
Scene layers
Updating the scene
One step back – absolute transforms
The view
Viewport
View optimizations
Resolution and aspect ratio
View scrolling
Zoom and rotation
Landscape rendering
SpriteNode
Landscape texture
Texture repeating
Composing our world
World initialization
Loading the textures
Building the scene
Update and draw
Integrating the Game class
The run() method
Summary
4. Command and Control – Input Handling
Polling events
Window events
Joystick events
Keyboard events
Mouse events
Getting the input state in real time
Events and real-time input – when to use which
Delta movement from the mouse
Playing nice with your application neighborhood
A command-based communication system
Introducing commands
Receiver categories
Command execution
Command queues
Handling player input
Commands in a nutshell
Implementing the game logic
A general-purpose communication mechanism
Customizing key bindings
Why a player is not an entity
Summary
5. Diverting the Game Flow – State Stack
Defining a state
The state stack
Adding states to StateStack
Handling updates, input, and drawing
Input
Update
Draw
Delayed pop/push operations
The state context
Integrating the stack in the Application class
Navigating between states
Creating the game state
The title screen
Main menu
Pausing the game
The loading screen – sample
Progress bar
ParallelTask
Thread
Concurrency
Task implementation
Summary
6. Waiting and Maintenance Area – Menus
The GUI hierarchy, the Java way
Updating the menu
The promised key bindings
Summary
7. Warfare Unleashed – Implementing Gameplay
Equipping the entities
Introducing hitpoints
Storing entity attributes in data tables
Displaying text
Creating enemies
Movement patterns
Spawning enemies
Adding projectiles
Firing bullets and missiles
Homing missiles
Picking up some goodies
Collision detection and response
Finding the collision pairs
Reacting to collisions
An outlook on optimizations
An interacting world
Cleaning everything up
Out of view, out of the world
The final update
Victory and defeat
Summary
8. Every Pixel Counts – Adding Visual Effects
Defining texture atlases
Adapting the game code
Low-level rendering
OpenGL and graphics cards
Understanding render targets
Texture mapping
Vertex arrays
Particle systems
Particles and particle types
Particle nodes
Emitter nodes
Affectors
Embedding particles in the world
Animated sprites
The Eagle has rolled!
Post effects and shaders
Fullscreen post effects
Shaders
The bloom effect
Summary
9. Cranking Up the Bass – Music and Sound Effects
Music themes
Loading and playing
Use case – In-game themes
Sound effects
Loading, inserting, and playing
Removing sounds
Use case – GUI sounds
Sounds in 3D space
The listener
Attenuation factor and minimum distance
Positioning the listener
Playing spatial sounds
Use case – In-game sound effects
Summary
10. Company Atop the Clouds – Co-op Multiplayer
Playing multiplayer games
Interacting with sockets
TCP
UDP
Socket selectors
Custom protocols
Data transport
Network architectures
Peer-to-peer
Client-server architecture
Authoritative servers
Creating the structure for multiplayer
Working with the Server
Server thread
Server loop
Peers and aircraft
Hot Seat
Accepting new clients
Handling disconnections
Incoming packets
Studying our protocol
Understanding the ticks and updates
Synchronization issues
Taking a peek in the other end – the client
Client packets
Transmitting game actions via network nodes
The new pause state
Settings
The new Player class
Latency
Latency versus bandwidth
View scrolling compensation
Aircraft interpolation
Cheating prevention
Summary
Index
SFML Game Development
SFML Game Development
Copyright © 2013 Packt Publishing
All rights reserved. No part of this book may be reproduced, stored in a retrieval system, or transmitted in any form or by any means, without the prior written permission of the publisher, except in the case of brief quotations embedded in critical articles or reviews.
Every effort has been made in the preparation of this book to ensure the accuracy of the information presented. However, the information contained in this book is sold without warranty, either express or implied. Neither the authors, nor Packt Publishing, and its dealers and distributors will be held liable for any damages caused or alleged to be caused directly or indirectly by this book.
Packt Publishing has endeavored to provide trademark information about all of the companies and products mentioned in this book by the appropriate use of capitals. However, Packt Publishing cannot guarantee the accuracy of this information.
First published: June 2013
Production Reference: 1170613
Published by Packt Publishing Ltd.
Livery Place
35 Livery Street
Birmingham B3 2PB, UK.
ISBN 978-1-84969-684-5
www.packtpub.com
Cover Image by Vivek Sinha (<[email protected]>)
Credits
Authors
Artur Moreira
Henrik Vogelius Hansson
Jan Haller
Reviewers
Brandon DeRosier
Karol Gasiński
Eyal Kalderon
Acquisition Editor
Edward Gordon
Lead Technical Editor
Mayur Hule
Technical Editors
Sanhita Sawant
Priya Singh
Nitee Shetty
Dennis John
Project Coordinator
Amey Sawant
Proofreaders
Dan McMahon
Stephen Swaney
Indexer
Monica Ajmera Mehta
Graphics
Ronak Dhruv
Abhinash Sahu
Production Coordinator
Pooja Chiplunkar
Cover Work
Pooja Chiplunkar
Foreword
I'm really honored to write the first words of this book, the very first one about SFML. When I started to write this library, in 2006, I couldn't imagine that it would become so much popular. Around 100,000 visitors per month, 100 new forum posts everyday... this is huge! And this is just the beginning; with the release of SFML 2.0, the library makes an important step forward. While SFML 1 is a constantly evolving (understand unstable
) API, SFML 2.0 is meant to be a robust, stable, and mature foundation for the future. And hopefully a solid base for more and more great games.
Increasing popularity also means more effort from the authors to provide complete and quality documentation. Sadly, this is often overlooked by developers.
Although I do my best to provide detailed tutorials for SFML, they are nothing more than an improved API documentation. Users often ask me where they can find a more complete guide to start programming games with SFML. And until today, I had nowhere to direct them to. But Artur, Henrik, and Jan did a great job to fill this hole. They have gathered their wisdom and experience into a unique book that covers the basics of game programming, as well as everything that SFML has to offer—from audio to network, through advanced graphics. What I really appreciate about this book is that it is written with the same philosophy that is behind SFML: good design, simplicity, and modern code.
I hope you will enjoy reading this book as much as I did and find what you're looking for; whether you're a beginner who wants to learn game programming with SFML, or a more experienced programmer who wants to improve his design and technical skills. And don't hesitate to come to the SFML forum if you have questions or comments. I, the authors of this book, and all the community will be glad to answer you.
Laurent Gomila
Author of SFML
Software Engineer, Tegesoft, France
About the Authors
Artur Moreira is a game development enthusiast who ultimately aims to start a new game development company in his home country. He has been programming games and game-related software for over 4 years. Most of the effort in that time was put in creating an open source game-making library with lots of flexibility and portability. The library is called Nephilim and is known for supporting all major desktop and mobile operating systems, making game development fully cross-platform and fast. Alongside this big project, he keeps making his own prototypes and games for educational and commercial purposes.
Aside from the programming, he also puts some focus in creative areas such as 3D modeling, digital painting, and music composing.
I would like to thank, first of all, my girlfriend for her patience and unconditional support every single time the writing was taking all of my time and energy. Also, I can't be thankful enough for the support of my parents and sisters, along with all the closest relatives, whose support is ever-present and always helpful. On the technical side, I would like to directly thank Jan Haller and Henrik Vogelius Hansson, the co-authors of the book, for their remarkable collaboration, skill, and teamwork. It's been always a pleasure to work with them.
Henrik Vogelius Hansson has always been in love with both games and programming. He started his education fairly early and continued on into the indie scene with Defrost Games and their game Project Temporality. The next company that hired him was Paradox Development Studio where he got to work on titles such as Crusader Kings 2.
Beside the game companies, Henrik has also been very active in the SFML community and has even provided a binding for Ruby called rbSFML.
I would like to thank my co-authors, Jan and Artur, for the amazing cooperation and great times. I am also very happy and would like to thank my family that encouraged me to pursue this line of work. Also special thanks to my grandmother.
Jan Haller is a Master's degree student of Electrical Engineering and Information Technology. In his free time, he occasionally develops games in C++. He is also interested in the creation of graphics and 3D models.
In 2008, Jan stumbled upon SFML. Since then, he has used the library for many of his works. One of his bigger projects was a 2D Jump'n'Run game, where the character has to find its way through different levels, defeating enemies and collecting various items. During the years, Jan has actively participated in the SFML community, getting a lot of insights into the development of SFML 2. He has also written a C++ library called Thor, which extends SFML by ready-to-use features such as particle systems or animations.
I would like to thank Laurent Gomila for the passion and huge efforts he invested into the Simple and Fast Multimedia Library. It has always been interesting to discuss with him about the library and its development process. I would also like to thank my co-authors, Artur Moreira and Henrik Vogelius Hansson, who have been a very nice team to work with.
About the Reviewers
Brandon DeRosier is a free software supporter, software engineer, and a hobbyist game developer living in the Greater Boston area. Driven by an early interest in programming, he took to the reverse engineering of his favorite games of his childhood; he would later write several small augmentation tools to run alongside these games. Over time, he developed his skills as a programmer—as well as an interest in music composition, animation, and interactive media. Currently, he is directing these skills and interests towards game design.
As a member of the Free Software Foundation, he understands that the concealing of source code is unethical and regressive; dedicated to the digital rights of users everywhere, he has actively participated in the development and distribution of free software.
Brandon is currently pursuing a Bachelor of Science degree in Computer Science at Wentworth Institute of Technology in Boston and takes pride in helping others learn. Occasionally, he gives lectures in classes and clubs, with hopes of encouraging interest in interactive media development with frameworks such as SFML and LWJGL.
I'd like to thank my partner, Yamilah Atallah, for brainstorming game ideas with me, coming up with meaningful concepts and wonderful designs, and changing my life in so many positive ways; with this support, my interest in game development has grown.
Karol Gasiński is a programmer, entrepreneur, and traveler living in Poland, Europe. He works as a Graphic Software Engineer at an Intel Research & Development facility, and has worked on 6 generations of Intel graphic cards. As a member of KHRONOS group, Karol contributes to the development of OpenGL and OpenGL ES Specifications—the industry standard for high-performance graphics.
Outside of his work, Karol's biggest passion is game development and low-level programming. He has been associated with the games industry for over 6 years. In the past, he has worked on mobile versions of games such as Medieval Total War, Pro Evolution Soccer, and Silent Hill. Currently he is the founder and chairman of the Polish Conference on Computer Games Development—the biggest and fastest growing industry event in the country.
Karol gives lectures on most Polish conferences and events for game developers including WGK, GameDay, SWPC, the DigitalFrontier course, IGK, and others. You can also meet him on GDC Europe and GDC San Francisco, where each year he gathers inspiration for his new games.
Eyal Kalderon is a self-taught computer programmer and high school student. Having been introduced to the programming scene at a fairly young age, Eyal developed his early skills in Visual Basic and made a switch to C# early on. Eyal has made himself at home for several years now programming with C and C++ and using shell scripts to automate every task he finds boring. After trying SDL, Eyal switched to SFML in 2010, enjoyed it, and has been following its progress closely ever since.
Understanding the power of print, having gained much from the Internet and professional publications, Eyal chose to erect 'nullpwd' (nullpwd.wordpress.com) in March of 2010, a casual software-centered blog that acts as an unintimidating front for various software topics, such as programming, penetration systems, and the current happenings of the open source community.
www.PacktPub.com
Support files, eBooks, discount offers and more
You might want to visit www.PacktPub.com for support files and downloads related to your book.
Did you know that Packt offers eBook versions of every book published, with PDF and ePub files available? You can upgrade to the eBook version at www.PacktPub.com and as a print book customer, you are entitled to a discount on the eBook copy. Get in touch with us at
At www.PacktPub.com, you can also read a collection of free technical articles, sign up for a range of free newsletters and receive exclusive discounts and offers on Packt books and eBooks.
Support files, eBooks, discount offers and morehttp://PacktLib.PacktPub.com
Do you need instant solutions to your IT questions? PacktLib is Packt's online digital book library. Here, you can access, read and search across Packt's entire library of books.
Why Subscribe?
Fully searchable across every book published by Packt
Copy and paste, print and bookmark content
On demand and accessible via web browser
Free Access for Packt account holders
If you have an account with Packt at www.PacktPub.com, you can use this to access PacktLib today and view nine entirely free books. Simply use your login credentials for immediate access.
Preface
Welcome to the pages of SFML Game Development!
Whether you are just grabbing our book in a store, previewing it in your e-book reader, or you have already bought it—you have taken your first step in becoming a game developer by picking up this book.
Game development is a very interesting topic, as it combines many different fields such as software development, graphical design, music composition, and storytelling. Nowadays, there is an enormous variety of games available, yet developers never cease to be creative and to come up with innovations. This book conveys the process of game development in a way that covers state-of-the-art techniques, leaving you ready to implement your own ideas.
It does not matter if you are already an experienced developer or an ambitious newcomer to the field of making games. Although the book requires no previous knowledge on game development, we also teach valuable concepts and techniques that will help you grow as a game developer.
Throughout the book, we develop a 2D game with SFML. We focus on a top-scrolling aircraft shooter, where the player acts as a pilot and is confronted with various challenges. We begin with the bare bones of each element and continuously add functionality as we progress in the book. In every chapter, new features are introduced, and the code is updated accordingly. Therefore, you will not only see the concepts in theory, but also will have a direct implementation at hand, which you can investigate and extend the way you like.
That said, we would like to wish you a great journey through the chapters of this book. May it be a good experience in all its extent! Please enjoy!
What this book covers
Chapter 1, Making a Game Tick, introduces the SFML library and shows you basic concepts such as the game loop and rendering.
Chapter 2, Keeping Track of Your Textures – Resource Management, covers the loading and management of external resources such as images, fonts, and sounds.
Chapter 3, Forge of the Gods – Shaping Our World, builds up the framework of the game world and addresses the concept of scene graphs and game entities.
Chapter 4, Command and Control – Input Handling, shows how to react to user input from the keyboard, mouse, and joystick.
Chapter 5, Diverting the Game Flow – State Stack, covers switching between application states such as different menus, or between menus and the game itself.
Chapter 6, Waiting and Maintenance Area – Menus, introduces a simple graphical user interface in the menus.
Chapter 7, Warfare Unleashed – Implementing Gameplay, approaches actual gameplay mechanisms. Enemies, bullets, missiles, power-ups and collision detection are implemented.
Chapter 8, Every Pixel Counts – Adding Visual Effects, enhances the graphical appearance of the game by adding animations, particle systems, and shaders.
Chapter 9, Cranking Up the Bass – Music and Sound Effects, explains a way to integrate audio into the game.
Chapter 10, Company Atop The Clouds – Co-op Multiplayer, covers networking basics and a multiplayer implementation over the network.
What you need for this book
Since this book is built around the SFML library, you need to download and install it. You can get SFML at www.sfml-dev.org; the first chapter gives a brief installation guide.
In case you decide to recompile SFML yourself, you will also require the cross-platform build tool CMake, which can be downloaded from www.cmake.org.
Who this book is for
SFML Game Development is aimed at audiences of all ages who already know how to program in C++, at least to an intermediate level. It is optimal if the reader already has some experience in programming and knows the language well.
The ideal reader for such a book would be a person who is experienced in C++ and would now like to enter the world of game development in a simple yet serious way. However, if the reader already knows a good deal of it and still wants to read through the pages to see different approaches, or if he simply wants to learn more about SFML in a bigger practical example, we strongly encourage to read on!
Conventions
In this book, you will find a number of styles of text that distinguish between different kinds of information. Here are some examples of these styles, and an explanation of their meaning.
Code words in text are shown as follows: To manage all these screens and transitions, we create the StateStack class.
A block of code is set as follows:
namespace GUI
{
class Component : public sf::Drawable,public sf::Transformable
{
public:
typedef std::shared_ptr
Component();
When we wish to draw your attention to a particular part of a code block, the relevant lines or items are set in bold:
: mChildren()
, mSelectedChild(-1)
{
}
void Container::pack(std::shared_ptr
{
New terms and important words are shown in bold. Words that you see on the screen, in menus or dialog boxes for example, appear in the text like this: It shows a background with a little information about the game, besides its title and then blinks a big old Press any key to continue message
.
Note
Warnings or important notes appear in a box like this.
Tip
Tips and tricks appear like this.
Reader feedback
Feedback from our readers is always welcome. Let us know what you think about this book—what you liked or may have disliked. Reader feedback is important for us to develop titles that you really get the most out of.
To send us general feedback, simply send an e-mail to <[email protected]>, and mention the book title via the subject of your message.
If there is a topic that you have expertise in and you are interested in either writing or contributing to a book, see our author guide on www.packtpub.com/authors.
Customer support
Now that you are the proud owner of a Packt book, we have a number of things to help you to get the most from your purchase.
Downloading the example code
You can download the example code files for all Packt books you have purchased from your account at http://www.packtpub.com. If you purchased this book elsewhere, you can visit http://www.packtpub.com/support and register to have the files e-mailed directly to you.
Errata
Although we have taken every care to ensure the accuracy of our content, mistakes do happen. If you find a mistake in one of our books—maybe a mistake in the text or the code—we would be grateful if you would report this to us. By doing so, you can save other readers from frustration and help us improve subsequent versions of this book. If you find any errata, please report them by visiting http://www.packtpub.com/submit-errata, selecting your book, clicking on the errata submission form link, and entering the details of your errata. Once your errata are verified, your submission will be accepted and the errata will be uploaded on our website, or added to any list of existing errata, under the Errata section of that title. Any existing errata can be viewed by selecting your title from http://www.packtpub.com/support.
Piracy
Piracy of copyright material on the Internet is an ongoing problem across all media. At Packt, we take the protection of our copyright and licenses very seriously. If you come across any illegal copies of our works, in any form, on the Internet, please provide us with the location address or website name immediately so that we can pursue a remedy.
Please contact us at <[email protected]> with a link to the suspected pirated material.
We appreciate your help in protecting our authors, and our ability to bring you valuable content.
Questions
You can contact us at <[email protected]> if you are having a problem with any aspect of the book, and we will do our best to address it.
Chapter 1. Making a Game Tick
Through the words in this book, we will attempt to convey the best knowledge we possibly can. We aim to teach techniques that we learned along the years, techniques that we would like to have been told about in our early days of game development. We now write this book to save your time, by showing you directly the solution to common problems, and why things work the way they do.
Alongside our attempt to teach the basics and a little beyond game development, we will especially focus on the Simple and Fast Multimedia Library (SFML). Every part of this book will be about developing a game and leveraging the advantages that SFML is able to provide us.