Вниз  [WIP] Fenyx Engine
Всего голосов: 18
- 17.04.2015 / 12:29
DominaN
  Пользователь

DominaN 
Сейчас: Offline
Оптимизировал проверку столкновений, на тестовой карте удалось снизить ежекадровый collision calls с ~1275 до ~25-30

Изменено DominaN (17.04 / 12:30) (всего 1 раз)
- 17.04.2015 / 12:54
Oak
  Пользователь

Oak 
Сейчас: Offline
DominaN, Цитата DominaN:
Oak, я с гитом не особо дружу, вот нетбинс кое-как настроил :) напиши подробнее чо там и как добавить. Ну тебе никто не мешает использовать отдельные пакеты движка, если ты можешь обеспечить их корректное
Если ты про `git config`, то при коммитировании укажи свой username и email в полях под окном сообщения о коммите. Оно сохранится и в следующие разы будет использоваться уже установленное.Картинка для иллюстрации.

Ну тебе ... Но зачем?В общем, я подожду демки для того, чтобы понять хотя бы как использовать движок :) Потом ещё обсудим.

glLoadMatrix(FloatBuffer buff) тебе нуженНет (пруф) такого метода в текущей версии LWJGL — для того, чтобы избежать таких ситуаций, как раз и используют системы управления зависимостями — такие как Maven/Gradle.

А пока пара вопросов по коду — зачем ты по всему коду используешь String.concat вместо "+" — первый вариант не более эффективен, чем второй. Думаю, что даже если использовать StringBuilder с хорошо подобранными значениями initialCapacity, то выйдет более эффективно.
Затем я бы порекомендовал создать коллекции для примитивных типов. Потому что боксинг/анбоксинг — медленно. К примеру, в файле Engine можно было бы написать вместо
  1. private final LinkedList<Integer> states = new LinkedList<>();
  1. private final IntLinkedList states = new IntLinkedList();
И получать из списка/класть в список примитивные значения, минуя автобоксинг.

Я бы запуллреквестил некоторые изменения, но раз говоришь, что не разобрался с гитом, то, возможно, мёрджить реквесты будет трудно.

Ах, и да, коммить почаще, пожалуйста :-D Если в коммите 70 изменённых файлов, то это не очень правильно.
__________________
 Эль Презеденте

Изменено Oak (17.04 / 12:58) (всего 5 раз)
- 17.04.2015 / 13:26
DominaN
  Пользователь

DominaN 
Сейчас: Offline
Oak, а я думал надо наоборот, набрать достаточно изменений и потом выкладывать
По поводу матриц - и правда, перешел сейчас на Nightly сборку, там действительно сделали эти методы более логичными. Тогда тебе нужен glLoadMatrixf(FloatBuffer buff)
По поводу конкатенации - http://korzh.net/2010-01-konkatenaciya-strok-v-java-bystree.html
По поводу коллекций - в смысле создать? С нуля класс написать?
- 17.04.2015 / 13:48
Freddy
  Пользователь

Freddy 
Сейчас: Offline
Для коллекций примитивов есть библиотеки. Trove или Koloboke навскидку
- 17.04.2015 / 14:21
Oak
  Пользователь

Oak 
Сейчас: Offline
DominaN, По поводу конкатенации - http://korzh.net/2010-01-konkatenaciya-strok-v-java-bystree.htmlДа, действительно быстрее, но на большом количестве строк, конечно, лучше использовать пресозданный StringBuilder.
По поводу коллекций - в смысле создать? С нуля класс написать?Угу, в LibGDX тоже так сделали. Иначе будешь очень много времени терять на автобоксинге.
Если неохота писать свои версии, то можно использовать сторонние библиотеки — например, HPPC.
__________________
 Эль Презеденте

Изменено Oak (17.04 / 14:23) (всего 1 раз)
- 17.04.2015 / 14:36
DominaN
  Пользователь

DominaN 
Сейчас: Offline
Oak, 4 мегабайта? NET. spasibo :)

По поводу строк, я добавил свой метод объединения в StringUtils :) :
  1. private static final StringBuilder sb = new StringBuilder();
  2.  
  3. public static String concat(String... strings) {
  4.     sb.delete(0, sb.length());
  5.  
  6.     for (String s : strings) sb.append(s);
  7.  
  8.     return sb.toString();
  9. }
Что думаешь? Оправдано ли использование переменного количества аргументов?
- 17.04.2015 / 15:03
Oak
  Пользователь

Oak 
Сейчас: Offline
DominaN, 4 мегабайта? NET. spasibo :)Ну, тогда пиши сам. :gg:
Оправдано ли использование переменного количества аргументов?да, нормально.
Такое дело — я бы вообще рекомендовал по максимуму использовать CharSequence. И String, и StringBuilder его имплементируют, поэтому если локально используешь StringBuilder-ы, то можно не вызывать .toString, который создаёт новую строку.
__________________
 Эль Презеденте
- 17.04.2015 / 15:17
DominaN
  Пользователь

DominaN 
Сейчас: Offline
Oak, вообще по всему движку заменить чтоли? Не очень себе это представляю.

Последняя версия демки потребляет около 110 мб оперативы (java.exe). Вопрос, это много?
- 17.04.2015 / 15:22
Oak
  Пользователь

Oak 
Сейчас: Offline
DominaN, вообще по всему движку заменить чтоли? Не очень себе это представляю.Я имею ввиду скорее методы drawString, там же всё равно внутри происходит итерация по символам.
Последняя версия демки потребляет около 110 мб оперативы (java.exe). Вопрос, это много?Нет, это лучше ожидаемого, если не происходит утечек памяти.
__________________
 Эль Презеденте

Изменено Oak (17.04 / 15:23) (всего 1 раз)
- 17.04.2015 / 16:13
DominaN
  Пользователь

DominaN 
Сейчас: Offline
Обновил исходники. Добавил новый метод соединения строк. Еще оптимизировал коллизию, примерно как в Box2D, то есть можно задать точность проверки

Изменено DominaN (17.04 / 16:21) (всего 1 раз)
Наверх  Всего сообщений: 617
Фильтровать сообщения
Поиск по теме
Файлы топика (24)