Как эффективно управлять динамическими объектами и ландшафтом, как Wurm Online - PullRequest
2 голосов
/ 14 июня 2011

Меня интересовало, как Wurm Online обрабатывает динамически изменяющуюся карту и набор объектов, при этом все еще имея возможность работать на обычном компьютере. Я хотел бы знать, имеется ли какая-либо информация о том, как эффективно воспроизводить стиль управления объектами того же типа, не только с точки зрения клиента, но и для того, чтобы сервер мог управлять данными.

1 Ответ

2 голосов
/ 30 октября 2012

См. MineCraft. В этом случае «аналогичные функции» обрабатываются с помощью чего-то вроде динамического связанного 2D-списка трехмерных массивов «блоков» (то есть целочисленных идентификаторов для объектов местности)… или, как я мог бы подумать. Однажды я написал слабый клон системы, который выглядел примерно так:

struct block_chunk {
    int[16][16][16] blocks;
    block_chunk *above;
    block_chunk *below;
    block_chunk *north;
    block_chunk *south;
    block_chunk *east;
    block_chunk *west;
    entity_list *mobs;
};

//standard Linked List
struct entity_list {
    entity_list *next;
    entity *object;
};

struct entity {
    //blah blah blah
};

Это, конечно, не единственный метод - я также написал реализацию, использующую деревья октанов, которая поразительно более экономична, учитывая большие смежные области идентичного вещества:

struct block_chunk {
    boolean is_leaf;
    block_chunk *TNE;
    block_chunk *TSE;
    block_chunk *TNW;
    block_chunk *TSW;
    block_chunk *BNE;
    block_chunk *BSE;
    block_chunk *BNW;
    block_chunk *BSW;

    //the node will either fill all contents with one block, or store a 3D array
    int *block_fill;
    int[][][] *blocks;
};

Вы, наверное, знали все это, но если вам интересно узнать, как Minecraft (который, в конце концов, был разработан Маркусом Перссоном, тем же парнем из Wurm) управляет своими серверными картами с такими подробностями, вы ' Я должен был получить в свои руки исходный код - поскольку существует активное сообщество моддингов, это не проблема. Конечно, есть и документация сообщества, которая все хорошо (кроме всех тех десятилетних троллей, которые населяют форумы ...)

...