Суббота, 20 Апреля 2024, 08:04

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

[ Новые сообщения · Игроделы · Правила · Поиск ]
  • Страница 2 из 4
  • «
  • 1
  • 2
  • 3
  • 4
  • »
Форум игроделов » Записи участника » dimakoles [67]
Результаты поиска
dimakolesДата: Вторник, 26 Июля 2016, 17:05 | Сообщение # 21 | Тема: Фичерия - featurea
почетный гость
Сейчас нет на сайте
Цитата bodya_WM ()
Кстати, а почему используется awt? Почему бы для граф. интерфейса не юзать javafx?

Это хорошая идея. Я не прорабатывал каждую мелкую мышцу пока. Мне важна база. Чтобы все стояло твердо на ногах и не шаталось со всех точек зрения.

Добавлено (26 июля 2016, 17:05)
---------------------------------------------

Цитата bodya_WM ()
Используйте JNA. Тогда можно добится всех фич луа а не говноврапперов под jre1.6

обязательно обращу внимание


Сообщение отредактировал dimakoles - Вторник, 26 Июля 2016, 17:04
dimakolesДата: Вторник, 26 Июля 2016, 16:59 | Сообщение # 22 | Тема: Фичерия - featurea
почетный гость
Сейчас нет на сайте
Цитата bodya_WM ()
Я не совсем про то. Я именно к привязке к Lua. lua проще java, и он абстрагирован от явы и вообще какой либо стандартной библиотеки.

Я никогда не думал в технических деталях, как может выглядеть интеграция фичерии с lua. Я поработаю над этим вопросом пару дней, чтобы дать первоначальное видение о возможности, сложности решения этого таска и вообще о резонности этого направления. Сейчас текущие задачи.


Сообщение отредактировал dimakoles - Вторник, 26 Июля 2016, 17:02
dimakolesДата: Вторник, 26 Июля 2016, 16:51 | Сообщение # 23 | Тема: Фичерия - featurea
почетный гость
Сейчас нет на сайте
Цитата bodya_WM ()
Может, сделать привязку гейм обжектов к lua?
К примеру, мне удобнее реализовать игровой объект в отдельных скриптах, а не копатся в сырках двига.
Можно сделать простое API, как в моём WGE2D.

он и реализуется в отдельном скрипте (то есть в файле класса). Привязка к движку - это только для того, чтобы визуально был редактируем твой объект в визуальном редакторе. и не более того. никакой функционал касательно геометрии, логики и т.д. на либы движка не опирается. это все описывается с нуля ручками по факту.

хотя есть конечно так называемые стандартные компоненты (физика и платформер), которые именно и дают уже готовую "объектную модель", которую надо расширять.

стандартные компоненты - это языком Юнити - префабы

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

движок - это как бы платформа для префабов. сам по себе движок не задает формат данных и алгоритмы твоего кода, а только дает доступ к енвайроменту (аудио, графика) а также синтаксические штучки (общение между properties, xml и java файликами).


Сообщение отредактировал dimakoles - Вторник, 26 Июля 2016, 16:55
dimakolesДата: Вторник, 26 Июля 2016, 16:25 | Сообщение # 24 | Тема: Фичерия - featurea
почетный гость
Сейчас нет на сайте
Как сделать плагин под фичерию?

По факту сделать плагин - значит интегрировать существующий джава код с level editor'ом. Это как написать плагин к Unity Editor. У меня level editor называется Featurea (Фиче́рия)
Итак, каковы шаги по интеграции существующей рабочей библиотеки на Java, например, Dyn4j http://www.dyn4j.org с фичерией?
1) скачиваем исходный код dynj4 с гитхаба https://github.com/wnbittle/dyn4j
2) кладем скачанное в папочку "engines" внутри движка https://github.com/dmitryk....4j
3) ручками делаем xml схему, которая в концептуальном поле фичерии - это properties файлик xmlSchema.properties https://github.com/dmitryk....perties
В это файлике указывается маппинг xml тегов на java классы. Например



Формат таков:
'имя тега'='имя класса тега':'имя суперкласса тега'
'имя тега'.'имя атрибута'='имя класса атрибута':'имя суперкласса атрибута' // 1 вариант
'имя тега'.'имя атрибута'='имя класса атрибута' // 2 вариант - если enum или примитивный тип (int, double, char, ...)

4) файлик project.xml https://github.com/dmitryk....ect.xml используется для того, чтобы указать фичерии, откуда она должна подтянуть xmlSchema.properties



Файлик xmlSchema.properties фичерия ищет по пути ${currentDir}/config/${значение атрибута package - org.dyn4j}, то есть "config/org/dyn4j/xmlSchema.properties"

