Пятница, 26 Апреля 2024, 17:50

Приветствую Вас Гость

[ Новые сообщения · Игроделы · Правила · Поиск ]
  • Страница 1 из 4
  • 1
  • 2
  • 3
  • 4
  • »
Форум игроделов » Записи участника » dimakoles [67]
Результаты поиска
dimakolesДата: Четверг, 05 Января 2017, 03:48 | Сообщение # 1 | Тема: Фичерия - featurea
почетный гость
Сейчас нет на сайте
Что сделал.
Доработал 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
dimakolesДата: Понедельник, 08 Августа 2016, 22:00 | Сообщение # 2 | Тема: Фичерия - featurea
почетный гость
Сейчас нет на сайте
Цитата dalikivug ()
Немного смущает PushMatrix без PopMatrix

это псевдокод, по факту все есть

Цитата dalikivug ()
судя по "gl.bind(currentTextureId);", у тебя это для каждого спрайта? если геометрия не повторяется, то бинд геометрии надо вообще перенести в инициализацию, и забыть о ней

она у меня в predraw, то есть в инициализации

Цитата dalikivug ()
надо еще убедиться, что у тебя правильное кол-во полигонов передается в Draw*
возможно больше чем реально есть вершин в буферах, и fps падает из за генерируемых ошибок графического драйвера

там все в порядке

Цитата dalikivug ()
DrawArrays - максимально невыгодный метод в твоем случае (+ еше и без шейдеров)
если рисуешь все спрайтами (квадратами с текстуркой)
в таком случае нужен инстансинг и шейдеры (кэп)

что такое инстансинг? неужели только из-за перехода на шейдеры все должно взлететь? DrawArrays такой медленный?
dimakolesДата: Понедельник, 08 Августа 2016, 15:09 | Сообщение # 3 | Тема: Фичерия - featurea
почетный гость
Сейчас нет на сайте
Прикрутил 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
dimakolesДата: Понедельник, 01 Августа 2016, 03:48 | Сообщение # 4 | Тема: Фичерия - featurea
почетный гость
Сейчас нет на сайте
show case
dimakolesДата: Суббота, 30 Июля 2016, 23:07 | Сообщение # 5 | Тема: Фичерия - featurea
почетный гость
Сейчас нет на сайте
Запушил окончательно саппорт батчей на гитхаб. Перформанс повысился значительно. Тесты проводил пока только на маломощном железе 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
dimakolesДата: Суббота, 30 Июля 2016, 00:17 | Сообщение # 6 | Тема: Фичерия - featurea
почетный гость
Сейчас нет на сайте
Цитата 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
dimakolesДата: Пятница, 29 Июля 2016, 13:25 | Сообщение # 7 | Тема: Фичерия - featurea
почетный гость
Сейчас нет на сайте
Цитата bodya_WM ()
Зачем заниматься извращениями, если сразу можно было запилить нормальную компонентную систему. Где биндинг луа?

компонентная система может быть реализована по-разному, а не только так как в юнити

Цитата bodya_WM ()
у вас ни одного биндинга нет, какие behaviours?

xml схема это биндинг
тег или атрибут будут behaviour
dimakolesДата: Пятница, 29 Июля 2016, 12:49 | Сообщение # 8 | Тема: Фичерия - featurea
почетный гость
Сейчас нет на сайте
Цитата bodya_WM ()
Зачем называть его Unity

по факту существует возможность сделать API как в юнити, просто имплементация этого апи будет опираться на классы модуля platform

с behaviours и т.д. и т.п.


Сообщение отредактировал dimakoles - Пятница, 29 Июля 2016, 12:51
dimakolesДата: Пятница, 29 Июля 2016, 12:44 | Сообщение # 9 | Тема: Фичерия - featurea
почетный гость
Сейчас нет на сайте
Цитата bodya_WM ()
Я говорил о универсальном классе GameObject.

Цитата bodya_WM ()
Почему я должен реализовывать вслепую GameObject? Почему бы не сделать его сразу, полностью универсальным? Есть поддержка компонентов на игровых объектах? Behaviours?


я подумаю о том, чтобы сделать wrapper над Area в виде GameObject, назову его unity. будет лежать в движках https://github.com/dmitrykolesnikovich/featurea/tree/master/engines


