In massively multiplayer online games (MMOGs) there is a great demand for high bandwidth connections with irregular access patterns. Such irregular demand is because players, who can vary from a few hundred to several tens of thousands, often occupy the virtual environment of the game in different ways with varying densities. Hence there is a great need for decentralized architectures with multiple servers that employ load-balancing algorithms to manage regions of the virtual environment. In such systems, each player only connects to the server that manages the region where the player's avatar is located, whereas each server is responsible for mediating the interaction between all pairs of players connected to it. Devising the proper load-balancing algorithm so that it takes spatial and variable occupations into account is a challenging problem which requires adaptive (and possibly dynamic) partitioning of the virtual environment. In this work, we propose the use of a kd-tree for partitioning the game environment into regions, and dynamically adjust the resulting subdivisions based on the distribution of avatars in the virtual environment. We compared our algorithm to competing approaches found in the literature and demonstrated that our algorithm performed better in most aspects we analyzed.