Главная Юзердоски Каталог Трекер NSFW Настройки

Gamedev

Ответить в тред Ответить в тред
Check this out!
<<
Назад | Вниз | Каталог | Обновить | Автообновление | 12 8 6
Генерация карты Аноним 16/05/24 Чтв 19:56:44 951456 1
Clipboard02.png 3Кб, 401x400
401x400
Clipboard03.png 3Кб, 400x401
400x401
Clipboard04.png 3Кб, 400x400
400x400
Clipboard05.png 7Кб, 375x868
375x868
Подскажите, как можно сгенерировать карты как в Генерале? (первые три скрина). В примерах карты 50 на 50 для 7 стран. При этом территории одинакового размера.

Мой максимум - это сгенерировать диаграмму Вороного. В примере я сгенерил 50 на 50 поле для 7 стран (скрин 4). При этом разбиение все равно не идеальное, размеры стран слегка отличаются. Ну и выглядит всрато. Границы прямые. И положение стран всегда одинаковое, так как и при рандомном выборе стартовых точек генерации не получится сгенерить территории одинакового размера.

https://ru.wikipedia.org/wiki/%D0%94%D0%B8%D0%B0%D0%B3%D1%80%D0%B0%D0%BC%D0%BC%D0%B0_%D0%92%D0%BE%D1%80%D0%BE%D0%BD%D0%BE%D0%B3%D0%BE
Аноним 16/05/24 Чтв 20:04:21 951460 2
image 102Кб, 803x627
803x627
image 97Кб, 869x676
869x676
дрочилися в эту игру вдвоём на компе в 2001 году
Аноним 16/05/24 Чтв 20:22:52 951469 3
>>951460
да, игра великая, но исходники не выкладывают
Аноним 16/05/24 Чтв 21:05:00 951480 4
Figure1.png 30Кб, 640x480
640x480
import numpy as np
import matplotlib.pyplot as plt
from scipy.spatial import Voronoi, voronoi_plot_2d

# Generate random points
points = np.random.rand(10, 2)

# Calculate Voronoi diagram
vor = Voronoi(points)

# Visualize the Voronoi diagram
fig, ax = plt.subplots()
voronoi_plot_2d(vor, ax=ax)
plt.show()

Ну да, у диаграмы Вороного будут всегда прямые границы.
Может, объединять некоторые ячейки?
Аноним 16/05/24 Чтв 21:20:50 951485 5
>>951480
вот сейчас копаю в этом направлении: генерировать кучу маленьких сегментов диаграммы Вороного и как-то их мерджить, а потом балансировать размеры полученных территорий. ChatGPT полнейший даун в это вопросе, к сожалению.
Аноним 16/05/24 Чтв 21:24:18 951487 6
Аноним 16/05/24 Чтв 21:29:29 951489 7
>>951456 (OP)
https://ru.wikipedia.org/wiki/Клеточный_автомат

Предлагаю такой алгоритм.
1. Изначально поле заполнено нулями.
2. Ставим несколько рандомных точек - зёрна стран.
3. Гоняем клеточный автомат по правилу:
>клетка страны может захватить только нули
4. Когда нулей не осталось, считаем площади.
5. Если площади не равны, гоняем по правилу:
>клетка жирной страны захватывается тощей
6. Когда площади +/- равны, карта готова.

Какие будут результаты - не знаю, пробуй сам.
16/05/24 Чтв 23:23:44 951521 8
>>951489
о, это в markov junior легко делоется.

как и задачка ОПа, там кажись готовое даже есть
Аноним 16/05/24 Чтв 23:30:56 951523 9
>>951521
>markov junior
Игрушка интересная, а как это в игру встраивать?
Аноним 16/05/24 Чтв 23:52:12 951525 10
image.png 12Кб, 406x648
406x648
>>951521
Крутая штука, но для этой задачи работает примитивно
Аноним 16/05/24 Чтв 23:53:25 951526 11
Аноним 17/05/24 Птн 16:09:28 951592 12
>>951525
Так надо код немного пописать, чтобы было не примитивно.
Можно начать с вороного, потом наложить шум сверху, и пройтись клеточным автоматом, чтобы разгладить грани и убрать лишний мусор.
Настройки X
Ответить в тред X
15000
Добавить файл/ctrl-v
Стикеры X
Избранное / Топ тредов