Навеяно этой темой про заоблачные вычисления
http://www.gamedev.ru/flame/forum/?id=138534&page=7
Мне давно было интересно, как можно ускорить и распараллелить аппаратно рендеринг в играх?
Например, в ММО играх. Ведь так и напрашивается решение: пускай каждый сервер обсчитывает некий участок земли (скажем 1*1км), и все игроки, находящиеся на этом участке, пусть тусуются на нем. А перешли на соседний километр - оказались на другом сервере. Чтобы сгладить проблемы при переходе, можно разрешить серверу временно (пока не получен ответ от соседа, что игрок успешно перемещен) обсчитывать игрока немного "за границами" своего пространства. То есть на квадратном участке могут быть игроки, о которых знают 9 серверов: этот и 8 соседних. Но не более. Кстати, если один из серверов вышел из строя, то так можно соседям взять на себя его работу.
Представьте себе огромный мир (размером с Землю), но плоский, т.е. видно будет все из конца в конец.
Суть моей идеи такова: сервер (отвечающий за квадрат) рендерит вид сбоку для этого квадрата в картинку, и рассылает ее соседям. Естественно в каждом направлении свою.

Сосед для рендеринга картинки берет свои 3D-объекты, а задним планом подставляет картинку, пришедшую от соседей, которые на этой картинке должны быть "задним фоном".
Чтобы не вышло топорно, особенно рядом с соседом, можно от соседа-то принимать все его объекты (хотя дальние от нас в упрощенном виде), а картинку подставлять вместо того сектора, который за соседом. (Мы сектор x=15, подставляем свои объекты и объекты и объекты от x=14, а от x=13 используем картинку).
Ну это, так сказать, основная идея. Остальные детали можно прорабатывать :)
Самое интересное, что в этом мире реально появится скорость света - скорость распространения картинок (и прочей информации) по миру :)
Первые кадры (когда еще не дошел свет от края мира) можно не посылать игрокам. Или использовать какой-то сплошной фон для тех картинок, которые еще не готовы.
Можно вместо 2D-картинок использовать LOD-ы. И рассылать их. Это, кстати, поможет решить проблему с углами поворота и подъемом вверх, когда перспектива меняется. (Хотя можно просто рендерить кучу картинок под всеми углами зрения и рассылать - все равно для достаточной мощности сервера одного сектора мы сможем это сделать, а зато количество объединяемых секторов потенциально почти бесконечно!!! И их мощность рендеринга эквивалентна мощности почти бесконечно мощной видеокарты!!!).
Если рассылаем 3D-lod-ы, то заднего плана как такового нет, зато можно выделить один ведущий сервер (скажем, "хозяин" квадрата 10*10 секторов), который принимает от них информацию и генерит общий мега-лоу-детализованный ЛОД для всего квадрата 10*10, а потом его рассылает соседним "хозяевам". Опять же в соседних квадратах 10*10 лучше не использовать этот мега-лоу-лод, а использовать через один. (Скажем, лод для x=40..49, y=0..9 вычисляется и посылается "хозяину" группы x=50..59, y=0..9, но в самой группе не используется, а пересылается дальше, в группу x=60..69, y=0..9 и там уже используется, и дальше рассылается).
Можно дальше сделать хозяев для 100*100 секторов, 1000*1000 и так неограниченно, хотя реально больше 10*10 вряд ли нужно...
Можно (придется) автоматизировать генерацию лоу-лодов, например, если размер объекта меньше 0,5% от поля, то не рендерить его вовсе и не включать в лоу-лод, если меньше 1%, то представить кубиком, в бОльших объектах сливать соседние вершины, если расстояние между ними менее 0,1% поля, и т.д. Можно из текстур для присланных "подчиненными" моделей генерить новую упрощенную текстуру меньшего размера, и т.п.
И этот алгоритм применять не только при подходе "хозяин"-"рядовые члены сектора 10*10", но и просто для своих соседей, и соседей соседей и т.п. (чем дальше сосед, тем сильнее упрощать модель, а потом рассылать упрощенную модель в противоположном от соседа направлении).
По-моему, я придумал гениальную идею!!!
38756
ЧВ негодуе...
Хм... это надо подождать, когда будут выпускать сразу вычислительные кластеры, даже лучше - скажем так, еще более многопроцессорные компы, чтобы можно было легко распределить все эти вычисления ограничившись пространством 1ого системного блока.
Речь про ММОРПГ, а там компы ничто - по сравнению с московской зарплатой разработчиков. Тот же глава Алавара об этом писал.
Сдвинутые вбок картинки не будут правильно проецироваться.
Я так понял, эта фича позволит играть на моём компе в новые ММОРПГ? Одобряю.
Если я смотрю на дом, который стенами выходит на разные стороны, то с юго-юго запада я буду видеть южную сторону дома, вместо юго-западного угла.
38756
> Речь про ММОРПГ, а там компы ничто - по сравнению с московской зарплатой
> разработчиков.
и ты решил уравнять их зарплаты со своей?
а ты не думал что фраза была сказана немного в другом контексте?
Кирюшык
> Если я смотрю на дом, который стенами выходит на разные стороны, то с юго-юго
> запада я буду видеть южную сторону дома, вместо юго-западного угла.

Автор же написал:
> использовать LOD-ы. Это, кстати, поможет решить проблему с углами поворота
> Хотя можно просто рендерить кучу картинок под всеми углами зрения и рассылать
Тема в архиве.