Среда, 18 Декабря 2024, 16:07

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

[ Новые сообщения · Игроделы · Правила · Поиск ]
  • Страница 4 из 4
  • «
  • 1
  • 2
  • 3
  • 4
Модератор форума: Gnomov  
Unity ужесточает правила пользования их движком
Storm54Дата: Четверг, 21 Сентября 2023, 17:29 | Сообщение # 61
постоянный участник
Сейчас нет на сайте
Цитата afq ()
даже не понимаешь терминологии через какую камеру смотрит объект

Не понимаю этой терминологии, потому что ты выдумал это словосочетание. Скинь мне ссылку на любую документацию, где что-либо упоминается про объект, который смотрит через определенную камеру.
Камера - абстракция. На графическом уровне ее вообще нет, а все чуть примитивнее: загружаешь в память GPU нужные тебе данные, например: текстуры, шейдеры, меши. Запускаешь ранее загруженную GPU программу, предварительно установив ей параметры, например: матрицы, входные буферы, выходные буферы. Все.
Остальное идет на стороне CPU и является набором абстракций, камера входит сюда же.

Цитата afq ()
https://store.steampowered.com/app/261550/Mount__Blade_II_Bannerlord/

Нет, конечно. Мой проект на порядок скромнее:
https://bannerlord-online.com/
https://www.moddb.com/mods/bannerlord-online


Сообщение отредактировал Storm54 - Четверг, 21 Сентября 2023, 17:30
afqДата: Четверг, 21 Сентября 2023, 17:38 | Сообщение # 62
Разработчик
Сейчас нет на сайте
Storm54, почему тогда ссылка в steam ведёт на ту игру, которую я привел в пример?
afqДата: Четверг, 21 Сентября 2023, 17:56 | Сообщение # 63
Разработчик
Сейчас нет на сайте
Storm54,
Цитата
Не понимаю этой терминологии, потому что ты выдумал это словосочетание.

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

И кстати, вот ты делал движок говоришь и на вопрос так и не ответил насчет того, что ты своё творение называешь движком, а моё просто поделкой. И ещё момент. Что бы ты делал, если у тебя 100 человек на сцене к примеру да. Итак, раз ты называешь такие умные вещи как GPU и программу, которая шейдеры использует, то ответь как бы ты делал перемещение камеры? Ну то-есть у тебя сотня человек. Чтобы отрисовать одного человека, тебе нужно в шейдер передать и человека и матрицу камеры. Ты топишь за то, что камера должна быть каждая для разных ситуаций. Вот ты сменил позицию камеры. Как камера у тебя должна быть, чтобы передаваться в шейдер. Я например использую одну камеру, для которой можно менять любые значения. И получается, что для всех 100 человек я бы передавал одну камеру и матрица перемножалась бы в шейдере или в коде. Вот давай, у тебя уже накопился опыт в разработке и раз ты любишь помогать другим деньгами, значит и сам ради знаний тоже что-то изучаешь. И ты наверняка изучал этот вопрос, чтобы я потом тебя ещё раз спросил и ты ответил. Так вот вопрос. Как бы ты реализовал камеры, если у тебя например есть 100 человек и нужно ещё отрисовать окошко небольшое с каким-нибудь наблюдением за каким-нибудь местом, ну как в в игре widelands, можно даже в 3d. Только опиши так, чтобы я понял. А я напишу как я бы сделал, если бы делал также со своей одной камерой. и вот как.
У меня есть класс сцены. Когда я рисую местность с 100 человеками, то для камеры я устанавливаю её позицию и отрисовываю всю сцену. Потом надо отрисовать отдельное окно с привязкой к месту, в настройках хранятся координаты этого места и камера меняется на эту позицию и вообще можно использовать glViewport, чтобы отрисовать эту позицию ещё раз со всеми человеками. glViewport устанавливается в координаты того окна и картинка будет соответствовать тем пропорциям, которые указаны. В следующий кадр опять устанавливаются один раз настройки для камеры и рисуется вся сцена. Я вижу в этом методе удобство, такое, что не нужно каждому объекту назначать какую он должен использовать камеру и код становится более лаконичным. Для всех объектов одна камера глобальная и по мере рисования сцены всё рисуется поэтапно.
А ты бы как сделал?
afqДата: Четверг, 21 Сентября 2023, 17:57 | Сообщение # 64
Разработчик
Сейчас нет на сайте
Storm54, а понял. Это мод.
Storm54Дата: Четверг, 21 Сентября 2023, 19:28 | Сообщение # 65
постоянный участник
Сейчас нет на сайте
Цитата afq ()
Не ты ли разве писал, что не знаешь что такое матрица или не ты

