Automatic Wordfeud Playing Bot

Automatic Wordfeud Playing Bot
Introduction
We’ve chosen to work on the subject regarding an automatic wordfeud player.
Wordfeud is a scrabble game that can be played on smart phones and has become very
popular with people of all ages.
Problem Statement
The problems we’ll be facing during the development of this software is how the bot will actually
play the game. We want the bot to use a more sophisticated strategy for playing the game then
just placing the word that would currently give the player the most points.
Approach
There are several approaches to this such as just using brute force to find all possible word
combinations and picking the one that gives most amount of points. What we’ll be doing instead
is using some sort of algorithm to more efficiently find what words can be built and where.
We will then implement a bot that will at every move always chooses the word that gives the
most point. We will also implement a more advanced bot that will also consider some steps into
the future in a mini max fashion or a similar approach. We may have to do some research to
find out ways to make the algorithms fast enough to be able to look several steps into the future.
The two bots will then be compared against each other to see their different performance
characteristics (Time to make moves, memory usage and points/game) and how good they
are compared to each other. We will also try to estimate the time and space complexity of the
different algorithms and other relevant data.
References
Word construction methods:
http://en.wikipedia.org/wiki/Directed_acyclic_word_graph
http://en.wikipedia.org/wiki/GADDAG
Wordlists and rules:
http://dsso.se/download.html
http://wordfeud.com/wf/help/
Time Plan
1. Research the word feud protocol so that our bot can play automatically against another
wordfeud player (Automatically extract the information regarding the game tiles).
2. Research different ways to find what words can be built and where. Implement one or
more of the algorithms found.
3. Implement a greedy bot that only chooses the highest scoring word every turn.
4. Change the algorithm for choosing moves to take into account the probability of getting
different letters and words, so that the opponent’s counter moves can be evaluated.
5. Research if there is a way to only check for possible words in the places that have
changed, or that will change.
6. Implement an advanced bot that can calculate the best move in minimax fashion with a
given depth.
7. Compare the two bots to each other (Greedy simple bot and one more advanced) to see
the differences such as points/game, win/loss and such.
8. ( Possible if we get the chance we want to compare the bot against other similar bots
and see who wins )
// Fredric Ericsson
// Martin Berntsson