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

Rotating around ball in code and understanding light versus heavy decisions

17 of 65

17 of 65

Rotating around ball in code and understanding light versus heavy decisions

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.