Learning Dark Souls Combat Through Pixel Input With Neuroevolution

Jim O'Connor, Gary B. Parker, Mustafa Bugti
7/4/2025
cs.AI

No confident code implementation found for this paper.

Abstract

This paper investigates the application of Neuroevolution of Augmenting Topologies (NEAT) to automate gameplay in Dark Souls, a notoriously challenging action role-playing game characterized by complex combat mechanics, dynamic environments, and high-dimensional visual inputs. Unlike traditional reinforcement learning or game playing approaches, our method evolves neural networks directly from raw pixel data, circumventing the need for explicit game-state information. To facilitate this approach, we introduce the Dark Souls API (DSAPI), a novel Python framework leveraging real-time computer vision techniques for extracting critical game metrics, including player and enemy health states. Using NEAT, agents evolve effective combat strategies for defeating the Asylum Demon, the game's initial boss, without predefined behaviors or domain-specific heuristics. Experimental results demonstrate that evolved agents achieve up to a 35% success rate, indicating the viability of neuroevolution in addressing complex, visually intricate gameplay scenarios. This work represents an interesting application of vision-based neuroevolution, highlighting its potential use in a wide range of challenging game environments lacking direct API support or well-defined state representations.

View on arXivView PDF

Code Implementations

No confident code match yet

We couldn't find an author-owned or strongly-evidenced community implementation for this paper. Any repos shown below are weak matches — verify before relying on them.

No code implementations found yet.

Know of an implementation? Let us know in the comments below!

Similar Papers

Cite this paper

@article{oconnor2025learning,
  title  = {Learning Dark Souls Combat Through Pixel Input With Neuroevolution},
  author = {Jim O'Connor and Gary B. Parker and Mustafa Bugti},
  year   = {2025},
  eprint = {2507.03793},
  archivePrefix = {arXiv},
  url    = {http://arxiv.org/abs/2507.03793v1}
}

Add a badge to your README

Shows whether official code is linked for this paper.

Code of Paper badge
[![Code of Paper](https://codeofpaper.com/badge/2507.03793.svg)](https://codeofpaper.com/paper/2507.03793)

Discussion