Привет! Не секрет, что существует множество программ для взлома игр и приложений. Способов взлома тоже много. Например, декомпиляция и модификация исходного кода (с последующей публикацией кастомных APK, к примеру, с бесконечной голдой и всеми платными покупками). Или самый универсальный способ — сканирование, фильтрация и редактирование значений в оперативной памяти. Как бороться с последним, расскажу под катом.
Привет! Имея за плечами довольно серьезный опыт разработки игр и приложений, я долгое время боялся браться за RPG. Я имею ввиду полноценную ролевую игру, а не казуальный кликер или айдлер (idle). Итак, я поделюсь с вами историей о том, как по-быстрому за 1 месяц сделать свою RPG, с блэкджеком и всем остальным.
Приветствую! Идея создать свой редактор пиксель-арта (обязательно с блэкджеком) появилась на отдыхе, когда мне уже совсем надоело бездельничать и захотелось позаниматься любимым делом (а я занимаюсь играми и приложениями). А ноутбук я с собой не взял. Сейчас Pixel Studio активно набирает популярность, а нескромный заголовок «Лучший мобильный редактор пиксель-арта» нужно оправдывать) Под катом расскажу о том, сколько, как и в чем разрабатываю, как публикую и продвигаю, как развивается приложение и какие планы на будущее.
Привет! В этой статье я поделюсь своим опытом локализации игр и приложений в Unity, а также расскажу о своем плагине Simple Localization, который доступен в Asse Store. Уровень статьи — Easy. Кода не будет вообще, он вам не пригодится.
Часто говорят, что Unity медленный. Но насколько? Я разрабатываю приложение Pixel Studio, это редактор пиксель-арта. Для него я написал свою реализацию формата GIF. Самая трудоемкая операция — кодирование GIF, а именно алгоритм сжатия LZW. Посмотрим, как с этим справится Unity.
Привет! Я делаю игры и ассеты на Unity. Начинающие разработчики иногда спрашивают меня, с чего начать и насколько мощный компьютер им понадобится. Лично у меня железо довольно старое. И чтобы ускорить разработку, я решил наконец-таки провести апгрейд своего компьютера. С далекого 2011 года сердцем моего ПК является процессор Intel Core i5 2500K, но настала пора отправить его на пенсию. Но что лучше — высокая тактовая частота или наличие большого количества ядер? Обязательно ли покупать дорогой процессор, или получится сэкономить? Какая видеокарта нужна для разработки? Будем разбираться под катом!
Китайский рынок мобильных игр и приложений остается в значительной степени закрытым для остального мира. И не так давно Unity анонсировали сотрудничество с Xiaomi, призванное помочь разработчикам опубликовать свои игры с помощью сервисов Unity напрямую в Xiaomi Mi Game Center. А пока на официальном сайте висит табличка «Функция еще не включена, ждите новостей!», мы можем подготовить наш билд для Xiaomi. А если повезет, то и успешно опубликовать!
Добрый день! Я — инди-разработчик и автор игры Tap Tap Builder. В этой небольшой статье я поделюсь своим опытом и расскажу, как маленькая игра прокладывает себе путь в большой мир.
В копилке каждого инди-разработчика должен быть свой сити-билдер, может быть поэтому я решился «сконструировать» свой велосипед. Конечно же, с квадратными колесами и креслом-качалкой вместо седушки. Работаю я один, поэтому никаких дизайнеров, художников, и тем более моделлеров, в проекте нет. Кроме того, в общем-то, это моя первая игра с трехмерной графикой. Дабы не утруждать себя изучением продвинутых инструментов для создания трехмерных моделей, я решил все сделать своими руками и средствами игровой среды Unity. Там есть только примитивы, вроде кубов да цилиндров, а также возможность их раскрасить. Что ж, следовало запастись терпением и начать «творить», погрузившись в роль архитектора. Полезной информацией для начинающих инди-разработчиков может оказаться мой опыт работы с издателем, а также способы оптимизации игры.
Добрый день! Игры не являются основным родом моей деятельности, это скорее хобби. Статья может оказаться полезной начинающим indie-разработчикам, у которых, как и у меня, нет ни команды, ни знакомых художников, ни бюджета на фриланс и продвижение игры. Но что более важно, есть энтузиазм, время и хорошие идеи. Итак, кому интересно, прошу под кат!
Всем снова здравствуйте! Дошли руки написать крутую статью на весьма важную тему для разработчиков игр. Итак, поговорим о защите ваших драгоценных игр и приложений, которые вы пилите на Unity в надежде заработать на буханку хлеба, от взлома злобными школьниками. Почему школьниками? Потому что надежной на 100% защиты априори быть не может. И кто захочет, все равно взломает. Вопрос лишь в том, сколько времени и сил он на это потратит. И как любят шутить безопасники — терморектальный криптоанализ никто не отменял.
Итак, в статье я постараюсь максимально доступно рассказать о 3 аспектах (и конечно, предложу реализацию):
Рейтинг игроков (leaderboard, scores) для мобильной игры — вещь интересная и порой даже необходимая. В этой статье я расскажу о том, как добавить рейтинг игроков в приложение, созданное в Unity, т.к. в рунете информации об этом не так много. Кроме того, рейтинг будет кросплатформенный (android + iOS), однако без поддержки Windows Phone.
Привет! Моя статья может оказаться полезной начинающим разработчикам мобильных приложений. Итак, бессонные ночи позади, и ваше приложение отправилось в свободное плавание по просторам маркета. Вы потираете руки, наблюдая за увеличением количества установок. И количествов денег, которые начинают поступать на ваш счет. Казалось бы, самое время отдохнуть. Но нужно иметь ввиду, что ваше приложение — как захватившийся костер. Если отойти на 15 минут, он потухнет. Поэтому я хочу поделиться с вами своим опытом и дать 10 полезных советов.
Всем привет! Хочу поделиться с вами опытом и рассказать про публикацию игры на одном «малоизвестном» маркете — Samsung Apps.
Конечно, никому никогда не придет в голову мысль устанавливать оттуда приложения. Но! Я создал аккаунт (бесплатно!) и отправил игру. Через 2 недели пришел ответ, игру отклонили. Причина — в аттаче. Аттач не хилый такой — 40 метров. Скачал. Что же там?!
Html-отчет с тестами на 17! моделях самсунга — от мелких телефонов до планшетов. Все баги записаны с шагами воспроизведения, с картинками и видео! Я очень удивился, так как к QA имею прямое отношение. И хоть убейте, не понимаю, почему они это делают за бесплатно. Впрочем, ничто не мешает этим воспользоваться =)
Так что, если хотите за бесплатно протестировать вашу игру — пробуйте) Под катом несколько присланных фотографий и фрагмент html-отчета.
Привет, привет! Ну что же, пришло время заключительной части, в которой я приведу пример несложных тестов, написанных с применением врапперов из предыдущих частей статьи. Как и обещал, открываю публичный доступ к работающей версии фреймворка (см. ссылки).
Приветствую всех, кому предыдущие статьи оказались полезными или были просто интересны. В прошлой части мы разобрались с Selenium WebDriver, и теперь, перед тем, как приступать к написанию тестов, мы должны описать страницы тестируемого приложения. В превью перечислю основные моменты
Описания всех страниц будут находиться в отдельном проекте, я назвал его Autotests.WebPages
Для каждой страницы будет создан отдельный класс, располагающийся в отдельном файле
Названия классов будут совпадать с названиями web-страниц, например описание страницы MySite/Home/Help будет храниться в классе с названием Help
Структура расположения этих файлов иерархическая и будет повторять дерево web-страниц. Например, страница Help будет иметь путь Root\Home\Help.cs относительно проекта и располагаться в пространстве имен (namespace) Autotests.WebPages.Root.Home
Для доступа к страницам будет разработан некоторый фасад (Facade), статический класс Pages
На практике страницы могут иметь много общего, поэтому вполне логично использовать наследование и вынесение некоторого функционала в отдельные хелперы
Привет! В предыдущей части я описал основные проблемы, возникающие при работе с Selenium WebDriver, а так же привел пример обертки Browser. Вроде было не сложно, да?) Ну что ж, идем дальше. Надо разобраться с оставшимися проблемами:
Описание элемента происходит одновременно с его поиском, т.е. на момент определения элемента он должен существовать в браузере. Очень часто решается путем написания getter для каждого элемента. Это накладно и плохо с точки зрения производительности
ISearchContext.FindElements принимает только один параметр типа OpenQA.Selenium.By, т.е. мы не можем искать сразу по нескольким свойствам. Обычно элемент ищется по первому критерию, а затем начинается отсеивание по остальным
Отсутствие многих, казалось бы, очевидных методов и свойств. Например: Exist, SetText, Select, SetCheck, InnerHtml и т.д. Вместо этого мы вынуждены довольствоваться Click, SendKeys и Text
Множество проблем на различных браузерах, например на Firefox и Chrome элемент кликается, а на IE — нет. Приходится писать special cases, «костыли»
Производительность. Да, драйвера работают не быстро. Впереди планеты всей как обычно IE — поиск может занимать секунды, иногда и десятки секунд
В этой части мы будем писать wrapper WebElement, который целиком направлен на пользователя, т.е. на разработчиков автотестов. Признаюсь, что в момент его написания моя задача заключалась в создании «фреймворка», которым должны пользоваться инженеры по ручному тестированию для написания автотестов. Естественно предполагалось, что они имеют весьма скромные познания в программировании. Поэтому было совершенно не важно, сколько тонн кода будет в самом фреймворке и насколько он будет сложным внутри. Главное, чтобы снаружи он был прост как три буквы. Предупреждаю, будет много кода и мало картинок =)
Снова здравствуйте! Представляю вам вторую часть статьи на тему автоматизированного тестирования веб-приложения на Selenium и C#. И если первая часть была из разряда «капитан очевидность», что вызвало негодование у читателей, то в этой части будет много кода. И так, зачем же писать обертку (wrapper) над Selenium API? На мой взгляд, пользователи могут столкнуться со следующими проблемами:
Интерфейс IWebDriver предоставляет довольно скудную функциональность в плане управления браузером. Поэтому все, что нам понадобится, придется писать самим
Описание элемента происходит одновременно с его поиском, т.е. на момент определения элемента он должен существовать в браузере. Очень часто решается путем написания getter для каждого элемента. Это накладно и плохо с точки зрения производительности
ISearchContext.FindElements принимает только один параметр типа OpenQA.Selenium.By, т.е. мы не можем искать сразу по нескольким свойствам. Обычно элемент ищется по первому критерию, а затем начинается отсеивание по остальным
Отсутствие многих, казалось бы, очевидных методов и свойств. Например: Exist, SetText, Select, SetCheck, InnerHtml и т.д. Вместо этого мы вынуждены довольствоваться Click, SendKeys и Text
Множество проблем на различных браузерах, например на Firefox и Chrome элемент кликается, а на IE — нет. Приходится писать special cases, «костыли»
Производительность. Да, драйвера работают не быстро. Впереди планеты всей как обычно IE — поиск может занимать секунды, иногда и десятки секунд
Ну что ж, много проблем — много решений. Я не хочу и не смогу изложить все и сразу в этой части. Длинный пост будет неинтересен, да и во время его написания энтузиазм резко падает) Поэтому эта часть имеет номер 2.1, в ней я покажу свой wrapper над браузером.
Всем Buenos Dias! В своей статье я хотел бы максимально лаконично и просто рассказать о том, как построить процесс автоматизированного тестирования web-приложения с нуля. Первым делом нужно правильно расставить приоритеты и выбрать приемлемое соотношение цена/качество. Сразу определимся — это будет не решение «на коленках» из зоопарка скриптов, которыми часто пользуются при ручном тестировании. В тоже время мы не будем тратить много усилий на проектирование нашего «фреймворка» для автоматизации. Наша цель — предоставить результаты своей бурной деятельности перед руководством в максимально короткие сроки, при этом система должна быть:
максимально простой, чтобы тесты могли писать даже специалисты по ручному тестированию
гибкой и расширяемой, поскольку мы не можем адекватно оценить весь объем работ на данном этапе
кроссплатформенной (Selenium WebDriver C# поддерживает Firefox, Chrome и IE)
В своем примере я буду успользовать .NET (Microsoft Unit Testing Framework) и Selenium WebDriver C#.