Category: IT

Рзработка ИИ в играх

Очень интересная статья о том, как разрабатываются системы искусственного интеллекта (AI)  для современных компьютерных игр.
Читать здесь.

История одной досадной ошибки

Недавно наступл на грабли при разработке приложения в Adobe Flash. Спешу поделиться опытом.

Сделал во флэше алгоритм контроля коллизий объекта с многоугольниками, заданными вершинами в виде массива точек. Т.е. без использования мувиклипов и, соответственно, MovieClip.hitTest(). Все работает прекрасно. Но. С одним “но”:

объект, чьи движения ограничиваются картой коллизий (набор многоугольников) нет-нет, да периодически и залазит внутрь закрытых зон.

Долго чесал репу, оптимизировал движение, тестировал. По итогу пришел к одному простому выводу: Flash жестко округляет координаты объектов на сцене с точностью до 0.5, т.е., фактически, до половины пикселя.

Следующий пример дает хоршее представление о том, что происходит:

this.createEmptyMovieClip('foo', this.getNextHighestDepth());

for (var i = 0; i < 20; i++) {
    foo._x = i/100;
    trace(( i/100) + ” – ” + foo._x);
}

Вывод:

0 – 0
0.01 – 0
0.02 – 0
0.03 – 0
0.04 – 0
0.05 – 0.05
0.06 – 0.05
0.07 – 0.05
0.08 – 0.05
0.09 – 0.05
0.1 – 0.1
0.11 – 0.1
0.12 – 0.1
0.13 – 0.1
0.14 – 0.1
0.15 – 0.15
0.16 – 0.15
0.17 – 0.15
0.18 – 0.15
0.19 – 0.15Что и следовало доказать – округление.

Решение: в случае, если необходимо иметь точные значения координат объекта, не полагайтесь на свойства объекта – заведите собственные свойства (например, px для _x и py – для _y) и храните актуальные значения в них.

Спамеры-маразматики

Сегодня пришел спам:

Привет!

Решил заказать рассылку по всей Москве, посмотрим какой отклик будет.

>Здаров!
> Результат есть, звонки сегодня весь день с утра идут.
> Уже пара клиентов в офис приходили.

>> Привет!
>> Может еще заказжем у них рассылку?
>> Раз уже она окупилась!

>>> Привет!
>>> Обязательно закажем!
>>> Вот их контакты: Тел.:(xx) xxxxxxx, icq xxxxxxxx
>>>
>>> Только звони сейчас, а то у них очередь клиентов есть, чтобы пораньше рассылка прошла.

Одна вещь мне не понятна: они что, за дебилов нас держат? Или это работа спамером мозги в голове в говно превращает?

Flash ActionScript и сортировка массивов

Сегодня возникла необходимость быстрой сортировки массива в программе на ActionScript. Естественно, руки потянулись использовать стандартный Array.sort(), особенно, учитывая то, что по результатам сортировки массива мне необходимо сделать соответствующие перестановки MovieClip’ов по уровням z-индексирования, т.к. Array.sort() поддерживает пользовательскую функцию сравнения элементов.

Из-за природного недоверия решил сделать небольшой тест для встроенной функции сортировки класса Array. Результаты удивили. Оказалось, что стандартный метод использует пузырьковую сортировку. Печально. Ну да ладно. Пришлось сделать быструю сортировку (quick sort).

Continue reading »

«Интернет-премия «ТИБО-2008»

Не хочу много поливать какашками, ибо не люблю это дело, да и сам испачкаюсь, но слегка говешку все же брошу.

На ТИБО я не хожу давно, ибо человеку, работающему в области веб-разработок делать там просто нечего (читай – потеря времени). Теперь та же участь постигла и конкурс интернет-проектов, проводящийся под крышей ТИБО.

Итак,.. результаты конкурса:

Continue reading »

Отключаем Adobe Updater

