Re: [ruFlash] Re: [offtop] Конкурс 25lines.com - определены финалисты

26 views
Skip to first unread message
Message has been deleted
Message has been deleted
Message has been deleted
Message has been deleted

Oleg Dolya

unread,
Dec 9, 2008, 4:36:40 AM12/9/08
to ruF...@googlegroups.com
А мне как раз нравятся конкурсы демок - искусство ради искусства :)

2008/12/9 Roma Oskolkov <r.osk...@gmail.com>
X-No-Archive: yes

Отчего-то дома у меня не открылась большая часть флешек. Но я был поражен ASCII игрой и проглосовал за неё.
А вот теперь увидел и LСD-экран, и твой, Даниил, кубик, и они тоже очень хороши.

Правда немного покоробило что все заявки это в основном демки.
А я с самого начала считал что суть конкурса именно в написании приложения от которого есть практическая польза.
Поэтому всё-таки игры ближе всего к цели.




Message has been deleted

Alexander "Pride" Budjakov

unread,
Dec 9, 2008, 4:53:23 AM12/9/08
to ruF...@googlegroups.com
из всех флешек открылись только 3 а ФФ и Опере.
зато все работает в ИЕ)


C уважением, Aлександр
_______________________________________
Alexander "Pride" Budjakov aka pride_conan
e-mail: pride...@gmail.com

Shaman

unread,
Dec 9, 2008, 4:54:39 AM12/9/08
to ruF...@googlegroups.com
Видать у вас плееры разные стоят - а нужен ФП10

denis.sh...@gmail.com

unread,
Dec 9, 2008, 5:25:40 AM12/9/08
to Alexander "Pride" Budjakov
> из всех флешек открылись только 3 а ФФ и Опере.
> зато все работает в ИЕ)

Все работают. Неправда. Аппликухи потрясные, даже незнаю за кого
голосовать.

--
Denis Sheremetov

Alexander "Pride" Budjakov

unread,
Dec 9, 2008, 5:29:59 AM12/9/08
to ruF...@googlegroups.com
да, верно  - нужна 10.



--

Flop Serg

unread,
Dec 9, 2008, 7:05:04 AM12/9/08
to ruF...@googlegroups.com
46 мне болей всего понравилось.
Голосовать не получилось (регистрится надо)
Весь этот конкурс считаю чушью с того момента как он сказал что-то вроде
 "я один определяю где ты вместился в 25 строк а где не вместился"
и _читов_ во всех хватает
var data:Array = [....... и тут можно сколько угодно и каких угодно данных вместить, несерьезно

Message has been deleted
Message has been deleted

Flop Serg

unread,
Dec 9, 2008, 10:01:05 AM12/9/08
to ruF...@googlegroups.com


X-No-Archive: yes

Больше всего впечатлил кубик - а точнее одна его грань на которой в риалтайме обсчитывается конуэевская игра "Жизнь" - понять не могу как это в коде описано.
вот тут кое-что есть
http://www.quasimondo.com/archives/000680.php#000680

Message has been deleted

Daniil Tutubalin

unread,
Dec 9, 2008, 10:48:51 AM12/9/08
to ruF...@googlegroups.com

> одна его грань на которой в риалтайме обсчитывается конуэевская игра "Жизнь" - понять не могу как это в коде описано.

:) Это моё ноу-хау

Вообще, удалось ужать "Жизнь" до 5 строчек.
Вот более длинный, но более читабельный вариант (можно скопировать в первый кадр нового документа хоть в CS3, хоть в CS4)

var zoom = 4;
var bmp = new BitmapData(int(stage.stageWidth/4), int(stage.stageHeight/4), false, 0); // в этой битмапдате и будет развиваться жизнь
var image = addChild(new Bitmap(bmp)); // помещаем на сцену
image.scaleX = image.scaleY = zoom; // масштабируем

bmp.noise(int(Math.random()*int.MAX_VALUE),0,255,7,true); // заполняем случайными данными

