Как стать автором
Обновить
222
0
Павло @TheShock

Senior JS Developer

Отправить сообщение

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

Время на прочтение8 мин
Количество просмотров18K

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

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

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

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

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

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



Читать дальше →
Всего голосов 26: ↑26 и ↓0+26
Комментарии16

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

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

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




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

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

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

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

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

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

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

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

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


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

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

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

Читать дальше →
Всего голосов 85: ↑67 и ↓18+49
Комментарии303

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

Время на прочтение8 мин
Количество просмотров42K

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

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






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

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

Читать дальше →
Всего голосов 125: ↑123 и ↓2+121
Комментарии52

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

Время на прочтение10 мин
Количество просмотров34K


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

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

Читать дальше →
Всего голосов 77: ↑75 и ↓2+73
Комментарии58

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

Время на прочтение10 мин
Количество просмотров54K


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

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

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

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

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

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



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

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

mozilla is much slower then IE6

Время на прочтение1 мин
Количество просмотров756
Просматривал список закрытых багов в 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 лет назад.
Всего голосов 63: ↑50 и ↓13+37
Комментарии37

Flash vs JavaScript, V8 Benchmark Suite

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


Читать дальше →
Всего голосов 69: ↑62 и ↓7+55
Комментарии89

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

Время на прочтение5 мин
Количество просмотров10K


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

Читать дальше →
Всего голосов 76: ↑73 и ↓3+70
Комментарии21

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

Время на прочтение8 мин
Количество просмотров15K


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

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

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

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

Время на прочтение4 мин
Количество просмотров8K


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

Читать дальше →
Всего голосов 80: ↑73 и ↓7+66
Комментарии16

Canvas F.A.Q

Время на прочтение8 мин
Количество просмотров67K

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

Читать дальше →
Всего голосов 134: ↑124 и ↓10+114
Комментарии22

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

Время на прочтение7 мин
Количество просмотров7.7K

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

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

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

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

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

Ответы

Всего голосов 62: ↑54 и ↓8+46
Комментарии67

Пятнашки на LibCanvas

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

Новости LibCanvas

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

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

Время на прочтение6 мин
Количество просмотров58K

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

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

Читать дальше →
Всего голосов 212: ↑200 и ↓12+188
Комментарии40

Информация

В рейтинге
Не участвует
Откуда
Киев, Киевская обл., Украина
Дата рождения
Зарегистрирован
Активность