move the dictionary to local storage rather than in the cloud
Right now, every time you want to play a word, the game queries the server to see if the move is valid. If you move the dictionary to local storage (like WWF), it can check immediately and not bog down the server.
This is something I’ve already been considering for a while. However, I plan to add dictionaries for a several new languages in coming updates. This would take up considerable space on users’ phones. Also, it’s not really that expensive to check the words server side.
I guess one option could be to not distribute the dictionaries with the game itself, but rather have the game download dictionaries from the server as needed and save them to the SD card. That’s yet another permission I need to add though :(
Derek Saddington commented
I like this idea too, load the working dictionary to the phone/tablet (with a simple check to see if it needs updating) then you could add the multi-player-on-one-device mode (or Pass n Play as EA Scrabble calls it) without having a network connection which would make playing out of network range (on a long plane flight for example) really easy. PLEASE
1. Is is easy to check if a local dictionary is valid, e.g. just compute a hash value. Hence, you can verífy that the players dictionaries are in sync. If a dictionary is updated, you can download the deltas, and then compute a new hash value to be checked with. 2. That you have a local dictionary does not imply that you need *all* languages to be stored. There is no reason to download support for languages you dont use. 3. What's the problem with accessing the SD card? Many other apps do that anyway.
I like this idea a lot, since I'm very often without an internet connection. It would be great to be able to make you move, and then have Wordfeud send it to the server when I get online again.
If players can consensually agree to overrule any dictionary none of the 'exotic' dictionaries would frustrate native players. Could be a temporary patch.
Eric Peterse commented
If a move is made it needs to be connected to the Internet anyway so checking the words then through the internet at the same time should technically make no difference. Also not having it local but on a server makes sure everyone has the same dictionary and the same words. If you make it local there will be discrepancies eventualy between players. Also more importantly your dictionaries for Dutch and Swedish are a MAJOR work in progress and need a LOT of updating. Maybe if they come close to anything resembling reasonable then you can consider local version,
Frank Laurijssens commented
Håkon, how large are the dictionaries? I programmed a Scrabble-like game in the early 1990's and a combined dictionary of OSPD and OSW (which were the official dictionaries back then) was around 1MB stored in a DAWG.
Why not set it up so we can download dictionary modules from the market? Or, select one language from the cloud to download for game play?
Have it be an option to either use the server dictionary, or download one at install time. If there are updates to the dictionary (or more available) indicate by the application update notifications.
I seem to have a LOT of "server unavailable" instances. If the dictionary is local, it's one LESS hit to the word feud server per play, per game. It's obviously not just MY hits that are making the server busy.
Avoid having the permission problem and just keep it as is
I strongly dislike this. As others have noted, it's only a problem if you're trying a bunch of word combinations and you have to wait between tries. The only time you should have a word kicked back is when you genuinely thought something was a word, or didn't see it annexed another letter or word from a different side.
Not to mention, the first thing I thought when I read this was that I could probably hack the user dictionary and collect all the words. I wouldn't, but it's really easy if you have a rooted phone. And encryption wouldn't be very effective, because you know what the first few word entries are, so that would take all of a day to decrypt.
Some of the below comments suggest the validation would be client side only. Obviously the words ultimately still be checked on the server side, too.
The main argument seems to be that most people try lots of words before getting a valid play, so a few seconds for each failed attempt adds up to a lot of time. The main flaw there is that you -shouldn't- be trying lots of words. If you were sitting at a scrabble board, you'd never even think of trying this, because you'd just lose your turn on the first challenge.
As for cutting server usage... well, server usage is cheap. Having a hackable dictionary isn't because then it ruins the game for everyone, and then people stop playing, and the dev -and- users lose. And your double-check workaround still only helps players who aren't playing the game the right way anyway.
And of course, the overhead of dictionary files. People with newer phones with more app space or the apps2SD option sometimes forget that some people are still using G1/Dreams or Magics that they've had for a while, and may be pretty full. Yea, dictionary files aren't huge, but every little bit counts.
Just my two cents, but as a dev myself, I'd never even -consider- putting dictionary files in local, no matter what 'safe' workarounds I dreamed up. Keeping the game hack/cheat free is one of the biggest challenges in most online games, and you can't sacrifice that.
This is unnecessary. The game requires online connectivity to play anyway, it might as well lookup words online. Please do not waste space on my phone, and don't add more permissions!
Seth W. Davis commented
I'm -1 on this as well. Having to ping a remote server not only slows down the "randomizing" of letters when a user is "looking" for a word instead of just playing a word (see @five12), but it also keeps a local file from being hacked (see @Jon).
I don't see a big benefit to moving it locally: when you play you need to hit the server anyway to tell your opponent what your play was. I don't find the lag "penalty" at all unfair for trying random combinations of letters in hopes of guessing a high-scoring play. (So it seems like it would be a lot of work to implement without much benefit.)
Ryan Cullen commented
if Håkon believes the servers are fine with the cloud dictionary, and is looking at adding more then I'm happy to keep them off the phone.
Håkon, I like your idea with not distributing the dictionaries with the game itself, but maybe when they first open the game, it asks them to choose a language, then downloads the associated dictionary.
The main thing that I get annoyed is that it takes two-three seconds each time I place tiles down before it even can tell me whether the play is valid or not.
Ryan Cullen commented
@jedichef22 this game cam already be stored on the Memory Card. By checking locally it allows the server breathing space from users trying, siul, siuz, sizu, siru, silu, silr, sirr, surr, siul, sirl, surl, siur, suir and finally giving up with sui
I think this would also make the app unnecessarily large. My droid's limited app storage space is already full (since most apps don't yet allow you to move to SD card). I'd prefer it stay in the cloud. The supposed benefits listed here don't entice me. If it has to go to the cloud eventually anyway, and if it has to check things twice, I don't see how it would save me significant time.
I disagree. This would cut the server usage significantly. From a dev's perspective, that's pretty attractive.
From a user's perspective, it would speed things up significantly, since the game doesn't have to query a remote server every time you attempt a play.