var conv = new ConvolutionFilter(3, 3, [3,3,3,3,2,3,3,3,3],255,0,true,false,0,1); // вот тут сосредоточена магия :)
addEventListener(Event.ENTER_FRAME, function update(e) { // каждый кадр...
 bmp.applyFilter(bmp, bmp.rect, new Point(), conv); // применяем магию
 bmp.threshold(bmp, bmp.rect, new Point(), "==", 0x00000008, 0xFFFFFFFF, 0x000000FC); // избранные пиксели закрашиваем белым
 bmp.threshold(bmp, bmp.rect, new Point(), "!=", 0xFFFFFFFF, 0x00000000); // все, которые не стали белыми, закрашиваем чёрным
});

Суть магии...

У ConvolutionFilter есть такой параметр как divider - результат поканального суммирования пикселей делится на это число. Здесь он установлен в 255. Т.е. грубо говоря, белая точка - это 1, чёрная - это 0.
Коэфициент для соседених точек - 3, для центральной точки - 2.

В результате одного шага точка должна получится белой, если выполнилось одно из условий:
1. она уже была белой и рядом 2 белых точки (2*1 + 3*2 = 8)
2. она уже была белой и рядом 3 белых точки (2*1 + 3*3 = 11)
3. она была чёрной и рядом 3 белых точки (2*0 + 3*3 = 9)

Во всех остальных случаях результат будет или больше 11 или меньше 8 (значение 10 не получится никак).
Теперь главная хитрость. Нужно как-то за один threshold сделать для 3 разных значений одинаковый результат.

К счастью, у threshold есть такой параметр как mask.

8   в бинарной системе - 00001000
9   в бинарной системе - 00001001
11 в бинарной системе - 00001011

Итого отличаются наши значения только последними двумя битами. Их и надо "отрезать" маской.

Значит, берём маску 0xFC и сравниваем с 0x08 (при этом мы ещё отрезаем красный и зелёный каналы и сравниваемый только синий, но это не страшно, так как во всех каналах значения одинаковые).

Вся хитрость состоит именно в подборе коэфициентов и делителя.

Работает ещё и такой набор
матрица: [7,7,7,7,1,7,7,7,7]
делитель: 119
маска: 0xF0
сравнивать с: 0x20

В обоих случаях значения удовлетворяют требованиям, необходимым для ускорения работы фильтра за счёт использования инструкций SSE (за счёт чего и достигается невероятная скорость работы даже на больших  размерах поля).

Message has been deleted

Denis Kolyako

unread,
Dec 9, 2008, 11:44:53 AM12/9/08
to Daniil Tutubalin
Здравствуйте, Daniil.

> var conv = new ConvolutionFilter(3, 3,
> [3,3,3,3,2,3,3,3,3],255,0,true,false,0,1); // вот тут сосредоточена магия :)

Ага :)

VerifyError: Error #1107: The ABC data is corrupt, attempt to read out of bounds.

Денис Коляко
______________________________________________________________________
e...@timezero.ru | http://etcs.ru/ | http://www.timezero.com/

lomb...@gmail.com

unread,
Dec 9, 2008, 1:39:51 PM12/9/08
to ruFlash
Да, сделано реально круто. Просто мега-мозг.

Ссправедливости ради следует сказать, что игра "Жизнь" ещё и замкнута
по горизонтали и вертикали. Так что это не "честная" "Жизнь".

По крайней мере вот тут:
http://www.quasimondo.com/archives/000680.php#000680

Valentin Simonov

unread,
Dec 9, 2008, 1:45:28 PM12/9/08
to ruF...@googlegroups.com
да, супер!
остальные примерчики тоже хороши
понравилось дерево
я глупый уже который год процент своего времени размышляю над генерацией деревьев а тут бац 25 строк

Flop Serg

unread,
Dec 9, 2008, 1:45:56 PM12/9/08
to ruF...@googlegroups.com

Ссправедливости ради следует сказать, что игра "Жизнь" ещё и замкнута
по горизонтали и вертикали. Так что это не "честная" "Жизнь".

Бывает разная свернутая(поверхность тора), бесконечная, ограниченая

Daniil Tutubalin

unread,
Dec 9, 2008, 3:17:41 PM12/9/08
to ruF...@googlegroups.com

> VerifyError: Error #1107: The ABC data is corrupt, attempt to read out of bounds.

