forum.boolean.name

forum.boolean.name (http://forum.boolean.name/index.php)
-   JavaScript / HTML (http://forum.boolean.name/forumdisplay.php?f=136)
-   -   j2Ds (http://forum.boolean.name/showthread.php?t=19970)

Skaner 31.08.2015 13:23

j2Ds
 
Может кому будет интересно или даже полезно =)
Ведем разработку игрового 2D движка на HTML5 основе.
Сейчас пока возможностей не так много...

Исходники движка: https://github.com/SkanerSoft/J2ds

Характеристики
- Жанровая направленность: 2D игры любого жанра и типа;
- Платформа: HTML5;
- Лицензия: абсолютно бесплатно и без ограничений;
- Языки программирования: JavaScript;
- Открытый исходный код: предоставляется;
- Достоинства: понятен для новичков, открыт, развивается;
- Разработчики движка: SkanerSoft

Особенности
- Поддержка ограничения FPS
- ООП архитектура
-Работа с примитивами
- Прозрачности, цветовые эффекты
- Спрайты, сложные линии
- Анимация изображений, работа со спрайт-картами, скорость анимации, фрейм-движок
- Работа со сценой, как с объектом
- Работа с игровыми состояниями, меню, паузы, уровни
- Поддержка мыши/клавиатуры/тачскрина
- Обнаружение столкновений, создание собственных объектов на основе имеющихся
- Работа с камерами, вращение, перемещение, поддержка viewports
- Постобработка, motionBlur, alphaBlur, Сепия, инверс цветом и т.д.

Целевая платформа для готовой игры может быть совершенно любой, на данный момент протестированы следующие платформы:

WEB (Chrome, FireFox, Web-browser Ubuntu, Safari, Opera)
Android (начиная с 4.4.2, ниже не тестили)
iOS
Социальная сеть ВКонтакте (по сути тот же веб)

Примеров игр пока мало... поиграть в них можно тут
Посмотреть еще пример

Nerd 31.08.2015 14:12

Ответ: j2Ds
 
Слишком сыро.
Пример с бегущим кубиком тормозит (или это фича?), ибо хотя бы пост-эффекты надо рисовать через 3д-контекст.
Цитата:

a= createRect(vec2df(50, 50), vec2df(30, 30), 'black');
Ппц. В javascript такой подход не годится.

Skaner 31.08.2015 15:12

Ответ: j2Ds
 
В каком плане тормозит? Сыро - это не то слово)) В разработке ведь еще) Про кубик... при частых прыжках "время" в игре замедляется, чем реже прыжки - тем быстрее движется кубик и тем быстрее набираются очки.

Skaner 31.08.2015 15:15

Ответ: j2Ds
 
Про подход, можно использовать след. варианты:
a= addRectNode(vec2df(10, 50), vec2df(20, 20), 'red');
или
a= addRectNode({x:10, y:30},{x:20, y:20}, 'red');
или
a= new RectNode(10, 30, 20, 20, 'red')

Skaner 20.09.2015 20:29

Ответ: j2Ds
 

Движок обновился, сделал адекватную справку на гите, и пару рабочих демок в архиве с двигом. Растем)))

Randomize 20.09.2015 21:44

Ответ: j2Ds
 
Цитата:

Сообщение от Skaner (Сообщение 299130)
Про подход, можно использовать след. варианты:
a= addRectNode(vec2df(10, 50), vec2df(20, 20), 'red');
или
a= addRectNode({x:10, y:30},{x:20, y:20}, 'red');

Это создаёт новые сущности (Object со всеми его многообразными свойствами), которые накапливаются в памяти пока ни придёт Garbage Collector, он это дело найдёт и будет чистить. Во время чистки будет ощутимый "пролаг".
В js нужно очень бережно аллоцировать память.

Nikich 20.09.2015 21:50

Ответ: j2Ds
 
Почему не WebGL? Почему не используется паттерн object pool?

moka 21.09.2015 14:05

Ответ: j2Ds
 
Исходники открыты, а можно ссылку на гит в первом посте?
И какие у вас преимущества против например pixi.js?

Skaner 23.09.2015 14:24

Ответ: j2Ds
 
Цитата:

Сообщение от moka (Сообщение 299776)
Исходники открыты, а можно ссылку на гит в первом посте?

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

По поводу преимуществ перед Pixi сказать ничего не могу, так как с Pixi не знаком.

