Как сделать игру по английскому
Любительский перевод игр: анатомия процесса, часть первая
Любительская локализация — явление, затронувшее многих игроманов, и порой даже сыгравшее не последнюю роль в формировании их интересов и отношения к игровой индустрии в целом. Наверное, благодаря тому, что оно издавна преследовало в основном благие цели, у большинства любителей интерактивных развлечений при его упоминании возникают преимущественно положительные ассоциации, а порой даже и ностальгические эмоции.
В прошлый раз я излагал свой взгляд на явления как любительской, так и официальной локализации. Поскольку нашлись люди, которым эта тема близка или интересна, а также не обошлось и без желающих побольше узнать о технических деталях процесса, то мне ничего не остаётся, как об этом рассказать, пусть и в несколько специфичном стиле.
На картинке изображён логотип российского ромхакинг-сообщества по версии проекта Russian Romhacking.
Перед прочтением
Прежде всего, хочу сказать, что я обозреваю только тот опыт, который я имел возможность наблюдать или практиковать лично. Так что далеко не факт, что все неофициальные локализаторы придерживались описанных ниже методик и уж тем более это касается упомянутого инструментария. В первую очередь я буду рассказывать о подходе, который применял сам. Я считаю, что он в достаточной степени показателен и выигрывает у многих других методик, практикуемых иными энтузиастами. Впрочем, понятие методики тут довольно расплывчато и у многих оная отсутствует вовсе.
На всякий случай упомяну и о том, что мои действия, на которых основывается весь описанный опыт, никогда не преследовали корыстных целей и не носили деструктивный характер. Всё это делалось, в первую очередь, ради самого процесса и саморазвития, и было просто моим хобби.
Честно говоря, я долго думал, как именно структурировать статью и что именно в неё включить — сперва я хотел рассказать не только о технических особенностях процесса, но и расписать суть социальной составляющей. Однако, в какой-то момент я поймал себя на мысли, что из-за обилия критики статья пригодна скорей для несколько другого места, нежели для Хабра — корить большинство непрофессионалов за проявление непрофессионализма и отсутствие стремления к совершенствованию техник несколько цинично.
В итоге я решил описать только техническую часть и только в общем виде — подробного описания с примерами хватило бы на десяток таких статей, а то и на очередную бесполезную книгу, так что пока отложим это в долгий ящик. Несмотря на это, статья даже в незавершённом виде получилась довольно большая, и я решил разбить её на несколько постов. Насколько она вышла интересной или полезной — судить вам.
Техническая сторона вопроса
Если углубляться в детали, то не существует одинаковой для всех случаев последовательности действий, которую необходимо выполнить, чтобы подготовить игру к переводу. Так же не существует универсальных методов, с помощью которых можно выполнить те или иные шаги. По сути это всегда импровизация, но всё же есть список задач, которые встречаются практически всегда.
Я постараюсь выделить наиболее часто возникающие и важные задачи, рассказав про каждую из них отдельно. В качестве платформы не будем рассматривать ничего конкретного — т.е. всё описанное ниже справедливо как для PC, так и для любой другой платформы — будь то любая из PlayStation, XBOX, да хоть Sega или Dendy (NES).
Поскольку в данном контексте большинство задач по реверс-инжинирингу можно решить средствами отладчика или дизассемблера, я буду упоминать о них только в отдельных случаях.
Определение кодировки текста
Казалось бы, вполне тривиальная задача — определить, в какой кодировке хранится текст. И в большинстве случаев это и правда не составляет труда, но и здесь мысль разработчиков не знает предела.
Далеко не всегда выводимый текст хранится именно как текст, чаще это просто набор индексов символов в шрифте, которые необходимо отобразить. Нередко их делают совместимыми или частично совместимыми с какой-либо кодировкой, преимущественно это первые 256 символов юникода. Как бы там ни было, всё равно надо установить точное соответствие между символами и их кодами. Впрочем, в современных играх всё чаще вместо индексов используют обыкновенные кодировки и сериализуют текст в форматы вроде XML — о производительности давно никто особо не задумывается.
Для представления кодировки используются «таблицы кодировки» — текстовые файлы, где в каждой строке некой последовательности байт сопоставлена определённая последовательность символов. Выглядит это примерно так:
Например, текст «Hero obtains Item!» был бы закодирован следующим образом: « 1E 20 20 6F 62 74 61 69 6E 73 20 1E 21 21 ». Однако, если оказывается, что полученная кодировка в достаточной мере совместима с какой-либо пригодной для использования кодировкой (скажем, с юникодом), то таблица в общем-то не нужна и этот шаг можно пропустить.
Самым распространённым способом определить кодировку и найти текст является так называемый «относительный поиск» (relative search). Суть его в том, что ищутся не какие-то абсолютные значения: критерием поиска служит разница между значениями искомой последовательности. Для этого достаточно взять какое-нибудь не слишком короткое слово, встречающееся в игре, и будут найдены все последовательности байт, в которых разница между элементами равна разнице между кодами символов исходного слова.
Например, для слова «WORLD» найдётся как последовательность «57 4F 52 4C 44», так и «77 6F 72 6C 64». Да хоть «13 0B 0E 08 00»! Найдя такие последовательности и убедившись, что это именно закодированное слово, мы может запросто составить таблицу кодировки. Самой известной программой, обладающей таким функционалом, является хекс-редактор Translhexion. Имеется и куча специализированных утилит вроде Search Relative. Да и многие из технически грамотных переводчиков писали для себя подобные утилиты.
Типичный случай: если сравнить данный скриншот с полотном шрифта, то видно, что найденная последовательность — это индексы символов в шрифте:
В целом, такая методика хоть и применима в подавляющем большинстве случаев, но без некоторых ухищрений действует далеко не всегда. Ведь никто не гарантирует, что коды символов в кодировке идут в том же порядке, что и буквы в алфавите.
Например, в переизданиях многих частей Final Fantasy для GameBoy Advance и Nintendo DS символы в шрифте отсортированы по частоте встречаемости, а для кодирования индексов используется способ, напоминающий UTF-8. Т.е. любой символ с кодом больше 0x7F кодируется двумя байтами, в то время как первые 128 символов кодируются всего одним:
Более суровый случай на моей памяти — это Final Fantasy: 20th Anniversary Edition для PlayStation Portable. Для каждой локации там существовал свой шрифт, свой текст и, как следствие, своя кодировка. Шрифт состоял только из встречаемых в тексте символов, которые так же были упорядочены по частоте встречаемости. Впору бы использовать нейронные сети для распознавания кодировки каждой локации, но благо хватило попиксельного сравнения масок прозрачности символов.
В этих случаях относительный поиск тоже подходит для решения задачи, но необходимо искать не по разнице между номерами букв, а по разнице между индексами их символов в шрифте. Т.е. можно просто записать последовательность индексов — это вполне сгодится для такого поиска.
Как и другие ресурсы, текст может быть запакован или зашифрован. В таком случае поиск среди данных игры поможет только в случаях, когда в запакованных или зашифрованных данных всё же присутствуют хотя бы обрывки слов (такое часто бывает при использовании алгоритмов вроде LZ77 или RLE). Поэтому выходом может быть поиск в дампе оперативной памяти. Возможность добычи дампа зависит от платформы, для которой делается перевод. Для эмулируемых консолей и PC трудностей быть не должно — есть куча средств для получения доступа к памяти игры. А вот в других случаях нужна возможность во время игры запустить на консоли необходимый код, для чего, как правило, консоль должна быть «взломана». Про методики разбора самих алгоритмов я расскажу в следующей статье.
Поиск указателей
Если данные хранятся в сериализованном виде, этот пункт можно смело пропускать. Если же ресурсы хранятся в исполняемом файле (что практически всегда верно для консолей, использующих картриджи) в готовом для использования виде, то, как правило, на каждый такой ресурс есть указатель. Естественно, текста это тоже касается. Тем более, чтобы стало возможным свободно модифицировать текст, надо найти все указатели и ссылки на каждую из изменяемых строк.
Забавно, что для ряда новичков понимание концепции указателей является одним из самых сложных препятствий в освоении искусства любительского перевода. Как правило, такие люди долгое время не утруждают себя технической стороной процесса и переводят текст так, чтобы он вмещался в длину оригинальной строки. Ещё более забавно то, что для совершенствования навыков многие из них в итоге осваивают программирование. Стоило бы это сделать в обратном порядке — и всё было бы гораздо проще. Хотя стоит заметить, что люди, ставшие полноценными IT-специалистами, часто уходят с этой сцены и начинают заниматься вещами посерьёзней.
Очень часто все указатели хранятся в едином месте, которое обычно называют «таблицей указателей» — оно представляет собой массив из указателей или элементов, их содержащих. В таких случаях игра обращается к строкам по индексам, по которым, в свою очередь, из такой таблицы берётся указатель. Тогда достаточно найти указатель на любую строку в блоке текста — и таблица найдена!
Но не всё так просто… вернее, не всегда всё так просто. Одна из сложностей, мешающих искать указатели, называется «разницей смещений». Дело в том, что указатель может быть не только абсолютным (указывающим на логический или физический адрес ресурса), но и относительным (указывающим на смещение относительно какого-то адреса). Или же, скажем, на старых дисковых консолях вроде PlayStation данные часто хранятся в подготовленном для загрузки в память виде — т.е. пока они лежат в файле, невозможно просто так вычислить, на что будет указывать указатель, не зная адреса, куда будет происходить загрузка.
Пока не известна разница смещений, нельзя однозначно вычислить указатель. Поэтому первым делом обычно проверяют наличие таблицы — для этого может помочь тот же самый относительный поиск. В качестве элементов искомой последовательности берутся расстояния между началами строк — разница между значениями указателей будет точно такой же. Если таблица не находится — поиск повторяют, перебирая возможные размеры указателей и возможные расстояния между ними (если помимо указателей в таблицах содержатся другие данные).
Однако, не всё коту масленица — некоторые игры обращаются к строке прямиком по указателю без использования таблиц. Тогда уже разницу вычисляют как могут: например, путём визуального анализа данных или с помощью дизассемблера. Есть ещё один «дедовский» способ: участки данных «поганят», подменяя байты, и смотрят, отразилось ли это как-нибудь на игре. Таким образом, сокращая диапазон поиска методом исключения, можно локализовать участок кода, отвечающий за вывод какой-либо строки, и найти указатель. Для таких целей даже существуют целые специализированные инструменты вроде Поганка или Visual Poganka.
Без использования таблиц указатели будут раскиданы по всему пространству кода в исполняемом файле, и порой далеко не в единичном экземпляре. Если текст складирован в одном месте, эту проблему можно решить, просканировав его и найдя все указатели на начало каждой строки. И в большинстве случаев это не составляет труда — из-за особенностей адресного пространства вероятность коллизии значения указателя с другим значением минимальна (например, память адресуется в диапазоне 0x08000000-0x09FFFFFF или секция данных начинается с адреса 0x00472000).
Но бывает и так, что память адресуется менее удачным для переводчика способом: например, начиная с нулевого адреса. И тогда коллизий уж точно не избежать… Придётся вручную проверять каждое значение, встречающееся более одного раза, на предмет того, является ли оно указателем или же данными с таким же значением. А если ещё и сам текст разбросан по файлу, то автоматизировать процесса поиска указателей можно разве что написав какой-нибудь скрипт или плагин к IDA Pro.
Так или иначе, терпение и труд всё перетрут. Достаточно найти указатели один раз и дальше с этой задачей можно не заморачиваться, переходя к следующему шагу.
Извлечение текста
Способ «выемки» текста по таблицам зависит от уровня организации переводчиков. Так, самые неорганизованные ребята (как правило, новички) вообще не заморачиваются и переводят текст прямо в хекс-редакторах. Чуть посерьёзней — используют для извлечения программы-всёделалки вроде PokePerevod или тот же Translhexion. Люди с более глубокими познаниями используют более специализированные средства автоматизации вроде Kruptar. Самые продвинутые специалисты обычно пишут для этого свои скрипты или инструменты, что и вовсе позволяет им контролировать процесс полностью.
В любом случае, в чаще всего процесс сводится к преобразованию потока байт в пригодный к чтению и редактированию вид, используя информацию о кодировках, бинарных тегах и применяемом игрой байткоде, если он имеет место быть.
Но вовсе не факт, что разработчики изначально хранили текст отдельно и в чистом виде. Очень часто он является лишь частью других данных — карт уровней, сценариев и т.п. Если кто-нибудь знаком с игровыми редакторами вроде TES Construction Set, то он поймёт, о чём речь. В таких случаях, поскольку текст хранится совместно с другими данными, необходимо «распарсить» их структуру и аккуратно извлечь текст и прочую необходимую информацию — например, иногда помимо текста необходимо изменять ещё и такие данные, как координаты его вывода и размеры диалоговых окон. Порой для этого пишутся целые редакторы, которые частично воспроизводят функционал средств, которыми пользовались разработчики.
В целом, к извлечению текста у меня свой подход. Начнём с того, что стандартный формат таблиц кодировки довольно прост и не покрывает все случаи. Например, иногда важно знать, какие последовательности байт служат для индикации конца текста, переноса строки или очистки экрана. Также в игре могут быть использованы, к примеру, коды разметки, где определённая часть битов выступает в качестве параметра. В таком случае пришлось бы записывать всё это дело примерно так:
Поэтому существует множество надстроек над этим форматом — я даже разрабатывал своё собственное расширение, которое позволяло описать даже коды разметки и прочие байты с параметрами, а также поддерживало директивы вроде include (удобно, когда есть таблицы для разных языков, но в них есть одинаковые элементы).
Рассмотрим пример таблицы в расширенном формате:
Несмотря на некоторую кашу в таблице, на выходе получался довольно опрятный для игрового скрипта текст:
Jenica: I’ve served in this castle for quite
some time. I looked after both Princess
Lenna and Princess Sarisa.
—
[Av-0]: Sarisa?
->
Jenica: Princess Lenna’s older sister.
Sarisa was sailing with her father when
a storm hit, and she was lost at sea.
О роли опрятности будет сказано чуть ниже, а сейчас рассмотрим проблему байткода. В некоторых играх используются даже свои скриптовые языки, и хорошо, если текст в них используется в качестве внешних ресурсов. Но порой всё же приходится разгребать мешанину из текста и кода.
Если невозможно отделить код от текста, то обычно для каждой инструкции придумывают мнемонику и форму записи исходя из её назначения. Составив базу с информацией о всех инструкциях, несложно написать транслятор. Но чтобы не писать такие вещи каждый раз, я придумал ещё одно расширение для таблицы кодировки.
Суть расширения в том, что для инструкций можно прямо в таблице записать битовые маски и идентификаторы, которые нужны для их определения и чтения параметров. А вместо простой последовательности символов можно использовать специальную строку, которая будет говорить о том, как форматировать и конвертировать текстовое представление инструкции обратно в байткод. Т.е. по таким таблицам можно было бы даже примитивно дизассемблировать исполняемые файлы.
Форма такой записи инструкции в таблице кодировки такова:
AdBlock похитил этот баннер, но баннеры не зубы — отрастут
Играем с пользой: как подтянуть английский при помощи GTA и WOW
Хотите прокачать свой английский до 80 lvl? Тогда читайте нашу статью, и вы узнаете, насколько эффективны игры в изучении английского языка, как World of Warcraft поможет вам улучшить знания и какие еще виды игр принесут вам пользу.
Как убедить вашу маму/жену, что вы учите английский, а не бездельничаете
Есть мнение, что игры — занятие для детей, а взрослые должны быть серьезными. Если кто-то упрекает вас в том, что вы целыми днями просиживаете за играми, скажите, что вы учите иностранные языке, а не развлекаетесь.
Наш совет работает только тогда, когда в игре вы выбираете английский язык. Кстати, бывает, что русская локализация не блещет качеством, поэтому у вас есть дополнительный стимул играть на английском, чтобы лучше понимать сюжет и погрузиться в игру.
Чтобы вас не беспокоили во время игры, приведите 6 аргументов в пользу изучения английского по играм.
При изучении иностранного языка важно иметь хорошую память, ведь надо запоминать новые слова, грамматические конструкции и т. д. Одновременно с этим нужно быть внимательным, чтобы не допускать ошибки, и уметь формулировать свои мысли. Почти любая игра развивает внимание, память, мышление, то есть улучшает способности, благодаря которым вы изучаете новый для себя язык. Кстати, в статье «Как улучшить память и внимание» вы найдете еще 10 советов по этой теме.
Life is more fun if you play games.
Жизнь более приятна, если вы играете в игры.
Какие жанры игр лучше всего подходят для изучения английского языка
Геймерам можно учить английский «не отходя от кассы», то есть не отрываясь от любимой игры. Мы решили рассказать вам о компьютерных играх, которые лучше всего подходят для изучения английского языка. Однако, если у вас уже есть любимое увлечение подобного плана, не стоит отказываться от него (да вы и не согласитесь это сделать). Практически в любой современной игре можно выбрать английский язык и учить фразы из диалогов героев, слова из меню и т. д.
Обратите внимание: игры из первого пункта вполне подойдут новичкам. Остальные виды компьютерных игр мы рекомендуем людям с уровнем английского не ниже среднего, так как вам нужно будет слушать и понимать английскую речь в быстром темпе или читать неадаптированные тексты с множеством незнакомых слов.
1. Игры на поиск предметов (Hidden Object Games)
Что это такое: Вам дают какое-то задание, для его выполнения вы посещаете различные локации, в которых нужно найти определенные предметы.
Оптимальный выбор для начинающих. Вам надо будет сопоставлять изображения со словами на английском языке, которые вы постепенно запомните.
Выбор редакции: Nancy Drew, Sherlock Holmes.
2. RPG (Role-Playing Game) или компьютерные ролевые игры
Что это такое: Игрок управляет персонажем с определенными характеристиками, выполняет различные задания, постепенно совершенствуя его умения. В итоге герой выполняет определенную глобальную миссию.
В таких играх довольно много текста, в некоторых случаях он еще и озвучен носителями языка. Вам надо будет или читать этот текст, или слушать его, тренируя навык восприятия английской речи на слух. Кроме того, в RPG есть диалоги, в которых надо выбрать определенный вариант ответа. Так как от вашего ответа зависит дальнейшее развитие сюжета, вы будете вчитываться в текст и разбираться в значении новых слов. Кстати, несомненный плюс RPG в том, что у вас есть время на вдумчивое чтение и работу со словарем: пока игра ждет вашего ответа, вопрос отображается на экране.
Выбор редакции: Серии игр The Witcher, Fallout, Dragon Age, The Elder Scrolls, Mass Effect.
3. MMO/ MMORPG (Massively Multiplayer Online)
Что это такое: MMO-игры представляют собой ролевые игры, в которых принимает участие большое количество игроков. Принимать в них участие может человек из любого уголка планеты. Когда вы выходите из игры, события в виртуальном мире продолжают развиваться под действием остальных игроков.
MMO-игры — самое полезное развлечение на английском языке. В игре участвуют игроки со всего мира, поэтому у вас будет шанс пообщаться с носителями языка. Таким образом можно преодолеть языковой барьер, ведь вы настолько будете увлечены игрой, что забудете о своих страхах и стеснении. Однако в некоторых играх игроков распределяют по серверным зонам, то есть если вы находитесь в России, то и играть будете с соотечественниками. Обращайте внимание, можно ли выбирать регион в конкретной игре.
У этого жанра есть только один большой недостаток — игры настолько увлекают игроков, что у геймеров больше ни на что не остается времени. Так что «дозируйте» время проведенное за компьютером, в конце концов не одними лишь играми жив человек и английский язык.
Выбор редакции: WOW (World of Warcraft), Guild Wars 2, Elder Scrolls Online, EVE, Star Wars: The Old Republic.
Video games ruined my life. Good thing I have two more.
Видеоигры разрушили мою жизнь. Хорошо, что у меня есть еще две в запасе.
4. Интерактивный фильм
Что это такое: В основном интерактивные фильмы состоят из диалогов героев игры и Quick Time Events, то есть сцен, в которых вам нужно очень быстро выполнить какое-то действие. Большую часть времени вы наблюдаете за развитием событий, а интерактив включает в себя только QTE и выбор ответов в диалогах.
Интерактивный фильм — неплохое подспорье для изучающих английский и людей, которым важен интересный сюжет, а не игра как таковая. В таких играх много диалогов, из которых вы сможете выучить интересные слова и фразы. Кроме того, вы будете слушать правильную английскую речь.
Выбор редакции: Until Dawn, Life is Strange, Beyond: Two Souls, Fahrenheit, Heavy Rain, The Walking Dead, Game of Thrones, другие игры по сериалам от Telltale.
5. Виртуальный мир Second Life
Что это такое: Игрок управляет жизнью героя. При этом игра не имеет четкой цели: вы просто создаете жизнь в виртуальном мире для своего героя.
В виртуальном мире можно неплохо подтянуть английский: вы можете общаться с другими игроками, что поможет вам «разговориться». Также вы будете переписываться в чате, то есть научитесь письменно формулировать свои мысли. Вы сможете значительно пополнить свой словарный запас, ведь для полноценного общения с игроками вам понадобится знать много слов. Поначалу вы будете искать их в словаре, а потом запомните и начнете употреблять на автомате. Second Life в последние годы широко используется для изучения языков и обучения. Например, Гарвардский и Оксфордский университеты используют Second Life в работе со студентами.
Выбор редакции: Second Life.
Опыт работы преподавателем: 6 лет
Опыт работы в Englex: 3 года
6. Action
Что это такое: Этот вид игр несколько отличается от остальных быстрым развитием сюжета, динамикой. Action ориентирован больше на игровую механику, а не сюжет. Вам нужно будет быстро принимать решения и реагировать на происходящее.
Action не столь полезная для изучения английского игра, так как в ней акцент делается все же на действия, а не слова. Однако вы будете слушать диалоги на английском языке в игре. Обратите внимание: как правило, в экшене они зачитываются довольно быстро и их нельзя остановить, зато почти всегда можно читать субтитры, если трудно воспринимать речь на слух.
Выбор редакции: Серии игр GTA, Assassin’s Creed, Tomb Raider, Uncharted.
7. Exploration game
Что это такое: Вы управляете героем, который свободно перемещается по определенной территории, изучает книги, журналы, письма и слушает диктора. Заданий здесь или мало, или вообще нет. В результате игрок разгадывает какую-то тайну или загадочную историю.
Этот жанр подходит людям, которые далеки от игр в принципе, но хотят попробовать изучать английский и развлекаться одновременно. Вам не нужно будет напрягаться, просто читайте тексты на английском, изучая новые слова, а также слушайте диктора и развивайте восприятие речи на слух.
Выбор редакции: Dear Esther, The Vanishing of Ethan Carter, Everybody’s Gone to the Rapture.
8. Обучающие игры
Самый полезный вид развлечений. Пусть вас не пугает слово «обучающие»: к счастью, многие игры для изучения английского языка довольно интересны и «затягивают» не хуже любимых компьютерных игр. Обучающие игры позволяют вам дополнительно повторить уже пройденный материал в игровой форме. То есть вы сможете проверить, насколько хорошо поняли определенную тему.
Смартфон всегда с вами? Почему бы не использовать его для изучения английского в игровой форме. Скачайте себе несколько приложений, учебных или обычных развлекательных на английском языке, и учите язык с их помощью.
Какие еще ресурсы можно использовать
Помимо самих развлечений вы также можете использовать для изучения английского следующие ресурсы, связанные с играми:
1. Видеоканалы с обзорами игр
Обзоры и рецензии к играм помогут вам выбрать развлечение на несколько ближайших вечеров и станут отличным материалом для совершенствования аудирования.
2. Видео в жанре Let’s play
Видеотрансляции прохождения игр — неплохой способ отдохнуть и подтянуть свой английский. Вы будете смотреть, как опытный геймер проходит игру и комментирует происходящее живым языком. Это хорошая тренировка аудирования.
Выбор редакции: PewDiePie, Twitch — интернет-телевидение для геймеров. Есть видеотрансляции игр, международных игровых конференций и киберспортивных чемпионатов.
3. Сайты для геймеров
Если вы увлекаетесь играми, то наверняка вам будет интересно почитать обзоры новинок, новости, рецензии, интервью с разработчиками и т. д. Вся эта информация в первую очередь публикуется на английском языке на зарубежных сайтах. Пользуйтесь этой возможностью: читайте статьи на английском языке, учите новые слова и будьте в курсе всех событий в мире геймеров.
Выбор редакции:
4. Настольные игры
Этот вид игр доступен только тем, у кого есть друзья, изучающие английский, ведь любая игра подразумевает наличие хотя бы одного партнера. Если вам повезло найти хорошую компанию, которая не прочь подтянуть свои знания английского в игровой форме, можем посоветовать два варианта развлечения-обучения:
У настольных игр на английском есть один существенный минус: ваши ошибки некому будет исправлять. Если вы будете говорить что-то неправильно, то даже не узнаете об этом. Зато подобные занятия помогают преодолеть психологические барьеры и «разговориться», ведь вы играете в непринужденной обстановке со знакомыми вам людьми.
Как видите, игры для изучения английского языка — простой и интересный прием. Если вы любите играть, обязательно попробуйте воспользоваться нашими рекомендациями и подтяните свои знания. Желаем вам только победы!