Тоже как-то раз видел эту ошибку и именно на Жизни. Причём сперва всё работало прекрасно (и в IDE и в stand-alone плеере), а спустя какое-то время решил запустить .swf-ку и получил такой эксепшен.
Не знаю с чем это может быть связано.

> Ссправедливости ради следует сказать, что игра "Жизнь" ещё и замкнута
> по горизонтали и вертикали. Так что это не "честная" "Жизнь".

Сперва как раз хотел сделать тороидальную, чтобы глайдеры, улетая в одну сторону, появлялись с другой. Но увы, у ConvolutionFilter есть режим clamp, но нет режима wrap :(
Можно конечно исхитриться, добавить по невидимой полосочке толщиной 1 пиксель с каждой стороны, и каждый раз копировать эти полосочки, но этоуже много-много дополнительных строк.

Ещё была идейка сделать шейдер, расчитывающий Жизнь, но правила конкурса обрубают всевозможности их загрузки: ембедить нельзя, внешние файлы нельзя, массивы с байткодом нельзя. Хотя если сделать компилятор шейдеров и уместить строк эдак в 20... :)


Андрей Скорик

unread,
Dec 9, 2008, 6:32:53 PM12/9/08
to ruF...@googlegroups.com
уж и не знай в чем дело но на первом же примере из списка firefox  3.0.4  c дебаг версией fp10 - молча и оперативно крашится. ось - win xp home

Алексей Фомкин

unread,
Dec 10, 2008, 12:34:35 AM12/10/08
to ruF...@googlegroups.com
> уж и не знай в чем дело но на первом же примере из списка firefox 3.0.4 c дебаг версией fp10 - молча и оперативно крашится. ось - win xp home

поставьте свежую версию. я вот уже позабыл, когда в последний раз у
меня FP-10 крашил браузер. и это на линуксе.
--
С уважением, Фомкин Алексей
Программист "Сторк"

whitered

unread,
Dec 10, 2008, 4:12:41 AM12/10/08
to ruF...@googlegroups.com
у меня из дома тоже пара флешек подвесила файрфокс. особенно странно повела себя последняя - первый раз нормально запустилась, после этого ни разу повторно запустить не получилось, файрфокс крашился. все стоит последней версии


поставьте свежую версию. я вот уже позабыл, когда в последний раз у
меня FP-10 крашил браузер. и это на линуксе.



--
dmitry zhelnin

Максим Буньков

unread,
Dec 10, 2008, 6:24:44 AM12/10/08
to ruF...@googlegroups.com
Интересно а silverlight так может?

iFrame

unread,
Dec 10, 2008, 7:45:39 AM12/10/08
to ruF...@googlegroups.com
Здрасте!

Opera 9.60, Flash Player 10,0,12,36

Всё работает на ура, перезапускал и смотрел/пересматривал все флешки.
Прибалдел от каждой работы - все работы, просто чудо в 25 строк.
Больше всего понравиласть игра в текстовом поле.

Жду окончания конкурса, чтоб остальные 82 работы посмотреть.


--
Oleg Galaburda
http://blog.actualwave.com/

Advanced Flash Components / CrabDish LLC
7350 E. Progress Place, Suite 212
Greenwood Village, CO 80111
USA

303.694.9900
http://www.afcomponents.com

noubase

unread,
Dec 10, 2008, 7:48:42 AM12/10/08
to ruF...@googlegroups.com
Максим Буньков написав(ла):
> Интересно а silverlight так может?
> --~--~---------~--~----~------------~-------~--~----~
>
Может ;)

Daniil Tutubalin

unread,
Jan 22, 2009, 4:24:08 PM1/22/09
to ruF...@googlegroups.com
Определены январские финалисты.
Есть на что посмотреть!

Roma Oskolkov

unread,
Jan 22, 2009, 5:22:23 PM1/22/09
to ruF...@googlegroups.com
Твою работу, Даниил, увидел и заценил — очень хороша.
Но проголосовал за «полет» над горами и морями.
Это просто бомба.

Flop Serg