5) кроме того, в файлике project.properties указываются dependency. То есть если в IDEA модуле (Eclipse проекте) есть ссылка на другой IDEA модуль, то есть (Eclipse проект), в котором есть своя xml схема, то "верхний" модуль подтянет не только свою схему но и схему, которая идет с dependency. В моем случае модуль "dyn4j" подтянет свою схему "engines/dyn4j/config/org/dyn4j/xmlSchema.properties" и схему из платформы "platform/config/platform/xmlSchema.properties"

6) запускаем фичерию - два раза кликаем на executable джарку

7) открываем пустой XML файлик на жестком диске (в текущей версии фичерии есть только редактирование файла, а создания нового нет, загадка почему так)

8) Открыли. Теги я добавляю в этот файлик путем нажатия комбинации CTRL+N - выпадает список доступных тегов. Откуда он берется? Есть для этого свой конфиг areaSuggestion.properties https://github.com/dmitryk....perties



В этом файлике ручками в столбик указываю имя тега и через равно желаемую иконочку для него

/*Заметка на полях*/
вообще в фичерии есть такая концепция новая Config. Это значит что properties файлик "engines/dyn4j/config/org/dyn4j/xmlSchema.properties" имеет парентом такой же файлик из dependency, то есть "platform/config/platform/xmlSchema.properties". Средствами API я могу сделать объект Config
Config config = new Config(project, "xmlSchema.properties");
и данный объект будет содержать все проперти из обоих файлов "engines/dyn4j/config/org/dyn4j/xmlSchema.properties" и "platform/config/platform/xmlSchema.properties". Причем пропетя из "дочернего" перетрет пропетю с тем же ключом из "парента"
/*Заметка на полях*/

9) Теперь я могу смело нажимать комбинацию CTRL+N - фичерия знает как ей представить SuggestionView.

10) Тег выбираю двойным кликом мышки и ли клавишей ENTER

11) Выбираю в дереве парент, в который хочу добавить children

12) Кликаю мышкой по канвасу - тег добавлен в выбранный парент с атрибутом position равным точке клика (если атрибут position есть в XML схеме)

Теперь как фичерия делает рефлексией новый иснстанс объекта

1) Каждый класс, который хочет, чтобы его инстансы фичерия могла редактировать с помощи мышки, дерева тегов и таблицы атрибутов должен заимплементить интерфейс featurea.xml.XmlNode https://github.com/dmitryk....de.java

2) Пример имплементации интерфейса featurea.xml.XmlNode классом featurea.platformer.Animation



Что я делаю - я заполняю пустой Selection актуальными значениями: rectangle (прямоугольник вокруг объекта), color (желаемый цвет прямоугольника), isSelected = true - объект считается "выбранным" по нажатию мышкой по позиции position (второй параметр метода), position - текущая позиция объекта (значения атрибута position на XML стороне - это тонкий нюанс, который нужен, чтобы магия работала)



/*Самое вкусное - это свои xml primitives*/
Фичерия вводит новое понятие, которое называется xml primitive (xml примитив). По нажатию на строчку в табличек с атрибутами, происходит очень интересная вещь. Внутри движка активируется тот или иной xml примитив. То есть позиция объекта редактируется только если нажать по строчке с ключом position. Как именам атрибутов ставится в соответствие xml притивы? С помощью конфига xmlPrimitives.properties https://github.com/dmitryk....perties

Здесь строчка
Animation.position=featurea.util.xmlPrimitives.TransformPrimitive
делает магию.

Смотрим, что у нас в featurea.util.xmlPrimitives.TransformPrimitive https://github.com/dmitryk....ve.java
Примитив слушает мышку в коллбеках onTouchDown, onTouchDrag, onTouchUp
Здесь самое интересное - это что этот самый xml primitive отвечает за редактирование xml файлика на основе того, что он там от мышки услышал



xmlTag.setAttribute(ANGLE, value + ""); // данная строчка кода редактирует файл на жестком диске





Как рисуется объект? С помощью метода onDraw(Graphics graphics) класса featurea.app.Area https://github.com/dmitryk....ava#L13

То есть по факту, чтобы из джава класса, который вообще ничего не знает про фичерию, сделать джава класс, который для фичерии как родной, надо заимплементить три интерфейса, в которых в сумме содержится пять методов:
1) featurea.app.Area https://github.com/dmitryk....ea.java
3 метода: listAreas, onTick, onDraw
2) featurea.xml.XmlNode https://github.com/dmitryk....de.java
1 метод: getSelection
3) featurea.xml.XmlResource https://github.com/dmitryk....ce.java (это тончайшая магия, так надо, чтобы все работало)
1 метод build