На гите описаны возможности и лежит подробная справка.

Движок имеет очень низкий порог вхождения и не требует каких-то сверх знаний в области проектирования ООП в целом.

Из коробки уже есть работа с примитивами, спрайтами, устройствами ввода, слоями. Есть возможность определять игровые состояния (аналогично activity в Android), поддержка клавиатуры, мыши, сенсоров... много всего есть.

Ссылка на гит: https://github.com/SkanerSoft/J2ds

В первый пост, увы, добавить не могу =(

Nikich 23.09.2015 14:41

Ответ: j2Ds
 
Цитата:

Движок имеет очень низкий порог вхождения и не требует каких-то сверх знаний в области проектирования ООП в целом.
Это же не означает, что код движка должен быть плохо спроектирован. Object pool даст существенный прирост в скорости, особенно в JS.

moka 23.09.2015 15:32

Ответ: j2Ds
 
Цитата:

Сообщение от Skaner (Сообщение 299826)
Нет возможности редактировать первый пост, видимо время истекло...

В первый пост, увы, добавить не могу =(

Добавил.

Цитата:

Сообщение от Skaner (Сообщение 299826)
По поводу преимуществ перед Pixi сказать ничего не могу, так как с Pixi не знаком.

Очень рекомендую ознакомится детально с рынком 2д движков сперва. Понять суть их проблем и приемуществ.

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

Skaner 25.10.2015 10:58

Ответ: j2Ds
 
Проект делается исключительно для русскоговорящих. Хотя и не отменяет использования другими людьми, кто понимает этот язык, а так же движок подразумевает очень низкий порог вхождения в процесс разработки.

Мы обновились до версии 0.0.5, появилось много нового, например: менеджер состояний, возможность генерировать текстуры программно, создавать шаблоны алгоритмов текстурирования, на основе этого можно делать генерируемые облака, траву, всегда разные. Скоро добавятся деревья, постройки, и персонажи. Так же обновилась система контроллеров, поддерживаются все события клавиатуры а так же есть возможность считывания символа при нажатии, удобно для проверки чит-кода)

moka 26.10.2015 01:09

Ответ: j2Ds
 
0.0.5? А какую нотацию версий вы используете?

Skaner 26.10.2015 14:18

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

moka 26.10.2015 15:43

Ответ: j2Ds
 
Если ты используешь семантическую версию нотаций, то твой 0.0.5 должен быть 0.1.0, т.к. ты реализовал новые фичи, а не только баг фиксы, и это minor (второе число) обновление.

Skaner 26.10.2015 22:16

Ответ: j2Ds
 
Я в курсе, moka, как это работает =)

Skaner 08.12.2015 10:54

Ответ: j2Ds
 
Меня тут упрекнули, что работа встала. Не встала, движок уже дорос до версии 0.3:
Добавлен файл history, отображающий изменений от версии к версии, лишь косвенные.

На данный момент движок оборудован следующим функционалом:
- Добавлена поддержка колесика мыши
- Добавлены возможности позиционировать объекты по отдельным координатам
- Изменен подход к организации события мыши, добавлены типы событий:
- isMouseDown - удерживание кнопки мыши
- isMousePress - однократное нажатие кнопки мыши
- isMouseUp - отпускание кнопки мыши
- Так же функции принимают в качестве аргумента следующие строки:
- LEFT
- RIGHT
- MIDDLE

Немного о грядущих нововведениях:
- Добавлен менеджер видов. Теперь можно создавать сколь угодно Видов (ViewPort), управлять ими, переключаться.
- Добавлены функции автоматической перерисовки сцены, чтобы не вызывать для каждого объекта метод draw()
- Добавлен менеджер игровых состояний.
- Изменен механизм работы с устройствами ввода / вывода.
- Добавлен менеджер обработки событий тачскрина "getTouchIO()" с поддержкой событий isTap[Down|Press|Up].
- Так же в обработчик мыши добавлены события isMouseMove() а в обработчик сенсорного ввода isTouchMove(). Подробно обо всех событиях будет описано в справке и в history-файле. Обновление выйдет в ближайшую субботу. По всем нововведениям и обновлениям информацию вы всегда можете получить на GitHub проекта и так же на сайтах проекта.

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

По всем вопросам отвечаю либо тут, либо ВК, либо на форуме проекта. Лучше конечно на форуме самого движка, дабы сконцентрировать информацию по движку.

