Description

Book Synopsis

Jeremy Gibson Bond is a Professor of Practice teaching game design and development at Michigan State University, which in 2022 was ranked the #1 public university for undergraduate game development by Princeton Review three of the last four years. Since 2013, he has served the IndieCade independent game festival and conference as the Chair of Education and Advancement, where he co-chairs the IndieXchange summit each year and has also chaired the GameU summit. In 2013, Jeremy founded the company ExNinja Interactive, through which he develops his independent game projects. Jeremy has spoken several times at the Game Developers Conference. He also created the official Unity Certified Programmer Exam Review specialization on Coursera, which thousands of developers (including several Unity employees) used to prepare for the UCP exam from 2018-2022.

Prior to joining the Games faculty at Michigan State, Jeremy taught for three years as a lecturer in the Electrical E

Table of Contents

Foreword
Preface
PART I Game Design and Paper Prototyping
Chapter 1 Thinking Like a Designer
You Are a Game Designer
Bartok: A Game Design Exercise
The Definition of Game
Summary
Chapter 2 Game Analysis Frameworks
Common Frameworks for Ludology
MDA: Mechanics, Dynamics, and Aesthetics
Formal, Dramatic, and Dynamic Elements
The Elemental Tetrad
Summary
Chapter 3 The Layered Tetrad
The Inscribed Layer
The Dynamic Layer
The Cultural Layer
The Responsibility of the Designer
Summary
Chapter 4 The Inscribed Layer
Inscribed Mechanics
Inscribed Aesthetics
Inscribed Narrative
Inscribed Technology
Summary
Chapter 5 The Dynamic Layer
The Role of the Player
Emergence
Dynamic Mechanics
Dynamic Aesthetics
Dynamic Narrative
Dynamic Technology
Summary
Chapter 6 The Cultural Layer
Beyond Play
Cultural Mechanics
Cultural Aesthetics
Cultural Narrative
Cultural Technology
Authorized Transmedia Are Not Part of the Cultural Layer
The Cultural Impact of a Game
Summary
Chapter 7 Acting Like a Designer
Iterative Design
Innovation
Brainstorming and Ideation
Changing Your Mind
Scoping!
Summary
Chapter 8 Design Goals
Design Goals: An Incomplete List
Designer-Centric Goals
Player-Centric Goals
Summary
Chapter 9 Paper Prototyping
The Benefits of Paper Prototyping
Paper Prototyping Tools
Paper Prototyping for Interfaces
A Paper Prototype Example
Best Uses for Paper Prototyping
Poor Uses for Paper Prototyping
Summary
Chapter 10 Game Testing
Why Playtest?
Being a Great Playtester Yourself
The Circles of Playtesters
Methods of Playtesting
Other Important Types of Testing
Summary
Chapter 11 Math and Game Balance
The Meaning of Game Balance
The Importance of Spreadsheets
Examining Dice Probability with Sheets
The Math of Probability
Randomizer Technologies in Paper Games
Weighted Distributions
Weighted Probability in Google Sheets
Permutations
Using Sheets to Balance Weapons
Positive and Negative Feedback
Summary
Chapter 12 Guiding the Player
Direct Guidance
Indirect Guidance
Teaching New Skills and Concepts
Summary
Chapter 13 Puzzle Design
Scott Kim on Puzzle Design
The Steps of Solving a Puzzle
Puzzle Examples in Action Games
Designing and Developing Puzzle Games
Summary
Chapter 14 The Agile Mentality
The Manifesto for Agile Software Development
Scrum Methodology
Burndown Chart Example
Creating Your Own Burndown Charts
Summary
Chapter 15 The Digital Game Industry
About the Game Industry
Game Education
Getting Into the Industry
Don't Wait to Start Making Games!
Summary
PART II Programming C# in Unity
Chapter 16 Thinking in Digital Systems
Systems Thinking in Board Games
An Exercise in Simple Instructions
Game Analysis: Apple Picker
Summary
Chapter 17 Introducing Unity Hub and the Unity Editor
Downloading Unity
Introducing Our Development Environment
Creating a Unity Account
Checking Out a Sample Project
Creating Your First Unity Project
Learning Your Way Around Unity
Setting Up the Unity Window Layout
Summary
Chapter 18 Introducing Our Language: C#
Understanding the Features of C#
Reading and Understanding C# Syntax
Summary
Chapter 19 Hello World: Your First Program
Creating a New Project
Making a New C# Script
Making Things More Interesting
Summary
Chapter 20 Variables and Components
Introducing Variables
Statically Typed Variables in C#
Important C# Variable Types
The Scope of Variables
Naming Conventions
Important Unity Variable Types
Unity GameObjects and Components
Summary
Chapter 21 Boolean Operations and Conditionals
Booleans
Comparison Operators
Conditional Statements
Summary
Chapter 22 Loops
Types of Loops
Set Up a Project
while Loops
do...while Loops
for Loops
foreach Loops
Jump Statements within Loops
Summary
Chapter 23 Collections in C#
C# Collections
Using Generic Collections
List
Dictionary
Array
Multidimensional Arrays
Jagged Arrays
Jagged Lists
Choosing Whether to Use an Array or List
Summary
Chapter 24 Functions and Parameters
Setting Up the Function Examples Project
Definition of a Function
What Happens When You Call a Function?
Function Parameters and Arguments
Returning Values
Returning void
Function Naming Conventions
Why Use Functions?
Function Overloading
Optional Parameters
The params Keyword
Recursive Functions
Summary
Chapter 25 Debugging
Getting Started with Debugging
Stepping Through Code with the Debugger
Summary
Chapter 26 Classes
Understanding Classes
Class Inheritance
Summary
Chapter 27 Object-Oriented Thinking
The Object-Oriented Metaphor
An Object-Oriented Boids Implementation
Summary
Chapter 28 Data-Oriented Design
The Theory of Data-Oriented Design
DOTS Tutorial and Example
The Future of Unity DOTS
Summary
PART III Game Prototype Tutorials
Chapter 29 Apple Picker
What You Will Learn
The Apple Picker Prototype
The Purpose of a Digital Prototype
Preparing
Coding the Apple Picker Prototype
GUI and Game Management
Summary
Chapter 30 Mission Demolition
What You Will Learn
The Mission Demolition Prototype
Getting Started: Mission Demolition
Game Prototype Concept
Art Assets
Coding the Prototype
From Prototype to First Playable
Summary
Chapter 31 Space SHMUP -- Part 1
What You Will Learn
Getting Started: Space SHMUP
Setting the Scene
Making the Hero Ship
Adding Some Enemies
Spawning Enemies at Random
Setting Tags, Layers, and Physics
Making the Enemies Damage the Player
Restarting the Game
Shooting (Finally)
Summary
Chapter 32 Space SHMUP -- Part 2
What You Will Learn
Getting Started: Space SHMUP -- Part 2
Enemy to Enemy_0
Programming Other Enemies
Shooting Revisited
Showing Enemy Damage
Adding PowerUps and Boosting Weapons
Race Conditions & Script Execution Order
Making Enemies Drop PowerUps
Enemy_4 -- A More Complex Enemy
Tuning Settings for the Game Entities
Adding a Scrolling Starfield Background
Summary
Chapter 33 Prospector Solitaire -- Part 1
What You Will Learn
The Prospector Game
Getting Started: Prospector Solitaire
Build Settings
Setting Up the Unity Window Layout
Setting Up the Camera and Game Pane
Importing Images as Sprites
Constructing Cards from Sprites
Implementing Prospector in Code
Implementing Game Logic
Summary
Chapter 34 Prospector Solitaire -- Part 2
What You Will Learn
Getting Started: Prospector -- Part 2
Additional Prospector Game Elements
Adding GUI Elements to Display the Score
Building and Running Your WebGL Build
Summary
Chapter 35 Dungeon Delver -- Part 1
What You Will Learn
The Dungeon Delver Game
Getting Started: Dungeon Delver
Setting Up the Cameras
Understanding the Dungeon Data
Showing the Map with a Unity Tilemap
Adding the Hero
Giving Dray an Attack Animation
Dray's Sword
Programmatic Collision in Unity Tilemap
The InRoom Script
Enemy: Skeletos
Keeping GameObjects in the Room
Aligning to the Grid
Moving from Room to Room
Making the Camera Follow Dray
Summary
Chapter 36 Dungeon Delver -- Part 2
What You Will Learn
Getting Started: Dungeon Delver -- Part 2
Dungeon Delver -- Part 2 Overview
Implementing TileSwaps
Swapping in LockedDoor GameObjects
Implementing Keys and Unlocking Doors
Adding GUI to Track Key Count and Health
Enabling Enemies to Damage Dray
Making Dray's Attack Damage Enemies
Modifying Enemy to Take Damage
Picking Up Items
Enemies Dropping Items on Death
Implementing a New Dungeon -- The Hat
Implementing a Grappler
Summary
Part IV Next Steps
Chapter 37 Coding Challenges
What Is a Coding Challenge?
Getting Started on a Coding Challenge
Filling in the Blanks
How to Approach Each Challenge
Chapter 38 Beyond This Book
Continue to Learn Unity Development
Build a Classic Game
Start a Small Game Project or Prototype
Make Games for Lifelong Enrichment
Consider Going to School for GameDev
Explore Advanced Game Design
Finally, Drop Me a Line
PART V Online Appendices
Appendix A Standard Project Setup Procedure
The Set Up Sidebar for Tutorial Projects
Setting Up a New Project
Importing a Starter UnityPackage
Setting the Scene Name
Setting the Game Pane to Full HD (1080p)
Setting Up a WebGL Build
Understanding Unity Version Control
Summary
Appendix B Useful Concepts
Topics Covered
C# and Unity Coding Concepts
Attributes
Automatic Properties
Bitwise Boolean Operators and Layer Masks
Coroutines
Unity Example--Coroutines
Delegates, Events, and UnityEvents
UnityEvents
Enums
Extension Methods
Interfaces
Unity Example--Interfaces
Unity Makes Frequent Use of Interfaces for Observer Pattern
JSON (JavaScript Object Notation) in Unity
Lambda Expressions =>
Naming Conventions
Object-Oriented Software Design Patterns
Component Pattern
Observer Pattern
Singleton Pattern
Strategy Pattern
More Information on Design Patterns in Game Programming
Operator Precedence and Order of Operations
Race Conditions
Unity Example--Race Conditions
Recursive Functions
String Interpolation -- $""
StringBuilder
Structs
Unity Messages Beyond Start() and Update()
Life-Cycle Messages
Frame-Based Messages
Physics-Based Messages
Variable Scope
XML
XML Documentation in C#
Math Concepts
Cosine and Sine (Cos and Sin)
Unity Example--Sine and Cosine
Dice Probability Enumeration
Unity Example--Dice Probability
Using Data-Oriented Design to Improve the DiceProbability Code
Dot Product
Interpolation
Linear Interpolation
Time-Based Linear Interpolations
Linear Interpolations Using Zeno's Paradox
Interpolating More Than Just Position
Linear Extrapolation
Easing for Linear Interpolations
Bezier Curves
Three-Point and Four-Point Bezier Curves
A Recursive Bezier Curve Function
A Data-Oriented Bezier Function
Pen-and-Paper Roleplaying Games
Tips for Running a Good Roleplaying Campaign
User Interface Concepts
Complex Game Controller Input
Input Manager Mapping for Various Controllers
Right-Click on macOS
Control-Click = Right-Click
Use Any PC Mouse
Set Your macOS Mouse to Right-Click
Set Your macOS Trackpad to Right-Click
Appendix C Online Reference
Tutorials
Unite Conference
Unity's YouTube Channel
Programming
Searching Tips
Finding and Creating Assets
Other Tools and Educational Discounts
Appendix D Tips for Teaching from This Book
The Goal of This Appendix
Teaching Introduction to Game Design
Teaching Introduction to Game Programming
More Information Is Available


