Skip to main content
PyCon US is happening May 14th-22nd in Pittsburgh, PA USA.  Learn more

Darksouls Save File Parser for fetching data issues

Project description

Darksouls Save File Parser
==========================
.. image:: https://travis-ci.org/tarvitz/dsfp.svg?branch=master
:target: https://travis-ci.org/tarvitz/dsfp


* DSFP means Darksouls Save File Parser.
* `Dark Souls <http://darksouls.wikia.com/wiki/Dark_Souls>`_ is game of
Namco Bandai with pretty hard to get it finished without being killed.
Lot's of death, fun and broken gamepads/keyboards.

**DSFP** *serves* for getting/fetching your saved characters statistics purposes.

.. contents:: :local:
:depth: 2

Original source
~~~~~~~~~~~~~~~

Original source and some key knowledge were taken from this
`gist <https://gist.github.com/infausto/8382836/>`_.

Common features
~~~~~~~~~~~~~~~
Supports fetching data about character's death, his/her general stats, hp and stamina.
Whole bunch of reversed stats you can see in datasheet document which is placed
`here <docs/datasheet.rst>`_

(*Help for reverse engineering DarkSouls save file is appreciated*).

Installation
~~~~~~~~~~~~
For general installation you would probably need virtual environment with pip
installed:

Python 2.7
``````````
.. code-block:: bash

user@localhostvirtualenvnositepackagesvenvuser@localhost source venv/bin/activate
user@localhostpipinstallrrequirements/base.txtoptional..codeblock::bashuser@localhost pip install -r requirements/docs.txt

Python 3.x
``````````
document build requirements stored in py3.txt

.. code-block:: bash
user@localhostvirtualenvnositepackagesvenv3user@localhost source venv3/bin/activate
user@localhostpipinstallrrequirements/py3.txtDependenciespython2.7python3.3python3.4Tests     Simplyrunpythonsetup.pytestorYoucouldruntestsviapythonmunittestmoduleorviaruntests.shscript..codeblock::bashuser@localhost ./run_tests.sh tests.TestDSFPReader

Fast Usage
~~~~~~~~~~
You can parse Dark Souls save files and get data in standard python
dictionary format

.. code-block:: python

>>> import dsfp
>>> ds = dsfp.DSSaveFileParser('saves/DRAKS0005.sl2')
>>> data = ds.get_stats()
>>> data
[{
'attunement': 8, 'body': 0, 'class': 0, 'color': 0, 'deaths': 0,
'dexterity': 13, 'earned': 60, 'endurance': 12, 'face': 0, 'faith': 9,
'gift': 0, 'hairs': 0, 'hp': 594, 'hp2': 594, 'hp_current': 594,
'humanity': 0, 'intelligence': 9, 'level': 4,
'male': False, # False means female
'name': u'TEST_2', 'resistance': 11, 'souls': 60, 'stamina': 95,
'stamina2': 95, 'stamina3': 95, 'strength': 13,
'time': 62, # in seconds
'vitality': 11
}]




Datasheets
~~~~~~~~~~
There's no many information about Dark Souls save file format (as well as the
other games), so there's not much complete around its format.
Some knowledge represented `here <docs/datasheet.rst>`_.

Please notify me here or by email (tarvitz [at] blacklibrary.ru)
if you have something interesting around whole file format.

Documentation
~~~~~~~~~~~~~
Whole bunch of the docs you can read by clicking this link
`dsfp.readthedocs.org <http://dsfp.readthedocs.org>`_


Development
~~~~~~~~~~~

.. note::

Huge buch of data now represented in datasheets are still not covered in
dsfp "api" just cause whole file-format and its datasheet is the main priority.
You can use it for build your own parser or just read some non-random data
from *.sl2 files.
Though dsfp is not complete as it should, please search/read information in
the docs mentioned above.

Roadmap
~~~~~~~
I have no certain roadmap for this project and I inspect the data whenever I want
to do it. In general these moments could be very short/long from time to time. So don't
expect me finishing this work to some certain moment or something clear enough.

Use ``./scripts/watcher.py`` and the other scripts (or may be another methods) to inspect
data you need, contact me if you want to share them and have fun ;).

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page