I think a key concept in language learning efficiency is simplicity. The greatest damage has been done to language learning by the complicated theories of the academic linguists. Once we get into terms like interlanguage, sociolinguists, phonemes, allophones, discourse analysis, speech acts, morphemes, and I do not know what else, we are getting far away from anything that will help the learner. Similarly I am not a fan of games and role playing. The introduction of the computer creates new opportunities to find new gimmicky approaches that distract the learner from the task.
What you need first of all is lots of real authentic language on subjects of interest to the learners. Then you let the learners listen to it and read it over and over, and help them systematically learn the words and phrases that they want to learn from these texts. You encourage them to write. You explain and provide feedback as they learn from the language. You talk to them on subjects of interest. You encourage them to go and meet the language wherever and whenever they can. Those who become autonomous motivated learners learn the language. The others never really do, wherever they study.