Конкурс!
14.03.2008 Иван ЗыковТем, кто хочет найти работу в игровом бизнесе, стать матёрым специалистом, реализовать талант и применить свои знания! Компания “Альтернатива Гейм” продолжает найм умных и аккуратных flash-программистов, для работы над игровыми проектами в Alternativa Platform. Если вы хотите работать у нас, получите тестовое задание. Вы попробуете свои силы, мы оценим ваш потенциал. Не недооценивайте себя - мы сможем отличить талантливого начинающего программиста от остальных, и покажите, на что вы способны.
Тестовое задание
На Action Script 3 (именно на нём) cледует разработать прототип небольшой игрушки, который мы между собой называем “танки”. Вид сверху. На прямоугольном поле ездит танк, и есть непроходимые для него препятствия. Танк управляется курсорными клавишами и привычными для геймеров “w”, “a”, “s”, “d”. Башня вращается отдельно от корпуса, и ее дуло следит за курсором мыши. Выстрел происходит по нажатию на кнопку мыши. Из дула вылетает снаряд.

Значение имеет не графика (она не нужна), а правильное функционирование прототипа. Дополнительно вам зачтутся добавленные в прототип “фишки”, вроде дальности стрельбы, следов после танка, другие виды оружия и т.п. Удивите нас!
Результат присылайте на team@alternativaplatform.com, в письме расскажите кратко о себе и о своих планах на будущее, и не забудьте прицепить SWF-файл!
С авторами лучших прототипов мы будем работать как в офисе, так и удаленно. Есть много интересной и оплачиваемой работы!