Не я.

Цитата afq ()
Разве любой человек не может выдумать новую терминологию?

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

Цитата afq ()
Как бы ты реализовал камеры, если у тебя например есть 100 человек и нужно ещё отрисовать окошко небольшое с каким-нибудь наблюдением за каким-нибудь местом


Код

Init:

renderTarget1 = new RenderTarget(...);
renderTarget2 = new RenderTarget(...);

worldScene = new Scene();
uiScene = new Scene();

for(var i=0; i<100; i++)
{
  human = CreateHumanEntity();
  worldScene.Add(human, ...);
}

renderTexture = new RenderTexture(...);

renderTarget2.SetTexture(renderTexture);

quad = CreateSimpleQuadEntityWithTexture(renderTexture);
uiScene.Add(quad, ...);

worldCamera = new Camera(...);
minimapCamera = new Camera(...);
uiCamera = new Camera(...);

uiCamera.SetTransform(...);

Render loop:

renderTarget1.Clear();
renderTarget2.Clear();

worldCamera.SetTransform(...);
minimapCamera.SetTransform(...);

worldCamera.Render(worldScene, renderTarget1);
minimapCamera.Render(worldScene, renderTarget2);
uiCamera.Render(uiScene, renderTarget1);



Встречный вопрос: как бы ты отрисовал 10000 объектов в кадре, при этом затратив не более 10 вызовов отрисовки. Все объекты выглядят абсолютно одинаково, находятся только в разных позициях на сцене. Дерзай.


Сообщение отредактировал Storm54 - Четверг, 21 Сентября 2023, 19:41
afqДата: Четверг, 21 Сентября 2023, 20:09 | Сообщение # 66
Разработчик
Сейчас нет на сайте
Storm54, подожди, у меня вопросы по твоему коду. я тебе описал низкоуровневую вещь, а ты поверхностно описал. как выглядит uiCamera.render? У тебя камера это чтоли шейдер? Получается, ты берешь камеру, а в камере передача в шейдер параметров? Объясни низкоуровнево.

Цитата
Встречный вопрос: как бы ты отрисовал 10000 объектов в кадре, при этом затратив не более 10 вызовов отрисовки. Все объекты выглядят абсолютно одинаково, находятся только в разных позициях на сцене. Дерзай.

Ну ты сразу так взял. Я даже не утверждал, что такое умею отрисовывать, а насчет камеры ты мне утверждал что я не правильно делаю. Ладно, сейчас подумаю. Ну вообще в твоём вопросе уже подсказка есть, 10 вызовов отрисовки. Я бы знаешь как сделал. Каждая отрисовка занимает время и если рисовать каждый объект по очереди, то это будет долго. Можно создать один большой объект, ну то-есть выделить память для 10000 объектов и сделать указатели для каждого объекта на эту память. То-есть создать в одном большом куске 10000 объектов как массив. Но я такое никогда не делал и не понятно насчет того, хватит ли мощности нарисовать так много треугольников. Но я подозреваю, что у этих 10000 объектов будет мало полигонов. например моя видеокарта nvidia geforce 3060 имеет 3,584 ядер. если 10000 разделить на 10 отрисовок, то на каждую отрисовку уйдет по 1000 ядер, если будет рисоваться по одному треугольнику. Тогда такой способ не очень подходит. Хотя может он и подходит, но будет просидать FPS это точно. Но в принципе думаю, что можно просто большой пучок выделить в opengl buffer как dynamic и пользоваться. но я не поверял. я ещё подумал про перенос 3d в 2d, но без теста глубины объекты могут не правильно перекрываться, так что такой вариант отпадает. при большом количестве объектов для задания анимации итак будет нагрузка на проц. Так что все объекты должны просто указывать на одну память в buffer GPU и там уже рисоваться за один раз. при отдалении может и не придется рисовать мелкие треугольники, если они меньше пикселя. будет масштабирование помогать.

