Godot 4 - 3D- Code Architecture Course in a Single Video - Fully Explained

Godot 4 - 3D- Code Architecture Course in a Single Video - Fully Explained

Tutemic via YouTube Direct link

Working with physics engine quirky properties to stop a ball:

46 of 65

46 of 65

Working with physics engine quirky properties to stop a ball:

Class Central Classrooms beta

YouTube videos curated by Class Central.

Classroom Contents

Godot 4 - 3D- Code Architecture Course in a Single Video - Fully Explained

Automatically move to the next video in the Classroom when playback concludes

  1. 1 Intro:
  2. 2 Importing assets and why pool?:
  3. 3 Setting up Billiard Table and import settings:
  4. 4 Reorganizing FileSystem structure:
  5. 5 Basic lighting and explaining 3D axes:
  6. 6 Setting up the Ball scene:
  7. 7 Auto-generating collision shapes versus making one manually:
  8. 8 Assigning material textures in the Inspector:
  9. 9 Assigning texture in the code:
  10. 10 Creating a unique material to fix shared references:
  11. 11 Deciding on how we should approach our gameplay system:
  12. 12 Setting up the play system and deciding on what script hits the ball:
  13. 13 Starting play system code with shooting the ball:
  14. 14 Aiming and stick system nodes 1 - fixing import orientation:
  15. 15 Aiming and stick system nodes 2 - positioning camera and stick:
  16. 16 Aiming and stick system nodes 3 - rotating around the ball:
  17. 17 Rotating around ball in code and understanding light versus heavy decisions
  18. 18 Organizing code with subroutines and hiding and fixing the mouse:
  19. 19 Aiming and stick system nodes 4 - manipulating nodes to optimize local space:
  20. 20 Moving stick within clamped positions in code:
  21. 21 Strongly typing, static typing, and the walrus operator:
  22. 22 Understanding basis to shoot the ball in the aim direction:
  23. 23 Using AnimationPlayer to tween stick shooting animation:
  24. 24 Hitting ball at the end of the animation:
  25. 25 Having variable starting animation key:
  26. 26 Communicating between different systems using custom signals:
  27. 27 Creating wall colliders for the playing surface:
  28. 28 Correcting bounce and deceleration with PhysicsMaterial and damping:
  29. 29 Implementing variable shot power using lerp:
  30. 30 Preventing wall clipping with physics step vs continuous collision detection:
  31. 31 Global values as class constants vs static variables vs object references:
  32. 32 Spawning balls and assigning respective textures in the code:
  33. 33 Procedurally spawning the balls in a triangular ball rack:
  34. 34 Using enumerators to establish ball types:
  35. 35 Setting a maximum y velocity to keep balls on the table surface:
  36. 36 Starting the gameplay finite state machine, booleans vs enums vs state pattern:
  37. 37 Deciding on way to check if all balls have stopped, for readability and scalability:
  38. 38 Establishing a readable, scalable system for processing the game rules:
  39. 39 Completing a player's turn with signals:
  40. 40 Considering which systems should set the play state:
  41. 41 Creating dynamic resources for sharing state instead of a global singleton:
  42. 42 Implementing the new game state resource to share state between systems:
  43. 43 Setting up the scene for table pockets:
  44. 44 Handling what happens when a ball has been potted by checking object identity:
  45. 45 Devising a cheat mode to make testing ball pocket rule test mechanics easier:
  46. 46 Working with physics engine quirky properties to stop a ball:
  47. 47 Setting up the HUD label nodes system and shared saved TextSettings:
  48. 48 Using a setter to emit whenever the play state has changed, and updating text:
  49. 49 Nested classes and subclasses to store what happened during a shot:
  50. 50 Setting up processing if a solid or stripes ball was potted during a shot:
  51. 51 Devising how to communicate which player is solids and which is stripes:
  52. 52 Forcing Godot to update to recognize new enum values
  53. 53 Checking and setting player suits while using some programming tricks:
  54. 54 Making rules process only under the correct state and with fresh occurrences:
  55. 55 Showing player suit in HUD by extracting the string names of the BallType enum:
  56. 56 Allowing player to keep their turn if they hit in a ball of their suit:
  57. 57 Setting up fouls and a placeholder for ball-in-hand mode, with basic debugging:
  58. 58 Tracking down and fixing a race condition by deferring a function call:
  59. 59 Using lambda functions to handle irregular cases of code execution:
  60. 60 Making ball hittable after going back on table, and forcing turn change on foul:
  61. 61 Devising simple and flexible way to keep track of balls remaining per player:
  62. 62 Setting up win condition by checking eight ball potting and balls remaining:
  63. 63 Handling game ended without bloating game state, and displaying result:
  64. 64 Fix bugs and wrap up game ran out of characters for timestamps:
  65. 65 Thank you!:

Never Stop Learning.

Get personalized course recommendations, track subjects and courses with reminders, and more.

Someone learning on their laptop while sitting on the floor.