I finally made an AI!! I had a version of an AI shared previously, but it was as far from an actual AI as you could get... This one trains and is much better. I'm planning on eventually pitting two of these AI's together and seeing what they do (after they get good) SCROLL FOR INFO vvvvvvvvvvvvvvvvvvvvvvvvvv up arrow to completely reset (ONLY IF IT'S GONE) Down arrow to revert to best one! Space to see "special" section, IE: current math, storage Watch the AI play pong, it takes a LOOOOOOOOONG time to get good. Typically see results with good movement by generation 80-100. if on 5 second T.T. then should take 6ish minutes. I know the AI "Jiggles" but that's an issue with the lactic Acid simulator (prevents it from just going to the ball's y-pos forever) and don't know how to fix it. The Neural Network works like this: 4 measurements are taken: 1. Ball's current direction ( [D] on the grid) 2. Lactic acid % ( [%] on the grid) 3. Paddle Y-pos ( [Y] on the grid) 4. Ball X-pos ( [X] on the grid) (Note that the AI does not have access to the ball's Y-pos!!) Then these values are multiplied by the weights (thickness of the lines down below) the names are "Intake layer" for the first 2 white ones And, "Layer 2" for the next ones (SO CREATIVE!!!) then it goes to the Output layer ( not pictured) if it "scores" more points than the one in storage, then the one in storage is deleted and a mutation can occur which will either make it better or worse, if instead it scores worse, then the one in storage is taken out, and mutated before going after the ball again. If you press [UP] or restart the project, the storage is filled with 0.5 in all locations. Training Time, or T.T. is the time that the AI spends training, longer just means you get a more accurate result, shorter just speeds up the rate at which it progresses, but that also can result in the score being random. Shorter is better for turbo mode as it's the one that allows for less time. The thickness of the lines represents the weight on that line, the thicker, the more important. The opacity of the nodes represents the output, the closer to opaque the closer to 1. Generation number means the amount of generations that have passed, 80-100 is best, past that, it starts "Frying it's brains", pretty self explanitory The value in the top left was just there so I could see if is better or worse than it's parent to judge improvement. Movement is quite random, it typically goes to a location, then jitters, I think that this is because of the Lactic acid inside which is supposed to slow it down if it moves to fast, essentially there to reward it for conserving energy. but it's broken so I have no clue what the jitters are from.