К сожалению, описывать полностью всё просто нет времени, по всем возможностям на Гите есть Справка и Вики, выше текст к последней новости с оф. сайта.

Skaner 09.12.2015 10:12

Ответ: j2Ds
 
Немного изменена архитектура движка. Теперь функционал разделен на Менеджеры.
в j2Ds менеджер - это специальный объект, который отвечает за ту или иную часть движка. Разбивка на менеджеры дает возможность использовать в ваших проектах только тот функционал, который требуется именно вам, при этом совершенно не нужно вникать, как работают остальные части.
На текущий момент в движке задействованы следующие менеджеры:
- Менеджер сцены: getSceneManager()
- Менеджеры управления
- - getIO
- - getTouchIO
- Менеджер игровых состояний: getGameStateManager()
- Менеджер слоев: getLayerManager()
- Менеджер текстур: getTextureManager()
- Менеджер устройства: getDeviceManager()
- Менеджер звука: getSoundManager()
- Менеджер хранения данных: getMemoryManager()
- Менеджер видок (камер): getViewManager()
- Менеджер расчетов FPS и оптимизации: getFPSManager()
- Менеджер для работы с DOM: getDOMManager()

Пока это все менеджеры, доступные в движке, но поверьте, на их основе создать полноценный проект можно уже сейчас.
Обновление планируется на субботу.

Skaner 13.12.2015 14:59

Ответ: j2Ds
 
Глобальное обновление. Полная потеря совместимости. Поддержка звука. Как-то так должна называться эта новость...
Но, название, как всегда - весьма банальное: Обновление j2Ds до версии 0.4.0.
Первое, и, наверное, не очень радостное известие - безболезненно обновиться на новую версию будет нельзя. Связано это с тем, что изменениям подверглись все глобальные объекты. В движок введено понятие "Менеджер", которое определяет специальный объект, отвечающий конкретно за свою область работы. Менеджер следит за стеком, за объектами, вверенными ему в наблюдение. Всеми менеджерами можно легко управлять. Для обновления, в принципе, нужно внимательно глядеть в справку, чтобы ваш проект внезапно не начал работать не совсем так, как вы того ожидаете. При обновлении так же очень рекомендуется поглядывать в веб-консоль, и следить, какие методы вызывают ошибки, чтобы устранить их, посмотрев в справку. Ну, думаю, справиться будет не сложно. Благо это касается лишь самих менеджеров, методы не тронуты, только расширенны.

Второе, не менее важное, список менеджеров:
- Менеджер сцены: getSceneManager()
- Менеджеры управления
- - getIO
- - getTouchIO
- Менеджер игровых состояний: getGameStateManager()
- Менеджер слоев: getLayerManager()
- Менеджер текстур: getTextureManager()
- Менеджер устройства: getDeviceManager()
- Менеджер звука: getSoundManager()
- Менеджер хранения данных: getMemoryManager()
- Менеджер видок (камер): getViewManager()
- Менеджер расчетов FPS и оптимизации: getFpsManager()
- Менеджер для работы с DOM: getDOMManager()
- Менеджер векторов и математики: getMathManager()
- Менеджер рисования (кисть): getPaintManager()
Подробно обо всем написано в справке.

Третье, в движок заехал звук.
Менеджер звука полностью рабочий, базируется на HTML5 Audio, и позволяет следующее:
- загрузка звука из файла
- Воспроизведение
- - Одиночное
- - Зацикленное
- Управление воспроизведением
- Управление громкостью
- Все возможности плеера
- Глобальные методы
- Блокировка воспроизведения

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

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

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



RegIon 13.12.2015 16:16

Ответ: j2Ds
 
Оо. Привет земляк!

Skaner 14.12.2015 10:09

Ответ: j2Ds
 
И сразу за обновлением готовится обновление 0.5.0, в котором добавлен новый менеджер для работы с триггерами.
На текущий момент поддерживаются три типа событий:
- Циклическое выполнение команд каждый N секунд.
- Разовый запуск команд с задержкой
- Циклическое выполнение с зарержкой.

Пока это лишь прототип, проверить можно будет чуть позже на j2ds.ru, там уже, кстати, доступны примеры программ с использованием звуков. BezaBead тоже модифицирован согласно вововведениям.


Часовой пояс GMT +4, время: 07:16.

vBulletin® Version 3.6.5.
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Перевод: zCarot