Introduction to Game Design Prototyping and

Product form

£53.99

Includes FREE delivery

RRP £59.99 – you save £6.00 (10%)

Order before 4pm today for delivery by Tue 23 Dec 2025.

A Paperback / softback by Jeremy Gibson Bond

2 in stock


    View other formats and editions of Introduction to Game Design Prototyping and by Jeremy Gibson Bond

    Publisher: Pearson Education (US)
    Publication Date: 12/10/2022
    ISBN13: 9780136619949, 978-0136619949
    ISBN10: 136619940

    Description

    Book Synopsis

    Jeremy Gibson Bond is a Professor of Practice teaching game design and development at Michigan State University, which in 2022 was ranked the #1 public university for undergraduate game development by Princeton Review three of the last four years. Since 2013, he has served the IndieCade independent game festival and conference as the Chair of Education and Advancement, where he co-chairs the IndieXchange summit each year and has also chaired the GameU summit. In 2013, Jeremy founded the company ExNinja Interactive, through which he develops his independent game projects. Jeremy has spoken several times at the Game Developers Conference. He also created the official Unity Certified Programmer Exam Review specialization on Coursera, which thousands of developers (including several Unity employees) used to prepare for the UCP exam from 2018-2022.

    Prior to joining the Games faculty at Michigan State, Jeremy taught for three years as a lecturer in the Electrical E

    Table of Contents

    Foreword
    Preface
    PART I Game Design and Paper Prototyping
    Chapter 1 Thinking Like a Designer
    You Are a Game Designer
    Bartok: A Game Design Exercise
    The Definition of Game
    Summary
    Chapter 2 Game Analysis Frameworks
    Common Frameworks for Ludology
    MDA: Mechanics, Dynamics, and Aesthetics
    Formal, Dramatic, and Dynamic Elements
    The Elemental Tetrad
    Summary
    Chapter 3 The Layered Tetrad
    The Inscribed Layer
    The Dynamic Layer
    The Cultural Layer
    The Responsibility of the Designer
    Summary
    Chapter 4 The Inscribed Layer
    Inscribed Mechanics
    Inscribed Aesthetics
    Inscribed Narrative
    Inscribed Technology
    Summary
    Chapter 5 The Dynamic Layer
    The Role of the Player
    Emergence
    Dynamic Mechanics
    Dynamic Aesthetics
    Dynamic Narrative
    Dynamic Technology
    Summary
    Chapter 6 The Cultural Layer
    Beyond Play
    Cultural Mechanics
    Cultural Aesthetics
    Cultural Narrative
    Cultural Technology
    Authorized Transmedia Are Not Part of the Cultural Layer
    The Cultural Impact of a Game
    Summary
    Chapter 7 Acting Like a Designer
    Iterative Design
    Innovation
    Brainstorming and Ideation
    Changing Your Mind
    Scoping!
    Summary
    Chapter 8 Design Goals
    Design Goals: An Incomplete List
    Designer-Centric Goals
    Player-Centric Goals
    Summary
    Chapter 9 Paper Prototyping
    The Benefits of Paper Prototyping
    Paper Prototyping Tools
    Paper Prototyping for Interfaces
    A Paper Prototype Example
    Best Uses for Paper Prototyping
    Poor Uses for Paper Prototyping
    Summary
    Chapter 10 Game Testing
    Why Playtest?
    Being a Great Playtester Yourself
    The Circles of Playtesters
    Methods of Playtesting
    Other Important Types of Testing
    Summary
    Chapter 11 Math and Game Balance
    The Meaning of Game Balance
    The Importance of Spreadsheets
    Examining Dice Probability with Sheets
    The Math of Probability
    Randomizer Technologies in Paper Games
    Weighted Distributions
    Weighted Probability in Google Sheets
    Permutations
    Using Sheets to Balance Weapons
    Positive and Negative Feedback
    Summary
    Chapter 12 Guiding the Player
    Direct Guidance
    Indirect Guidance
    Teaching New Skills and Concepts
    Summary
    Chapter 13 Puzzle Design
    Scott Kim on Puzzle Design
    The Steps of Solving a Puzzle
    Puzzle Examples in Action Games
    Designing and Developing Puzzle Games
    Summary
    Chapter 14 The Agile Mentality
    The Manifesto for Agile Software Development
    Scrum Methodology
    Burndown Chart Example
    Creating Your Own Burndown Charts
    Summary
    Chapter 15 The Digital Game Industry
    About the Game Industry
    Game Education
    Getting Into the Industry
    Don't Wait to Start Making Games!
    Summary
    PART II Programming C# in Unity
    Chapter 16 Thinking in Digital Systems
    Systems Thinking in Board Games
    An Exercise in Simple Instructions
    Game Analysis: Apple Picker
    Summary
    Chapter 17 Introducing Unity Hub and the Unity Editor
    Downloading Unity
    Introducing Our Development Environment
    Creating a Unity Account
    Checking Out a Sample Project
    Creating Your First Unity Project
    Learning Your Way Around Unity
    Setting Up the Unity Window Layout
    Summary
    Chapter 18 Introducing Our Language: C#
    Understanding the Features of C#
    Reading and Understanding C# Syntax
    Summary
    Chapter 19 Hello World: Your First Program
    Creating a New Project
    Making a New C# Script
    Making Things More Interesting
    Summary
    Chapter 20 Variables and Components
    Introducing Variables
    Statically Typed Variables in C#
    Important C# Variable Types
    The Scope of Variables
    Naming Conventions
    Important Unity Variable Types
    Unity GameObjects and Components
    Summary
    Chapter 21 Boolean Operations and Conditionals
    Booleans
    Comparison Operators
    Conditional Statements
    Summary
    Chapter 22 Loops
    Types of Loops
    Set Up a Project
    while Loops
    do...while Loops
    for Loops
    foreach Loops
    Jump Statements within Loops
    Summary
    Chapter 23 Collections in C#
    C# Collections
    Using Generic Collections
    List
    Dictionary
    Array
    Multidimensional Arrays
    Jagged Arrays
    Jagged Lists
    Choosing Whether to Use an Array or List
    Summary
    Chapter 24 Functions and Parameters
    Setting Up the Function Examples Project
    Definition of a Function
    What Happens When You Call a Function?
    Function Parameters and Arguments
    Returning Values
    Returning void
    Function Naming Conventions
    Why Use Functions?
    Function Overloading
    Optional Parameters
    The params Keyword
    Recursive Functions
    Summary
    Chapter 25 Debugging
    Getting Started with Debugging
    Stepping Through Code with the Debugger
    Summary
    Chapter 26 Classes
    Understanding Classes
    Class Inheritance
    Summary
    Chapter 27 Object-Oriented Thinking
    The Object-Oriented Metaphor
    An Object-Oriented Boids Implementation
    Summary
    Chapter 28 Data-Oriented Design
    The Theory of Data-Oriented Design
    DOTS Tutorial and Example
    The Future of Unity DOTS
    Summary
    PART III Game Prototype Tutorials
    Chapter 29 Apple Picker
    What You Will Learn
    The Apple Picker Prototype
    The Purpose of a Digital Prototype
    Preparing
    Coding the Apple Picker Prototype
    GUI and Game Management
    Summary
    Chapter 30 Mission Demolition
    What You Will Learn
    The Mission Demolition Prototype
    Getting Started: Mission Demolition
    Game Prototype Concept
    Art Assets
    Coding the Prototype
    From Prototype to First Playable
    Summary
    Chapter 31 Space SHMUP -- Part 1
    What You Will Learn
    Getting Started: Space SHMUP
    Setting the Scene
    Making the Hero Ship
    Adding Some Enemies
    Spawning Enemies at Random
    Setting Tags, Layers, and Physics
    Making the Enemies Damage the Player
    Restarting the Game
    Shooting (Finally)
    Summary
    Chapter 32 Space SHMUP -- Part 2
    What You Will Learn
    Getting Started: Space SHMUP -- Part 2
    Enemy to Enemy_0
    Programming Other Enemies
    Shooting Revisited
    Showing Enemy Damage
    Adding PowerUps and Boosting Weapons
    Race Conditions & Script Execution Order
    Making Enemies Drop PowerUps
    Enemy_4 -- A More Complex Enemy
    Tuning Settings for the Game Entities
    Adding a Scrolling Starfield Background
    Summary
    Chapter 33 Prospector Solitaire -- Part 1
    What You Will Learn
    The Prospector Game
    Getting Started: Prospector Solitaire
    Build Settings
    Setting Up the Unity Window Layout
    Setting Up the Camera and Game Pane
    Importing Images as Sprites
    Constructing Cards from Sprites
    Implementing Prospector in Code
    Implementing Game Logic
    Summary
    Chapter 34 Prospector Solitaire -- Part 2
    What You Will Learn
    Getting Started: Prospector -- Part 2
    Additional Prospector Game Elements
    Adding GUI Elements to Display the Score
    Building and Running Your WebGL Build
    Summary
    Chapter 35 Dungeon Delver -- Part 1
    What You Will Learn
    The Dungeon Delver Game
    Getting Started: Dungeon Delver
    Setting Up the Cameras
    Understanding the Dungeon Data
    Showing the Map with a Unity Tilemap
    Adding the Hero
    Giving Dray an Attack Animation
    Dray's Sword
    Programmatic Collision in Unity Tilemap
    The InRoom Script
    Enemy: Skeletos
    Keeping GameObjects in the Room
    Aligning to the Grid
    Moving from Room to Room
    Making the Camera Follow Dray
    Summary
    Chapter 36 Dungeon Delver -- Part 2
    What You Will Learn
    Getting Started: Dungeon Delver -- Part 2
    Dungeon Delver -- Part 2 Overview
    Implementing TileSwaps
    Swapping in LockedDoor GameObjects
    Implementing Keys and Unlocking Doors
    Adding GUI to Track Key Count and Health
    Enabling Enemies to Damage Dray
    Making Dray's Attack Damage Enemies
    Modifying Enemy to Take Damage
    Picking Up Items
    Enemies Dropping Items on Death
    Implementing a New Dungeon -- The Hat
    Implementing a Grappler
    Summary
    Part IV Next Steps
    Chapter 37 Coding Challenges
    What Is a Coding Challenge?
    Getting Started on a Coding Challenge
    Filling in the Blanks
    How to Approach Each Challenge
    Chapter 38 Beyond This Book
    Continue to Learn Unity Development
    Build a Classic Game
    Start a Small Game Project or Prototype
    Make Games for Lifelong Enrichment
    Consider Going to School for GameDev
    Explore Advanced Game Design
    Finally, Drop Me a Line
    PART V Online Appendices
    Appendix A Standard Project Setup Procedure
    The Set Up Sidebar for Tutorial Projects
    Setting Up a New Project
    Importing a Starter UnityPackage
    Setting the Scene Name
    Setting the Game Pane to Full HD (1080p)
    Setting Up a WebGL Build
    Understanding Unity Version Control
    Summary
    Appendix B Useful Concepts
    Topics Covered
    C# and Unity Coding Concepts
    Attributes
    Automatic Properties
    Bitwise Boolean Operators and Layer Masks
    Coroutines
    Unity Example--Coroutines
    Delegates, Events, and UnityEvents
    UnityEvents
    Enums
    Extension Methods
    Interfaces
    Unity Example--Interfaces
    Unity Makes Frequent Use of Interfaces for Observer Pattern
    JSON (JavaScript Object Notation) in Unity
    Lambda Expressions =>
    Naming Conventions
    Object-Oriented Software Design Patterns
    Component Pattern
    Observer Pattern
    Singleton Pattern
    Strategy Pattern
    More Information on Design Patterns in Game Programming
    Operator Precedence and Order of Operations
    Race Conditions
    Unity Example--Race Conditions
    Recursive Functions
    String Interpolation -- $""
    StringBuilder
    Structs
    Unity Messages Beyond Start() and Update()
    Life-Cycle Messages
    Frame-Based Messages
    Physics-Based Messages
    Variable Scope
    XML
    XML Documentation in C#
    Math Concepts
    Cosine and Sine (Cos and Sin)
    Unity Example--Sine and Cosine
    Dice Probability Enumeration
    Unity Example--Dice Probability
    Using Data-Oriented Design to Improve the DiceProbability Code
    Dot Product
    Interpolation
    Linear Interpolation
    Time-Based Linear Interpolations
    Linear Interpolations Using Zeno's Paradox
    Interpolating More Than Just Position
    Linear Extrapolation
    Easing for Linear Interpolations
    Bezier Curves
    Three-Point and Four-Point Bezier Curves
    A Recursive Bezier Curve Function
    A Data-Oriented Bezier Function
    Pen-and-Paper Roleplaying Games
    Tips for Running a Good Roleplaying Campaign
    User Interface Concepts
    Complex Game Controller Input
    Input Manager Mapping for Various Controllers
    Right-Click on macOS
    Control-Click = Right-Click
    Use Any PC Mouse
    Set Your macOS Mouse to Right-Click
    Set Your macOS Trackpad to Right-Click
    Appendix C Online Reference
    Tutorials
    Unite Conference
    Unity's YouTube Channel
    Programming
    Searching Tips
    Finding and Creating Assets
    Other Tools and Educational Discounts
    Appendix D Tips for Teaching from This Book
    The Goal of This Appendix
    Teaching Introduction to Game Design
    Teaching Introduction to Game Programming
    More Information Is Available


    Recently viewed products

    © 2025 Book Curl

      • American Express
      • Apple Pay
      • Diners Club
      • Discover
      • Google Pay
      • Maestro
      • Mastercard
      • PayPal
      • Shop Pay
      • Union Pay
      • Visa

      Login

      Forgot your password?

      Don't have an account yet?
      Create account