На самом деле, данная статья является продолжением данного топика: Анализ памяти для Android приложений. Всем, кто хочет изучить вопрос детально, будут рады под катом.
Светлов Александр @Mehalich
Пользователь
Задача нахождения максимума на отрезках фиксированной длины
3 min
37KПостановка задачи
Пусть дан массив A длины N, и дано число K ≤ N. Требуется найти максимум (минимум, сумма ...) в подотрезках длины K данного массива. Это частный случай задачи RMQ (Range Minimum Query — минимум на отрезке), но с дополнительными ограничениями — постоянная длина отрезка поиска. В данном решении задача не предполагает возможность изменения элементов массива.
+38
Предотвращение рекурсии и ленивые вычисления в Java
5 min
5.3KНе так давно, я написал небольшой класс для автоматического кэширования и обновления произвольных значений. Пользоваться им было очень легко — стоило лишь создать анонимный класс с перегруженным методом update, а потом, когда нужно, вызывать функции для пометки значения устаревшим и для получения самого значения:
+29
Поиск пути в гексагональной сетке (AS3)
2 min
14KЭта статья представляет собой описание компонента HexaPath, реализующего поиск пути по алгоритму А* в гексагональной сетке. В сети мной было найдено большое количество описаний алгоритма на примере квадратной сетки и некоторое количество реализаций, но ни одного упоминания о шестиугольной сетке. И я написал свою реализацию. Выкладываю исходники. Вдруг кому-нибудь понадобится это, а писать самому будет лень.
+80
Unity3d Tank Tutorial: Ходовая часть (Урок 1. Основы механики транспортного средства)
12 min
149KTutorial
Вступление
Итак вы уже не новички в Unity, вы умеете создавать сцену, расставлять объекты на сцене, создавать terrain, делать префабы и тд… и главное — работать со скриптами, либо вы уже изучили статьи: Unity3D для начинающих — Туториал 1 и Unity3d script basics. Все эти знания вам пригодятся ведь в этом уроке мы двинемся намного дальше.
А именно: в первой части этого урока вы узнаете что такое Wheel Collider, как с помощью него управлять транспортным средством и создать реалистичное поведение подвески автомобиля, во второй части урока, на основе всего этого я покажу как сделать ходовую часть танка с соответствующей физикой и контроллерами.
Собственно то что вы видите на изображении сверху (это будет результат данного урока) вы можете опробовать «вживую» прямо в браузере. Хотите сделать это сами? Тогда добро пожаловать под кат
+83
Физика на Flash. Создание Ragdoll в Nape на AS3
8 min
5.7KНадо было сделать физику на флеше, но с одним маленьким нюансом. Необходимо было на сцене отобразить порядка 10 — 15 регдолов (для не незнающих. Регдол — это кукла. Имитация человеческого тела). Попробовав реализовать подобное на распространенном Box2D, пришел к неутешительному выводу, что Box2D это не под силу сделать. Немного погуглив нашел относительно новый движок Nape (). Который и решил в общем данную проблему.
К своему удивлению не нашел на хабре упоминаний Nape и решил описать начало работы с ним.
Под катом, описание создание регдола и примеры для сравнения на Box2D и Nape, а так же исходники примера.
+2
Микро-фреймворк Robotlegs. Обзор способов инжекта
5 min
6.4KВведение
Robotlegs является MVC фреймворком для создания приложений на flash/flex. Данный фреймфорк базируется на библиотеке swiftsuspenders, в которой реализуются механизмы инжектирования с помощью метатега [Inject]. В гугле достаточно много материала по использованию данного фреймворка. Поэтому не буду останавливаться непосредственно на инжекте. Однако во всех статьях, которые мне попадались, описывался именно механизм инжекта, но объявлению инжектируемых классов отводилось слишком мало внимания. Именно способам объявления инжектируемых классов я бы и хотел посвятить данную статью.
+5
Что не так с наследованием? Разработка флэш-игр с использованием фреймворка PushButton Engine
3 min
2.1KСуществует не так много специализированных фреймворков, ускоряющих разработку флеш игр. Из тех что на слуху, можно отметить следующие:
Flixel
FlashPunk
Citrus Engine
PushButton Engine
Этим постом я хочу обратить внимание коллег-флешеров на перспективный опенсорсный движок под названием PushButton Engine. PBE уже успели представить на Adobe Max 2010 и разработать на нем #2 Top Facebook game 2010 по версии insidefacebook.com. Его используют для разработки игр такие компании как Zynga, Playdom, Hive7.
Разработчиками движка являются достаточно известные в геймдевелоперских кругах люди, создавшие такие игры как The Incredible Machines, Tribes, Torque и другие.
Предлагается любопытный компонентный подход к разработке, который, по заверениям авторов, гораздо удобнее и продуктивнее при разработке игр чем традиционный объектно-ориентированный.
+22
Так ли хорош cacheAsBitmap?
1 min
2.8KРанее я уже писал о быстродействии отрисовки во флэше и о cacheAsBitmap'е в частности.
Но сейчас передо мной встал конкретный вопрос — что быстрее — выставить cacheAsBitmap = true, или же перевести картинку в растр и загрузить ее как PNG. При условии, что картинка статична, но очень сильно нагружена разными градиентами и прочим.
Для решения вопроса я набросал небольшой тест.
Но сейчас передо мной встал конкретный вопрос — что быстрее — выставить cacheAsBitmap = true, или же перевести картинку в растр и загрузить ее как PNG. При условии, что картинка статична, но очень сильно нагружена разными градиентами и прочим.
Для решения вопроса я набросал небольшой тест.
+4
Обновление Alternativa3D 7.7.0
1 min
957Мы уже давно собирались реализовать динамическое освещение в Alternativa3D 7, но по разным причинам откладывали это. Больше всего мы боялись, что система освещения на уровне архитектуры движка сильно снизит общую производительность.
И, наконец, нам удалось найти эффективное решение! Теперь в Alternativa3D 7 для FlashPlayer 10 есть динамическое освещение. Также мы внесли некоторые улучшения в движок и исправили баги. Скачать Alternativa3D 7.7.0 можно с официального сайта.
И, наконец, нам удалось найти эффективное решение! Теперь в Alternativa3D 7 для FlashPlayer 10 есть динамическое освещение. Также мы внесли некоторые улучшения в движок и исправили баги. Скачать Alternativa3D 7.7.0 можно с официального сайта.
+18
Аппаратно ускоренная графика во Flash на Windows и Linux
2 min
1.9KВдогонку целой коллекции хабрастатей на тему выхода превью Molehill (низкоуровневое API Actionscript для вывода аппаратно ускоренной графики во flash-плеере) предлагаю вашему вниманию способ сборки/запуска этой радости на Windows и Linux (Ubuntu 10.10)
+40
OpenGL — это просто!
2 min
18KВ рамках «Недели разработки для Андроид» решил поделиться кое-чем из своего опыта.
Итак, за что мы любим эти маленькие шустрые гаджеты, живущие в наших карманах и сумках? Не ошибусь, если поставлю на первое место красивую разноцветную графику. В этом нет ничего постыдного — ведь даже мудрые вожди индейских племен готовы были на что угодно ради красивых стекляшек для своей скво.
Итак, нам просто до дрожи в руках хочется написать свою прекрасную шедевральную игру, готовую произвести революцию в умах геймеров. Вот только маленькая неприятность — попытка напрямую воспользоваться drawRGB() и иже с ними сразу обламывает все мечты, ибо подобным образом написанная игра сможет получить признание разве что в Эстонии, да и то если раунд закончится раньше, чем сядет батарейка.
Итак, за что мы любим эти маленькие шустрые гаджеты, живущие в наших карманах и сумках? Не ошибусь, если поставлю на первое место красивую разноцветную графику. В этом нет ничего постыдного — ведь даже мудрые вожди индейских племен готовы были на что угодно ради красивых стекляшек для своей скво.
Итак, нам просто до дрожи в руках хочется написать свою прекрасную шедевральную игру, готовую произвести революцию в умах геймеров. Вот только маленькая неприятность — попытка напрямую воспользоваться drawRGB() и иже с ними сразу обламывает все мечты, ибо подобным образом написанная игра сможет получить признание разве что в Эстонии, да и то если раунд закончится раньше, чем сядет батарейка.
+27
Паттерн проектирования «Команда» / «Command»
4 min
81KПочитать описание других паттернов.
Необходимо иметь эффективное представление запросов к некоторой системе, не обладая при этом знаниями ни об их природе ни о способах их обработки.
Существует по крайней мере три мотивации к использованию шаблона “Команда”:
Проблема
Необходимо иметь эффективное представление запросов к некоторой системе, не обладая при этом знаниями ни об их природе ни о способах их обработки.
Описание
Существует по крайней мере три мотивации к использованию шаблона “Команда”:
- инкапсулирование запроса в виде объекта для последующего протоколирования/логирования и т.п.
- наделение сущности “вызов метода объекта” свойствами самостоятельного объекта;
- объектно-ориентированный обратный вызов (callback);
+34
4X Games: в поисках икса пятого
9 min
14KСегодня мне бы хотелось коснуться достаточно специфического рода игр, относящихся к жанру глобальных стратегий или же 4X-игр, как их иногда называют. Но речь пойдет не только об оффлайн-играх и жанре в целом, но и о некоторых аспектах онлайн-представителей.
+25
Scala + Processing – интересный способ выучить новый язык
4 min
10KНедавно мне довелось на собственном опыте убедиться: чтобы научиться применять какие-то новые технологии, недостаточно прочитать пару книг по теме, потому что без практики теория мгновенно улетучивается из головы.
Но что можно сделать такого интересного на Scala? На самом деле, выбор не слишком большой. Я как-то придумал небольшую тулзу, неспешно написал ее, и «забил». А через несколько месяцев, к своему стыду, гуглил синтаксис «for loop»…
Я решил, что дальше так дело не пойдет, и нужно найти какие-то небольшие проектики на основные возможности языка. Тут мне и пригодился Processing. Скучные учебные проекты он любому новичку (вроде меня) поможет превратить в визуальные инсталляции. А дальше можно выбрать, что покопать углубленно — например, генерацию фракталов, рендеринг частиц или визуализацию данных.
Я переписал на Scala и выложил на GitHub парочку примеров. На скрине как раз один из них — MSA Fluids. Заинтересовавшихся прошу под кат.
Но что можно сделать такого интересного на Scala? На самом деле, выбор не слишком большой. Я как-то придумал небольшую тулзу, неспешно написал ее, и «забил». А через несколько месяцев, к своему стыду, гуглил синтаксис «for loop»…
Я решил, что дальше так дело не пойдет, и нужно найти какие-то небольшие проектики на основные возможности языка. Тут мне и пригодился Processing. Скучные учебные проекты он любому новичку (вроде меня) поможет превратить в визуальные инсталляции. А дальше можно выбрать, что покопать углубленно — например, генерацию фракталов, рендеринг частиц или визуализацию данных.
Я переписал на Scala и выложил на GitHub парочку примеров. На скрине как раз один из них — MSA Fluids. Заинтересовавшихся прошу под кат.
+52
Паттерн проектирования «Цепочка обязанностей» / «Chain of Responsibility»
5 min
43KПочитать описание других паттернов.
Эффективно и компактно реализовать механизм обработки потока событий/запросов/сообщений в системах с потенциально большим количеством обработчиков.
Модель событие/обработчик широко применяется в программных системах из различных областей. В основном, это — графический интерфейс пользователя, где события, генерируемые от действий пользователя различным образом обрабатываются элементами интерфейса. Нельзя так-же забывать про WinAPI, который сплошь и рядом реализует такую модель. В большинстве источников эта модель имеет название Event Loop.
Проблема
Эффективно и компактно реализовать механизм обработки потока событий/запросов/сообщений в системах с потенциально большим количеством обработчиков.
Описание
Модель событие/обработчик широко применяется в программных системах из различных областей. В основном, это — графический интерфейс пользователя, где события, генерируемые от действий пользователя различным образом обрабатываются элементами интерфейса. Нельзя так-же забывать про WinAPI, который сплошь и рядом реализует такую модель. В большинстве источников эта модель имеет название Event Loop.
+39
Двадцать вопросов, которые помогают разработать алгоритм
5 min
8KКак разработать алгоритм, решающий сложную задачу? Многие считают, что для этого нужно «испытать озарение», что процесс этот не вполне рационален и зависит от творческой силы или таланта.
На самом деле решение любой задачи сводится к сбору информации о наблюдаемом объекте. Причем этот принцип применим как для решения самых сложных научно-исследовательских задач, так и для решения прикладных задач. Работа изобретателя напоминает не столько работу волшебника, сколько путешествие первооткрывателя по неизведанной территории. Главное качество хорошего изобретателя – умение собирать информацию.
Если вы хотите решить сложную задачу, собирайте информацию в самых разных направлениях. Ответив на следующие 20 вопросов, вы легко выстроите план работы над задачей.
На самом деле решение любой задачи сводится к сбору информации о наблюдаемом объекте. Причем этот принцип применим как для решения самых сложных научно-исследовательских задач, так и для решения прикладных задач. Работа изобретателя напоминает не столько работу волшебника, сколько путешествие первооткрывателя по неизведанной территории. Главное качество хорошего изобретателя – умение собирать информацию.
Если вы хотите решить сложную задачу, собирайте информацию в самых разных направлениях. Ответив на следующие 20 вопросов, вы легко выстроите план работы над задачей.
+67
Кэширование в Google App Engine
4 min
1.5KКак вы уже знаете из предыдущей статьи, в App Engine есть множество способов хранения информации. Но многие из них весьма специфичны, и для повсеместного пользования подходят всего три: память инстанса, memcache и datastore.
Под катом вас ждёт изложение в цифрах и картинках, краткие рекомендации по кэшированию и исходные коды простого cacher'a и приложения для тестов.
Под катом вас ждёт изложение в цифрах и картинках, краткие рекомендации по кэшированию и исходные коды простого cacher'a и приложения для тестов.
+32
Unity3d script basics
13 min
110KTutorial
Предисловие
Эта статья будет посвящена новичкам в скриптовании Unity, но не совсем новичкам в синтаксисе JavaScript’а или любого другого подобного языка программирования. Тут надо маленько уточнить что JavaScript который использует Unity немного отличается от оригинального в пользу улучшенной поддержки ООП и называется соответственно Unity JavaScript. В нем например появились классы и их наследование, о чем не знают начинающие разработчики на Unity знакомые с объектно ориентированными возможностями оригинального JavaScript, поэтому отвергают его используя C# или Boo.
+41
GAE XMPP v.2 (Java SDK). Джаббер в GAE со второго подхода
2 min
973О выходе 1.4.2 версии SDK уже писали на Хабре, меня же интересуют именно изменения в второй версии XMPP API
Так же, напоминаю про топик о первой версии XMPP API.
Так же, напоминаю про топик о первой версии XMPP API.
+19
Information
- Rating
- Does not participate
- Location
- Таллин, Эстония, Эстония
- Date of birth
- Registered
- Activity