Посмотрите, пожалуйста, сами, как класс featurea.platformer.Animation реализует эти пять методов трех интерфейсов, чтобы быть интегрированным с фичерией
listAreas: https://github.com/dmitryk....ava#L85
onTick: https://github.com/dmitryk....va#L284
onDraw: https://github.com/dmitryk....va#L292
getSelection: https://github.com/dmitryk....va#L418
build: https://github.com/dmitryk....va#L158


Сообщение отредактировал dimakoles - Вторник, 26 Июля 2016, 16:45
dimakolesДата: Вторник, 26 Июля 2016, 16:00 | Сообщение # 25 | Тема: Фичерия - featurea
почетный гость
Сейчас нет на сайте
Цитата dalikivug ()
dimakoles,
ИМХО последнее время на gcup (возможно раньше не замечал)
очень много неконструктивного разливания желчи
по сему сюда лучше скидывать что то либо с красивой картинкой (т.к. программистов, которые в чем то разбираются здесь оочень мало)
либо чтоб собрать общий шквал негатива и поправить что то, на что он больше всего был направлен

люди разные. я скорее увидеть срез мнений. кто, на что пальцем покажет. и каким пальцем )
свежий взгляд свежий, даже если дурной
ведь по факту все-таки можно сказать что один из двух нормальных форумов по геймдеву (второй - gamedev.ru) это срез

Добавлено (26 июля 2016, 16:00)
---------------------------------------------

Цитата bodya_WM ()
Я кодер с 11 лет. В том смысле что у меня опыт уже 3 года.
Сейчас мне 14. В 11 лет я только по сути начал учить Delphi. Потом стал писать на C#.

в два раза меня младше пацан, а как хорошо шел)


Сообщение отредактировал dimakoles - Вторник, 26 Июля 2016, 15:56
dimakolesДата: Вторник, 26 Июля 2016, 11:50 | Сообщение # 26 | Тема: Фичерия - featurea
почетный гость
Сейчас нет на сайте
Цитата bodya_WM ()
вот и запили рогалик. А не только словами бросайся

Я не бросаюсь словами, я презентую движок максимально доступным языком с помощью ссылок на исходный код, видео на youtube и ответы на вопросы со скриншотами.
Все будет сделано в свое время.

Добавлено (26 июля 2016, 11:50)
---------------------------------------------
Цитата bodya_WM ()
А о векторах ты похоже никогда не слышал.

Vector


Сообщение отредактировал dimakoles - Вторник, 26 Июля 2016, 11:50
dimakolesДата: Вторник, 26 Июля 2016, 11:40 | Сообщение # 27 | Тема: Фичерия - featurea
почетный гость
Сейчас нет на сайте
Цитата bodya_WM ()
На нём ничего кроме этого марио нет.

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





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

Добавлено (26 июля 2016, 11:40)
---------------------------------------------
Цитата FlyOfFly ()
Такое чувство, что 5тысяч строк это гигантское количества, в моих двух сторонах, за пол года уже 5352 строк кода

полгода и имеются в виду


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

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


Сообщение отредактировал dimakoles - Вторник, 26 Июля 2016, 11:37
dimakolesДата: Вторник, 26 Июля 2016, 11:26 | Сообщение # 29 | Тема: Фичерия - featurea
почетный гость
Сейчас нет на сайте
Цитата Tymonr ()
Никуда это не презентуется, потому что ни для чего, кроме как личного использования на этом этапе не годится — как минимум по причине существования тучи отличных(Или как минимум неплохих) openSource(MIT в т.ч.) альтернатив

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

Добавлено (26 июля 2016, 11:26)
---------------------------------------------

Цитата ShortKedr ()
Стоит наверно сказать о том, что не значительные фичи или особенности особой роли не играют в разработке, может быть что-то такое комплексное да, но по отдельности нет.

Комплексное. Это надо ощутить на проекте тысяч в пять строчек кода.


Сообщение отредактировал dimakoles - Вторник, 26 Июля 2016, 11:23
dimakolesДата: Вторник, 26 Июля 2016, 05:27 | Сообщение # 30 | Тема: Фичерия - featurea
почетный гость
Сейчас нет на сайте
Цитата ShortKedr ()
редактор XML шаблона

наверное имелось в виду "редактор XML лейаута", а не шаблона.

Цитата ShortKedr ()
Мини инструмент для упрощения разработки, путём визуализации, есть то, как оно называется, но никак не конструктор или ещё что-то

