• Композиция против наследования, паттерн Команда и разработка игр в целом


      Дисклеймер: По-моему, статья об архитектуре ПО не должна и не может быть идеальной. Любое описанное решение может покрывать необходимый одному программисту уровень недостаточно, а другому программисту — слишком усложнит архитектуру без надобности. Но она должна давать решение тем задачам, которые поставила перед собой. И этот опыт, вместе со всем остальным багажом знаний программиста, который обучается, систематизирует информацию, оттачивает новыки, и критикует сам себя и окружающих — этот опыт превращается в отличные програмные продукты. Статья будет переключаться между художественой и технической частью. Это небольшой эксперимент и я надеюсь, что он будет интересным.
      — Слушай, я тут придумал отличную идею игры! — гейм-дизайнер Вася был взъерошен, а глаза — красные. Я ещё попивал кофе и холиварил на Хабре, чтобы убить время перед стенд-апом. Он выжидательно посмотрел на меня, пока я закончу писать в комментариях человеку, в чем он не прав. Вася знал, что пока справедливость не восторжествует, а правда не будет защищена — смысла продолжать со мной разговор нету. Я дописал последнее предложение и перевел на него взгляд.

      — В двух словах — маги с маной могут кастовать заклинания, а воины могут сражаться в близком бою и тратить выносливость. И маги и воины могут двигаться. Да, там ещё можно будет грабить корованы, но это уже следующей версии сделаем, короче. Покажешь прототип после стенд-апа, окей?

      Он убежал по своим гейм-дизайнерским делам, а я — открыл IDE.
      Читать дальше →
    • Пишем игровую логику на C#. Часть 2/2

      • Tutorial
      Это продолжение предыдущей статьи. Мы шаг за шагом создаем движок, на котором будет работать игровая логика нашей экономической стратегии. Если вы видите это впервые — настоятельно рекомендую начать с Части 1, так как это зависимое продолжение и требует ее контекста.

      Как и раньше — внизу статьи вы можете найти полный код на ГитХаб и ссылку на бесплатное скачивание.



      Читать дальше →
    • Пишем игровую логику на C#. Часть 1/2

      • Tutorial
      Всем привет. В связи с выходом моей игры SpaceLab на GreenLight я решил начать серию статей о разработке игры на C#/Unity. Она будет основываться на реальном опыте её разработки и немного отличаться от стандартных гайдов для новичков:

      Во-первых, я не буду повторять документацию иными словами.
      Во-вторых, необходимо знание программирования, чтобы понять о чем я пишу.




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

      Зато я шаг за шагом расскажу о создании движка, на котором будет работать игровая логика нашей экономической стратегии.

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

      Кого заинтересовало узнать, что за игра — внизу есть видео и ссылка на бесплатное скачивание.
      Читать дальше →
    • Пользовательские плагины в JavaScript играх

        Wargaming сейчас разрабатывает тактическую карточную игру WoT: Generals. Веб-версия написана на JS, используются LibCanvas и AtomJS. Я принимал непосредственное участие в разработке и хочу рассказать про функционал, который мне кажется интересным и может быть полезным во всех веб-играх. А именно — о системе плагинов игры, которая вдохновлялась пакетными менеджерами в Linux и имеет следующие возможности:

        — История изменений плагинов
        — Автоматическое обновление плагина при обновлении версии игры
        — Разработка плагинов на localhost
        — Неограниченное количество веток, например, для нестабильных версий
        — Зависимости (плагин А автоматически подключает плагин Б)
        — Встроенная возможность делать паки (следствие предыдущего пункта)
        — Легкое изменение любой части клиента игры
        — Полный административный контроль авторов игры над всеми плагинами
        — Поиск по базе плагинов
        — При этом простая установка юзером и удобная работа для плагинописцев.
        Читать дальше →
      • [Опрос] Пользуетесь ли вы нелицензионным контентом?

          На волне очередного спора про копирайт на Хабре и ярой позиции «защитников копирайта» мне интересно выяснить, сколько абсолютно честных и правопослушных пользователей, которые пользуются только лицензионными продуктами. Сюда относится всё:


          — Книги (и их сканы)
          — Фильмы
          — ПО/Игры
          — Музыка

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

          Вторым опросом в топике интересно было бы выяснить, почему именно такой процент людей, которые используют нелицензионные продукты

          Читать дальше →
        • Изометрический сапёр на LibCanvas (html5)

          • Tutorial

          Этот топик будет отличаться от предыдущего топика Классический сапёр на html5 и LibCanvas. Его даже, скорее, можно назвать продолжением. И первая часть содержала пошаговую и детальную инструкцию, как заставить работать игрушку, то в этой части будет пару интересных приёмов, как её «оказуалить».

          Играть в изометрический «Сапёр»






          Если вы новичок в этом деле, то стоит начинать с первой части. Для тех, кто хочет углубляться я рассмотрю следующие темы на примере изометрического сапёра, построеного на базе LibCanvas:

          • Изометрическая проекция
          • Оптимизация скорости отрисовки через грязный хак
          • Спрайтовые анимации
          • Draggable слои
          • Оптимизация обработчика мыши согласно особенностей приложения

          Читать дальше →
        • Классический сапёр на html5 и LibCanvas

          • Tutorial


          В этой статье я пошагово расскажу, как писать самый обычный, классический сапёр при помощи Html5 Canvas, AtomJS, и тайлового движка LibCanvas.

          А также смотрите продолжение — "Изометрический сапёр на LibCanvas (html5)"

          Читать дальше →
        • Солнечная система на LibCanvas



            Вчера был отличный топик, "История одного хабраспора", о создании «галактики» на HTML5 Canvas, который сам по себе да своими комментариями вдохновил меня на ответный код. Думал, до окончания документации, не писать новых вещей на Хабру, но, как видите, сорвался) Спасибо kibizoidus за это.

            В топике вы увидите описание процесс создания звёздной системы на последней версии LibCanvas. Быстро, оптимизированно, кратко.
            Читать дальше →
          • ЗdMax: создаём клип с космическими сценами

              ЗdMax: создаём клип с космическими сценами
              Привет всем! С наступающим днём космонавтики!

              Мы написали песню на космическую тему и сняли клип (не коммерческий, с нулевым бюджетом). Всё было сделано не выходя из дома, на домашнем оборудовании и это доступно каждому, кто владеет ЗdMax'ом.

              Далее мы расскажем о кое-каких приёмах компьютерной графики. В этой статье вы сможете прочесть, как создавалась туманность для клипа:



              Если будет интерес – мы опишем и другие подходы, которые мы использовали во время его создания.

              Под хабракатом – много текста, картинок и несколько видео.
              Читать дальше →
            • mozilla is much slower then IE6

                Просматривал список закрытых багов в Firefox 9.0.1 и меня очень порадовала одна строка.

                685315 Remove JSOP_GETGLOBAL
                126212 mozilla is much slower then IE6! and uses 90MB
                678785 resource leak (not closed directory) in gfx/thebes/gfxFT2FontList.cpp


                Чтож, можно всех поздравить. Отныне, с версии 9.0.1 Firefox не только не медленнее, чем Internet Explorer 6, но и использует не 90MB. А ведь об этом баге было сообщено ещё 18 февраля 2002 года, почти 10 лет назад.
              • Flash vs JavaScript, V8 Benchmark Suite

                  iq12 (что примечательно, это студия, которая профессионально занимается разработкой при помощи Flash) портировали на Flash V8 Benchmark Suite — набор тестов предназначенный для определения скорости исполнения JavaScript в разных средах. Основной целью этого было сравнить скорость исполнения Flash vs JavaScript (вычислений, но не отрисовки). И, в итоге, они получили очень интересные результаты — за последние два года все популярные JavaScript-движки обогнали Flash по скорости вычислений:


                  Читать дальше →
                • Основы LibCanvas — практика



                    Это продолжение статьи про основы LibCanvas. Если первая часть затрагивала теоретические засады, то в этой части мы перейдём к практике и постараемся реализовать совсем базовые и простые вещи. Цель статьи — осилить самые основы LibCanvas, мы напишем очень простые скрипты, малопригодные для использования в реальной жизни, но вы их можете развить во что-то великое.

                    Читать дальше →
                  • Основы LibCanvas — теория



                      Добрый день. Один из самых частых вопросов про LibCanvas сейчас — «С чего начать?». Согласен, порог вхождения в эту библиотеку чуть выше, чем в более простые canvas-библиотеки, потому в этом топике я раскрою основы LibCanvas — базовые понятия и принципы, отрисовка примитивных фигур, события мыши, клавиатуры, анимация, расширенный контекст, поведения. Постараюсь описать всё это с множеством примеров и максимально доступным языком.

                      Надеюсь, статья даст ответы на вопросы: Что такое LibCanvas? Зачем он нужен и какие его преимущества? С чего начать?

                      В этой статье будет только теория, а как применить эти знания на практике раскрыто в следующей статье
                      Читать дальше →
                    • Создание фреймворка для Canvas: объекты и мышь



                        Среди вопросов на счёт Canvas чаще всего звучали вопросы по внутренностям фреймворков — как понять, что мышка находится над элементом, как это реализовано в фреймворках. В топике мы реализуем подобный Canvas фреймворк на базе AtomJS.

                        Читать дальше →
                      • Canvas F.A.Q


                          Несколько дней назад я предложил позадавать на Хабре интересующие вопросы по Canvas. Под Хабракатом — ответы на 27 вопросов.

                          Читать дальше →
                        • Как написать ПингПонг при помощи LibCanvas


                            День добрый. В этом топике я расскажу, как сделать ping-pong при помощи LibCanvas. Я значительно упростил её, оставив только самую важную часть, так как цель топика не создать игру ping-pong, а объяснить основы LibCanvas.

                            Итак, в топике пошаговая инструкция, как создать ping-pong при помощи LibCanvas (без оптимизаций).
                            Читать дальше →
                          • FAQ по Canvas: задавайте вопросы

                              Привет всем! Часто в комментах и в личке возникают вопросы на счёт Javascript Canvas.
                              У большинства даже если и есть теоретические знания — банально не хватает опыта.
                              У меня этот опыт есть. Потому в этой теме предлагаю задать вопросы по Canvas, на которые я отвечу следующим топиком.
                              Если нету реги на Хабре — можете скинуть свои вопросы на shocksilien@gmail.com, я добавлю его в топик.
                              Изначально хотел кинуть в q&a, но количество и качество вопросов в комментах к этому топику положительно скажется на качестве следующего топика, так что рассчитываю на вашу поддержку)

                              ps. Не стесняйтесь задавать те вопросы, которые вы считаете глупыми. Если они вас интересуют — задайте их.
                              pps. Я буду задавать уточняющие вопросы. Например «для каких целей?». Это не значит, что вопрос — неправильный. Это значит, что, зависимо от цели, могут быть разные решения.

                              Ответы

                            • Пятнашки на LibCanvas

                                Недавно на Хабре была статья про пятнашки на Canvas.
                                Отличная статья, уверен, новички найдут в ней много полезного. К сожалению, в комментариях высказались о немного завышеном потреблении процессора.
                                Это не от недостатка технологии, а от недостаточного опыта и удобных инструментов.
                                В этом топике я расскажу, как, при помощи LibCanvas, сделать эту игру совершенно нетребовательной к процессору и отлично выглядящей.
                                Читать дальше →
                              • Новости LibCanvas

                                  Где-то полгода назад я выкладывал несколько топиков про LibCanvas. Потом было затишье на Хабре, но не в репозитории. Работа активно продвигалась и библиотека обрела новые силы, возможности и базовую документацию.
                                  Читать дальше →
                                • Как устроен jQuery: изучаем исходники


                                    jQuery однозначно стал стандартом в индустрии веб-дева. Есть много отличных js-фреймворков, которые заслуживают внимания, но jQuery поразил всех своей лёгкостью, изящностью, магией. Люди пишут с использованием jQuery, люди пишут плагины для jQuery, люди даже пишут статьи про jQuery, но мало кто знает (особенно из новичков), КАК устроен jQuery.

                                    В этой статье проведем небольшой экскурс во внутренности этого фреймворка и разберем, что внутри.
                                    Статья рассчитана на базовые знания Javascript. Задумайтесь и, если вы знаете, как написать клон jQuery, то, скорее всего, вы тут не найдёте ничего нового. Остальным — добро пожаловать под кат

                                    Читать дальше →