я вижу ты любишь заваливать человека задачами, которые он не решал, а ты решал и ты хочешь так показаться умнее на его фоне. Всё равно всё что выпадает за пределы экрана не рисуется. Если стратегия с видом сверху, ты же стратегию имеешь ввиду? в стратегии хватило бы думаю одной выделенной памяти в GPU.
afqДата: Четверг, 21 Сентября 2023, 20:15 | Сообщение # 67
Разработчик
Сейчас нет на сайте
ну или разделить 10000 человеков на 10 выделенных объектов памяти и в каждой памяти будет по 1000 человек и рисовать за 10 отрисовок.
afqДата: Четверг, 21 Сентября 2023, 20:37 | Сообщение # 68
Разработчик
Сейчас нет на сайте
короче думаю, что можно сделать несколько буферов, один для каждой 1000 человеков, другой для каждой 1000 текстур каждого человека, другой для каждой 1000 позиции, другой для каждой 1000 поворота и в шейдере перемножать вектора с матрицами. так как я писал математику для opengl по формулам из интернета, то думаю вполне удобно можно разместить в матрицах в нужных позициях вектора, чтобы правильно потом перемножить для результирующего рисунка.
afqДата: Четверг, 21 Сентября 2023, 21:44 | Сообщение # 69
Разработчик
Сейчас нет на сайте
ой забыл. текстуру можно одну сделать. я в движке делал также как и надо делать насчет вершин и текстурных вершин. то-есть в одном объекте находятся координаты треугольников и координаты текстур. потом одна текстура на все объекты. ну и получается, что нужно выделить 10 частей для каждой тысячи человек. location в шейдере вроде возможно около 16, но точно не помню, так что можно вполне себе передать через location и вершины координат, текстур, вектора позиции, вектора кватерионов. потом всё составить что требуется в матрицы и перемножить. ну 2d ещё справиться если будет по 2 треугольника рисоваться и тогда задействуется 2000 ядер для каждой отрисовки, плюс ещё время на работу шейдера, но там должно быть быстро, так как не будет затрачено времени на дополнительную работу работы ядер.
Storm54Дата: Пятница, 22 Сентября 2023, 08:12 | Сообщение # 70
постоянный участник
Сейчас нет на сайте
Цитата afq ()
я тебе описал низкоуровневую вещь, а ты поверхностно описал. как выглядит uiCamera.render?


Код


class Camera
{
    float position[3];
    float lookAt[3];
    float upVector[3];

    float fieldOfView;
    float aspectRatio;
    float nearPlane;
    float farPlane;
}

class EntityRenderGroup
{
  // Mesh, l2w matrix, material information (scalars, textures), etc.
}

Camera::Render(scene, renderTarget)
{
  SetupRenderParams(scene.RenderParams, renderTarget);

  var renderGroups = scene.CullAndMakeRenderGroupsByEntities(this.ViewFrustrum);

  Sort(renderGroups);

  for (var i = 0; i < renderGroups.Count; i++)
  {
    var renderGroup= renderGroups[i];

    renderGroup.Render();
  }

  // glPop...
  CleanUp();
}

RenderGroup::Render()
{
  // Assign matrices, buffers, textures
  // glPush...
  SetupArguments();

  glDrawArrays(GL_TRIANGLES, 0, vertexCount);

  // glPop...
  CleanUp();
}



По твоим ответам: Читай glDrawArraysInstanced, хотя ты должен это знать, ведь я, по твоим словам, в юнити двигаю кубики, а ты движки свои пишешь.
Но, можно и руками собрать данные в 10 мешей и рендерить, что ты описал. Это будет работать на старых девайсах, где нет инстансинга.