По факту да. Но есть очень весомый нюанс. XML лейаут в андроид студии открывается из проекта. Я не могу двойным кликом по XML-ке лейаута открыть ее в отдельном окошке и редактировать, не поднимая на уши весь проект. А мой движок позволяет так сделать. То есть можно открыть XML файлик просто двойным кликом как, например, PSD файлик в фотошопе. Поэтому я этот "Мини инструмент для упрощения разработки, путём визуализации" и называю "конструктор". Потому что внешне этот мини инструмент ведет себя как конструктор.


Сообщение отредактировал dimakoles - Вторник, 26 Июля 2016, 05:33
dimakolesДата: Вторник, 26 Июля 2016, 05:21 | Сообщение # 31 | Тема: Фичерия - featurea
почетный гость
Сейчас нет на сайте
Цитата ShortKedr ()
Если думать о том, что бы ваш движок действительно пользовался успехом на PC

таргетинговые платформы - андроид и iOS

Добавлено (26 июля 2016, 05:19)
---------------------------------------------
Цитата ShortKedr ()
то есть вроде редакторов xml шаблонов в Intelij IDEA

редактор XML шаблона - это редактор шаблона XML файла, а не самого XML файла.

Добавлено (26 июля 2016, 05:21)
---------------------------------------------
Цитата ShortKedr ()
Тут даже странно называть это конструктором и говорить про какое-то исправление недостатков всех конструкторов, потому как это просто ваши инструменты для упрощения работы с кодом

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


Сообщение отредактировал dimakoles - Вторник, 26 Июля 2016, 05:22
dimakolesДата: Вторник, 26 Июля 2016, 05:11 | Сообщение # 32 | Тема: Фичерия - featurea
почетный гость
Сейчас нет на сайте
Цитата ShortKedr ()
Я так понял что вы делаете конструктор и хотите его просто расширять при помощи доп. расширений.

не коструктор, а движок
конструктор - это синоним Level Editor который идет к либам.
движок - это либы. их можно подключить к проекту и погнал использовать классы.

чтобы было понятнее, скажу, что мой движок - это джарка, которую подключаешь к своему проекту в Эклипсе (или к модулю в IDEA)
"конструктор" - это просто ласковое название для одного из тулов, который дает визуальные средства чтобы редактировать иксы и игрики

Есть еще и другие тулы помимо "конструктора" - редактор шрифтов, ...


Сообщение отредактировал dimakoles - Вторник, 26 Июля 2016, 05:15
dimakolesДата: Вторник, 26 Июля 2016, 04:55 | Сообщение # 33 | Тема: Фичерия - featurea
почетный гость
Сейчас нет на сайте
ShortKedr,

Я написал кроссплатформенный движок. с компонентной архитектурой. из готовых компонентов пока имеются только физика и Platformer. Есть: коллизии, просчёт пути, анимация, манипуляции с изображением, псевдо физика, система событий. Когда я написал

Цитата dimakoles ()
По факту, что я делаю - беру у Scirra Construct простоту визуальных средств и добавляю к ней мощь Java бекенда.


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

Мой движок написан не на Scirra Construct, а на Java.

Мой движок простовато смотрится, потому что это движок для 2d игрушек, а не космический корабль. Также к нему не притрагивалась рука дизайнера. Мой движок не имеет привязки к какому либо жанру, например платформер. То, что ты увидел на видео, это не заточенный под платформер конструктор, а универсальное средство для того, чтобы редактировать иксы и игрики мышкой, а не текстом. А где эти иксы и игрики "бегают", внутри платформера или проекта с уклоном в физику, в графику - это не имеет значения.


Сообщение отредактировал dimakoles - Вторник, 26 Июля 2016, 05:05
dimakolesДата: Вторник, 26 Июля 2016, 04:47 | Сообщение # 34 | Тема: Фичерия - featurea
почетный гость
Сейчас нет на сайте
facepalm

ты в суть вопроса вникни, комментатор
dimakolesДата: Вторник, 26 Июля 2016, 04:37 | Сообщение # 35 | Тема: Фичерия - featurea
почетный гость
Сейчас нет на сайте
Цитата ShortKedr ()
Квалифицированные опытные программисты умеют сделать движок-шедевр тратя меньше человека-часов и в дальнейшем упростив себе задачу разработки новых проектов на их творении, в то время как программисты или не программисты вообще, клепают конструкторы, говоря что им так проще, в итоге тратя в несколько а то и сотню раз больше времени

Могу я спросить, откуда такая осведомленность о возможностях профессионалов?


