Pull to refresh
221
0
Павло @TheShock

Senior JS Developer

Send message

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

Reading time 8 min
Views 18K

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

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

Он убежал по своим гейм-дизайнерским делам, а я — открыл IDE.
Читать дальше →
Total votes 53: ↑51 and ↓2 +49
Comments 45

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

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

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



Читать дальше →
Total votes 26: ↑26 and ↓0 +26
Comments 16

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

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

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




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

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

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

Кого заинтересовало узнать, что за игра — внизу есть видео и ссылка на бесплатное скачивание.
Читать дальше →
Total votes 30: ↑27 and ↓3 +24
Comments 51

Пользовательские плагины в JavaScript играх

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

— История изменений плагинов
— Автоматическое обновление плагина при обновлении версии игры
— Разработка плагинов на localhost
— Неограниченное количество веток, например, для нестабильных версий
— Зависимости (плагин А автоматически подключает плагин Б)
— Встроенная возможность делать паки (следствие предыдущего пункта)
— Легкое изменение любой части клиента игры
— Полный административный контроль авторов игры над всеми плагинами
— Поиск по базе плагинов
— При этом простая установка юзером и удобная работа для плагинописцев.
Читать дальше →
Total votes 19: ↑18 and ↓1 +17
Comments 20

[Опрос] Пользуетесь ли вы нелицензионным контентом?

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


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

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

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

Читать дальше →
Total votes 85: ↑67 and ↓18 +49
Comments 303

Изометрический сапёр на LibCanvas (html5)

Reading time 8 min
Views 42K

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

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






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

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

Читать дальше →
Total votes 125: ↑123 and ↓2 +121
Comments 52

Классический сапёр на html5 и LibCanvas

Reading time 10 min
Views 34K


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

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

Читать дальше →
Total votes 77: ↑75 and ↓2 +73
Comments 58

Солнечная система на LibCanvas

Reading time 10 min
Views 54K


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

В топике вы увидите описание процесс создания звёздной системы на последней версии LibCanvas. Быстро, оптимизированно, кратко.
Читать дальше →
Total votes 111: ↑107 and ↓4 +103
Comments 147

ЗdMax: создаём клип с космическими сценами

Reading time 4 min
Views 7.7K
ЗdMax: создаём клип с космическими сценами
Привет всем! С наступающим днём космонавтики!

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

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



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

Под хабракатом – много текста, картинок и несколько видео.
Читать дальше →
Total votes 77: ↑68 and ↓9 +59
Comments 70

mozilla is much slower then IE6

Reading time 1 min
Views 749
Просматривал список закрытых багов в 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 лет назад.
Total votes 63: ↑50 and ↓13 +37
Comments 37

Flash vs JavaScript, V8 Benchmark Suite

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


Читать дальше →
Total votes 69: ↑62 and ↓7 +55
Comments 89

Основы LibCanvas — практика

Reading time 5 min
Views 10K


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

Читать дальше →
Total votes 76: ↑73 and ↓3 +70
Comments 21

Основы LibCanvas — теория

Reading time 8 min
Views 15K


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

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

В этой статье будет только теория, а как применить эти знания на практике раскрыто в следующей статье
Читать дальше →
Total votes 79: ↑76 and ↓3 +73
Comments 28

Создание фреймворка для Canvas: объекты и мышь

Reading time 4 min
Views 8K


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

Читать дальше →
Total votes 80: ↑73 and ↓7 +66
Comments 16

Как написать ПингПонг при помощи LibCanvas

Reading time 7 min
Views 7.7K

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

Итак, в топике пошаговая инструкция, как создать ping-pong при помощи LibCanvas (без оптимизаций).
Читать дальше →
Total votes 49: ↑44 and ↓5 +39
Comments 24

FAQ по Canvas: задавайте вопросы

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

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

Ответы

Total votes 62: ↑54 and ↓8 +46
Comments 67

Пятнашки на LibCanvas

Reading time 3 min
Views 5.8K
Недавно на Хабре была статья про пятнашки на Canvas.
Отличная статья, уверен, новички найдут в ней много полезного. К сожалению, в комментариях высказались о немного завышеном потреблении процессора.
Это не от недостатка технологии, а от недостаточного опыта и удобных инструментов.
В этом топике я расскажу, как, при помощи LibCanvas, сделать эту игру совершенно нетребовательной к процессору и отлично выглядящей.
Читать дальше →
Total votes 65: ↑60 and ↓5 +55
Comments 43

Новости LibCanvas

Reading time 2 min
Views 1.6K
Где-то полгода назад я выкладывал несколько топиков про LibCanvas. Потом было затишье на Хабре, но не в репозитории. Работа активно продвигалась и библиотека обрела новые силы, возможности и базовую документацию.
Читать дальше →
Total votes 71: ↑66 and ↓5 +61
Comments 22

Как устроен jQuery: изучаем исходники

Reading time 6 min
Views 57K

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

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

Читать дальше →
Total votes 212: ↑200 and ↓12 +188
Comments 40

Information

Rating
Does not participate
Location
Киев, Киевская обл., Украина
Date of birth
Registered
Activity