JEDI FIGHTER beta 2 was released late January to much success and acclaim. It even hit #2 on the moddb top 100 for one day! Thanks to all of those who downloaded it and helped spread the word.
And a special thanks to moddb for hosting it and putting it on the front page. We modders really appreciate having moddb as a launch platform for our creations!
JEDI FIGHTER beta 3 is in development and will have improved AI!
Tentative release in April! No more randomly jumping bots! Yay!
What is the AI going to be and why?
The main objectives with the AI are to:
- create a compelling opponent that isn't entirely predictable,
- utilize the least amount of man hours in tuning the AI if the move set is modified,
- and polish my skills in machine learning.
The general approach for the AI is going to be using one multi-layer perceptron (MLP, a type of neural network) per fighter. Basically, an MLP takes inputs, processes them, and produces outputs based on how it has been trained to respond to inputs. The outputs will be a set of numbers from 0 to 1, where there will be one number per move or block. The number with the highest value will correspond to the move that gets chosen. Since each fighter has different moves, there will be one MLP per fighter.
I chose MLPs because:
- they can be trained to be a little unpredictable (more on this later)
- if training data could be automatically generated, then they could be retrained with little manual effort
- they are a type of machine learning
- and this is a practical implementation people have tried before successfully
For each major system in Jedi Fighter, I try come up with a few concepts and will choose between them based on feasibility, simplicity, and maintainability. This is usually done on paper OR through the implementation of minimum viable products (MVPs) where it's practical in my free time.
The AI is going to get a few MVPs to experiment with the key components of training and decision making. I'll be sharing updates on those MVPs as time allows.
Show me the video!
Neural networks use training data to optimize the network into generating the desired output for a range of input conditions.
This video shows the bots executing their moves randomly and sampling inputs (fighter and opponent health, position, and velocity) right before the move and immediately afterwards. The change in health (and other parameters) will be used to indicate the effectiveness of the move. This will be done many thousands of times per character to create a reasonably sized dataset to train the AI.
Three things evident from this experiment:
- Darth Vader is overpowered (has a few moves, where a high percentage of them are devastating) so things are inherently unbalanced
- Because Darth is overpowered and kept winning, he got many more training samples generated than the others, which means I need to ensure fairness in training set generation (i.e. equal number of samples used to train each fighter)
- Fighters occasionally get stuck on each other during spawning, so that will be addressed.
Stay tuned and download JEDI FIGHTER beta 2 while you wait!
JEDI FIGHTER beta 3 is coming in April!
For now, try out JEDI FIGHTER beta 2 and give me your feedback on the forums!
You'll need to install Jedi Academy, the OpenJK engine, and Jedi Fighter beta 2 to play.
Check out these installation instructions to get started.
- Unzip both Jedi Fighter beta 2 and the OpenJK engine to your Jedi Academy\gamedata directory.
- Right click on SETUP.BAT in the Jedi Academy\gamedata\jedifighter directory and choose "Run as Administrator".
Run JF_CLIENT_OJK.BAT in your Jedi Academy\gamedata\jedifighter directory to get started. Configure your controls, max out your video settings and resolution, and have fun!
If you have any issues, check out the detailed instructions in jedifighter\_README_.txt. If you still have problems, feel free to post in the forums.