-Video to Come-Hi all! It's been a while. As some of you might remember, I once wrote a Foraging bot that attained Grand Master with a little human help. About a year after that, I tried my hand at it again. This time my goal was to create a bot that needed no human intervention, and that never got stuck. That proved to be a huge pain in the ass. It was easy to get to where I was before, but hard to get farther. After about 2 months of on and off working on the bot, my development really slowed down. Since then, I've found it very hard to continue work on it. Between my job and school I have very little time. I hate to see a project sink without ever seeing any good use. Thankfully, open source exists.
Please expect updates to be mentioned in this thread and available on Github within the same day of announcement.
What is OpenForage?OpenForage is an unfinished foraging bot written in C++ that is freely available for everyone, and it's open source! The bot is currently Windows only unfortunately. That said, here is a list of things the bot does currently:
- Occasionally gets Incredibles and Excellents
- Set up for human-like mouse movement
- Stops HMM when user tries to move the mouse
- Tries to use A* to solve
- Selectively solves portions of the board
You might notice that I mention mouse movement but don't actually state it has it. That is because I am leaving that up to the people who want to use the bot for their own purposes. The bot is entirely undetected using my own mouse movement, and I want to continue developing using that code. I also don't want a bunch of people complaining that they built the bot and got banned. This doesn't mean there is nothing useful involving HMM however. The class declaration is there for you to use.
Goals of the ProjectThe idea behind open sourcing this foraging bot is so that everyone has a chance to learn something. I remember trying to break into this type of work and finding a very steep initial learning curve. I hope that by having the source code available it will help inspire people to write their own fun AI in the future!
The secondary goal behind this is for my own edification. There are a lot of really talented programmers on this forum and I know they can do a lot of what I do better than me. If these type of people ever find themselves bored, they are encouraged to branch the project and contribute!
Contribution RulesI highly encourage everyone who wants to to contribute, but there are a few design practices we should all try to follow:
- Unit test your methods
- Try to avoid temporary variables
- Document your work
Immediate ImprovementsAs mentioned this bot is not finished. Currently however, I want to focus on cleaning up the code available on the repository before starting to move closer to completion. Here are a few things I hope to add in the immediate future:
- Rollback to a point where the bot was in a very stable condition. This includes re-structuring of tree data structure and removal of current A* methods
- Documentation of functions
- Commenting of code
- Addition of Offline Foraging Puzzle for Bot Testing
Now, for a few current communal goals people may want to work on:
- Fixing A*. Current implementation does not work as expected and causes crashing.
- Fixing threading. Current implementation runs slower than non-threaded method.
How to UseThe bot is freely available on Github. In order to contribute just branch the project and start committing to your own branch. If you have changes you want merged to the master project, you can contact me here.
The bot can be downloaded from Github and built using Visual Studio. However, if you want it to work you'll have to put in a little elbow grease and either implement the HMM or take out the parts I left in. This is subject to change based on the reception of this project.
Get it Here
**Note to moderators: since the bot is open source I'm unsure if I need it verified. As such, feel free to take down the link and let me know. Additionally, this is an entirely separate project to the last Foraging bot I wrote in Java, both in code and goal. Therefore, I felt it deserved a separate thread. Please let me know if this is also unacceptable.