forge of empires скрипт
FOE Utility
splat
Оруженосец
Остальные разделы закреплены к основному окну программы и могут быть открыты только в случае необходимости. Пользоваться разделами стало гораздо проще и удобнее.
Раздел «Вклады в ВС»
Раздел «Калькулятор попыток ЭГ и СО»
Будильник грабежей позволить вам не пропустить ваше очередное ограбление соседа.
Укажите # соседа и время напоминания, после чего добавьте его в список грабежей.
Для изменения уже существующего элемента в списке выделите его, укажите следующее время срабатывания и нажмите «Изменить».
Выбранный элемент также удаляется по соответствующей кнопке.
В указанное время вы получите оповещение нажав на которое откроется ваш браузер по умолчанию с ссылкой на игру.
Нажав кнопку «Назад» данный раздел программы сворачивается в трей и открывается основное меню.
Внимание. Напоминания работают только при включенной программе.
При вводе количества попыток ЭГ и СО значение медалей и монет рассчитываются автоматически. При обратном подсчете необходимо нажать кнопку обновления.
Скачать файлы можно по ссылке (обновлено 23.04.2021): https://dropmefiles.com/h71iN
Устанавливать ничего не требуется. Для запуска достаточно распаковать архив в любое место на ПК.
Предыдущую версию программы необходимо удалить! Вирусов нет!
Найденные ошибки, а так же ваши пожелания для дальнейшей разработки оставляйте в комментариях или на почту: foeutility@gmail.com
Всем спасибо! Ваши замечания и пожелания помогают учить и разбираться в материале.
MIP-ZmeY
Император
Вторая часть бесполезна тем фактом что дробными продажами замарачиваться редко кто из торговцев будет.
Да и если у Вас есть товар данной эпохи значит Вам проще наменять его чем покупать за сошки
Ну и собственно снова огрызок калькулятора, а именно в «сухом остатке» вычитание и сложение!
ИТОГ: люди в простом Экселе делают более понятные и функциональные вещи!
А подобного уровня программками мы с ребятами баловались еще в 2003-2005 годах (когда закончили начальные 4 года школьного обучения)
Чит на бриллианты FoE
Чит на бриллианты Forge of Empires – это тот самый способ, который ищут многие игроки FoE, позволяющий получить множество бриллиантов, не вкладывая денежных средств. Почему-то многие уверены, что если ввести на компьютере некий код или запустить скрипт, то количество бриллиантов в Forge of Empires увеличится само собой. На самом деле, такого никакого такого кода, конечно же, не существует, однако в игре есть множество способов получить бриллианты честным путем. В данной статье будут рассмотрены основные из них.
Что такое бриллианты в FoE
Бриллианты – это особый ресурс, позволяющий упростить различные задачи в игре, например, вы можете:
Способы заработка бриллиантов в Forge of Empires
140 рублей за 110 бриллиантов (доступно при оплате через SMS).
Прежде чем перейти к остальным способам получить бриллианты в Forge of Empires, необходимо сделать небольшое отступление и рассказать об одной особенности игры. Дело в том, что в FoE можно развиваться на нескольких серверах, причем, на каждом из них у вас будет отдельный город со своими технологиями, ресурсами и Великими строениями. Однако если количество монет, «молотков» и товаров на разных серверах абсолютно не связано друг с другом, бриллиантовый счет всегда будет единым, что позволяет создавать в FoE дополнительные миры, которые будут использоваться для заработка бриллиантов для основного города. Такие «допы» получили название брюлефермы.
Таким образом, используя перечисленные ниже способы на нескольких серверах, вы получаете возможность зарабатывать большее количество бриллиантов для основного мира.
Все полученные бриллианты можно использовать на любом сервере, тогда как монеты, молотки и товары будут доступны только в том мире, где вы выполнили задание.
Для увеличения числа бриллиантов, получаемых таким способом, очень важное значение имеет Великое строение Шато-Фронтенак (или просто Шато). Оно увеличивает получаемую награду на определенное количество процентов, в зависимости от уровня. Так на 20 уровне ВС увеличивает получаемую награду вдвое.
Вероятность получения бриллиантов в сундуках такова:
Обычно именно из таких зданий и создаются так называемые брюлефермы – своего рода чит на бриллианты в Forge of Empires. Если вы хоть раз заходили в город игрока, где нет практически ничего, кроме множества колодцев желаний, вы знаете, как выглядит ферма для фарма бриллиантов. Подробнее ее создание мы рассмотрим ниже.
Некоторые игроки «приглашают» по ссылке самих себя и развивают собственных мультов. Однако, в отличие от некоторых браузерных игр, разработчики Forge of Empires относятся к мультоводству крайне негативно, и в какой-то момент вы будете забанены.
Не чит на бриллианты, а создание брюлефермы в FoE!
Брюлеферма – это основной способ фарма бриллиантов в Forge of Empires, причем, абсолютно легальный и одобряемый разработчиками, не возражающими против того, чтобы игроки развивались в разных мирах, но тратили премиальный ресурс только в основном.
Брюлеферма – это город, созданный в дополнение к основному и заточенный под добычу бриллиантов одним из способов, названных выше.
Наиболее удобный способ добычи бриллиантов – это постоянный сбор с вышеназванных строений (колодец, фонтан молодости и лабиринт из живой изгороди). Хотя вероятность «выбить» с них бриллианты составляет всего 1%, если установить в городе несколько десятков таких зданий, то шанс на их получение заметно увеличится. Поэтому основной задачей при создании брюлефермы является установка в ней множества колодцев и фонтанов молодости.
Строения, с которых можно получить бриллианты, выдаются игрой во время различных ивентов. Однако создавать новый мир во время необходимо заблаговременно (хотя бы за месяц) до начала события, иначе вы просто не сможете выполнить многие квесты: например, у вас не хватит монет, чтобы купить сошки, в таверне не будет серебра, чтобы активировать усиление, а армия окажется слишком слаба, чтобы пройти точки в экспедиции.
Вашей целью при прохождении ивента должно быть только получение колодцев, ни на какие другие призы отвлекаться не надо. И уж, конечно, не нужно тратить на выполнение квестов бриллианты (например, на ускорение производства или разведывания провинций), иначе получится парадокс: создали город, чтобы зарабатывать бриллианты и там же их потратили.
После того, как вы получите первые 2-3 колодца, можно сказать, что ваша брюлеферма начала свою работу. Теперь вы можете заходить в свой дополнительный город раз в сутки и собирать то, что произведут колодцы.
Для увеличения наград за квесты следует поставить такое Великое строение как Шато-Фронтенак, оно уже было упомянуто выше. Это ВС относится к эпохе Прогрессивизма, поэтому товары для его возведения понадобится купить у кого-то из топовых игроков. Искать продавца можно в глобальном чате. Желательно найти того, кто предложит товар в обмен на СО для вклада в тоже Шато, чтобы получить и товар, и чертежи ВС одновременно.
Строить или нет другие Великие Строения, смотрите по обстоятельствам – наличию чертежей, места в городе. Если вы планируете зарабатывать бриллианты не только с квестов, но и с прохождения экспедиций, ставьте ВС с бонусом к атаке – Зевс, Ахенский собор и Кастель. Особое внимание следует обратить на Зевса, так как собрать чертежи на него достаточно просто. Кастель, помимо прибавки к атаке дает определенное количество СО в сутки, однако набирать для него чертежи несколько сложнее.
Для товара, который может понадобиться для открытия некоторых технологий или квестов в ивенте, поставьте Вавилонскую башню (Бронзовый век, очень легко собрать чертежи) или Собор Святого Марка. Это гораздо удобнее, нежели множество промышленных строений, которые, к тому же, можно ограбить.
То, как часто вы будете апать эпоху, решайте сами. Чем выше эпоха, тем опаснее (опытнее и активнее) там соседи и тем чаще вас будут грабить, заметив, что ваш мир не является основным. Сложнее становятся и круговые квесты, которые необходимо выполнять.
Вот пример брюлефермы из Железного века:
В настоящее время ивенты позволяют заменить квест на открытие новых технологий, а следовательно, переход в новый век, в случае если все науки у вас уже открыты, вложением большого количества товара в казну гильдии. Поэтому обязательно копите у себя товар – можно ставить его на суточное производство, чтобы строение было сложнее ограбить. Или прокачивайте Вавилонку и Марка, о которых было сказано выше.
Прокачивать брюлеферму можно в одиночку, но лучше все-таки вступить в гильдию. Это даст доступ к Экспедиции, а также позволит обменивать товар без траты стратегических очков. Очень важно подобрать гильдию, где нет особых требований к участникам, — налога на товары или обязательного прохождения всех уровней экспы. Таких гильдий много, находятся они чаще всего в самом низу рейтинга и позволяют вступать в них через автоприсоединение.
Конечно, такой способ фарма — это не полноценный чит на бриллианты в Forge of Empires, однако фармить определенное количество данного премиального ресурса она вполне позволяет. А то, сколько бриллиантов можно заработать таким образом, зависит только от вас.
FOE informer
Бот для Forge of empires
Foe informer — это простая в работе программа, значительно облегчающая игру.
На данный момент существует две версии программы, «Architect» и «Autobot».
«Architect»- версия для гильдий, а точнее для того, кто в гильдии считает вклады в фундаменты ВС (Великих Строений). Позволяет за пару кликов увидеть, кто вложился в определенное ВС, а кто нет.
«Autobot»- бот для Forge of Empires, автоматизирует игровой процесс на время вашего отсутствия. ( программу вы используете на свой страх и риск. )
Кратко о возможностях
Видео с кратким описанием и демонстрацией «Autobot», «Architect»
Условия приобретения
Для приобретения данной программы вам нужно оплатить ее стоимость, в зависимости от версии, по средствам «Яндекс денег», отправить письмо на e-mail: foeinformer@gmail.com, в котором указать желаемую версию, реквизиты платежа, и свой ник в игре, к которому и будет привязана программа. Ник нужно указывать точно, самостоятельная смена ника в программе НЕВОЗМОЖНА. В течении 2-3 дней, ответным письмом, Вы получите ссылку для скачивания архива с программой.
Стоимость указана за программу, привязанную к ОДНОМУ аккаунту.
Версия «Architect»- 500р.
Версия «Autobot»- 1000р.
Номер яндекс кошелька: 410015011285869, визитка яндекс
Демоверсия.
Мы сделали демоверсию, полнофункциональную, но ограниченную по времени до 13.01.2018г. (обновлен 17.12.2017)
Обновления
Скачайте файл «update.dat», поместите его в папку с программой. Программа автоматически обновится при запуске. Файл «update.dat» после обновления пропадет.
Скриншоты
Контакты
Предложения по добавлению функционала, отзывы, пожелания и коменты, вы можете писать на e-mail, в группу ВК, на канале ютуба.
Программа Foe informer может делать за вас почти все и делать это круглосуточно, но она не заменит вам общения с другими игроками, приятных эмоций после ограбления соседа и захвата сектора на глобальной карте 🙂
Версия «Architect» не противоречит правилам игры, т.к. не дает никаких игровых преимуществ. Хотя зная не понаслышке о работе «уважаемых» админов, не стоит громко в чате кричать о ее использовании, для них слово «программа» как красная тряпка… хлебом не корми, дай забанить…
Версия «Autobot» не является читом. не добавит игровых или премиумных ресурсов, эта версия только автоматизирует игровой геймплей. Поэтому противоречит правилам игры и за ее использование, при условии, что вы об этом будете кричать налево и направо, можно получить перманентный бан 🙂
Х*ли и бан от Forge of Empires, поржем
Никого не оскорблял, никого не обижал, поведение было нормальным, за столько лет в игре
думаете меня с таким поведением не забанили бы? Прошу пересмотреть повторно, в случае
случайно ошибки прошу выписать бан тому кто жаловался за создание неудобств.
Вы нарушили §3 «Правил игры» : Запрещается употреблять мат (равно как и завуалированный)
«23:21:
С уважением, Ольга Комьюнити менеджер Команда Forge of Empires
что, чего, почему, зачем, с какой целью; какой смысл
что, что толку, нечего
а ты как думал, а вы как хотели, а вот так!, ну и что!
что, чего, какого чёрта
ещё бы, что тут скажешь, одно слово, иначе и быть не может, сам посуди, ясно; ясен пень
Берем Синонимы и начинаем подставлять, не ВЫДЕРГИВАЯ ИЗ КОНТЕКСТА!
23:21:
23:21:
23:21:
23:21:
23:21:
23:21:
23:21:
23:21:
23:21:
23:21:
23:21:
23:21:
23:21:
И где здесь мат или оскорбления? Это частица, также вопросительное слово; неизменяемое.
Фразеологизмы и устойчивые сочетания
даже разные корни. Встречаются также варианты написания и произношения: хуле, хуль, хуля.
Семантику и родство надеюсь расписывать не надо?
Вырезка со статьи 4 линк в яндексе:
Сейчас сленг молодёжи пополняется всё новыми и новыми словами и жаргонизмами,
например Хипстер, Битник, Хикка и т. д. Некоторые слова кардинально меняют свой смысл,
междометие, вводное слово, наречие, употребляется в качестве связки между словами, а
также являются заменой таких слов, как «что», «что же», «это надо понимать», «а как же»,
Т.Е, я получил БАН за междометие? Комьюнити менеджер Ольга мне долго вас учить
Я прекрасно знаю русский язык, поэтому даже не начинайте.
Ответ Вам был дан выше.
С уважением, Ольга Комьюнити менеджер Команда Forge of Empires
Новый Я этого не заметил. Тогда ответьте на такой вопрос: Кого я оскорбил и как? Но я так
понимаю тут бесполезно спорить.
Дубликаты не найдены
«Хули» это не оскорбление, но все же мат.
Так что как в анекдоте:
Подходит как-то индеец к своему вождю и жалуется:
— Hу почему у нас, индейцев, такие некрасивые имена? То ли дело у
Франсуа, Анри, Габриэль…
Вождь подумал и отвечает:
— Hу почему же, у нас, индейцев, тоже есть очень красивые имена:
Ну и правило бонусом:
Если «х*ли» не мат, хули ты его точкой маскируешь?
Хули ты нас паришь, дятел?>>>
Хулио он нам тут Иглесиас?
сначала играют в говноигры, потом срутся с комьюнити менеджерами Ольгами, потом я5утся в жеппы. подворачивают штаны и курют вейпы. кашмар.
Порочить, осуждать, бранить.
В малороссийском диалекте русского языка есть глагол «ховать», означает — прятать. От него образовано повелительное наклонение «хуй», по-русски означает — «прячь».
разбанили в итоге? не играешь совсем
Есть ещё такое слово:
Женский род СТАРИННОЕ
То, что порочит кого-что-н., осуждение, порицание.
Вот что говорит викисловарь:
Это полный П прикольная игра, над зайти поматерьтся
Милота-то какая
Битва взглядов перед поединком между чемпионом WBA, WBO, IBF и IBO в тяжелом весе Энтони Джошуа и Александром Усиком.
Бой Джошуа – Усик состоится в ночь на 26 сентября в Лондоне на стадионе «Тоттенхэма».
Director’s fixed anniversary supercut deluxe edition
Семья, просто неблагополучная
Печать
Не мог обучить
Пикабу противоречивый
Собеседование.
Forge of Empires из AS3 в Haxe. Постмортем
В комментариях к переводу доклада с HaxeUp Sessions 2020 Hamburg — Зимний отчет о состоянии Haxe — был задан вопрос о том, зачем нужен Haxe. На него, конечно же, ответили там же, в комментариях. Предлагаемый вашему вниманию перевод еще одного доклада с прошедшего HaxeUp должен, по моему мнению, стать дополнительным аргументом в защиту Haxe, т.к. данный доклад посвящен игре, заработавшей более 500 млн. евро.
Автор доклада Ненад — один из программистов InnoGames, работавших над конвертацией Forge of Empires из ActionScript в Haxe. 2 года назад в Амстердаме InnoGames рассказывали о своей работе в данном направлении. Сегодня же можно сказать, что им это удалось в полной мере — теперь обе версии веб-клиента (Flash и html5) собираются из единой кодовой базы на Haxe. И данный доклад является по сути обзором проделанной работы и принятых решений, как удачных, так и не очень.
Начнем с представления — кто такие InnoGames?
InnoGames — один из крупнейших разработчиков игр в Германии (г. Гамбург) со штатом более 400 человек. В настоящее время компания в основном занимается мобильными играми, но также продолжает поддержку и развитие браузерных игр, созданных ранее (у большинства их браузерных игр также есть и мобильные клиенты). В этом году доход компании за все время ее существования (lifetime revenue) достиг отметки в 1 млрд. евро.
Forge of Empires — это:
Как можно понять, Forge of Empires приносит существенную долю прибыли, и InnoGames не могли позволить ей умереть вместе с Flash. Таким образом, возникла необходимость создания html5-версии игры, которая работала бы не хуже Flash-версии.
Давайте рассмотрим удачные, по мнению компании, решения, принятые в ходе работы по созданию html5-клиента:
1. Для оценки возможностей и ограничений существующих технологий, а также для минимизации рисков в InnoGames приступили к прототипированию — созданию небольшой демонстрации, показывающей игровой город с анимированными зданиями, работающими tween-анимациями, работающим пользовательским интерфейсом и взаимодействием с бэкендом игры.
В рамках прототипирования было испробовано множество технологий, при этом не все из них позволили создать работающий прототип (например, CreateJS не подошел по причине слабой поддержки Flash API и проблем конвертации ActionScript-кода в JavaScript). До стадии работающего прототипа дошли только Egret и OpenFL — обе технологии соответствовали предъявляемым требованиям. Но в случае с Egret дополнительным минусом было то, что это проприетарная технология. Имеющийся в Egret конвертер кода не всегда выдает оптимальный код — в тех частях кода, которые конвертер не смог «понять», избыточно использовалась рефлексия. А так как код самого конвертера закрыт, то на его работу невозможно повлиять.
Случай Haxe и OpenFL — это совершенно другая история, т.к. это технологии с открытым кодом. Кроме того, на создание работающего прототипа на OpenFL потребовалось значительно меньше времени.
2. Управление проектом:
С самого начала перед нами стояли ясные цели:
У нас был хороший план:
В феврале 2018 была выпущена бета html5-клиента, в которую по своему желанию могли поиграть наши пользователи. Два месяца мы занимались сбором обратной связи и исправлением выявленных проблем.
В апреле html5-версия стала версией беты по-умолчанию.
Еще два месяца спустя мы добавили возможность выбора версии клиента пользователям, играющим в стабильную версию игры.
Затем в июле было проведено A/B тестирование, в ходе которого половине новых пользователей выдавался html5-клиент, а другой половине — flash-клиент. Тестирование показало хорошие результаты и в ноябре 2018 года html5-версия клиента стала использоваться по-умолчанию. И сейчас в html5-версию играет 85-86% всех пользователей.
3. Решение использовать технологии с открытым исходным кодом было одним из важнейших:
4. Что касается технической части, то крайне удачным решением было использование подхода mocked-компиляции, при которой каждый из классов компилируется изолированно от других.
Рассмотрим подробнее, что такое mocked-компиляция:
Исходный ActionScript-код подготавливается с помощью препарсера — из кода удаляется реализация методов, в нем остаются только публичные свойства и методы, таким образом получается mocked-код на ActionScript. Этот код затем конвертируется в Haxe-код (также без реализации методов). Полученный код компилируется и проверяется таким образом на наличие ошибок компиляции.
Затем то же самое делается с «нормальным» кодом (кодом, из которого не вырезана реализация методов). Для каждого из полученных Haxe-классов с реализацией методов выполняем следующее:
Такой подход дает очень хорошее представление об имеющихся ошибках (их количестве и важности) и помогает расставить приоритеты в составлении планов по исправлению найденных ошибок.
5. Аннотации — инструмент, который использовался в ActionScript-коде для того, чтобы «помочь» конвертеру в принятии решений:
Т.к. аннотации — это просто комментарии в исходном коде, то они никак не влияли на работу ActionScript-кода.
6. После того, как конвертер начал выдавать компилируемый без ошибок код, команда приступила к следующему этапу, цель которого — обеспечить возможность запуска игры. А для этого необходимы ассеты.
Для flash-версии использовались ассет-бандлы в формате swf, а также ATF-текстуры. Ни те, ни другие не подходили для использования в html5-версии. Поэтому возник вопрос: либо использовать отдельный набор ассетов для html5-версии, или же внести изменения во flash-клиент и использовать один набор ассетов для обеих версий клиента.
В итоге было принято решение в пользу второго варианта: все swf-бандлы были заменены на текстурные атласы, а в OpenFL была добавлена поддержка сжатых текстур.
7. Одно из неправильных решений (о котором чуть позже) привело в итоге к принятию правильного решения — использованию непрерывной конвертации, когда каждый коммит в репозиторий клиента автоматически запускал конвертацию проекта. Каждый Pull Request также компилировался под Flash и JavaScript.
В дополнение к этому, оба клиента проверялись с помощью UI-тестов.
Данные меры позволяли оперативно сравнивать качество работы html5-клиента и Flash-клиента.
8. Для внедрения зависимостей (dependency injection) в проекте используется фреймворк Robotlegs, который в свою очередь базируется на библиотеке swiftsuspenders. Для работы инжектора в swiftsuspenders необходима информация об используемых типах. Для получения данной информации в Haxe-версии изначально использовался метатег @:rtti — данный метатег сохраняет информацию о типе в xml-формате, который затем необходимо распарсить. Т.к. в коде проекта очень активно используется механизм внедрения зависимостей, то для html5-клиента данный подход работал недостаточно быстро (приходилось обрабатывать слишком много xml-строк уже во время исполнения программы). Для решения этой проблемы Даниил Коростелев создал инжектор, основанный на макросах: вместо метатега @:rtti используется интерфейс ITypeDescriptionAware — макрос, встретив класс, помеченный таким интерфейсом, сгенерирует для него метод, возвращающий описание типа (которое в свою очередь будет использоваться инжектором зависимостей). Таким образом, часть работы удалось перенести с этапа выполнения программы на этап ее компиляции.
9. Использование Canvas-элементов было сведено к минимуму, т.к. они сильно влияли на скорость работы клиента, особенно в случае Microsoft Edge — по этой причине все дальнейшие тесты скорости работы клиента теперь основывались на этом браузере (все остальные браузеры показывали лучшую производительность).
10. Было ли этого достаточно для обеспечения быстрой работы клиента? Нет, нужно было сделать еще что-то для его ускорения.
InnoGames пришлось добавить в OpenFL поддержку батчинга, когда несколько объектов, использующих одно и то же состояние WebGL, можно отрисовать в один drawcall.
11. Чтобы эффективнее использовать батчинг в форк OpenFL была добавлена поддержка текстурных атласов. Для этого был добавлен класс SubBitmapData — объект, представляющий собой только часть атласа (до этого нововведения атласы использовались совершенно неэффективно с точки зрения потребления памяти и оптимизации отрисовки — для каждого игрового объекта создавалась новая текстура!). Теперь, используя батчинг, стало возможным отрисовать весь игровой интерфейс в один drawcall.
12. Было ли этого достаточно? Конечно, нет!
html5-клиент продолжал работать недостаточно быстро. Для дальнейшего улучшения производительности было необходимо улучшить батчинг — следующей его итерацией стал мультитекстурный батчинг, способный отрисовать в один drawcall объекты с разными текстурами (количество текстур, которые можно использовать в рамках drawcall’а, зависит от видеокарты; получить его можно с помощью вызова метода gl.getParameter(gl.MAX_TEXTURE_IMAGE_UNITS) ). Данная оптимизация значительно снизила количество drawcall’ов. Подробнее о ней вы можете узнать из доклада Даниила Коростелева.
13. Было ли этого достаточно? И ответ — снова нет!
Наконец-то html5-клиент начал выдавать стабильные 60 кадров в секунду, но в Internet Explorer он работал не стабильно — часто происходила потеря webgl-контекста, после которой клиент не мог восстановиться. При этом, что важно, пользователи Internet Explorer приносят около 10% прибыли, поэтому «бросать» их нельзя!
Было принято решение выдавать пользователям Internet Explorer Flash-версию клиента.
Но используя текущий рабочий процесс, InnoGames не могли перейти на Haxe, т.к. Flash-клиент все еще собирался из ActionScript-кода, а html5-клиент — из Haxe-кода, полученного с помощью конвертера. При этом конвертер кода был оптимизирован только для генерации кода html5-клиента, форк OpenFL тоже был оптимизирован только для html5.
Да, в InnoGames могли продолжать использовать построенный ранее рабочий процесс (см. п. 4), но это, по их мнению, был бы тупиковый путь, разработка так и продолжалась бы на ActionScript. А полный переход на Haxe позволил бы значительно упростить процесс. В дополнение к этому следует заметить, что старый конвертер генерировал слишком «неудобоваримый» код.
Поэтому было принято решение о необходимости создания нового конвертера.
Новый конвертер позволил получить Haxe-код, который можно скомпилировать как во Flash, так и в JavaScript. Кроме того, полученный Haxe-код меньше использовал рефлексию и был лучше типизирован.
Еще одним плюсом нового конвертера было то, что он значительно упростил рабочий процесс — теперь для преобразования кода использовался только один инструмент.
Интересный момент: OpenFL используется только для компиляции html5-клиента, Flash-клиент собирается напрямую, без использования данной библиотеки.
Подробнее о новом конвертере можно узнать из еще одного доклада Даниила Коростелева с октябрьского HaxeUp.
14. И последний (но не по значению) пункт — полный переход на Haxe, произошедший примерно 2 месяца назад. Хотя кажется, что это должно быть очень просто (просто возьми и закоммить Haxe-код в репозиторий, да поменяй несколько расширений в IDE), но данный процесс занял некоторое время:
Это были удачные решения, а теперь давайте рассмотрим не самые удачные:
1. Был построен довольно сложный рабочий процесс (workflow) — использовалось 2 инструмента: препарсер и конвертер. При этом одни правила конвертации применялись в препарсере, а другие — в конвертере. Причина этого заключается в том, что изначально команда работала над препарсером и mocked-компиляцией, и только значительно позже приступила к работе над конвертером и его улучшениями.
Если команде пришлось бы заново приступить к конвертации проекта с ActionScript в Haxe, то все правила конвертации кода применялись бы только в одном инструменте (новый конвертер как раз реализует данный подход).
2. Второй момент — был выбран довольно сложный процесс управления изменениями в проекте. Для Haxe-кода был заведен отдельный репозиторий:
При этом часто возникали merge-конфликты, когда одновременно вносились изменения в код какого-либо класса на ActionScript и в develop-ветке Haxe-репозитория. Приходилось постоянно разрешать их вручную, кодовая база начинала «расходиться». Поэтому довольно скоро от такого подхода отказались и перешли к непрерывной автоматической конвертации кода.
3. И третий момент — команда изначально сфокусировалась на html5-версии клиента, поэтому созданный конвертер кода подходил только для нее. Но когда оказалось, что для поддержки Internet Explorer необходима Flash-версия, возникла необходимость разработки нового конвертера, иначе переход на Haxe оказался бы невозможным.
Поэтому если команде пришлось бы заново приступить к разработке конвертера, то он был бы как можно более кросс-платформенным.
Но теперь обе версии браузерного клиента Forge of Empires используют код на Haxe. Спасибо за внимание!