unread,
Jan 22, 2009, 6:10:09 PM1/22/09
to ruF...@googlegroups.com
Больше интереса вызывает вот это
Давайте попробуем вместе сгенерировать удовлетворительные правила и предложить
А то те что сейчас не очень справедливые... некоторые пишут строго ограничено, некоторые хитрят
в этой бомбе над морями и горами взгляни на вторую строку кода....
не байткод но всеже.. в массив (вектор) можно впихнуть сколь-угодно много данных и потом их играть одной функцией

надеюсь может быть когда нибудь кто-то создаст свой альтернативный конкурс ...
<imho> в котором захочется поучавствовать, потому как лично у меня такие вот условия вызывают отвращение</imho>
со своими правилами (например ограничение на размер swf), на сколько я понял этот чел очень уперся в 25строк...

Valentin Simonov

unread,
Jan 22, 2009, 7:48:40 PM1/22/09
to ruF...@googlegroups.com
по мне так векторы так юзать нормально
как-то был конкурс такой же очень давно и там делали что-то типа action + action + action + action
все в одну строку, которая сама по себе смысла не имеет, но выполняет много много экшенов

Daniil Tutubalin

unread,
Jan 22, 2009, 8:08:27 PM1/22/09
to ruF...@googlegroups.com
> Но проголосовал за <<полет>> над горами и морями.
> Это просто бомба.

У меня, кстати, тоже была идея сделать такое (всё впоминал старенький
mars.com - это не сайт, это название файла).
Но только не хотелось это делать через drawTriangle, я всё пытался
реализовать что-то типа воксельного алгоритма.
Правда, у меня в результате получилось только такое:
http://www.25lines.com/finalists/0812/064.swf

А вот более trueшный воксель, как не странно, не попал в финалисты
(может быть потому что анонимный) - в файлике 068.txt в этом архиве:
http://www.25lines.com/finalists/0812/25lines-1208.zip

Daniil Tutubalin

unread,
Jan 22, 2009, 8:22:07 PM1/22/09
to ruF...@googlegroups.com
> в этой бомбе над морями и горами взгляни на вторую строку кода....
> не байткод но всеже..

Ну, это просто таблица цветов. Ничего страшного тут не вижу.
У меня вторая строчка куда более читерская :) Однако, как я понял по
декабрьскому контесту, это вполне легально.

> надеюсь может быть когда нибудь кто-то создаст свой альтернативный конкурс ...

> со своими правилами (например ограничение на размер swf)

Я вот тут: http://www.25lines.com/forum/viewtopic.php?f=3&t=4
отписался, что хотел бы поучаствовать в 4kb contest (как раз
ограничение на размер swf).

Пообсуждали какие это может сулить проблемы.
Одна из проблем - размер swf, которую создают адобвские компиляторы (и
Flash IDE, и mxmlc) зависят от фаз луны и других непредсказуемых
факторов.
В том числе, если ты дашь свой исходный код другому человеку и он его
откомпилирует, у него вполне может получиться другой размер.
Так что почти наверняка swfки придётся обрабатывать рашпилем,
используя сторонние программы, в том числе возможно что и самописные.
(в принципе, я только "за". именно этого я и хочу)
Однако отсюда два следствия:
1. это будет именно конкурс swfок. т.е. не open source.
2. Adobe вряд ли будет спонсором :)

Ну и следствие из пункта 1 - надо будет каким-то образом
контролировать, чтобы бы swfки не лезли в сеть, а то можно легко
сделать прелоадер в 4 килобайта, который грузит основное приложение на
10 мегабайт :)

Flop Serg

unread,
Jan 22, 2009, 8:49:54 PM1/22/09
to ruF...@googlegroups.com

Ну, это просто таблица цветов. Ничего страшного тут не вижу.
У меня вторая строчка куда более читерская :) Однако, как я понял по
декабрьскому контесту, это вполне легально.

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


function wavePlay(event:SampleDataEvent):void {
    for ( var c:int=0; c<8192; c++ ) {
        event.data.writeFloat(soundvector[c+event.position]);
    }
}
var mySound:Sound = new Sound();
mySound.addEventListener(Event.SAMPLE_DATA,wavePlay);
mySound.play();

вот 10 строк всего

итого мне еще 15 можно написать для функции которая будет первый массив играть... думаешь получится ?

теперь главное красивую музычку подобрать и сюжетик веселенький сделать