Сообщение отредактировал dimakoles - Пятница, 29 Июля 2016, 12:46
dimakolesДата: Пятница, 29 Июля 2016, 12:41 | Сообщение # 10 | Тема: Фичерия - featurea
почетный гость
Сейчас нет на сайте
Цитата bodya_WM ()
Как "зона" может ассоциироваться с "игровым объектом"

это движковый интерфейс. создатель стандартного компонента реализует его например классом com.myengine.GameObject, а уже пользователь стандартного компонента будет использовать GameObject

Добавлено (29 июля 2016, 12:41)
---------------------------------------------

Цитата bodya_WM ()
Sorry! This content is not available in your country yet.
We're working to bring the content you love to more countries as quickly as possible.
Please check back again soon.

не знал. я в минске. поправлю напишу
dimakolesДата: Пятница, 29 Июля 2016, 12:36 | Сообщение # 11 | Тема: Фичерия - featurea
почетный гость
Сейчас нет на сайте
Цитата bodya_WM ()
базовый класс должен иметь заимплементиную отрисовку(которую можно отключить)

речь про платформу. базовая отрисовка есть в соответствующих стандартных компонентах featurea.platformer.Animation.onDraw() - для платформера, org.dyn4j.dynamics.Body.onDraw() для физики

Цитата bodya_WM ()
Зачем переименовывать то что вошло в стандарт? Как "зона" может ассоциироваться с "игровым объектом"?

для того же, для чего писать новый движок, если юнити вошел в стандарт

Цитата bodya_WM ()
Это надо писать в вики проекта. Такое чувство что вы пользуетесь гитхабом в первый раз.

вместо вики на гитхабе я хотел бы использовать данный тред, если модератор не запретит

Добавлено (29 июля 2016, 12:36)
---------------------------------------------

Цитата ShortKedr ()
надеюсь вы не собираетесь сделать Зуму за ваших пользователей =)

Рабочий прототип четырехлетней давности

Цитата bodya_WM ()
dimakoles, так где демка производительности с 6к спрайтов 16х16?

батчи для статичных объектов доработаю, выложу. к понедельнику хочу успеть.
dimakolesДата: Пятница, 29 Июля 2016, 12:16 | Сообщение # 12 | Тема: Фичерия - featurea
почетный гость
Сейчас нет на сайте
Цитата ShortKedr ()
а так мы увидели небольшую часть структуры движка и можем оценить это, предположить дальнейшее развитие, как возможное, так и приоритетное

мой подход к развитию движка - писать проекты.

в идеале мое видение развития фичерии таково: bodya_WM (для примера) делает на фичерии то, что не осилил (например) сделать на юнити. например, клон зумы или клон Bike Race Free - Racing Game
в процессе у него возникает необходимость, для которой нет классов в движке. он задает мне вопрос - как это надо сделать чтобы по архитектуре было ок. я отвечаю, как это оформить - просто пакеты в проекте, extension, добавлю ли в движок возможность, расширить ли редактор, подойти к вопросу по другому, добавить в синтаксис маппинга XML на джаву новые keywords, и т.д.

таким образом, направление развития движка - это пользователи движка со своими проблемами, а не мои абстрактные фантазии о том, каким бы я хотел видеть движок через три года


Сообщение отредактировал dimakoles - Пятница, 29 Июля 2016, 12:22
dimakolesДата: Пятница, 29 Июля 2016, 11:56 | Сообщение # 13 | Тема: Фичерия - featurea
почетный гость
Сейчас нет на сайте
Цитата ShortKedr ()
Немного странные нейминги, с первого раза такие обозначения не очень понятны.

раз зашла речь - есть место пояснить подход к неймингу: не использовать в именах классов и методов такие слова, как: game, scene, object, featurea
game - потому что и так понятно, что game, фичерия - это игровой движок
object - потому что и так понятно, что Object, джава это ООП
scene - потому что тогда надо и Actor, а Actor - это не название движкого класса, в скриптах проекта - да, но не как стандарт для всех проектов
featurea - чтобы не напоминать лишний раз имя движка (по примеру эппла - на маках значок эппла сзади)


