Конкурс!

14.03.2008 Иван Зыков

Тем, кто хочет найти работу в игровом бизнесе, стать матёрым специалистом, реализовать талант и применить свои знания! Компания “Альтернатива Гейм” продолжает найм умных и аккуратных flash-программистов, для работы над игровыми проектами в Alternativa Platform. Если вы хотите работать у нас, получите тестовое задание. Вы попробуете свои силы, мы оценим ваш потенциал. Не недооценивайте себя - мы сможем отличить талантливого начинающего программиста от остальных, и покажите, на что вы способны.

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

tanki_scheme.gif

Значение имеет не графика (она не нужна), а правильное функционирование прототипа. Дополнительно вам зачтутся добавленные в прототип “фишки”, вроде дальности стрельбы, следов после танка, другие виды оружия и т.п. Удивите нас!

Результат присылайте на team@alternativaplatform.com, в письме расскажите кратко о себе и о своих планах на будущее, и не забудьте прицепить SWF-файл!

С авторами лучших прототипов мы будем работать как в офисе, так и удаленно. Есть много интересной и оплачиваемой работы!

Комментарии (71) на “Конкурс!”

  1. рост Says:

    Жжете, ай молодцы! Ограничения по дате есть? (я бы попробовал, но смогу начать не сегодня :)

  2. Карпович Александр Says:

    На ваше усмотрение. Количество мест ограничено :)

  3. Syo Says:

    Хех - делал что-то подобное - давно дело было (еще AS1):
    http://syo.com.ua/data/works/05_01_28_game/index.htm
    :)

  4. рост Says:

    Syo, я поигрался, неплохо )

  5. Яски Says:

    Гыг, как во время-то, я как-раз вчера начал писать эту игру. Конкуренция в реальном времени это прикольно.

  6. Антон Волков Says:

    Syo, отличная игрушка!
    Вобщем-то, в твоей компетентности и не сомневался :)

  7. Алексей Says:

    Что-то можно будет узнать о присылаемых решениях?
    Просто интересно, какого уровня разработчики заинтерересовались предложением.

  8. Антон Волков Says:

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

    Будем благодарны за распространение информации.

    P.S. А троллей будем нещадно убивать :)

  9. Dan Says:

    > Правда, к сожалению, пока нет особой активности.

    Ну дык, если нет домашней заготовки, то за одни выходные что-то стоящее сбацать вряд ли получится. А не стоящее отправлять на конкурс не хочется.
    Тем более, что все люди занятые. У всех перманентный багфикс :)

    Дайте хотя б месяцок на разгон.

  10. Алексей Says:

    Dan, потереть сообщения много времени не займёт. Но важно понимать в чём разница между пустоловием и критикой, а ещё - почему негатива (особенно в отрицательной критике) надо избегать.
    Правил в блогах обычно не бывает, но ввиду популяризации проекта, наверное пора уже и об этом подумать.
    Желательно не просто говорить “так нельзя”, а объяснять почему нельзя.

  11. graFF Says:

    Ребята на выходных попробую что нить склепать :)

  12. sergart Says:

    Парни, сообщите каг дела? Много работ прислали? Выложить можете?

  13. Карпович Александр Says:

    Пока никак :)

  14. btl Says:

    Надо будет сесть и попробовать это все навоять….Пока не получается заняться, но в скором времени надеюсь удастся.

  15. Яски Says:

    У меня на вас серьезные планы, в ближайшие день - два допишу двиг. Жаль что флеш не позволит мне реализовать все задуманное. Но все-равно будет здорово, надеюсь вам понравиться. Флеш и вправду не такой уж легкий язык - ну по крайней мере прочитать все 2000 страниц справки, чтобы понять все тонкости работы за неделю я не сумел.

  16. sergart Says:

    у меня такое ощущение сложилось, что после слов “кол-во мест ограниченно” половина народа просто не стали ни чего делать с мыслями: “какого жопу рвать…все равно не успею”. Я правильно понимаю, что нужны программисты, а не программисты на AS3?

  17. Антон Волков Says:

    sergart, на самом деле ограничено (пока) количество мест в офисе, для удалённой работы никаких ограничений нет. Нужны думающие люди, готовые хитроумно (не brute force) решать сложные задачи. Знание AS3, конечно, важно, но не обязательно, т.к. уверен, что такие люди могут разобраться с любым языком в кратчайшее время.

  18. Карпович Александр Says:

    Таланты всегда нужны, не смотрите на сроки и прочее. Есть силы и желание - welcome.

  19. at Says:

    какой уровень оплаты для удаленных девелоперов?

  20. Dan Says:

    Одно только смущает: с одной стороны - довольно расплывчатое ТЗ, а с другой - требование, чтобы прототип работал правильно.

    Есть риск, что какие-то самовольно внесённые фичи будут восприняты как баги. Или просто не будут соответствовать вашим (невысказанным) ожиданиям.

  21. Andrei Kopisov Says:

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

  22. Алексей Says:

    sergart: “какого жопу рвать…все равно не успею”.
    по моему опыту, человек который допускает такие мысли, физически не способен сражаться до конца, то есть его можно считать проигравшим ещё до начала битвы.

    Dan: работать в условиях чёткой постановки задач - на самом деле много ума не надо. Какой-то хрен сказал: “Не сложно что-то сделать, сложно решить что именно надо сделать”. В условиях современной динамики развития ИТ, строго-поставленная задача получает только устаревшее решение. Альтернатива будет запущена не сегодня, а завтра, а значит и решение нужно то, которое будет считаться современным завтра.

  23. Andrei Kopisov Says:

    Есть риск, что какие-то самовольно внесённые фичи будут восприняты как баги. Или просто не будут соответствовать вашим (невысказанным) ожиданиям.

    Задание же бесплатное, если что-то не будет соответствовать ожиданиям, то вы все-равно ведь ничего не теряете.

  24. Алексей Says:

    Наверное, всё-таки надо описать почему каждый Flash’ер обязан взяться за сее задание.

    Много сотен/тысяч лет существует закон - “хотелось как лучше, получилось как всегда”. То есть обычное человеческое сознание всегда хочет лучшего. Но судя по поговорке всегда(!) получается хреново. Отсюда вывод - “как лучше?” это не правильный вопрос.
    Человек часто поступает неправильно, потому что задаёт себе неправильные вопросы (с) Американская История Х.
    Из всех оставшихся вопросов на правильный тянет только один - “Как не хуже”?
    Сидеть сложа руки, или делать то что всегда делаешь - хуже, ибо тупое старение.
    Попытаться поучавствовать в конкурсе - как минимум(!) не хуже.

    Вот такая “математика”.

  25. Dan Says:

    > Задание же бесплатное, если что-то не будет соответствовать ожиданиям,
    > то вы все-равно ведь ничего не теряете.

    Ну, во-первых - время будет потеряно. Хотя, может быть, и с пользой.
    Во-вторых, настроение может быть потеряно: “Я так старался, такую фишку прогрессивную сделал, но не оценили, не поняли…”
    В-третьих, особо увлечённые могут и текущую работу потерять :)

  26. Алексей Says:

    Dan, как раз ожидая такого поста я и обпубликовал мысль про путь “не хуже” :)

  27. Антон Волков Says:

    at
    > какой уровень оплаты для удаленных девелоперов?

    Конкретики на данный момент нет, т.к. непонятно какого уровня будут люди, какие задачи и в какие сроки решать. В любом случае, это будет оплата, комфортная для девелопера и обоснованная для нас.

    Думаю, пока единственный вариант конкретизировать - выходить на общение уже с конкретным человеком и решать индивидуально. Когда появится некоторая статистика, можно будет уже сформулировать оплату в общем случае.

  28. Andrei Kopisov Says:

    Вы объявили что это конкурс, но не объявили даже сроки.

  29. Антон Волков Says:

    Потому что сроков нет.

  30. Andrei Kopisov Says:

    отлично, постараюсь к началу рабочей недели сдать проект.

  31. Flop Says:

    Выкладывайте скорей позырять…
    по моему, на самом деле и не так уж много времени надо…
    какраз выходные с пользой провести, и не без пользы…
    движок то себе останеццо )

  32. Sinred Says:

    Недавно узнал о вашем проекте, вы ребята просто молодцы, нет слов, на флеше еще такое никто не делал!!!
    К вторнику постараюсь сделать задание, думаю вам понравится))

  33. Super Man Says:

    Привет! Я тож скоро вышлю вам свои танчики :)

  34. Иван Зыков Says:

    Результаты от Михаила Фоминых
    Первый: http://blog.alternativaplatform.com/ru/files/2008/03/mfominyh1.swf
    Второй: http://blog.alternativaplatform.com/ru/files/2008/03/mfominyh2.swf

    В демонстрационном уровне есть крепость и три турели. Турель слева внизу лечит повреждённый танк, турели справа пытаются убить. У всех турелей ограниченный запас зарядов (100 по умолчанию). Все объекты на уровне можно уничтожить (теоретически, т.к. на практике не хватит ракет/снарядов, а с рекой вообще ничего не сделать). Танк управляется курсорными клавишами и клавишами SEDF. Стрельба ведётся мышкой, переключение оружия Tab. Ракета летит за курсором, а если оказывается в непосредственной близости от него, то взрывается.
    С нажатой клавишей Alt танк можно таскать мышкой (изредка застревает на углах объектов, но это постараться надо).

  35. Иван Зыков Says:

    Результат от Vadim Grigoruk
    http://blog.alternativaplatform.com/ru/files/2008/03/tank.swf

  36. MikleB Says:

    У Vadim Grigoruk классно получилось, так плавно ездит

  37. Andrei Kopisov Says:

    А подскажите как сделать, чтобы так же как у Михаила Фоминых можно было управлять танком клавишами. Если перехватывать KeyDown, то если держать нажатой клавишу, а потом нажать другую, сообщение на первую уже не передается.

  38. MikleB Says:

    Так надо еще и keyUp перехватывать, и как бы разжимать нажатые. И в enter_frame смотреть что на данный момент нажато.
    Я пожалуй тоже попробую ченить сделать, завтра покажу:) (правда флэш начал учить не давно)

  39. MikleB Says:

    Подскажите лучше как сделать чтобы плавно двигалось как у Vadim Grigoruk т.е. не было моргания.

  40. Михаил Фоминых Says:

    To Andrei Kopisov
    Я тоже сначала на это наткнулся. Потом сделал флажки. При нажатии соответствующей клавиши флажок устанавливается, при отпускании сбрасывается. В обработчике ENTER_FRAME, например, проверяется состояние флажков и передвигается танк если требуется.
    Про плавность мне уже сказали где я неправ. Осознал, обещаю исправиться :) Я ещё не волшебник, я только учусь :)

  41. MikleB Says:

    To Михаил Фоминых
    Расскажи plz как плавность делать, и чтобы моргания не было заметно.

  42. Михаил Фоминых Says:

    To MikleB
    А я знаю? :) Попробовал вот сейчас просто повысить фпс ролика и понизить приращения координат за фрейм. Моргание гораздо меньше заметно и плавности больше. Не знаю насколько это правильный способ. Может другие методы есть, но мне они пока неведомы. Надо у гуру спрашивать :)

  43. Andrei Kopisov Says:

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

    MikleB, спасибо, это же так просто, и почему до меня сразу не дошло.

  44. Vadim Grigoruk Says:

    Я плавности добился с помощью флажков тоже, в key down они устанавливаются, в key up отпускаются, а в OnEnterFrame происходит прорисовка в зависимости от них.

  45. Syo Says:

    по поводу клавиш и перхвата ивентов
    Намного удобнее, как оказалось использовать принцип стека в случае, когда используются курсорные клавиши для управления юнитом.
    То есть - если я нажимаю клавишу “вверх” - потом удерживая ее нажимаю “вправо” - нужно отреагировать - отработать вправо. Дальше - когда мы отпускаем клавишу “вправо” - отрабатываем вверх. И так вплоть до нажатия всех 4-х.
    Это позволяет более комфортно управлять юнитом.
    Меня сподвиг на такое принцип управления в приставке Денди. Там в стеке всего два положения -больше не требовалось для хрестовины на джойстике.
    принцип в действии здесь: http://battlecity.com.ua

  46. Andrei Kopisov Says:

    Syo, может для Денди это и было полезно,но сейчас толку в этом не вижу. Расскажите как у вас там дела идут с набором, чьи работы понравились, сколько работ - оч. интересно. Скоро закончу свои танчики - была поставлена высокая цель - поэтому делаю так долго. Тут может кому пригодиться, случайно наткнулся на статейку http://noregret.org/tutor/n/collision/.

  47. Михаил Фоминых Says:

    Я эту статью в оригинале читал. Полезно, да. Сейчас занимаюсь тотальной переделкой прототипа, т.к. в нынешней верси мало что нравится :) Плавность ужо есть :D Самые большие вопросы конечно встают при разделении столкнувшихся объектов. Использую метод разделяющих плоскостей. Когда объект сталкивается с единственным препятствием, вопросов нет — выбираем ось с минимальным перекрытием проекцией и разводим вдоль неё, всё получается красиво. А когда столкновение одновременно с несколькими препятствиями?

  48. Михаил Фоминых Says:

    Надо больше спать, всё оказалось элементарно :)

  49. Козин Семён Says:

    Не, принцип стека тут совсем не катит, т.к. требуется отрабатывать одновременное нажатие более чем одной клавиши. Например, чтобы ехать вперёд и поворачивать одновременно. Так что лучше всего вариант с флажками. А если ещё побитовые операции использовать, то вообще красиво получается :)
    Наверное тоже что-нибудь в течение ближайших пары дней наваяю… Интересно же узнать, какой из меня флэшер :)

  50. Иван Зыков Says:

    Результат от Kantar
    http://blog.alternativaplatform.com/ru/files/2008/03/vox_tankpre_alpha.swf
    …еще поскольку карты генерятся рандомом танк иногда оказывается в паршивом для маневров месте,в таких случаях советую карту для лучшего восприятия перегенерить кнопочкой “R”.

  51. Иван Зыков Says:

    Результат от Сергея Ваничкина
    http://blog.alternativaplatform.com/ru/files/2008/03/tank10.html

  52. KrOlSer Says:

    О блин. Каждый день заходил ждал новостей (не люблю RSS). И пропустил новость о конкурсе. Вы еще принемаете решения?

  53. MikleB Says:

    Вроде(надеюсь) да, я сегодня отправил

  54. Антон Волков Says:

    KrOlSer, конкурс бессрочный, так что ждём ;)

  55. MikleB Says:

    Чего-то уже 3 дня прошло, а мой результат так и не показали:( обидно - неужели все предыдущие работы намного интереснее?

  56. Антон Волков Says:

    Результат от MikleB
    http://blog.alternativaplatform.com/ru/files/2008/04/tank_mikleb.swf
    1) Сперва рисуете препятствия (просто зажимаете кнопку мыши и рисуете (лучше подальше от верхнего левого угла (это будущее место танка))
    2) Нажимаете Enter, после чего появится танк, после этого рисовать препятствия нельзя.
    3) Управление танком стрелками, и его башня всегда смотрит на мышку. Чтобы стрелять нужно кликнуть мышью (попробуйте кликнуть по препятсвиям)
    4) Если зажать Shift и двигать мышью то будет меняться освещение (Bump Mapping) (это можно делать и во время рисования препятсвий)

  57. Антон Волков Says:

    Результат от Андрея Копысова
    http://blog.alternativaplatform.com/ru/files/2008/04/tanks_xianto.swf

  58. Алексей Says:

    В примере от MikleB, у меня не работают стрелки, танк стоит на месте и не двигается.
    В примере от Андрея - танка (которым управляю) не видно, чисто интуитивно предполагаю что он в правом нижнем углу (но вне экрана).
    Так и должно быть?

  59. Андрей Копысов Says:

    >В примере от Андрея - танка (которым управляю) не видно, чисто интуитивно >предполагаю что он в правом нижнем углу (но вне экрана).
    >Так и должно быть?
    Нужно смотреть во флеш плеере, в броузере есть такой баг, почему он я не знаю, ибо совсем новичок. Исправить попытаюсь, но не в этой демке.

  60. Андрей Копысов Says:

    И вообще я считаю, что в ней смотреть абсолютно не на что - даже камера двигается не красиво. Тем более я перед тем как отправить её “оптимизировал” код определения столкновений и теперь появилось множество багов, например, раньше танк мог толкать другой танк, и снаряды всегда отскакивали от препятствия, а теперь если один снаряд уже застрял в препятствии, другие столкновения с этим препятствием не обрабатываются. Сама идея “танчиков” мне нравится, я ее не бросаю, и доведу таки до полноценной игры, хотя бы с одним уровнем.
    У MikleB оч. хорошо получилось, только мне кажется, что бамп маппинг считается не правильно, помоему автор считает освещение в tangent space и не учитывет расположение источника света, поэтому он освещеает битмап центрально, когда находится в центре экрана, а не в центре самого объекта.

  61. MikleB Says:

    To Алексей
    Хм. У меня во всех браузерах работает. Может вы нарисовали препятствие поверх танка? (т.е. танк стоит на препятствии, тогда он не будет двигаться)

  62. MikleB Says:

    To Андрей Коаысов, бамп у меня считается абсолютно правильно. Тут параллельное освещение и направляющий вектор лучей света задается вектором от центра картинки до мыши и z=ширине картинки/2

  63. Алексей Says:

    MikleB, точно. Пардон.

  64. Андрей Копысов Says:

    MikleB, может расскажите что-то про алгоритм? Очень шустро работает. Про фильтры, методы было бы интересно узнать, хотя может это секрет?

  65. MikleB Says:

    To Андрей Копысов
    Ну бамп-маппинг совсем просто делать, есть карта нормалей (битмап) и направляющий вектор света v (он не зависит от пикселя) - надо по ним получить карту освещенности. Пусть u - вектор цвета в каком нибудь пикселе карты нормалей, тогда надо чтобы в карте освещнности вектор цвета этого пикселя стал {alpha, (v,2*u-256), (v,2*u-256), (v,2*u-256)}. ( , ) -скалярное произведение. Ясно что это линейное преобразование над вектором u. И есть стандартный фильтр ColorMatrixFilter который как раз задает матрицу линейного преобразования над каждым пикселем битмапа.

  66. yanka Says:

    Прикольно! А что с ограничением сроков? Я еще успеваю?

  67. makc Says:

    может и мне попробовать? как раз недавно класс для хит-тестов произвольных полигонов замутил… заодно будет чем на майских заняться )

  68. Rzer Says:

    Мой танк http://atflash.ru/tank.rar - обидно, что не опубликовали…

  69. Rzer Says:

    Мое письмо ушло в спам)

  70. Квиринг Алексей Says:

    Rzer:
    Работали в авральном режиме - выставка и демка.
    Обязательно выставим, хотя ссылку вы и так дали :-)

  71. Антон Волков Says:

    Результат от makc
    http://blog.alternativaplatform.com/ru/files/2008/04/tanks_makc.swf

Оставить комментарий

(Регистрация)