Ren'Py Python C HTML Shell C++ Other
Switch branches/tags
Latest commit 49f4473 Jan 18, 2018 @renpytom renpytom Include the time traceback.txt and errors.txt were created.
To make it easier to deal with stale files.
Permalink
Failed to load latest commit information.
gui Use _p for about in options. Nov 17, 2017
launcher Allow 0 and N to be generated in build.name. Jan 10, 2018
module Update copyright to 2018. Jan 7, 2018
oldtutorial Various VC updates & set version to 6.99.13.1. Dec 3, 2017
predef Fix all errors and warnings reported by pydev 3.5. May 22, 2014
renpy Include the time traceback.txt and errors.txt were created. Jan 18, 2018
scripts Update copyright to 2018. Jan 7, 2018
sphinx Fixes for changelog (doc) Jan 15, 2018
templates Merge pull request #1063 from gtsalles/master Aug 22, 2017
testcases/game Fix testcases. Nov 26, 2016
the_question Fix translations. Jan 10, 2018
the_question_old Move the projects.json file over to the new The Question. Apr 9, 2017
tutorial Check in keywords.py. Jan 9, 2018
unittests Implement style property retrieval with inheritance. Dec 28, 2013
.coveragerc coverage: Tweak omitted files. Jan 9, 2016
.gitignore Various VC updates & set version to 6.99.13.1. Dec 3, 2017
.pep8 Add autopep8 config file to project. Sep 22, 2016
7z.sfx Check in updated 7z.sfx. Sep 28, 2017
README.rst Add pygame_sdl2 install_headers to README. Apr 3, 2016
TRANSLATORS.rst Edit language description. Aug 28, 2017
add.py Support 4+ element versions when making symlinks. Dec 23, 2016
after_checkout.sh Various changes to make nightly builds possible. Nov 11, 2013
ansetup.py Remove spurious whitespace. Jul 14, 2013
console.bat Make new modules findable by modulefinder. Dec 16, 2014
coverage.sh coverage: Simple launcher script. Oct 15, 2016
debug.sh Add pygame_sdl2 install_headers to README. Apr 3, 2016
distribute.py Do not copy screens.rpy from the new tutorial to the English template. Aug 4, 2017
help.html Updated urls linking to renpy.org to use https Apr 8, 2017
main.py Add main.py. Apr 3, 2015
oshs.sh Fix OSHS. Sep 5, 2016
renpy.py Update copyright to 2018. Jan 7, 2018
renpy.sh Support for running novel platforms (like Raspi). Jun 22, 2017
renpycoverage.py coverage: Bring up to date with the latest Ren'Py. Oct 15, 2016
run.sh Add pygame_sdl2 install_headers to README. Apr 3, 2016
test.sh Allow pygame_sdl2 to encode the image save filenames. Sep 30, 2017
test_dlc.sh Dlc test script. Jan 13, 2013
testandroid.sh Check in various missing files. Apr 24, 2017

README.rst

The Ren'Py Visual Novel Engine

http://www.renpy.org

Ren'Py development takes place on the master branch, and occasionally on feature branches.

Getting Started

Ren'Py depends on a number of python modules written in Cython and C. For changes to Ren'Py that only involve python modules, you can use the modules found in the latest nightly build. Otherwise, you'll have to compile the modules yourself.

The development scripts assume a POSIX-like platform. The scripts should run on Linux or Mac OS X, and can be made to run on Windows using an environment like Msys.

Nightly Build

Nightly builds can be downloaded from:

http://nightly.renpy.org

Note that the latest nightly build is at the bottom of the list. Once you've unpacked the nightly, change into this repository, and run:

./after_checkout.sh <path-to-nightly>

Once this script completes, you should be able to run Ren'Py using renpy.sh, renpy.app, or renpy.exe, as appropriate for your platform.

If the current nightly build doesn't work, please wait 24 hours for a new build to occur. If that build still doesn't work, contact Tom (pytom at bishoujo.us, or @renpytom on twitter) to find out what's wrong.

The doc symlink will dangle until documentation is built, as described below.

Compiling the Modules

Building the modules requires you have the many dependencies installed on your system. On Ubuntu and Debian, these dependencies can be installed with the command:

apt-get install virtualenvwrapper python-dev libavcodec-dev libavformat-dev \
    libavresample-dev libswresample-dev libswscale-dev libfreetype6-dev libglew1.6-dev \
    libfribidi-dev libsdl2-dev libsdl2-image-dev libsdl2-gfx-dev \
    libsdl2-mixer-dev libsdl2-ttf-dev libjpeg-turbo8-dev

We strongly suggest installing the Ren'Py modules into a Python virtualenv. To create a new virtualenv, open a new terminal and run:

mkvirtualenv renpy

To return to this virtualenv later, run:

workon renpy

After activating the virtualenv, install cython:

pip install -U cython

Then, install pygame_sdl2 by running the following commands:

git clone https://www.github.com/renpy/pygame_sdl2
pushd pygame_sdl2
python fix_virtualenv.py $VIRTUAL_ENV
python setup.py install
python setup.py install_headers
popd

Next, set RENPY_DEPS_INSTALL To a ::-separated list of paths containing the dependencies, and RENPY_CYTHON to the name of the cython command:

export RENPY_DEPS_INSTALL="/usr::/usr/lib/x86_64-linux-gnu/"
export RENPY_CYTHON=cython

Finally, use setup.py in the Ren'Py module directory to compile and install the modules that support Ren'Py:

pushd module
python setup.py install
popd

Ren'Py will be installed into the activated virtualenv. It can then be run using the command:

python -O renpy.py

Documentation

Building

Building the documentation requires Ren'Py to work. You'll either need to link in a nightly build, or compile the modules as described above. You'll also need the Sphinx documentation generator. If you have pip working, install Sphinx using:

pip install -U sphinx

Once Sphinx is installed, change into the sphinx directory inside the Ren'Py checkout and run:

./build.sh

Format

Ren'Py's documentation consists of reStructuredText files found in sphinx/source, and generated documentation found in function docstrings scattered throughout the code. Do not edit the files in sphinx/source/inc directly, as they will be overwritten.

Docstrings may include tags on the first few lines:

:doc: section kind
Indicates that this functions should be documented. section gives the name of the include file the function will be documented in, while kind indicates the kind of object to be documented (one of function, method or class. If omitted, kind will be auto-detected.
:name: name
The name of the function to be documented. Function names are usually detected, so this is only necessary when a function has multiple aliases.
:args: args
This overrides the detected argument list. It can be used if some arguments to the function are deprecated.

For example:

def warp_speed(factor, transwarp=False):
    """
    :doc: warp
    :name: renpy.warp_speed
    :args: (factor)

    Exceeds the speed of light.
    """

    renpy.engine.warp_drive.engage(factor)

Translating

For best practices when it comes to translating the launcher and template game, please read:

http://lemmasoft.renai.us/forums/viewtopic.php?p=321603#p321603

Contributing

For bug fixes, documentation improvements, and simple changes, just make a pull request. For more complex changes, it might make sense to file an issue first so we can discuss the design.