Virl
> 1. Рынок у венды отъедает не макось, а прежде всего ипад, т.к. казуальные
> игроки переходят с ПК на него.
Факт в том, что таки отъедают. Про iPad согласен, сам уже там.
Virl
> 2. C++ чрезвычайно усложняет разработку сколько-нибудь сложных проектов.
Я его сам недолюбливаю, но согласиться с этим не могу.
Virl
> Как тогда делается сжатие при сохранении на диск и расжатие при чтении с него?
я вроде написал в топике, что свопа _нет_
ничего не сжимается и не разжимается, для хранения изменений пользователя(ей) , грубо говоря, используется octtree которой отлично живется в RAM (посмотри рамер save файл на выходе) также такое дерево иожно и распихать по файлам, если возникнет такая необходимость.
Virl
> Когда идут скажем подряд 10 каменных блоков, чтобы их грани рисовались с каждой
> стороны 2 полигонами
понятно, в этом случае придется делать отдельную текстуру и врапить ее, что драматично увеличивает количеству DIP-ов (свитчинг текстуры), также теряется повертексное совещение.
так что я такой варриант рассматривал только на очень больших дистанциях, но как оказалось этого не нужно, Vertex processing не является узким местом, а нагрузка на пиксельные шейдеры (намного дороже) не уменьшиться.
RomanGen
> ничего не сжимается и не разжимается, для хранения изменений пользователя(ей) ,
> грубо говоря, используется octtree которой отлично живется в RAM
Игроки перекопали все чанки в области видимости или построили гигантские здания. Как для хранения/передачи этого обойтись без сжатия и разбивки мира на чанки (чтобы подгружать по частям)?
Virl
> Игроки перекопали все чанки в области видимости или построили гигантские
> здания. Как для хранения/передачи этого обойтись без сжатия и разбивки мира на
> чанки (чтобы подгружать по частям)?
любую ноду любой глубины из octtree можно слить на диск/в сеть если такое понадобиться, у меня в рантайме это не предусмотрено, проблем здесь не вижу, т.к. не считая оверхэда на ноды ( ~ +1 байт) стоимость срытого бокса 1 бит, поставленного 1 байт, 100млн. не пересекающихся блоков в надо будет целенаправленно ставить/рыть ~40 человекомесяцев _непрерывно_, что конечно возможно, и опять же не вызовет архитектурных проблем их сливать на диск
RomanGen
>работает и выглядит опрятно, я так понимаю ты ее забросил ? по каким причинам, если не секрет ?
Перестала устраивать производительность... аппаратного 3д ускорения.
RomanGen
Проблема в том, что если ты меняешь параметры генератора, то существующие миры летят к чертям.
Virl
> Проблема в том, что если ты меняешь параметры генератора, то существующие миры
> летят к чертям.
Проблема ? здесь нет никакой проблемы, параметры генератора лежат вместе с изменениями относительно них.
Также подумай как будет выглядить твой случай для чанков, когда часть будет сохранена а часть сгенерится по другим правилам
RomanGen
> Проблема в том что здесь нет никакой проблемы, параметры генератора лежат
> вместе с изменениями относительно них.
Это значит, что ты менять генератор можешь только параметрически. Т.к. смена алгоритма (например, добавление дополнительного шума для определенного слоя породы и т.п.) ведет или к потере уже построенного, или к необходимости поддерживать множество версий кода, причем - и на клиенте, и на сервере. И завязывает генерацию на клиент - т.е. для сетевой игры нужны 100% одинаковые версии клиентов с одинаковым набором модов (если моды есть).
Собственно, ты считаешь, что никакой проблемы нет, потому что у тебя пока что ноль игроков с нулем построенного.
> Также подумай как будет выглядить твой случай для чанков, когда часть будет
> сохранена а часть сгенерится по другим правилам
Ну и что. По-другому не сделаешь, если хочешь не трогать уже построенное игроками с одной стороны и обеспечить возможность итеративного апгрейда алгоритмов генерации в процессе разработки - с другой.
Собственно, именно поэтому Можанг и выбрали чанковый (а не алгоритмический) подход к сохранению - Jeb об этом в интервью на minecon говорил.
RomanGen
Кстати, как показывает опыт (в том числе мой), при достаточно сложном генерируемом мире операция генерации куска мира гораздо более затратна по CPU, чем его же подгрузка с диска и распаковка. Так что использование octtree еще и увеличивает тормоза (причем - и на сервере, и на клиенте).
Опыт это здорово, мнение тоже хорошо, но еще есть реальность , в моем случае мир скроллится со скоростью 30 м/с
Для меня лишний траффик чанков на диск и в сети не нужен, для других случаев наверно будет лучше другое решение.
Ну а тип алгоритма , равно как его параметры, элементарно также хранить в сэйве.
Если резать алгоритм по живым уровням неизбежны разные забавные баги, мне они тоже не нужны ;)
RomanGen
> в моем случае мир скроллится со скоростью 30 м/с
Octtree, кстати, еще сильно медленнее чанков в плане коллижен детекшона (в том числе при поиске пути) и нахождения пересечения луча с миром. Народ на геймдев форумах над этим тоже думал.
> Если резать алгоритм по живым уровням неизбежны разные забавные баги, мне они тоже не нужны ;)
Ну так вот у тебя они будут, а при чанковом подходе мир по крайней мере локально останется целостным.
Кроме того, чем больше у тебя игроки будут строить - тем больше окттри будет вырождаться в хранение чанков, только с тормозами.
Думаю, дискуссия на тему алгоритмов исчерпана - поэтому больше их не буду обсуждать.
Virl
> Octtree, кстати, еще сильно медленнее чанков в плане коллижен детекшона (в том
> числе при поиске пути) и нахождения пересечения луча с миром
1. иногда даже сортировка пузырьком оказывается быстрее, утверждение без контекста бессмысленно
2. утверждение не имеет никакого отношения к нашему случаю
Virl
> а при чанковом подходе мир по крайней мере локально останется целостным.
наверно ты прав, лучше хранить несколько тысяч чанков, чем параметры и версию алгоритма
Virl
> Кроме того, чем больше у тебя игроки будут строить - тем больше окттри будет
> вырождаться в хранение чанков, только с тормозами.
все можно написать с тормозами, было бы желание.
Virl
> Думаю, дискуссия на тему алгоритмов исчерпана - поэтому больше их не буду
> обсуждать.
ok
по сравнению с обычным шахтёромастерством, довольно шустро. radeon 7470m без лагов.
А зачем создана тема? Обсуждение или набор команды?я программист этот проект вроде норм тока дай почитать часть кода например вывод полигона или часть глобал переменных или какойнибудь мелкий твойй проект и на ччем написана программа
samrrr
> я программист
А пишешь как директар :)
Тема в архиве.