Сообщение отредактировал dimakoles - Вторник, 26 Июля 2016, 04:37
dimakolesДата: Вторник, 26 Июля 2016, 03:39 | Сообщение # 36 | Тема: Фичерия - featurea
почетный гость
Сейчас нет на сайте
Цитата dalikivug ()
Обычно понимают огромную навороченную штуку которая умеет делать всё и вся

тот же "конструктор"
скорее более узко специализирован


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


Сообщение отредактировал dimakoles - Вторник, 26 Июля 2016, 03:41
dimakolesДата: Вторник, 26 Июля 2016, 02:41 | Сообщение # 37 | Тема: Фичерия - featurea
почетный гость
Сейчас нет на сайте
Цитата dalikivug ()
ИМХО сделай что то вроде конструктора, не беги за словом "движек"
получится не плохо

так у меня основа - Level Editor. Все с ним интегрируется тесно. XML код мапится на Java классы. По факту, что я делаю - беру у Scirra Construct простоту визуальных средств и добавляю к ней мощь Java бекенда.

Добавлено (26 июля 2016, 02:41)
---------------------------------------------
Цитата dimakoles ()
не беги за словом "движек"

что понимают под словом "движок" те, которые за ним бегут? Чтобы было посложнее и понепонятнее?


Сообщение отредактировал dimakoles - Вторник, 26 Июля 2016, 02:59
dimakolesДата: Вторник, 26 Июля 2016, 00:58 | Сообщение # 38 | Тема: Фичерия - featurea
почетный гость
Сейчас нет на сайте
Видео
Видео о том, как инсталлить движок

Downloads
Скачать исходный код движка с github
IntelliJ IDEA
GIT
JDK

Пожалуйста, напишите, если возникли проблемы.


Сообщение отредактировал dimakoles - Вторник, 26 Июля 2016, 02:18
dimakolesДата: Понедельник, 25 Июля 2016, 22:05 | Сообщение # 39 | Тема: Фичерия - featurea
почетный гость
Сейчас нет на сайте
Цитата bodya_WM ()
в любом случае, использовать deprecated не есть хорошо.

сидеть за компьютером много нехорошо )

Я посмотрел геймплей roguelike - ничего непонятно
Придумаю с физикой что нибудь, где будет body из нескольких fixture

Добавлено (25 июля 2016, 22:05)
---------------------------------------------
Так я отрисовываю текстуру.

glEnable(GL_LINE_SMOOTH);
glHint(GL_LINE_SMOOTH_HINT, GL_NICEST);
glEnable(GL_POINT_SMOOTH);
glHint(GL_POINT_SMOOTH_HINT, GL_NICEST);
glEnableClientState(GL_VERTEX_ARRAY);
glEnableClientState(GL_COLOR_ARRAY);
glEnableClientState(GL_TEXTURE_COORD_ARRAY);
glEnable(GL_TEXTURE_2D);
glBindTexture(GL_TEXTURE_2D, texture.getId());
glTexParameterf(GL_TEXTURE_2D, GL_GENERATE_MIPMAP, GL_TRUE);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR_MIPMAP_LINEAR);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR);
glEnable(GL_BLEND);
glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);

// GL_REPEAT
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_REPEAT);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_REPEAT);

glPushMatrix();
glVertexPointer(VERTEX_POINTER_COUNT, GL_FLOAT, 0, vertexPointer);
glColorPointer(COLOR_POINTER_COUNT, GL_FLOAT, 0, colorPointer);
glTexCoordPointer(TEXTURE_COORD_POINTER_COUNT, GL_FLOAT, 0, texCoordPointer);
glDrawArrays(GL_TRIANGLES, 0, 6);
glPopMatrix();

glEnable(GL_TEXTURE_2D);
glBindTexture(GL_TEXTURE_2D, NULL_ID);
glDisable(GL_TEXTURE_2D);
glDisableClientState(GL_VERTEX_ARRAY);
glDisableClientState(GL_COLOR_ARRAY);
glDisableClientState(GL_TEXTURE_COORD_ARRAY);
glDisable(GL_BLEND);

Этот код быстро станет deprecated?

Сообщение отредактировал dimakoles - Понедельник, 25 Июля 2016, 21:45
dimakolesДата: Понедельник, 25 Июля 2016, 21:39 | Сообщение # 40 | Тема: Фичерия - featurea
почетный гость
Сейчас нет на сайте
Цитата bodya_WM ()
Когда выпилят FFP окончательно, будет уже не usable.

ключевое слово "будет" )
Форум игроделов » Записи участника » dimakoles [67]
  • Страница 2 из 4
  • «
  • 1
  • 2
  • 3
  • 4
  • »
Поиск:

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