I'm new to this, painfully so. So to start with, I just drew out what I thought Pong should look like with Area2D nodes.
My ADHD brain then decided to make a couple of sounds in jsfxr for hitting and missing the ball. Which, of course, implies that I have to make the ball! And so I made another Area2D node, this time with a circle CollisionShape.
Believe it or not this is where I already got lost. I realize, phenomenologically, what I need to get the ball and paddles to do. But how that actually works (in Godot and any other programming language) is precisely what I am trying to learn. Luckily, the folks at Godot themselves made a demo project linked in the documentation, which I could find here. Turns out there are a lot of demo projects on their github, so I'll probably browse those in the future when the going gets tough.
As you can expect, their scripts are pretty simple. But it was helpful to see where they went to solve it. I didn't copy their scripts exactly, but it did provide inspiration!
The demo project uses cool sprites for the different entities of the game, but I wanted to stay in Godot as much as possible and so I used the draw function. It took a longgg time to figure out how that worked, longer than I would care to admit, but eventually I managed it AND learned what a virtual function is along the way.
Things were pretty easy from here. There were a couple times I had no clue what was wrong, and I succumbed to the temptation to ask DeepSeek what the problem was. But, that did give great results (when it wasn't hallucinating) so I guess it worked out. I also found some funny workarounds for lining up collision shapes and draw shapes, so all in all I think this was a successful lesson in game development!
There is no AI on this, so the left paddle uses W and S while the right paddle uses Up and Down. But hey, for a first attempt at Pong I think it's decent enough!
You can play it here if you want!
Source code lives here if you are into that sort of thing.
--Cat :3