14.03.2008 в 18:09
Жжете, ай молодцы! Ограничения по дате есть? (я бы попробовал, но смогу начать не сегодня :)
14.03.2008 в 18:10
На ваше усмотрение. Количество мест ограничено :)
14.03.2008 в 18:48
Хех - делал что-то подобное - давно дело было (еще AS1):
http://syo.com.ua/data/works/05_01_28_game/index.htm
:)
14.03.2008 в 19:14
Syo, я поигрался, неплохо )
14.03.2008 в 21:01
Гыг, как во время-то, я как-раз вчера начал писать эту игру. Конкуренция в реальном времени это прикольно.
15.03.2008 в 22:05
Syo, отличная игрушка!
Вобщем-то, в твоей компетентности и не сомневался :)
17.03.2008 в 01:57
Что-то можно будет узнать о присылаемых решениях?
Просто интересно, какого уровня разработчики заинтерересовались предложением.
17.03.2008 в 20:47
Алексей, очень хотелось бы по результатам конкурса выложить самые интересные реализации на блоге.
Правда, к сожалению, пока нет особой активности.
Будем благодарны за распространение информации.
P.S. А троллей будем нещадно убивать :)
17.03.2008 в 21:41
> Правда, к сожалению, пока нет особой активности.
Ну дык, если нет домашней заготовки, то за одни выходные что-то стоящее сбацать вряд ли получится. А не стоящее отправлять на конкурс не хочется.
Тем более, что все люди занятые. У всех перманентный багфикс :)
Дайте хотя б месяцок на разгон.
17.03.2008 в 23:07
Dan, потереть сообщения много времени не займёт. Но важно понимать в чём разница между пустоловием и критикой, а ещё - почему негатива (особенно в отрицательной критике) надо избегать.
Правил в блогах обычно не бывает, но ввиду популяризации проекта, наверное пора уже и об этом подумать.
Желательно не просто говорить “так нельзя”, а объяснять почему нельзя.
18.03.2008 в 10:11
Ребята на выходных попробую что нить склепать :)
18.03.2008 в 14:10
Парни, сообщите каг дела? Много работ прислали? Выложить можете?
18.03.2008 в 14:13
Пока никак :)
18.03.2008 в 15:43
Надо будет сесть и попробовать это все навоять….Пока не получается заняться, но в скором времени надеюсь удастся.
18.03.2008 в 18:15
У меня на вас серьезные планы, в ближайшие день - два допишу двиг. Жаль что флеш не позволит мне реализовать все задуманное. Но все-равно будет здорово, надеюсь вам понравиться. Флеш и вправду не такой уж легкий язык - ну по крайней мере прочитать все 2000 страниц справки, чтобы понять все тонкости работы за неделю я не сумел.
19.03.2008 в 10:35
у меня такое ощущение сложилось, что после слов “кол-во мест ограниченно” половина народа просто не стали ни чего делать с мыслями: “какого жопу рвать…все равно не успею”. Я правильно понимаю, что нужны программисты, а не программисты на AS3?
19.03.2008 в 12:10
sergart, на самом деле ограничено (пока) количество мест в офисе, для удалённой работы никаких ограничений нет. Нужны думающие люди, готовые хитроумно (не brute force) решать сложные задачи. Знание AS3, конечно, важно, но не обязательно, т.к. уверен, что такие люди могут разобраться с любым языком в кратчайшее время.
19.03.2008 в 15:53
Таланты всегда нужны, не смотрите на сроки и прочее. Есть силы и желание - welcome.
19.03.2008 в 16:00
какой уровень оплаты для удаленных девелоперов?
19.03.2008 в 16:50
Одно только смущает: с одной стороны - довольно расплывчатое ТЗ, а с другой - требование, чтобы прототип работал правильно.
Есть риск, что какие-то самовольно внесённые фичи будут восприняты как баги. Или просто не будут соответствовать вашим (невысказанным) ожиданиям.
19.03.2008 в 20:35
Для выполнения этого задание знание языка играет не последнюю роль, потому что флэш имеет множество ограничений, предугадать которые во время проектирования нельзя. Например, мне пришлось выкинуть несколько возможностей из своей версии игрушки, я боюсь как бы под конец не пришлось переделывать все с начала.
19.03.2008 в 21:28
sergart: “какого жопу рвать…все равно не успею”.
по моему опыту, человек который допускает такие мысли, физически не способен сражаться до конца, то есть его можно считать проигравшим ещё до начала битвы.
Dan: работать в условиях чёткой постановки задач - на самом деле много ума не надо. Какой-то хрен сказал: “Не сложно что-то сделать, сложно решить что именно надо сделать”. В условиях современной динамики развития ИТ, строго-поставленная задача получает только устаревшее решение. Альтернатива будет запущена не сегодня, а завтра, а значит и решение нужно то, которое будет считаться современным завтра.
19.03.2008 в 22:17
Есть риск, что какие-то самовольно внесённые фичи будут восприняты как баги. Или просто не будут соответствовать вашим (невысказанным) ожиданиям.
Задание же бесплатное, если что-то не будет соответствовать ожиданиям, то вы все-равно ведь ничего не теряете.
19.03.2008 в 22:56
Наверное, всё-таки надо описать почему каждый Flash’ер обязан взяться за сее задание.
Много сотен/тысяч лет существует закон - “хотелось как лучше, получилось как всегда”. То есть обычное человеческое сознание всегда хочет лучшего. Но судя по поговорке всегда(!) получается хреново. Отсюда вывод - “как лучше?” это не правильный вопрос.
Человек часто поступает неправильно, потому что задаёт себе неправильные вопросы (с) Американская История Х.
Из всех оставшихся вопросов на правильный тянет только один - “Как не хуже”?
Сидеть сложа руки, или делать то что всегда делаешь - хуже, ибо тупое старение.
Попытаться поучавствовать в конкурсе - как минимум(!) не хуже.
Вот такая “математика”.
19.03.2008 в 23:29
> Задание же бесплатное, если что-то не будет соответствовать ожиданиям,
> то вы все-равно ведь ничего не теряете.
Ну, во-первых - время будет потеряно. Хотя, может быть, и с пользой.
Во-вторых, настроение может быть потеряно: “Я так старался, такую фишку прогрессивную сделал, но не оценили, не поняли…”
В-третьих, особо увлечённые могут и текущую работу потерять :)
19.03.2008 в 23:33
Dan, как раз ожидая такого поста я и обпубликовал мысль про путь “не хуже” :)
20.03.2008 в 11:38
at
> какой уровень оплаты для удаленных девелоперов?
Конкретики на данный момент нет, т.к. непонятно какого уровня будут люди, какие задачи и в какие сроки решать. В любом случае, это будет оплата, комфортная для девелопера и обоснованная для нас.
Думаю, пока единственный вариант конкретизировать - выходить на общение уже с конкретным человеком и решать индивидуально. Когда появится некоторая статистика, можно будет уже сформулировать оплату в общем случае.
22.03.2008 в 14:50
Вы объявили что это конкурс, но не объявили даже сроки.
22.03.2008 в 15:18
Потому что сроков нет.
23.03.2008 в 03:26
отлично, постараюсь к началу рабочей недели сдать проект.
23.03.2008 в 04:46
Выкладывайте скорей позырять…
по моему, на самом деле и не так уж много времени надо…
какраз выходные с пользой провести, и не без пользы…
движок то себе останеццо )
23.03.2008 в 11:08
Недавно узнал о вашем проекте, вы ребята просто молодцы, нет слов, на флеше еще такое никто не делал!!!
К вторнику постараюсь сделать задание, думаю вам понравится))
25.03.2008 в 21:04
Привет! Я тож скоро вышлю вам свои танчики :)
26.03.2008 в 11:18
Результаты от Михаила Фоминых
Первый: http://blog.alternativaplatform.com/ru/files/2008/03/mfominyh1.swf
Второй: http://blog.alternativaplatform.com/ru/files/2008/03/mfominyh2.swf
В демонстрационном уровне есть крепость и три турели. Турель слева внизу лечит повреждённый танк, турели справа пытаются убить. У всех турелей ограниченный запас зарядов (100 по умолчанию). Все объекты на уровне можно уничтожить (теоретически, т.к. на практике не хватит ракет/снарядов, а с рекой вообще ничего не сделать). Танк управляется курсорными клавишами и клавишами SEDF. Стрельба ведётся мышкой, переключение оружия Tab. Ракета летит за курсором, а если оказывается в непосредственной близости от него, то взрывается.
С нажатой клавишей Alt танк можно таскать мышкой (изредка застревает на углах объектов, но это постараться надо).
26.03.2008 в 11:22
Результат от Vadim Grigoruk
http://blog.alternativaplatform.com/ru/files/2008/03/tank.swf
26.03.2008 в 21:22
У Vadim Grigoruk классно получилось, так плавно ездит
26.03.2008 в 23:42
А подскажите как сделать, чтобы так же как у Михаила Фоминых можно было управлять танком клавишами. Если перехватывать KeyDown, то если держать нажатой клавишу, а потом нажать другую, сообщение на первую уже не передается.
27.03.2008 в 00:02
Так надо еще и keyUp перехватывать, и как бы разжимать нажатые. И в enter_frame смотреть что на данный момент нажато.
Я пожалуй тоже попробую ченить сделать, завтра покажу:) (правда флэш начал учить не давно)
27.03.2008 в 00:05
Подскажите лучше как сделать чтобы плавно двигалось как у Vadim Grigoruk т.е. не было моргания.
27.03.2008 в 00:10
To Andrei Kopisov
Я тоже сначала на это наткнулся. Потом сделал флажки. При нажатии соответствующей клавиши флажок устанавливается, при отпускании сбрасывается. В обработчике ENTER_FRAME, например, проверяется состояние флажков и передвигается танк если требуется.
Про плавность мне уже сказали где я неправ. Осознал, обещаю исправиться :) Я ещё не волшебник, я только учусь :)
27.03.2008 в 00:13
To Михаил Фоминых
Расскажи plz как плавность делать, и чтобы моргания не было заметно.
27.03.2008 в 01:03
To MikleB
А я знаю? :) Попробовал вот сейчас просто повысить фпс ролика и понизить приращения координат за фрейм. Моргание гораздо меньше заметно и плавности больше. Не знаю насколько это правильный способ. Может другие методы есть, но мне они пока неведомы. Надо у гуру спрашивать :)
27.03.2008 в 04:25
Плавность -
координата икс меняется в зависимости от скорости, чтобы определить новую координату нужно к старой прибавить значение скорости на время одного кадра. Фпс меняется, поэтому каждый кадр время нужно считать.
MikleB, спасибо, это же так просто, и почему до меня сразу не дошло.
27.03.2008 в 14:06
Я плавности добился с помощью флажков тоже, в key down они устанавливаются, в key up отпускаются, а в OnEnterFrame происходит прорисовка в зависимости от них.
27.03.2008 в 14:24
по поводу клавиш и перхвата ивентов
Намного удобнее, как оказалось использовать принцип стека в случае, когда используются курсорные клавиши для управления юнитом.
То есть - если я нажимаю клавишу “вверх” - потом удерживая ее нажимаю “вправо” - нужно отреагировать - отработать вправо. Дальше - когда мы отпускаем клавишу “вправо” - отрабатываем вверх. И так вплоть до нажатия всех 4-х.
Это позволяет более комфортно управлять юнитом.
Меня сподвиг на такое принцип управления в приставке Денди. Там в стеке всего два положения -больше не требовалось для хрестовины на джойстике.
принцип в действии здесь: http://battlecity.com.ua
28.03.2008 в 05:30
Syo, может для Денди это и было полезно,но сейчас толку в этом не вижу. Расскажите как у вас там дела идут с набором, чьи работы понравились, сколько работ - оч. интересно. Скоро закончу свои танчики - была поставлена высокая цель - поэтому делаю так долго. Тут может кому пригодиться, случайно наткнулся на статейку http://noregret.org/tutor/n/collision/.
28.03.2008 в 10:48
Я эту статью в оригинале читал. Полезно, да. Сейчас занимаюсь тотальной переделкой прототипа, т.к. в нынешней верси мало что нравится :) Плавность ужо есть :D Самые большие вопросы конечно встают при разделении столкнувшихся объектов. Использую метод разделяющих плоскостей. Когда объект сталкивается с единственным препятствием, вопросов нет — выбираем ось с минимальным перекрытием проекцией и разводим вдоль неё, всё получается красиво. А когда столкновение одновременно с несколькими препятствиями?
28.03.2008 в 20:40
Надо больше спать, всё оказалось элементарно :)
30.03.2008 в 04:21
Не, принцип стека тут совсем не катит, т.к. требуется отрабатывать одновременное нажатие более чем одной клавиши. Например, чтобы ехать вперёд и поворачивать одновременно. Так что лучше всего вариант с флажками. А если ещё побитовые операции использовать, то вообще красиво получается :)
Наверное тоже что-нибудь в течение ближайших пары дней наваяю… Интересно же узнать, какой из меня флэшер :)
31.03.2008 в 08:40
Результат от Kantar
http://blog.alternativaplatform.com/ru/files/2008/03/vox_tankpre_alpha.swf
…еще поскольку карты генерятся рандомом танк иногда оказывается в паршивом для маневров месте,в таких случаях советую карту для лучшего восприятия перегенерить кнопочкой “R”.
31.03.2008 в 08:44
Результат от Сергея Ваничкина
http://blog.alternativaplatform.com/ru/files/2008/03/tank10.html
01.04.2008 в 18:43
О блин. Каждый день заходил ждал новостей (не люблю RSS). И пропустил новость о конкурсе. Вы еще принемаете решения?
01.04.2008 в 19:01
Вроде(надеюсь) да, я сегодня отправил
01.04.2008 в 19:58
KrOlSer, конкурс бессрочный, так что ждём ;)
04.04.2008 в 13:24
Чего-то уже 3 дня прошло, а мой результат так и не показали:( обидно - неужели все предыдущие работы намного интереснее?
05.04.2008 в 17:07
Результат от MikleB
http://blog.alternativaplatform.com/ru/files/2008/04/tank_mikleb.swf
1) Сперва рисуете препятствия (просто зажимаете кнопку мыши и рисуете (лучше подальше от верхнего левого угла (это будущее место танка))
2) Нажимаете Enter, после чего появится танк, после этого рисовать препятствия нельзя.
3) Управление танком стрелками, и его башня всегда смотрит на мышку. Чтобы стрелять нужно кликнуть мышью (попробуйте кликнуть по препятсвиям)
4) Если зажать Shift и двигать мышью то будет меняться освещение (Bump Mapping) (это можно делать и во время рисования препятсвий)
05.04.2008 в 17:09
Результат от Андрея Копысова
http://blog.alternativaplatform.com/ru/files/2008/04/tanks_xianto.swf
06.04.2008 в 04:15
В примере от MikleB, у меня не работают стрелки, танк стоит на месте и не двигается.
В примере от Андрея - танка (которым управляю) не видно, чисто интуитивно предполагаю что он в правом нижнем углу (но вне экрана).
Так и должно быть?
06.04.2008 в 04:56
>В примере от Андрея - танка (которым управляю) не видно, чисто интуитивно >предполагаю что он в правом нижнем углу (но вне экрана).
>Так и должно быть?
Нужно смотреть во флеш плеере, в броузере есть такой баг, почему он я не знаю, ибо совсем новичок. Исправить попытаюсь, но не в этой демке.
06.04.2008 в 05:19
И вообще я считаю, что в ней смотреть абсолютно не на что - даже камера двигается не красиво. Тем более я перед тем как отправить её “оптимизировал” код определения столкновений и теперь появилось множество багов, например, раньше танк мог толкать другой танк, и снаряды всегда отскакивали от препятствия, а теперь если один снаряд уже застрял в препятствии, другие столкновения с этим препятствием не обрабатываются. Сама идея “танчиков” мне нравится, я ее не бросаю, и доведу таки до полноценной игры, хотя бы с одним уровнем.
У MikleB оч. хорошо получилось, только мне кажется, что бамп маппинг считается не правильно, помоему автор считает освещение в tangent space и не учитывет расположение источника света, поэтому он освещеает битмап центрально, когда находится в центре экрана, а не в центре самого объекта.
06.04.2008 в 13:31
To Алексей
Хм. У меня во всех браузерах работает. Может вы нарисовали препятствие поверх танка? (т.е. танк стоит на препятствии, тогда он не будет двигаться)
06.04.2008 в 13:35
To Андрей Коаысов, бамп у меня считается абсолютно правильно. Тут параллельное освещение и направляющий вектор лучей света задается вектором от центра картинки до мыши и z=ширине картинки/2
06.04.2008 в 17:26
MikleB, точно. Пардон.
07.04.2008 в 00:52
MikleB, может расскажите что-то про алгоритм? Очень шустро работает. Про фильтры, методы было бы интересно узнать, хотя может это секрет?
07.04.2008 в 02:14
To Андрей Копысов
Ну бамп-маппинг совсем просто делать, есть карта нормалей (битмап) и направляющий вектор света v (он не зависит от пикселя) - надо по ним получить карту освещенности. Пусть u - вектор цвета в каком нибудь пикселе карты нормалей, тогда надо чтобы в карте освещнности вектор цвета этого пикселя стал {alpha, (v,2*u-256), (v,2*u-256), (v,2*u-256)}. ( , ) -скалярное произведение. Ясно что это линейное преобразование над вектором u. И есть стандартный фильтр ColorMatrixFilter который как раз задает матрицу линейного преобразования над каждым пикселем битмапа.
07.04.2008 в 12:48
Прикольно! А что с ограничением сроков? Я еще успеваю?
18.04.2008 в 12:12
может и мне попробовать? как раз недавно класс для хит-тестов произвольных полигонов замутил… заодно будет чем на майских заняться )
23.04.2008 в 20:37
Мой танк http://atflash.ru/tank.rar - обидно, что не опубликовали…
23.04.2008 в 21:13
Мое письмо ушло в спам)
23.04.2008 в 21:26
Rzer:
Работали в авральном режиме - выставка и демка.
Обязательно выставим, хотя ссылку вы и так дали :-)
28.04.2008 в 14:37
Результат от makc
http://blog.alternativaplatform.com/ru/files/2008/04/tanks_makc.swf