Сообщение отредактировал Storm54 - Пятница, 22 Сентября 2023, 08:13
afqДата: Пятница, 22 Сентября 2023, 09:20 | Сообщение # 71
Разработчик
Сейчас нет на сайте
Storm54, а я и не утверждал, что знаю как вывести 10000 объектов вообще когда-либо. Так можно к чему угодно прикопаться. А ты утверждал, что я не правильно камеру использую, и поэтому я хотел узнать как бы ты сделал. То что я движки пишу, не значит, что я знаю всё на свете. Ты просто позлить хочешь. Я же говорил, что решаю задачу по мере надобности. Мне пока не нужно было такую задачу решать и поэтому я даже не хотел лезть в интернет, чтобы подготовить для тебя ответ. Просто как придумал, так и написал. Вообще это тупо я же говорил, ты за счет меня поднимаешь себе самооценку. Ты сам уже разобрался в этой теме и знаешь, что такого не делал и задаешь задачу заведомо неизвестную. Короче, с тобой неприятно общаться если честно. ты троль.
afqДата: Пятница, 22 Сентября 2023, 09:34 | Сообщение # 72
Разработчик
Сейчас нет на сайте
короче я удаляюсь с этого форума. Здесь какие-то неадекваты, которые вымораживают конкретно.
afqДата: Пятница, 22 Сентября 2023, 09:38 | Сообщение # 73
Разработчик
Сейчас нет на сайте
Почитал правила форума, удалиться так просто нельзя. можно просто не заходить на форум и тогда акк будет удалён. отписывают от данной темы, чтобы меня всякие придурки не злили типа Storm.
GentДата: Пятница, 22 Сентября 2023, 09:47 | Сообщение # 74
частый гость
Сейчас нет на сайте
Storm54, забей ты уже на afg'a. Либо он толстый тролль, который косит под юродивого и хихикает над нами, либо у него какие-то ментальные проблемы. Человек избирательно читает и может весьма своеобразно трактовать написанное. В любом случает от него следует держаться подальше.
qomyqoДата: Пятница, 22 Сентября 2023, 16:47 | Сообщение # 75
был не раз
Сейчас нет на сайте
Обожаю ваши холивары.
afq, игры Storm54 дают ему кров и хлеб. Остальное болтология.


Сообщение отредактировал qomyqo - Пятница, 22 Сентября 2023, 16:48
CoreДата: Пятница, 22 Сентября 2023, 18:22 | Сообщение # 76
заслуженный участник
Сейчас нет на сайте
Цитата afq ()
Не сдержался и решил задеть меня я вижу.

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


MagicHeroДата: Пятница, 22 Сентября 2023, 18:47 | Сообщение # 77
участник
Сейчас нет на сайте
afq, как ребеночка прижали так сразу как типичная малолетка просто убегает в кусты :) что я его тогда прижал с его игрой и с самого начала сказал все как есть. Но это разрушило его влажные фантазии и он просто игнорил чтобы не разрушать свои фантазии. Хот я ему тогда сказал что нормальные люди слушают критику т.к. она помогает. Например в моей игре мне указывали на ошибки и недочеты и я наоборот прислушивался а порой еще и благодарил. Но такие детишки которые живут в своем мирке не понимают элементарного.

Теперь тут Storm54 который реально крутой программист, опустил этого ребеночка и тот вместо того чтобы сделать какие то выводы просто слился в кустики )))))


Сообщение отредактировал MagicHero - Пятница, 22 Сентября 2023, 18:48
KxarogДата: Пятница, 22 Сентября 2023, 18:59 | Сообщение # 78
участник
Сейчас нет на сайте
Когда я вчера увидел что вы опять начали срач на тему "свой/не свой движок" я подумал - "Неужели опять? Им не хватило месяца? Опять потоки говна во все стороны? Зачем опять мурыжить эту тему", но в итоге человек психанул(довели?) и теперь это не имеет смысла.

Цитата Core ()
Хот я ему тогда сказал что нормальные люди слушают критику т.к. она помогает

Ох если бы... У меня к примеру в этом плане скорее противоположный опыт. Диванные критики не дремлют!