Сообщение отредактировал dimakoles - Пятница, 29 Июля 2016, 11:58
dimakolesДата: Пятница, 29 Июля 2016, 11:41 | Сообщение # 14 | Тема: Фичерия - featurea
почетный гость
Сейчас нет на сайте
Цитата bodya_WM ()
GameObject

в фичерии GameObject переименован в Area, а Scene переименован в Application

Цитата ShortKedr ()
родную систему классов и систем


Класс featurea.app.Context - доступ к environment, это как в libGDX поля класса com.badlogic.gdx.Gdx

Код
featurea.app.Context.getAudio()
Context.getInput()
Context.getClassLoader()
Context.getFiles()
Context.getApplication()
Context.getTimer()
Context.getResources()
Context.getLoader()
Context.getRender()


Цитата bodya_WM ()
А почему я должен наследовать чужой компонент?

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

// file: com/bodya_WM/GameObject.java
package com.bodya_WM.GameObject;

import featurea.app.Area;

public class GameObject implements Area {

  public List<? extends Area> listAreas(){
    // todo тут твои дочерние GameObject или что угодно, что implements Area
  }

  public void onTick(double elapsedTime){
    // вызывается каждый фрейм, elapsedTime в миллисекундах
  }

  [quote=ShortKedr;717187]вывод графики под сцены для ряда различных платформ[/quote]
  public void onDraw(Graphics graphics){
   // рисуешь
  }

}

Цитата ShortKedr ()
реализовать сериализацию сцен файлы

метод
Код
featurea.xml.XmlUtil.save(XmlTag xmlTag, File file)


Цитата ShortKedr ()
для ряда различных платформ

кроссплатформенность присутствует, она реализуется за счет имплементации следующих компонентов под андроид, иос и десктоп.
Код
featurea.app.Context.gl
featurea.app.Context.al


также, конечно, лайфсайклы свои прописаны, для Android например это класс featurea.android.FeatureaActivity и featurea.android.MyRender

Цитата ShortKedr ()
обработка событий

на данный момент инпут:
Код

package featurea.input;

public class InputAdapter implements InputListener {

  @Override
  public boolean onTouchDown(double x, double y, int id) {
    return false;
  }

  @Override
  public boolean onTouchDrag(double x, double y, int id) {
    return false;
  }

  @Override
  public boolean onTouchMove(double x, double y, int id) {
    return false;
  }

  @Override
  public boolean onTouchUp(double x, double y, int id) {
    return false;
  }

  @Override
  public boolean onMouseWheel(int count, double x, double y) {
    return false;
  }

  @Override
  public void onKeyDown(Key key) {
    // no op
  }

  @Override
  public void onKeyUp(Key key) {
    // no op
  }

}


Так же события лайфсайкла

Код

package featurea.app;

public class Screen {

  public void onCreate() {
    // no op
  }

   public void onResume() {
    // no op
   }

  public void onPause() {
    // no op
  }

  public void onResize(int width, int height) {
    // no op
  }

  public void onDrawBackground() {
  }

  public void onDraw(){
  }

}


листенеры, например featurea.app.LoaderListener

Код

public interface Listener {
    /**
     * @param progress 0..1
     * */
    void onLoad(double progress);
}


Добавлено (29 июля 2016, 11:41)
---------------------------------------------
Вообще, фичерия - это кодерская тема, это не конструктор. Я начал с того, что фичерия дает конструктор, поэтому произошла путаница. Фичерия претендует на то, что она как минимум не хуже любого существующего движка на Java, например libGDX или AndEngine. Весь их функционал изучался и "переносился". Другой вопрос, что структурировано и названо все по-другому.


Сообщение отредактировал dimakoles - Пятница, 29 Июля 2016, 12:10
dimakolesДата: Пятница, 29 Июля 2016, 01:51 | Сообщение # 15 | Тема: Фичерия - featurea
почетный гость
Сейчас нет на сайте
Цитата ShortKedr ()
Сейчас я вижу не совсем движок, но, возможно в будущем, когда будет реализовано множество функционала присущего движку, в том числе желательно что бы это были не просто визуальные редакторы, а ещё и на Java можно было что-то написать, унаследовать, расширить, улучшить и тд и тп - тогда это будет уже движок.

это уже можно. стандартные компоненты лежат здесь. можно делать свои кастомные
твой кастомный компонент будет опираться на модуль platform
основные классы, на которые опирается компонент:
featurea.xml.XmlResource
featurea.xml.XmlNode
featurea.app.Area
featurea.app.Context
featurea.app.Layer