У последних продуктов от Adobe (серия CS3+) есть нехорошая привычка – втихаря обновлять все приложения серии CS3, и выкачивать порядка 300Mb из Интернета, не предупреждая пользователя. Чтобы избавиться от этой заразы, можно поступить следующим образом.

Вариант 1.
Отключаем мастер обновлений (к слову, называется он Adobe Updater). Для этого запускаем продукт от Adobe (проверено на Adobe Acrobat Reader). В меню программы выбираем пункт “Help”, а в нем “Check for updates”. Появляется Adobe Updater и сразу начинаем качать, качать, качать… вот зараза. Жмем “Cancel” и выбираем вариант “stop and cancel all updates”. После этой операции Adobe Updater, по идее, не должен ничего самостоятельно, без приказа, качать.

Если все же хочется быть уверенным, что апдейтер от Adobe не съест 300Мб вашего трафика, можно поступить брутально:

Вариант 2.
Заходим в каталог “C:\Program Files\Common Files\Adobe\”, находим там каталог “Updater5″ (возможно, может быть “Updater6″ или “Updater4″ ;) и переименовываем каталог “Updater5″ во что-то другое. Например, “~Updater5 (при этом в момент переименования Adobe Updater не должен быть активен).
Все. Больше эта софтинка нас не побеспокоит. Даже если теперь кликнуть в любом приложении по ссылке “Check for updates”, просто ничего не происходит.

Чтобы вернуть Adobe Updater к жизни, достаточно вернуть каталогу с апдейтером прежнее имя.

Удар по спамерам

Наказание спамераНаконец-то, свершилось!

Елена Галан (далее – ЕГ), которая всех просто достала своими спамерскими нападками на популярном ресурсе МойКруг.ру, лишилась своего черного спамерского профиля.

Около двух с половиной месяцев назад я уже писал по этой теме. Тогда я просто попытался создать группу людей – противников спама от ЕГ. Но, видать, тема оказалась слишком юмористической и непопулярной, либо я выбрал слишком узкую группу. Возможно, стоило пойти по пути Паши Рудого и создать такой круг. Хотя, там успех совсем невелик.

Потом все как-то само собой затихло. Но 17 апреля ненавистная ЕГ опять решила пригласить меня в свой первый круг! Это убедило меня окончательно, что эна – злостный мерзкий спамер. Слегка поразмыслив, я понял, что ничего не удерживает меня от обоснованной жалобы на нее в администрацию МойКруг.ру. Что я и сделал…

Continue reading »

Порно-сайты против честных юзеров

Anti SpamВ процессе написания ТЗ для одного стартапа возникла интересная идея, как можно использовать изображения, которые будут копиться в архиве проекта для создания довольно интересной и необычной капчи.

Новую капчу планируется запустить вскоре после запуска проекта и дать возможность всем ее использовать бесплатно.
Но все еще есть опасения – даже учитывая все хитрости (также интересная статья здесь) и альтернативные варианты стандартной капче, все равно есть один способ ее взлома, который очень силен с точки зрения подхода.

Т.е. он концептуален и эффективне настолько, что противостоять ему не может ни одна капча.

Continue reading »

Краткость – сестра таланта

Сегодня в аське:

in: !!!
out: ?
in: ?
out: > !!!
?
in: [ссылка]
out: ok

А теперь перевожу:

in: !!!
out: что?
in: что “что?”?
out: вот это “!!!” – что?
in: “!!!” – это вот эта ссылка, которую ты мне прислал вчера [ссылка]
out: ааа… ясно

Вот что значит, оба давно в сети, да еще и работали вместе…
Еще немного и будем общаться мнемоническими кодами или вообще в бинарной системе ;)

Pizza development

Бытует мнение, что программисты не особо сильны в хозяйстве. Будучи уверенным, что так оно и есть, я решил помочь программистам всего Мира и решил начать делать это с примера кода для приготовления пиццы.

Сразу говорю: это не RC и даже не beta. Это, скорее, похоже на alpha-версию.

Примечание: фото для демонстрации делались с помощью телефона, т.ч. просьба не пинать ногами за качество…

Continue reading »