RGB Invaders для 10K Apart

    RGB InvadersПродолжая эстафету, начатую whoozle и dima117, хочу представить свою работу для конкурса 10K Apart.
    Когда я узнал о конкурсе, я сразу решил — нужно писать вариацию на тему Space Invaders. Добро пожаловать под кат, чтобы узнать что у меня получилось :)

    Итак, в 10 килобайт мне удалось вместить вот что (картинка кликабельна):

    gameplay 1

    Ключевые фичи моего приложения:
    • Независимая от FPS скорость движения объектов на сцене;
    • Точный алгоритм определения столкновения быстро движущихся объектов;
    • Детальная анимация взрывов;
    • Анимированная расстановка захватчиков по позициям в строю;
    • Отсутствие сторонних библиотек, только чистый JavaScript + canvas.
    Как программиста, меня порадовала возможность на практике применить прототипное наследование в очень подходящем для этого месте — все объекты на сцене являются графическими примитивами и работают похожим образом.
    Ну и конечно пришлось потрудиться над оптимизацией отрисовки большого количества объектов на канве, поскольку её производительность в некоторых ситуациях оставляет желать лучшего.

    Если наберется хотя бы пятеро хабралюдей, кому будет интересно узнать как все это устроено и работает — с радостью откомментирую исходный код и расскажу обо всем в отдельном посте.

    И, да, если вам понравился результат — проголосуйте пожалуйста :)

    UPD: Желание узнать больше изъявили многие, так что в ближайшие несколько дней опишу все и выложу отдельным постом.
    Поделиться публикацией

    Комментарии 48

      +10
      бедный мой пробел :((
        +3
        пробелы дружно просят автострельбу (-:
          0
          +100500!
          и еще бы кнопку рестарта игры, а то релоад страницы — не комильфо.
          а за игру спасибо, порадовала, поностальгировал :)
          виртуальный + в карму! :)
        +3
        Очень здорово. Проголосовал.
        Ну и конечно же интересно, был бы рад посту.
        P.S. Стрелять очередью не спортивно ;)
          0
          Спасибо. Сначала я не планировал стрельбу очередью, но потом понял — нужно больше экшена :)
            +1
            В оригинале было без очереди (да и динамика не та) так что в принципе тут две точки зрения, с одной стороны «от источника далеко ушли» с другой «получилось даже лучше оригинала»

            Только вот синие пули противника не очень хорошо видно.
          0
          Не плохо. После GameOver есть какой нибудь способ начать игру заново не обновляя страницу? И вражеские снаряды только я первый раз не заметил? Особенно синие.
            0
            Способа начать игру заново нет — код не поместился в 10 килобайт. Синие снаряды это да, монитор на котором я отлаживал был излишне ярким и все хорошо было видно. Мне коллеги позже тоже жаловались на «синих тварей», стреляющих невидимыми снарядами, но было уже поздно, время размещения приложений закончилось.
            +4
            Я бы посмотрел на комментированный код.
              +12
              А я бы почитал полноценную статью о участии в игре и разработке, а не этот мини-анонс.
                0
                Об участии в конкурсе, несомненно. Извиняюсь.
                  +2
                  А что конкретно стоит рассказать о конкурсе? Все же просто было — увидел пост habrahabr.ru/blogs/webdev/100548/ и решил, что такой конкурс я пропустить не могу :)
                  Что касается процесса разработки — ок, считаю ваш голос как еще плюс один к желающим узнать подробнее.
                    +4
                    Вы пишите, а желающие почитать в рабочее время обязательно появятся ;-)
                      +1
                      Мне интересно.
              • НЛО прилетело и опубликовало эту надпись здесь
                  +1
                  Да, они специально так движутся — мне хотелось динамики, и я отступил от канона.
                  –8
                  На спектрумах в 10К впихивали не одну такую игру… Да и сравнить те команды с высокоуровневыми современными…
                    +6
                    Ну, вы сравнили, конечно… скриптовый язык с машинным кодом.
                      +3
                      Так ведь эта игрушка не скомпилирована.
                      0
                      У меня 1024х768 (старенький ноутбук) — игра по высоте не влазит в экран.
                        0
                        My fault :( В последний момент над игровым полем добавил span для отображения очков а само поле уменьшить забыл.
                          0
                          Я боюсь на нетбуке запускать — 1024х600
                            0
                            Нетбук. Хром 5 с чем-то. На полный экран влезает прекрасно… Хотя на нетбуке лучше не играть, клавиатуру чинить дорого ;)
                          +2
                          Use F11, Luke!
                            +1
                            измени масштаб странички, игра масштабируется.
                              0
                              Лучше все-таки F11. У меня на нетбуке (1280х720) при масштабируемости заметны тормоза и от сглаживания теряется шарм пикселизации.
                            +1
                            Очень здорово!
                            Печально что при разбиении формации (например сносе всей левой части), остатки не движутся как положено от края к краю.
                            А ещё как-то медленно они опускаются.

                            В остальном — экшен! И анимация очень плавная, это приятно.
                              +4
                              Круто, желаю тебе победы в конкурсе из тех работ что были представлены на хабре на мой взгляд твоя лучшая :)
                                0
                                Спасибо :)
                                  0
                                  Подписываюсь. Люблю простоту. И экшен.
                                  +1
                                  Клёво! Только у меня в 1280х800 не совсем влезло, пришлось масштабировать. Но от этого вся прелесть никуда не делась.

                                  Желаю вам победы, разумеется! :)
                                    0
                                    Жаль, что только одна жизнь дается. Почему, собственно?
                                      0
                                      Я собирался добавить несколько жизней, но потом передумал: с одной жизнью игра держит в большем напряжении :)
                                      0
                                      Класс. Другие работы в этом конкурсе унылы.
                                      Очень хочется увидеть классических Invaders с блоками защиты внизу и постепенным опусканием врагов.
                                      Здорово! И спасибо :)
                                        +1
                                        И да, ждем обзора, как всё это делалось.
                                        0
                                        ВтройВторой раз играть в нее уже не смогу. Рука болит. Пробел умоляет пощадить =)
                                        А так получилось очень даже нормально!

                                        P.S. Еще бы кто нить аракноида сделал.
                                          0
                                          Да, рука и впрямь заболела.
                                          0
                                          А паузы нет? :)
                                            0
                                            Отлично, но синие снаряды очень плохо видно, было бы здорово вообще один цвет им назначить, чтобы понятнее было.
                                            • НЛО прилетело и опубликовало эту надпись здесь
                                                0
                                                клёвая игруха!
                                                  0
                                                  Пара замечаний к геймплею, в классическом space invanders:
                                                  — снаряд только один и выстрелить можно только если его нет на экране (попал в цель или ушёл за границу экрана);
                                                  — захватчики не только одного типа, там было или 3 или 4 фигуры;
                                                  — был бонусный кораблик время от времени проплывающий сверху, попадание в которого давало дополнительные очки;
                                                  — были блоки-укрытия;
                                                  — захватчики стреляли чаще (для этого собственно укрытия и были);
                                                  — захватчики ускорялись по мере перехода с этапа на этап, а также по мере уменшения их численности на этапе;
                                                  — захватчики должны долететь от одной части экрана до второй, при том что если у нас остался один столбик захватчиков, они все должны были долететь от левой стороны к правой и обратно, фактически по геймплею уничтожение столбов позволяло повысить шансы на выживание (становился длиннее цикл движения захватчиков).

                                                  Игра классная, спасибо.
                                                    0
                                                    Да, я знаю что по геймплейным фишкам моему приложению до классических Space Invaders еще далеко. Просто мне хотелось сделать динамичную версию, с красивыми взрывами, на что ушло достаточно кода :) Что касается движения от одного края экрана до другого — наверное можно было бы вместить, но времени уже не оставалось.
                                                    А усложнение от этапа к этапу есть и у меня — постепенно растет скорость снижения захватчиков (разве что очень медленно) и сами они становятся агрессивнее — чаще стреляют.
                                                    +6
                                                    Хабра народ участвующий в конкурсе 10к 10k.aneventapart.com/
                                                    Twimage: на хабре, на 10k
                                                    Fontanero: статья . На 10k
                                                    8ball: Статья на хабре, на 10k
                                                    10k World: статья на хабре, на 10к
                                                    RGB Invaders: Cтатья на хабре, на 10k

                                                    Теперь Саботаж на 10k

                                                    На сайте Fontanero
                                                    msk Aug 25, 2010 1:27 PM
                                                    You copied this from Nihilogic, see blog.nihilogic.dk/2008/05/compression-using-canvas-and-png.html This is a violation of the 10k Apart rules

                                                    На Сайте 8ball про хабр
                                                    Stefan Aug 26, 2010 10:24 AM
                                                    Russians cheaters made 500 votes per hours
                                                    to stefan Aug 26, 2010 10:40 AM
                                                    it's «habraeffect» (habrahabr.ru)

                                                      +2
                                                      Там вообще довольно унылая система рейтинга. Приложение, за которое один раз проголосовали пятеркой выйдет на первое место, а приложение у которого оценка 4.8 при 3000 голосов — будет на втором/третьем
                                                        0
                                                        Т.е. Гипотетически кто то в последнюю минут может стать зрительским выбором =) 100 человек по 5-ке =) и всё. По хорошему надо было делать может даже по направлениям, лучшая играя, лучшее приложение и так далее…
                                                          0
                                                          >> Там вообще довольно унылая система рейтинга.

                                                          Сортировка по рейтингу, таки да, по среднему арифметическому, но будет ли приниматься в расчёт количество голосов — посмотрим по результам, тем более, что:

                                                          >> One Grand Prize: Best Overall App in Contest
                                                          >> Three Runners Up: Best Design, Best Technical, People’s Choice

                                                          Grand Prize, Best Design, Best Technical видимо, выбирают судьи, а голосование посетителей сайта — лишь последний пункт.
                                                          +1
                                                          Вот чмошники! :)

                                                        Только полноправные пользователи могут оставлять комментарии. Войдите, пожалуйста.

                                                        Самое читаемое