Цитата ShortKedr ()
что сейчас оно не столько подвязано на код, сколько на редактор

как раз на код и подвязано
подвязка XML тегов на джава код осуществляется с помощью XML схемы: пример XML схемы модуля platform

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

Цитата ShortKedr ()
редактор как раз тянет в низ всю универсальность

это все равно что сказать, что поскольку в html нельзя писать SQL код, то поэтому он тянет универсальность веб страницы вниз. по факту оно так и есть, но это не о том
редактор не тянет универсальность вниз. он дает стандарт интеграции любой Java библиотеки (jar файлика) с визуальным средством редактирования XML файла (фичерией)


Сообщение отредактировал dimakoles - Пятница, 29 Июля 2016, 02:12
dimakolesДата: Среда, 27 Июля 2016, 00:09 | Сообщение # 16 | Тема: Ищу помощника. Задачи по OpenGL
почетный гость
Сейчас нет на сайте
Цитата falcoware ()
А если серьезно - Студента(!) да еще и на Энтузиазме Вы вряд ли здесь найдете и тема создана не там.

почему?
dimakolesДата: Вторник, 26 Июля 2016, 23:29 | Сообщение # 17 | Тема: Ищу помощника. Задачи по OpenGL
почетный гость
Сейчас нет на сайте
Движок описан в следующей теме http://gcup.ru/forum/45-82259-1

Нужен человек, который заменит FFP на шейдеры.

Рендеринг поддерживает атласы. Фишечка в том, что для того, чтобы перейти от отдельных файликов к атласам не надо менять структуру кода, а можно только выставить один булевский флаг

Код

mediaPlayer.setProduction(true); //  ищем спрайтики как регионы в атласе
mediaPlayer.setProduction(false); // ищем спрайтики как отдельные файлы


Надеюсь что найдется знающий студент, который на энтузиазме захочет сделать два таска

1) рендеринг текстуры
2) рендеринг примитивов (линия, овал, круг, квадрат, прямоугольник, многоугольник)

- Дмитрий


Сообщение отредактировал dimakoles - Вторник, 26 Июля 2016, 23:36
dimakolesДата: Вторник, 26 Июля 2016, 17:32 | Сообщение # 18 | Тема: Фичерия - featurea
почетный гость
Сейчас нет на сайте
Цитата bodya_WM ()
Кодить надо как в официальных доках о кодстайле. А не придумывать свои стили.

Согласен. Чтобы быть хорошим сотрудником. Стартап требует небольшой дозы оригинальности.
dimakolesДата: Вторник, 26 Июля 2016, 17:25 | Сообщение # 19 | Тема: Фичерия - featurea
почетный гость
Сейчас нет на сайте
bodya_WM,
я начал учить джава на пятом курсе университета.
потом шесть лет я на ней писал уже будучи выпускником за зарплату.

Добавлено (26 июля 2016, 17:25)
---------------------------------------------
Цитата dimakoles ()
профессионально?

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


Сообщение отредактировал dimakoles - Вторник, 26 Июля 2016, 17:28
dimakolesДата: Вторник, 26 Июля 2016, 17:13 | Сообщение # 20 | Тема: Фичерия - featurea
почетный гость
Сейчас нет на сайте
Цитата bodya_WM ()
JavaFX это тулкит который рисуется на OpenGL. С его использованием можно делать анимации, и сложные элементы. И даже рендерить вьюпорт.

на awt сделан редактор уровней. десктопная реализация контекста работает на OpenGL с помощью lwjgl
в принципе раз исходники в публичном доступе любой может по желанию зайти в папочку level editor'ом и заменить awt на javafx. при наличии желания и времени, конечно

Добавлено (26 июля 2016, 17:13)
---------------------------------------------
Цитата bodya_WM ()
Сколько вы уже кодите на яве?

7 лет


Сообщение отредактировал dimakoles - Вторник, 26 Июля 2016, 17:14
Форум игроделов » Записи участника » dimakoles [67]
  • Страница 1 из 4
  • 1
  • 2
  • 3
  • 4
  • »
Поиск:

Все права сохранены. GcUp.ru © 2008-2024 Рейтинг