Storm54, чисто для себя
afqДата: Пятница, 22 Сентября 2023, 22:21 | Сообщение # 79
Разработчик
Сейчас нет на сайте
MagicHero, ну я не стал читать полностью твоё сообщение, так как ты плохо пишешь. Ну что могу сказать. я уже писал на форуме что у меня есть инвалидность. так как вас всего здесь 10 человек на форуме, то скорее всего каждый прочитал это. писал не в этой теме, но писал. инвалидность у меня по тяжелому психическому заболеванию и то, что здоровый человек издевается умственно над инвалидом, ну знаете, ну такая себе крутость. пускай ты и возвышаешь его, но я его знаю как издевающегося над инвалидами и ты кстати тоже к этому числу принадлежишь. понимаю, если задираться на того, кто сильнее тебя, а тот кто слабее тебя и ты ещё его уничтожаешь на правилах, которые удобны тебе. я же читаю текст и вижу как некоторые из вас нечестно пишут. задевают. посмотрел бы я как ты бы жил с такой болезнью как у меня. а вообще я больше злюсь и не считаю себя униженным. мне не нравиться тот факт, что нельзя комфортно общаться среди тех, у кого такие же интересы. да, я порадовался, что был прав насчет unity, что они будут цены загибать.

короче, желаю вам того же, пусть с вами также будет как со мной.
Storm54Дата: Суббота, 23 Сентября 2023, 10:13 | Сообщение # 80
постоянный участник
Сейчас нет на сайте
afq, Никто над тобой не издевался. Наоборот, участвовали в дискуссии, в теме, которую ты и создал. Однако, не всегда люди будут согласны с твоим мнением и нужно быть к этому готовым.
С тобой никто не сюсюкается и все общаются на равных. Ты же не слюни в подушку пускаешь, а создаешь программы, которые успешно компилируются и нормально работают. Значит и мозги работают более-менее, хотя бы в инженерных темах.
Создавай темы, задавай вопросы, в 90% случаев здесь находится ответ на заданный вопрос, никто никого повально не оскорбляет.

Касаемо юнити: не нужно зацикливаться на том, что этот движок выбирают говнокодеры, которые ничего не умеют. Это сложный продукт и он очень многое дает для создателей игр (достаточно глянуть список фич). При этом, создавать свои движки - интересная задача с инженерной точки зрения, но нужно понимать, что юнити разрабатывали те же инженеры и делали это очень долго. Я 10 лет назад всерьез взялся за создание своего движка, хоть у меня и не было большого опыта на тот момент. Но, в конце концов мне попался юнити на глаза и я решил объективно сравнить: что есть у меня и что есть у юнити. Оказалось, что многие мои наработки просто в чем-то были хуже или повторяли юнити, а времени на свои наработки я тратил прилично. В итоге, было принято решение опробовать юнити и уже через 3 недели я сделал Tower Defense, который разместил на этом форуме. Чисто за счет готовых и удобных инструментов, которые были в юнити, в основном за счет редактора. И это было именно создание игры, что доставляло удовольствие за счет быстрого получения результата. Я уже писал ранее: скачай юнити и просто попробуй, потрать хотя бы недельку и поразбирайся как там все устроено. Глядишь - понравится.

Kxarog, разрабатываем в полную силу, как обычно. Игроки играют стабильно - несколько тысяч человек в месяц. В этом году я принял решение, что нужно отказаться от зависимости серверного кода от оригинальной игры, т.к. она слишком нестабильна, а также перенести сервера на Linux для возможности развертывания в разных регионах. Поэтому пришлось потратить несколько месяцев на рефакторинг и разработку фич, которые были нужны для сервера, например поиск пути на глобальной карте.
У нас сильная техническая команда, но совершенно отсутствует ПР и маркетинг, поэтому может показаться, что мы ничего не делаем. Будем исправляться и публиковать изменения чаще, может в телеге заведем канал.

Тем временем новости по юнити, частично откатились: Unity Blog


Сообщение отредактировал Storm54 - Суббота, 23 Сентября 2023, 10:22
  • Страница 4 из 4
  • «
  • 1
  • 2
  • 3
  • 4
Поиск:

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