split97 split97

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

split97 split97

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

ViktorJaguar ViktorJaguar

Почему я нигде не могу найти нормальный туториал, где покажут как экипировать предмет (например, меч) в определенную (выделенную под оружие) ячейку???

ScorpioT1000 ScorpioT1000

Ну, здравствуй, брат-квадрат

Dzeste Dzeste

Имхо, 4 самый крутой, интересная форма маски и приятные очки. 5 не понравился больше всего из за бесцветных линз, как-то не смотрится

Sporwiev Sporwiev

alexprey, помогите пожалуйста, у меня много чего подчеркивает красным, несмотря на то что код я копировал
FindEmptyState()

AstronBH AstronBH

Всем привет! Я разработчик игры Beast Hour, асимметричного PvP-хоррора от 3-го лица с паркуром и монстрами. Мы работаем над подземельем и окружением. Как вы думаете, что за эксперименты тут происходили...

...
AstronBH AstronBH

Всем привет! Я разработчик игры Beast Hour, асимметричного PvP-хоррора от 3-го лица с паркуром и монстрами. Что думаете о нашем проекте?
https://store.steampowered.com/app/1563250/Beast_Hour/

Jusper Jusper

Zemlaynin,

Ну то бишь в основе проекта ты все равно один :) Красава)

Zemlaynin Zemlaynin

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

Zemlaynin Zemlaynin

Jusper, делать контент... Секрета особого нет, труд, еще раз труд и стремление :)
Да и ребята мне помогают в плане моделей и художественных концептов.

iRediKurou iRediKurou

Jusper, сменили движок 1 октября 2020.
Аудитория ещё с нами :)

Jusper Jusper

Сколько вы уже делаете проект?
Аудитория не потеряала интерес еще?

Jusper Jusper

Вопрос на миллион. Как вы не устаете делать контент? :)
Есть какая-то система?

tihironrrr tihironrrr

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

Логотип проекта The Great Tribes

Дневник разработки №44 или 700FPS

Дневник разработки №44 или 700FPS

Привет всем читателям дневника!

До нового года я практически полностью воплотил поставленный план по гемплейным моментам:

  • Полностью реализовал взаимодействие игрока с нейтральными деревнями.
  • Реализовал разделение и объединение армий.
  • Роспуск армий, армия не исчезает, а переходит к ближайшему поселению и если ее не примут то она станет бродить по карте в виде нейтрального юнита и местами мешать игрокам :)
  • Реализовал основание поселения, переход между режимами и наконец сделал разграбление территорий.

Остается теперь сделать полноценную битву и юнит кочевья будет готов полностью. Панель юнита теперь выглядит так:

Дневник разработки №44 или 700FPS — The Great Tribes — DevTribe: инди-игры, разработка, сообщество (java game)

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

Такой фишкой было реализация нового тумана войны, вот его история становления в картинках:

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

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

Дневник разработки №44 или 700FPS — The Great Tribes — DevTribe: инди-игры, разработка, сообщество (java game)

А вот и разграбление случайного города:

Дневник разработки №44 или 700FPS — The Great Tribes — DevTribe: инди-игры, разработка, сообщество (java game)

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

И решил опять взяться за доработку движка и малость отдохнуть от рутинной верстки интерфейса.

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

И наконец дошли руки за реализацию общего шейдерный uniform буфера, чтобы не посылать каждому шейдеру отдельные uniform.

Но даже после этих задач не хотелось браться за геймплей, очень уж меня он вымотал перед НГ. И я решил сделать еще одну задачу, которая теоретически должна была повысить FPS.

В процессе решения задачи, FPS немного повысилось, но я заметил странный баг - при покое камеры FPS прыгал в приделах 10-15%. Это стало сильнее заметно при возросшем показателе.
Начал копать. Что-то сильно мусорило память.... И просадка происходила при запуске сборщика мусора...
На рисунке видна "пила" потребления памяти.

Дневник разработки №44 или 700FPS — The Great Tribes — DevTribe: инди-игры, разработка, сообщество (java game)

Анализ показывал что все это происходит в рендере...Начал искать… Обратите внимание на FPS - порядка 310-340 кадров, хотя отключено все в рендере кроме интерфейса!

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

Память выровнялась!
При тех же условиях теперь рендер интерфейса в 1930 FPS!
АААААААААААААААА это жесть! Это в 6 с лишним раз быстрее!!!

Дневник разработки №44 или 700FPS — The Great Tribes — DevTribe: инди-игры, разработка, сообщество (java game)

После того как все вернул в рендер:

Дневник разработки №44 или 700FPS — The Great Tribes — DevTribe: инди-игры, разработка, сообщество (java game)

Прирост FPS составил порядка 30%. Неплохо. Но что-то продолжало жрать память и тормозить рендер с большими просадками при срабатывании сборщика мусора. Дальнейший анализ позволил выявить узкое место — это был просто тихий ужас!!!

У меня есть класс ShaderProgram который отвечал за загрузку шейдеров их валидацию и привязку различных uniform переменных. Этот код был написан в далекие времена, когда мои познания OpenGL были еще очень скудны. Код был написан по какому-то уроку из первого попавшегося гайда и впоследствии немного расширен для своих целей.

Дневник разработки №44 или 700FPS — The Great Tribes — DevTribe: инди-игры, разработка, сообщество (java game)

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

Для тех кто не разбирается в программировании — каждый кадр тысячи раз вызывались эти методы в которых происходило объединение строк и соответственно в памяти плодились новые сущности.

Быстро все было переведено на рельсы OpenGl 4.3. с указанием расположения всех uniform переменных.

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

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

Сейчас карта строиться по принципу:

Дневник разработки №44 или 700FPS — The Great Tribes — DevTribe: инди-игры, разработка, сообщество (java game)

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

Все эти манипуляции позволили достичь отличных результатов и показатели FPS достигли значений 700+! Правда это показатели RTX2080.

Тяжеловат малость туман войны! Но, теперь я набрался вдохновения и опять взялся за геймплей!

До новых встреч!

Смотрите также:


Комментарии



Ого, а как картинки поправились :)

Zemlaynin,

Ого, а как картинки поправились :)

Я поправил при публикации.
Пока поддержку внешних ссылок не сделали, т.к. надо проверять, чтобы дикпики

Jusper, Спасибо :)
А то у меня инет говенный на работе, по десять раз приходится заливать и через раз проходит.

Zemlaynin, у нас временно просто включена защита от череды запросов. Кароч, поправил, не парься. На то и премодерация.

Справка