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
Procedural generation
https://youtu.be/lfuGLaZ3khs?si=fk5HVPb6_S_b1jqd
https://youtu.be/wDD7c7IEFTQ?si=TLGO9qQ9DmI80Oi9
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
Category | Node Name | Description |
Scene | Node | Base class for all nodes. |
Spatial | 3D game object. | |
Node2D | 2D game object. | |
CanvasItem | Base class for all objects that can be drawn. | |
Control | Control | Base class for all UI-related nodes. |
Button | Button UI element. | |
Label | Displays text. | |
LineEdit | Single-line text editor. | |
TextEdit | Multi-line text editor. | |
Panel | Panel for grouping UI elements. | |
Physics | PhysicsBody | Base class for physics bodies. |
RigidBody | 3D physics body. | |
KinematicBody | 3D physics body that can be controlled via code. | |
StaticBody | 3D physics body that is static and immovable. | |
Area | Detection and influence zone. | |
CollisionShape | Shape used for collision detection. | |
RayCast | Casts a ray for collision detection. | |
2D Physics | PhysicsBody2D | Base class for 2D physics bodies. |
RigidBody2D | 2D physics body. | |
KinematicBody2D | 2D physics body that can be controlled via code. | |
StaticBody2D | 2D physics body that is static and immovable. | |
Area2D | 2D detection and influence zone. | |
CollisionShape2D | Shape used for 2D collision detection. | |
RayCast2D | Casts a ray for 2D collision detection. | |
Rendering | MeshInstance | Instance of a 3D mesh. |
Light | Base class for all light types. | |
Camera | Camera for rendering 3D scenes. | |
Sprite | 2D image display. | |
AnimatedSprite | 2D animated image display. | |
ParticleSystem | Particle emitter for special effects. | |
Audio | AudioStreamPlayer | Plays audio streams. |
AudioStreamPlayer2D | Plays 2D positional audio streams. | |
AudioStreamPlayer3D | Plays 3D positional audio streams. | |
Networking | NetworkedMultiplayerPeer | Base class for networking peers. |
MultiplayerAPI | Handles multiplayer sessions. | |
Animation | AnimationPlayer | Plays animations created in the editor. |
AnimationTree | Controls complex animation blending. | |
Scripting | Script | Base class for all scripts. |
GDScript | Godot's native scripting language. | |
VisualScript | Visual scripting system. | |
NativeScript | Allows using compiled languages for scripting. | |
GUI | Button | UI button. |
CheckBox | Check box for boolean selection. | |
HBoxContainer | Horizontal box container for arranging child elements. | |
VBoxContainer | Vertical box container for arranging child elements. | |
GridContainer | Grid container for arranging child elements. | |
Input | InputEvent | Base class for all input events. |
InputEventKey | Keyboard event. | |
InputEventMouseButton | Mouse button event. | |
InputEventScreenTouch | Screen touch event. | |
InputEventJoypadButton | Joypad button event. | |
Resources | Resource | Base class for all resource types. |
Texture | Base class for all texture types. | |
Shader | Custom shader programs. | |
Mesh | 3D mesh resource. | |
Material | Defines surface properties. | |
Navigation | Navigation | Provides navigation and pathfinding. |
NavigationMesh | Mesh used for navigation. | |
NavigationAgent | Handles navigation for characters. | |
3D Nodes | MeshInstance | Instance of a 3D mesh. |
Camera | Camera for rendering 3D scenes. | |
DirectionalLight | Light emitting in a single direction. | |
OmniLight | Light emitting in all directions. | |
SpotLight | Light emitting in a cone shape. | |
2D Nodes | Sprite | 2D image display. |
Polygon2D | 2D polygon. | |
Line2D | 2D line. | |
NinePatchRect | 9-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
Parallax effect
https://www.youtube.com/watch?v=z9tBce8eFqE
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.
Citation
Cite | Tags |
---|---|
CS50's Introduction to Game Development 2018 | CS50Harvard |
https://gameprogrammingpatterns.com/ | |
Untitled |