Flop Serg

unread,
Jan 22, 2009, 9:16:19 PM1/22/09
to ruF...@googlegroups.com
О прдумал первый массив попроще..
будет не массив а просто строка
str=".......";

а функция выглядит примерно так:

var tf:TextFiled = new TextField();
tf.width = 640;
tf.height = 480;
tf.defaultTextFormat=new TextFormat(.........);
addChild(tf);
var t:Timer = new Timer(100,4525).start();
t.addEventListener(TimerEvent.TIMER,updateTF)
function updateTF(e:Event):void {
tf.text = str.substr(t.currentCount,1920)
}


вот осталось только _подобрать_ нужные константы и будет что-то вроде этого

Daniil Tutubalin

unread,
Jan 22, 2009, 9:18:09 PM1/22/09
to ruF...@googlegroups.com
Безусловно, ты можешь это сделать.
Но:
1. это вряд ли впечатлит судей, которые отбирают финалистов.
Посмотри в декабрьском архиве игру про лабиринт. Там автор создал один
большой массив, в который запихал всё, что только можно: игровой
уровень, спрайты попиксельно, все игровые данные (здоровье, координаты
и т.д.).
В финал не попал.
2. это вряд ли впечатлил людей, которые голосуют.

Поэтому приходится самого себя ограничивать и следовать одному
простому правилу: не наглеть :)
Вот у меня например была идея сделать простенький комплятор (точнее
ассемблер) шейдеров, а потом в одну длинную строчку записать
"исходник" шейдера.
Но решил этого не делать, в том числе и потому, что этот титанический
труд скорее всего не оценят.

Кстати, 034 (летающие точки) из декабрьского соревнования, вообще ни
одной хитрости не используют, всё максимально честно.
И при этом долгое время висела на 1 месте (хотя там, конечно, не
обошлось без флешмобов).

krai...@gmail.com

unread,
Jan 23, 2009, 6:46:06 AM1/23/09
to ruFlash
А может быть ограничивать длину исходного кода в байтах? Тоже конечно
извращение, раз уж мы swf-ки делаем, но, по крайней мере извращение
однотипное?

Flop Serg

unread,
Jan 23, 2009, 7:22:24 AM1/23/09
to ruF...@googlegroups.com
А может быть ограничивать длину исходного кода в байтах? Тоже конечно
извращение, раз уж мы swf-ки делаем, но, по крайней мере извращение
однотипное?

ага будет код нечитаемый совсем )
a[ac] = e[f]%m+d

Daniil Tutubalin

unread,
Jan 23, 2009, 8:00:44 AM1/23/09
to ruF...@googlegroups.com
Будет код в одну строчку, без пробелов.
Все необязательные скобочки будут удаляться, а это порой хуже, чем
лишние скобочки.
Единственный плюс: наконец-то станет выгодным повторяющиеся выражения
присваивать локальным переменным.
В 25 lines наоборот выгодно разворачивать выражение, избавляясь от
всех временных переменных, и писать его по несколько раз.

KOzerog Badun

unread,
Jan 23, 2009, 8:54:51 AM1/23/09
to ruF...@googlegroups.com
Было бы здорово, если бы рядом с каждым исходником в 25 строк, выкладывали еще читабельный, развернутый исходник. А то тяжко, раскручивать все эти навороты чтобы посмотреть принцип работы.

Daniil Tutubalin

unread,
Jan 23, 2009, 9:19:08 AM1/23/09
to ruF...@googlegroups.com
Знали бы как тяжко закручивать эти навароты :)
А потом, когда всё уже закручено, вдруг находишь баг или просто вдруг
решаешь внести какие-то изменения и приходится в таком коде вносить
изменения :)

А вообще, будем надеятся, что разработчики начнут публиковать статьи о
том, как и что у них работает. Я как освобожусь - точно напишу.

KOzerog Badun

unread,
Jan 23, 2009, 9:58:58 AM1/23/09
to ruF...@googlegroups.com
А вообще, будем надеятся, что разработчики начнут публиковать статьи о
том, как и что у них работает. Я как освобожусь - точно напишу.

Было бы здорово. 
Reply all
Reply to author
Forward
0 new messages