🎡

Game development

Preface

Prerequisites

Learning ethics

Introduction

What is 🎡Game development ?

Why does 🎡Game development matter to you?

Ecosystem

Standards, jobs, industry, roles, and research

Sprits

Story

FAQ

Worked examples

Texture Filtering

Key patterns

Game loop


AABB Collision detection

Alix-aligned bounding boxes

Gilbert–Johnson–Keerthi distance algorithm

Separated Axis Theroem

https://www.youtube.com/watch?v=dn0hUgsok9M

https://en.wikipedia.org/wiki/Hyperplane_separation_theorem

NO rotation.

https://en.wikipedia.org/wiki/Minkowski_Portal_Refinement

https://cse442-17f.github.io/Gilbert-Johnson-Keerthi-Distance-Algorithm/

https://en.wikipedia.org/wiki/Gilbert–Johnson–Keerthi_distance_algorithm

Animation is illusion

Exercises and Projects

Summary

Key decisions

FAQ

Reference Notes

Memory efficient examples in Shesez, Boundary Break

https://www.youtube.com/watch?v=rUFouSgVZ5Y

Game engines

Fixtures

Shapes have densities, frictional characteristics, restitution,

User input

Event-driven arch

Mouse Input

State machines and State Stacks

Turn-based systems

GUIs

RPG mechanics

https://www.rpgmakerweb.com/

https://howtomakeanrpg.com/

Procedural generation

https://youtu.be/lfuGLaZ3khs?si=fk5HVPb6_S_b1jqd

https://youtu.be/wDD7c7IEFTQ?si=TLGO9qQ9DmI80Oi9

https://youtu.be/tfdXgiMwUBw

https://youtu.be/lfuGLaZ3khs?si=fk5HVPb6_S_b1jqd

https://youtu.be/wDD7c7IEFTQ?si=TLGO9qQ9DmI80Oi9

Display window

Stretch canvas_items

Objects

Node inheritance in Godot refers to creating new scenes that inherit from existing scenes, which allows you to extend and customize the functionality of base scenes.

_process, _ready, and _physics_process are essential functions within the lifecycle of a game object (Node). They are used to manage initialization, regular updates, and physics-related updates, respectively.

_process(delta)

The _process function is called every frame and is used to handle non-physics-related updates. This function is where you put code that needs to run continuously, such as checking for user input, updating animations, or handling game logic that doesn't depend on the physics engine.

_ready

The _ready function is called when the node and its children have entered the scene tree. It is used for initialization tasks that depend on the node being fully part of the scene, such as setting initial states, connecting signals, or accessing other nodes in the scene.

_physics_process(delta)

The _physics_process function is called at a fixed frequency (by default, 60 times per second) and is used for physics-related updates. This function is where you should handle code that involves the physics engine, such as applying forces, moving objects, or detecting collisions.

Design

https://www.youtube.com/playlist?list=PLhqJJNjsQ7KGk32ju5o_3JcZF1a7beP1d

How does Godot allow trigger events based on the collision, during the collision, and after the collision?

Nodes

CategoryNode NameDescription
SceneNodeBase class for all nodes.
Spatial3D game object.
Node2D2D game object.
CanvasItemBase class for all objects that can be drawn.
ControlControlBase class for all UI-related nodes.
ButtonButton UI element.
LabelDisplays text.
LineEditSingle-line text editor.
TextEditMulti-line text editor.
PanelPanel for grouping UI elements.
PhysicsPhysicsBodyBase class for physics bodies.
RigidBody3D physics body.
KinematicBody3D physics body that can be controlled via code.
StaticBody3D physics body that is static and immovable.
AreaDetection and influence zone.
CollisionShapeShape used for collision detection.
RayCastCasts a ray for collision detection.
2D PhysicsPhysicsBody2DBase class for 2D physics bodies.
RigidBody2D2D physics body.
KinematicBody2D2D physics body that can be controlled via code.
StaticBody2D2D physics body that is static and immovable.
Area2D2D detection and influence zone.
CollisionShape2DShape used for 2D collision detection.
RayCast2DCasts a ray for 2D collision detection.
RenderingMeshInstanceInstance of a 3D mesh.
LightBase class for all light types.
CameraCamera for rendering 3D scenes.
Sprite2D image display.
AnimatedSprite2D animated image display.
ParticleSystemParticle emitter for special effects.
AudioAudioStreamPlayerPlays audio streams.
AudioStreamPlayer2DPlays 2D positional audio streams.
AudioStreamPlayer3DPlays 3D positional audio streams.
NetworkingNetworkedMultiplayerPeerBase class for networking peers.
MultiplayerAPIHandles multiplayer sessions.
AnimationAnimationPlayerPlays animations created in the editor.
AnimationTreeControls complex animation blending.
ScriptingScriptBase class for all scripts.
GDScriptGodot's native scripting language.
VisualScriptVisual scripting system.
NativeScriptAllows using compiled languages for scripting.
GUIButtonUI button.
CheckBoxCheck box for boolean selection.
HBoxContainerHorizontal box container for arranging child elements.
VBoxContainerVertical box container for arranging child elements.
GridContainerGrid container for arranging child elements.
InputInputEventBase class for all input events.
InputEventKeyKeyboard event.
InputEventMouseButtonMouse button event.
InputEventScreenTouchScreen touch event.
InputEventJoypadButtonJoypad button event.
ResourcesResourceBase class for all resource types.
TextureBase class for all texture types.
ShaderCustom shader programs.
Mesh3D mesh resource.
MaterialDefines surface properties.
NavigationNavigationProvides navigation and pathfinding.
NavigationMeshMesh used for navigation.
NavigationAgentHandles navigation for characters.
3D NodesMeshInstanceInstance of a 3D mesh.
CameraCamera for rendering 3D scenes.
DirectionalLightLight emitting in a single direction.
OmniLightLight emitting in all directions.
SpotLightLight emitting in a cone shape.
2D NodesSprite2D image display.
Polygon2D2D polygon.
Line2D2D line.
NinePatchRect9-patch rectangle for scalable UI elements.

Animation

Tilemap

Tile collision

https://www.youtube.com/watch?v=sw-sErHBEk4&list=PLqohV6FqW2YzSxVcwLsaYavAgMN92dzGb&index=23

DawnBringer’s 32 color

https://lospec.com/palette-list/dawnbringer-32

Sprites

a sprite is a two-dimensional bitmap that is integrated into a larger scene, most often in a 2D video game.

Vector graphics

Full motion video

Top-down perspective

Side-scrolling game

2.5D, 3/4 perspective, and pseudo-3D

3D

pixel-art

https://discussions.unity.com/t/sprite-filtering-point-bilinear/90684

Parallax effect

https://www.youtube.com/watch?v=z9tBce8eFqE

https://en.wikipedia.org/wiki/Parallax_scrolling

https://en.wikipedia.org/wiki/Parallax

Assets

Marketing and business

https://www.youtube.com/watch?v=4R-lM8Q2zOg&list=PLqohV6FqW2YzSxVcwLsaYavAgMN92dzGb&index=20

Subsection

Subsubsection

Exercises and Projects

Summary

Key decisions

. You don’t have to self-fund.

FAQ

Reference Notes

Tutorials

Next steps

References

The Art of Game Design - Jesse Schell

A Theory of Fun for Game Design - Raph Koster

Game Design Workshop: A Playcentric Approach for Creating Innovative Games - Tracy Fullerton

Level Up!: The Guide to Great Video Game Design - Scott Rogers

Rules of Play: Game Design Fundamentals - Katie Salen and Eric Zimmerman

Reality is Broken - Jane McGonigal.

TODO