Фичерия - featurea
| |
dimakoles | Дата: Пятница, 29 Июля 2016, 12:44 | Сообщение # 121 |
почетный гость
Сейчас нет на сайте
| Цитата bodya_WM ( ) Я говорил о универсальном классе GameObject.
Цитата bodya_WM ( ) Почему я должен реализовывать вслепую GameObject? Почему бы не сделать его сразу, полностью универсальным? Есть поддержка компонентов на игровых объектах? Behaviours?
я подумаю о том, чтобы сделать wrapper над Area в виде GameObject, назову его unity. будет лежать в движках https://github.com/dmitrykolesnikovich/featurea/tree/master/engines
Сообщение отредактировал dimakoles - Пятница, 29 Июля 2016, 12:46 |
|
| |
bodya_WM | Дата: Пятница, 29 Июля 2016, 12:48 | Сообщение # 122 |
постоянный участник
Сейчас нет на сайте
| Зачем? Добавлено (29 июля 2016, 12:48) --------------------------------------------- Зачем называть его Unity
Разработчик игрового движка WaveGameEnvironment2D
|
|
| |
dimakoles | Дата: Пятница, 29 Июля 2016, 12:49 | Сообщение # 123 |
почетный гость
Сейчас нет на сайте
| Цитата bodya_WM ( ) Зачем называть его Unity по факту существует возможность сделать API как в юнити, просто имплементация этого апи будет опираться на классы модуля platform
с behaviours и т.д. и т.п.
Сообщение отредактировал dimakoles - Пятница, 29 Июля 2016, 12:51 |
|
| |
bodya_WM | Дата: Пятница, 29 Июля 2016, 12:54 | Сообщение # 124 |
постоянный участник
Сейчас нет на сайте
| Цитата по факту существует возможность сделать API как в юнити, просто имплементация этого апи будет опираться на классы модуля platform Зачем заниматься извращениями, если сразу можно было запилить нормальную компонентную систему. Где биндинг луа?Добавлено (29 июля 2016, 12:54) ---------------------------------------------
Цитата с behaviours и т.д. и т.п. у вас ни одного биндинга нет, какие behaviours?
Разработчик игрового движка WaveGameEnvironment2D
|
|
| |
dimakoles | Дата: Пятница, 29 Июля 2016, 13:25 | Сообщение # 125 |
почетный гость
Сейчас нет на сайте
| Цитата bodya_WM ( ) Зачем заниматься извращениями, если сразу можно было запилить нормальную компонентную систему. Где биндинг луа? компонентная система может быть реализована по-разному, а не только так как в юнити
Цитата bodya_WM ( ) у вас ни одного биндинга нет, какие behaviours? xml схема это биндинг тег или атрибут будут behaviour
|
|
| |
bodya_WM | Дата: Пятница, 29 Июля 2016, 13:43 | Сообщение # 126 |
постоянный участник
Сейчас нет на сайте
| Цитата компонентная система может быть реализована по-разному, а не только так как в юнити
а причем тут юнити? Компонентная система как в юнити есть и в уе4.
Цитата xml схема это биндинг Я о биндинге к скриптовому языку а не сериализацию данных
Цитата тег или атрибут будут behaviour а это тут причём? В данном случае имелся ввиду скрипт, унаследованный от базового суперкласса - компонента(как в юнити monobehaviour).
Разработчик игрового движка WaveGameEnvironment2D
|
|
| |
dimakoles | Дата: Суббота, 30 Июля 2016, 00:17 | Сообщение # 127 |
почетный гость
Сейчас нет на сайте
| Цитата bodya_WM ( ) а это тут причём? В данном случае имелся ввиду скрипт, унаследованный от базового суперкласса - компонента(как в юнити monobehaviour). Какой угодно объект можно сделать атрибутом или тегом. В том числе объект скрипта.
Добавлено (30 июля 2016, 00:17) ---------------------------------------------
Цитата bodya_WM ( ) Я о биндинге к скриптовому языку а не сериализацию данных
Java-centric Lua interpreter
Биндинг посредством xml схемы это не про сериализацию, а как раз про интеграцию стандартных компонентов с визуальным редактором (фичерией).
поскольку есть "порт" луа на джаву, то есть техническая возможность написать скрипт на луа, сохранить его в файлик например customBehaviour.lua, а потом из xml файлика указать на него путь
Код <MyGameObject> <Behaviour file="customBehaviour.lua"/> </MyGameObject>
и в рантайме за счет xml схемы сбилдаем из этого xml файлика джава объект MyGameObject с поведением customBehaviour.lua. Это будет редактируемо из визуального редактора, показанного на видео. Вплане выбор какой Behaviour какому GameObject добавить - просто как дочерний тег.
Сообщение отредактировал dimakoles - Суббота, 30 Июля 2016, 00:37 |
|
| |
bodya_WM | Дата: Суббота, 30 Июля 2016, 18:02 | Сообщение # 128 |
постоянный участник
Сейчас нет на сайте
| Цитата и в рантайме за счет xml схемы сбилдаем из этого xml файлика джава объект MyGameObject с поведением customBehaviour.lua. Это будет редактируемо из визуального редактора, показанного на видео. Вплане выбор какой Behaviour какому GameObject добавить - просто как дочерний тег. Что ? Трансляция Lua в Java ?
Разработчик игрового движка WaveGameEnvironment2D
|
|
| |
ShortKedr | Дата: Суббота, 30 Июля 2016, 18:32 | Сообщение # 129 |
Renword Studio
Сейчас нет на сайте
| bodya_WM, а почему бы и нет? Только я сначала советую заняться более важными делами и реализовать сначала сам движок для java, а потом уже всякие трансляторы писать
|
|
| |
bodya_WM | Дата: Суббота, 30 Июля 2016, 18:33 | Сообщение # 130 |
постоянный участник
Сейчас нет на сайте
| Это очень медленно в рантайме. Разве что писать компилятор Lua -> Compiled Class.
Разработчик игрового движка WaveGameEnvironment2D
|
|
| |
dimakoles | Дата: Суббота, 30 Июля 2016, 23:07 | Сообщение # 131 |
почетный гость
Сейчас нет на сайте
| Запушил окончательно саппорт батчей на гитхаб. Перформанс повысился значительно. Тесты проводил пока только на маломощном железе http://catalog.onliner.by/mobile/samsung/samsung_g350e. До вечера понедельника планирую прокрутить тесты на более мощных моделях.
Тест 6k спрайтов по 16x16: (исходник https://github.com/dmitryk....nceTest, билд с google drive https://drive.google.com/file....sharing) на десктопе 200 FPS на мобилке 50 FPS (железо маломощное, 1 процессор 1 200 МГц, 512 МБ оперативной)
Тест Марио: на десктопе 500 FPS (раньше было 100) на мобилке 50 (раньше было 40 на более мощном девайсе http://catalog.onliner.by/compare/htc_desire516ds+samsung_g350e)
Какой тест еще провести? Каковы вообще критерии барахло-не барахло по перформансу? Какова стратегия задания capacity батчам? Конфиурить динасмически? Константой? Увеличивать, если надо на лету? Поделитесь best practice про выделение памяти под буферы, пожалуйста.
Добавлено (30 июля 2016, 23:07) --------------------------------------------- Вопрос всем по LUA. Кто его заводил когда своими руками на мобилке? Имеет резон?
Сообщение отредактировал dimakoles - Вторник, 02 Августа 2016, 22:52 |
|
| |
bodya_WM | Дата: Воскресенье, 31 Июля 2016, 00:12 | Сообщение # 132 |
постоянный участник
Сейчас нет на сайте
| Цитата билд с google drive https://drive.google.com/file....sharing) зачем ты скинул билд для ведра ?
Цитата Вопрос всем по LUA. Кто его заводил когда своими руками на мобилке? Имеет резон? Он есть под арм. Можно завести.
Разработчик игрового движка WaveGameEnvironment2D
|
|
| |
dimakoles | Дата: Понедельник, 01 Августа 2016, 03:48 | Сообщение # 133 |
почетный гость
Сейчас нет на сайте
| show case
|
|
| |
sfabrikan | Дата: Понедельник, 01 Августа 2016, 11:51 | Сообщение # 134 |
БЕЗУМЕЦ!!!
Сейчас нет на сайте
| Цитата dimakoles ( ) Вопрос всем по LUA. Кто его заводил когда своими руками на мобилке? Имеет резон? Да, заводится. Например движок love2d поставить на андроид и на андроиде скриптовать игры.
Это я
|
|
| |
dimakoles | Дата: Понедельник, 08 Августа 2016, 15:09 | Сообщение # 135 |
почетный гость
Сейчас нет на сайте
| Прикрутил Tool Windows. Цвета и размеры - промежуточный вариант. Пока только голый UI. Плавающие окна поверх главного окна по принципу фотошопа: трекать координаты мышки, FPS, Palette, отображать загрузку батчей во времени, ...
Видео
Добавлено (05 августа 2016, 22:26) --------------------------------------------- Добавил Info (x, y, w, h, fps) и Draw All Batches (отрисовывать все батчи, или как в продакшне - только "видимые")
Видео
Добавлено (08 августа 2016, 15:09) --------------------------------------------- Профайлю gl код. В тестовом примере у меня всего только один батч. capacity = 10. size (загрузка) = 6.
Код // готовлю буферы void onPrepareDraw(){ gl.bind(currentTextureId); gl.glPushMatrix() gl.glVertexPointer(VERTEX_POINTER_COUNT, GL_FLOAT, 0, vertexPointer); gl.glColorPointer(COLOR_POINTER_COUNT, GL_FLOAT, 0, colorPointer); gl.glTexCoordPointer(TEXTURE_COORD_POINTER_COUNT, GL_FLOAT, 0, texCoordPointer); }
// отрисовка void onDraw(){ gl.glDrawArrays(GL_TRIANGLES, 0, COUNT_OF_VERTICES_FOR_DRAWING_TWO_TRIANGLES * size); } onPrepareDraw отрабатывает только один раз за весь lifetime. нагрузку на fps дает только onDraw(). Если тело метода onDraw() полностью закомментировать, то FPS = 500, а если оставить как есть, то FPS падает до 50.
Девайсы, на которых делаю тесты: 1) samsung g350e http://catalog.onliner.by/mobile/samsung/samsung_g350e Оперативная память 512 МБ Тактовая частота процессора 1 200 МГц Количество ядер 1
2) LG http://catalog.onliner.by/mobile/lg/g4h815 Оперативная память 3 ГБ Тактовая частота процессора 1 800 МГц Количество ядер 2 (+ 4 ядра Cortex-A53 с частотой 1440 МГц) Графический ускоритель Adreno 418
То есть FPS проседает только из-за отрисовки
Код gl.glDrawArrays(GL_TRIANGLES, 0, COUNT_OF_VERTICES_FOR_DRAWING_TWO_TRIANGLES * size); Как это решать? Значит ли это, что без перехода на шейдеры уже нельзя ничего сделать?
Сообщение отредактировал dimakoles - Понедельник, 08 Августа 2016, 17:05 |
|
| |
dalikivug | Дата: Понедельник, 08 Августа 2016, 20:05 | Сообщение # 136 |
почетный гость
Сейчас нет на сайте
| Немного смущает PushMatrix без PopMatrix и вообще какой либо работы с матрицами, после этого вызова
DrawArrays - максимально невыгодный метод в твоем случае (+ еше и без шейдеров) если рисуешь все спрайтами (квадратами с текстуркой) в таком случае нужен инстансинг и шейдеры (кэп)
судя по "gl.bind(currentTextureId);", у тебя это для каждого спрайта? если геометрия не повторяется, то бинд геометрии надо вообще перенести в инициализацию, и забыть о ней
советую с этим не париться, т.к. грамотный рендер это тема побольше целого движка будет; лучше взять что то готовое и не очень тяжелое (хотя не знаю как с этим дела на Java и Android)
Добавлено (08 августа 2016, 20:05) --------------------------------------------- надо еще убедиться, что у тебя правильное кол-во полигонов передается в Draw* возможно больше чем реально есть вершин в буферах, и fps падает из за генерируемых ошибок графического драйвера
Сообщение отредактировал dalikivug - Понедельник, 08 Августа 2016, 20:05 |
|
| |
dimakoles | Дата: Понедельник, 08 Августа 2016, 22:00 | Сообщение # 137 |
почетный гость
Сейчас нет на сайте
| Цитата dalikivug ( ) Немного смущает PushMatrix без PopMatrix это псевдокод, по факту все есть
Цитата dalikivug ( ) судя по "gl.bind(currentTextureId);", у тебя это для каждого спрайта? если геометрия не повторяется, то бинд геометрии надо вообще перенести в инициализацию, и забыть о ней она у меня в predraw, то есть в инициализации
Цитата dalikivug ( ) надо еще убедиться, что у тебя правильное кол-во полигонов передается в Draw* возможно больше чем реально есть вершин в буферах, и fps падает из за генерируемых ошибок графического драйвера там все в порядке
Цитата dalikivug ( ) DrawArrays - максимально невыгодный метод в твоем случае (+ еше и без шейдеров) если рисуешь все спрайтами (квадратами с текстуркой) в таком случае нужен инстансинг и шейдеры (кэп) что такое инстансинг? неужели только из-за перехода на шейдеры все должно взлететь? DrawArrays такой медленный?
|
|
| |
dalikivug | Дата: Понедельник, 08 Августа 2016, 22:18 | Сообщение # 138 |
почетный гость
Сейчас нет на сайте
| Цитата dimakoles ( ) неужели только из-за перехода на шейдеры все должно взлететь? это не "только"; при правильном использовании
Цитата dimakoles ( ) DrawArrays в этом случае да а так, он ничем не отличается (по скорости выполнения) от большинства других Draw* методов (говорю именно о чистой скорости API вызовов, без учета сложности отрисовки)
Цитата dimakoles ( ) что такое инстансинг? Instancing
|
|
| |
dimakoles | Дата: Четверг, 05 Января 2017, 03:48 | Сообщение # 139 |
почетный гость
Сейчас нет на сайте
| Что сделал. Доработал OpenGL до 50-60 на мобилке и 500-600 на десктопе. Прикрутил классную менюшку к студии (Featurea Studio - так называется level editor). Сделал Grid фичу. Сделал Status Bar, он у меня как в Paint (на видео не показан).
https://www.youtube.com/watch?v=F_QHdOm8WiI
Что буду делать ближайшую неделю. Из нерешенного - FPS проваливается иногда, но это уже плотная работа с кодом проекта. Соответственно ждать стоит билд под андроид с человеческим FPS.
За что хочу взяться, но не знаю, как лучше Также хочу поинтересоваться, было бы кому-нибудь интересно посмотреть как я делаю марио с нуля? Может кто-нибудь поделиться видео на ютуб в качестве примера идеального туториала making game from scratch с точки зрения "режиссуры"?
Добавлено (18 августа 2016, 22:29) --------------------------------------------- В следующем видео я показываю, что Featurea Studio подходит не только для платформеров, но для проектов любого жанра. Например, тетрис.
https://www.youtube.com/watch?v=wGMlohhj9ys
Девелопмент тетриса почти закончен. Хочу завтра паблишить в play store
Добавлено (22 августа 2016, 18:25) --------------------------------------------- Законченный кусочек из девлога
https://www.youtube.com/watch?v=iV7sTAzbjz4Добавлено (30 августа 2016, 12:16) --------------------------------------------- В следующем видео - пример "Chain" и сэндбокса уже в рантайме фичерии. Физика написана на Dyn4j http://www.dyn4j.org/
Видео Добавлено (05 января 2017, 03:48) --------------------------------------------- Закрыто.
Сообщение отредактировал dimakoles - Понедельник, 22 Августа 2016, 18:27 |
|
| |
JohnnyHam | Дата: Четверг, 05 Января 2017, 11:16 | Сообщение # 140 |
MadBro
Сейчас нет на сайте
| Тоесть закрыто? Разработка остановлена?
Чем лучше—тем хуже
|
|
| |
|