Indie game storeFree gamesFun gamesHorror games
Game developmentAssetsComics
SalesBundles
Jobs

ct.js

Create cool 2D games with a free game editor! · By Cosmo Myzrail Gorynych

Потрясающий движок!

A topic by Random Unit created 86 days ago Views: 59 Replies: 3
Viewing posts 1 to 2

Привет, Владимир!

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

Во-вторых, есть к тебе просьба: не мог бы ты дать ссылку на мануал, где максимально доступно, буквально пошагово, объясняется, как в ct.js применять шейдеры (блумы там всякие, блюры и т.д.). Можно на английском. Ну или сам объясни если не сложно)

Спасибо)

Developer (1 edit)

Привет :) Рад, что тебе нравится двиг!

Я пока лично не занимался фильтрами и шейдерами в кт, но такой функционал есть в Pixi.js — графическом движке, на котором крутится кт. Поэтому в самом кт всё реализуемо тоже. Есть ряд готовых фильтров:

Блюр применяется довольно просто:

var blurFilter = new PIXI.filters.BlurFilter();
blurFilter.blur = 10;
this.filters = [blurFilter];

Похожим образом настраивается шум. Антиалясинг не требует настройки вообще, а вот смещению и альфа-маске понадобится текстурка. Текстурки можно получить с помощью ct.res.getTexture:

var displacement = new PIXI.Sprite(ct.res.getTexture('BG_Sand', 0));
var displacementFilter = new PIXI.filters.DisplacementFilter(displacement);
displacementFilter.padding = 10;
displacementFilter.scale.x = 30;
displacementFilter.scale.y = 30;
this.filters = [displacementFilter];

Тут важно при изменении списка шейдеров именно переназначать список фильтров у копий и не использовать методы массивов push и ushift — иначе не обновится в игре. Если нужно обновить существующий фильтр, то нужно менять его параметры (тут напр. blur).

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

(2 edits) (+1)

Спасибо за подробные разъяснения.
Готовые фильтры заработали без особых проблем, всё как ты описал, однако с дополнительными фильтрами, которые лежат здесь, возникли затруднения. Так как я пока что очень плохо разбираюсь во всех этих премудростях, у меня ушло полдня на то, чтобы заставить их работать (однако время потрачено не зря, так как подчерпнул много нового). Перепробовал все доступные способы подключения фильтров, но ни один из них не работал, после запуска игры дебаггер выдавал различные ошибки. В результате выяснил, что версия PIXI, которую ты используешь в своем движе, для этих фильтров слишком старая, так как они используют функцию  'getFilterTexture()',  которая появилась в версии 5.0.0. Скачав v5.0.3 и заменив ей файл в папке 'ct.release' я разом решил все проблемы. Фильтры я подключил в виде котомода и всё заработало, однако в консоли дебаггера вылезло несколько предупреждений об устаревших функциях (вот лог, если тебе это интересно). Насколько я понял, из-за этих ошибок пострадал функционал движка, поэтому я решил откатить всё назад и отказаться от использования фильтров, сосредоточившись на том, для чего я и собирался использовать этот движок - написании игр. Надеюсь, эта инфа была тебе полезна. Если вдруг я чем-то еще могу быть полезен - смело обращайся)

Developer

Ну что ж так сразу "слишком старая версия", пятый пикси вышел в этом месяце — руки ещё не дошли всё обновить :D Так да, про все изменения с 4й до 5й версии пикси в курсе.

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