Learning how to create games in a new game engine is a difficult task. It is easy to get bogged down in details. This book is written with an idea that the best way to teach an engine is by gradually introducing topics one element at a time, just enough to get you past the task at hand. Then we loop
Game Programming with Open 3D Engine
✍ Scribed by Oleksandr Lozitskiy
- Publisher
- Independently Published
- Year
- 2022
- Tongue
- English
- Category
- Library
No coin nor oath required. For personal study only.
✦ Table of Contents
Game Programming with Open 3D Engine
Table of Contents
Introduction
Copyright
My Mindset for this Book
Intended Audience
Source Code for this Book
Comparing GitHub Branches
Use of PowerShell throughout the Book
Making PowerShell Your Development Console
Part I. Getting Started
Chapter 1. Installing Open 3D Engine on Windows
Introduction
Preparing Visual Studio
Acquiring O3DE
Running the Installer
Chapter 2. Creating a New Project
Introduction
O3DE Command Line Interface
Linking Projects and O3DE
Building with CMake and Visual Studio
Asset Processor
Create a Level
Summary
Part II. Entities and Components
Chapter 3. Introduction to Entities and Components
Introduction
O3DE Components
Transform Component
"Child" Entities
Mesh Component
Composing Objects with Entities
Summary
Chapter 4. Writing Your Own Components
Introduction to Game Project Files
Basic Structure of a New Project
myproject_files.cmake
MyProjectModule.cpp
Creating Your Own Component
MyComponent.h
MyComponent.cpp
myproject_files.cmake
MyProjectModule.cpp
Re-compile the Project
Building from Command Line
Building from Visual Studio
Summary
Part III. Introduction to Component Communication
Chapter 5. What is FindComponent?
Introduction
An Example
Adding a Library Reference
Declaring Dependencies between Components
Summary
Chapter 6. What is AZ::Interface?
Introduction
Level Components
Defining an AZ::Interface
Summary
Chapter 7. What is an AZ::Event?
Introduction
Example
Summary
Chapter 8. What is an AZ::EBus?
Introduction
The Basic Idea of an EBus
Example of an EBus: TransformBus
What is an AZ::EntityId?
EBus on the Same Entity
EBus to the Parent Entity
EBus to a child Entity
EBus Event versus EventResult
Chapter 9. Using AZ::TickBus
Introduction to AZ::TickBus
OscillatorComponent
Inheriting from an EBus Handler
AZ::Component Overrides
Override EBus Events
Dependency Declaration
Implementing Oscillator Component
The Design of OscillatorComponent
Activation of OscillatorComponent
Handling OnTick Event
Summary
Part IV. Introduction to Component Reflection and Prefabs
Chapter 10. Configuring Components in the Editor
Introduction
Component Properties in the Editor
Layers of Reflection
SerializeContext
EditContext
Configurable Fields in the Editor
Field
DataElement
Summary
Chapter 11. Introduction to Prefabs
Introduction
What are Prefabs?
Creating a Prefab
Editing Prefabs
Prefab is also a File
Spawning Prefabs
Spawning Prefabs from C++
MySpawnerComponent
Summary
Part V. Modularity in O3DE
Chapter 12. What is a Gem?
Introduction
Creating a New Gem
Adding Gem to the Project
Where Does a Project List the Gems It Uses?
File Structure of a Gem
Gem's C++ Code
Public Interface of a Gem
Internal Gem Code
Summary
Chapter 13. Gem: Set Window Position
Introduction and Motivation
Create WindowPosition Gem
Console Subsystem
Console Command Callback
Conclusion and Source Code
WindowConsoleCommand.cpp
Chapter 14. Enabling NvCloth Gem
Introduction
Adding NvCloth Gem
Using NvCloth Gem
Adding Your Assets to Gems
Summary
Part VI. Unit Tests in O3DE
Chapter 15. Writing Unit Tests for Components
Introduction
Unit Test Build Target
Unit Tests
Running Unit Tests
Structure of a Unit Test
Memory Allocator Setup
Registering Components
Adding Components to an Entity
Activate the Entity
Test Body
Unit Test Hook
Output
Source Code
Chapter 16. Unit Tests with Mock Components
Testing with Mocks
Mocking TransformComponent
Mocking Virtual Methods
Setting Up Entity with Mock Components
Setting Expectations on Interface Calls
Summary
Part VII. Character Controller
Chapter 17. Player Input
Introduction
Starting Point Input Gem
Adding Input Mapping
Linking Against Starting Point Input Gem
Receiving Inputs in a C++ Component
Source Code
Chapter 18. Character Movement
Introduction
PhysX Character Controller
Moving the Character
Source Code
Chapter 19. Turning using Mouse Input
Introduction
Customizing Input Event Groups
Mouse Input
Source Code
Part VIII. Building Environment
Chapter 20. Adding Physics to the World
Introduction
Create a Soccer Field
Add a Static Mesh Collider
Add a Soccer Ball
Summary
Chapter 21. Introduction to Materials and Lights
Introduction
Materials
Spot Lights
Disk Lights and Emissive Materials
Changing Base Color of a Material
Summary
Part IX. Building Game Play
Chapter 22. Introduction to User Interface
Introduction
Loading UI
Creating a Canvas in UI Editor
Drawing UI Canvas
Summary
Chapter 23. Interacting with UI in C++
Introduction
Physical Triggers
Sign up for Trigger Events
Receiving Updates in UI
Moving a Rigid Body
Summary
Chapter 24. Kicking the Ball
Introduction
The Root Cause of the Issue
Trigger Shape on the Chicken
Kicking Component
Mass versus Impulse
Source Code
Chapter 25. Introduction to Animation
Introduction to EMotionFX
Simple Motion Component
Anim Graph Component
Building an Animation Graph
Assign Preview Actor
Test Motions
Create a Motion Set
Anim Graph
Animation Blending
Parameters
Motion Adjustments
Assigning the Anim Graph
Driving Speed Parameter
Source Code
Chapter 26. Animation State Machine
Introduction
Adding Flapping Motion
Adding Celebration Blend Tree
Summary
Chapter 27. Script Canvas
Introduction
Behavior Context
Building a Canvas
Summary
Part X. Audio Effects (Wwise)
Chapter 28. Wwise for O3DE
Introduction
Installing Wwise
Building O3DE Installer with Wwise
Setting up a Wwise Project
Generating a Sound Bank
Summary
Chapter 29. Importing Wwise Project
Import to O3DE
Summary
Chapter 30. Introduction to Audio Components
Introduction
Audio Trigger Component
AudioTriggerComponentRequestBus
Audio Proxy Component
Audio Listener Component
Summary
Part XI. Multiplayer
Chapter 31. Setting Up Multiplayer
Introduction
Enabling Multiplayer Code Generation
Building Installer from Development Branch of O3DE
Summary
Chapter 32. Auto Components
Introduction
Code Generation
Components and Controllers
Overriding Components and Controllers
Creating Your Own Controllers
Overriding Components
Summary
Chapter 33. Multiplayer in the Editor
Introduction
Editor Server
Multiplayer Components in the Level
Summary
Chapter 34. Simple Player Spawner
Introduction
Design
Chicken Notification Bus
Chicken Component
Chicken Spawn Component
Creating Player Prefab
Summary
Chapter 35. Multiplayer Input Controls
Introduction
Chicken Movement Component
XML Definition
Component Relation
Archetype Property
Network Input
Create Input
Process Input
What is Find Component Input?
Summary
Chapter 36. Multiplayer Physics
Introduction
Network Ball
Network Property
Multiplayer Goal Detector
Team as an Archetype Property
Score
Generate Event Bindings
Entity Changes
Summary
Chapter 37. Removal and Spawning
Introduction
Ball Component
Ball Spawner Component
Removing Network Entities
Spawning Network Entities
Entity Changes
Summary
Chapter 38. Multiplayer Animation
Introduction
Changes to Chicken Movement Component
Chicken Animation Component
Listening for Velocity Changes
Entity Changes
Summary
Chapter 39. Team Spawner
Introduction
Adding Team Value
Adding More Chickens
Create a Team Chicken Prefab
Changes to Chicken Component
Changes to Chicken Spawn Component
Summary
Chapter 40. Multiplayer Camera
Introduction
Autonomous Controllers
Chicken Camera Component
Entity Changes
Summary
Index
Copyright
Title Page
Dedication
Contents
Chapter 1: ‘I’m thinking’ – Oh, but are you?
Chapter 2: Renegade perception
Chapter 3: The Pushbacker sting
Chapter 4: ‘Covid’: The calculated catastrophe
Chapter 5: There is no ‘virus’
Chapter 6: Sequence of deceit
Chapter 7: War on your mind
Chapter 8: ‘Reframing’ insanity
Chapter 9: We must have it? So what is it?
Chapter 10: Human 2.0
Chapter 11: Who controls the Cult?
Chapter 12: Escaping Wetiko
Postscript
Appendix: Cowan-Kaufman-Morell Statement on Virus Isolation
Bibliography
Index
📜 SIMILAR VOLUMES
A full-blown game engine is now an important industrial asset. Current engines exist with licensing fees of several $100,000, plus profit share costs. Because of these high costs, hobbyist game programmers are eager to learn how to write their own engines. The availability of a game engine which is
Developing your own 3D game engine can be a demanding task. If you?re up for the challenge, then "3D Game Engine Programming" is ready to take you through each step. All you need to begin is a working knowledge of C or C++and basic knowledge of the DirectX and Direct3D interfaces. With these skills
A full-blown game engine is now an important industrial asset. Current engines exist with licensing fees of several $100,000, plus profit share costs. Because of these high costs, hobbyist game programmers are eager to learn how to write their own engines. The availability of a game engine which is
<p><b>Learn how to use Unreal Engine 4 by building 3D and multiplayer games using Blueprints</b></p>Key Features<ul><li>Learn the fundamentals of Unreal Engine such as project templates, Blueprints, and C++</li><li>Learn to design games; use UMG to create menus and HUDs, and replication to create mu