Top Related Projects
Godot Engine – Multi-platform 2D and 3D game engine
Open source UI framework written in Python, running on Windows, Linux, macOS, Android and iOS
🐍🎮 pygame (the library) is a Free and Open Source python programming language library for making multimedia applications like games built on top of the excellent SDL library. C, Python, Native, OpenGL.
Desktop/Android/HTML5/iOS Java game development framework
Cocos2d-x is a suite of open-source, cross-platform, game-development tools utilized by millions of developers across the globe. Its core has evolved to serve as the foundation for Cocos Creator 1.x & 2.x.
LÖVE is an awesome 2D game framework for Lua.
Quick Overview
Ren'Py is an open-source visual novel engine that allows creators to combine words, images, and sounds to tell interactive stories. It's designed to be easy for beginners to use while still being powerful enough for professional developers. Ren'Py is written in Python and can be extended using Python code.
Pros
- Easy to learn and use, especially for non-programmers
- Cross-platform support (Windows, Mac, Linux, Android, iOS, and web)
- Large and active community with extensive documentation and tutorials
- Powerful scripting capabilities for advanced users
Cons
- Limited in terms of complex game mechanics compared to full game engines
- Performance can be an issue for resource-intensive games
- Styling and customization can be challenging for those unfamiliar with Python
- Some advanced features require knowledge of Python programming
Code Examples
- Basic dialogue and character definition:
define e = Character("Eileen")
label start:
e "Hello, world!"
e "Welcome to Ren'Py."
- Showing images and backgrounds:
scene bg classroom
show eileen happy
e "This is how you show images and backgrounds in Ren'Py."
- Making choices:
menu:
"What would you like to do?"
"Study":
jump study_route
"Play":
jump play_route
"Sleep":
jump sleep_route
- Using variables and conditions:
$ score = 0
if score > 50:
e "Congratulations! You passed the test."
else:
e "Sorry, you didn't pass. Try again!"
Getting Started
- Download and install Ren'Py from the official website: https://www.renpy.org/
- Launch the Ren'Py launcher and create a new project
- Edit the
script.rpy
file in your project folder to start writing your visual novel - Add images to the
images
folder and define them in your script - Use the Ren'Py launcher to run and test your game
- When ready, use the launcher to build distributions for various platforms
For more detailed instructions and tutorials, refer to the official Ren'Py documentation: https://www.renpy.org/doc/html/
Competitor Comparisons
Godot Engine – Multi-platform 2D and 3D game engine
Pros of Godot
- More versatile for various game genres and styles
- Supports 3D game development
- Larger and more active community
Cons of Godot
- Steeper learning curve for beginners
- Less specialized for visual novel development
- Requires more setup and configuration for visual novel projects
Code Comparison
Renpy (dialogue example):
label start:
"Hello, world!"
"This is a Ren'Py visual novel."
return
Godot (dialogue example using GDScript):
extends Node
func _ready():
print("Hello, world!")
print("This is a Godot visual novel.")
Summary
Renpy is specifically designed for visual novels, making it easier to use for that genre. Godot is a more general-purpose game engine with broader capabilities but requires more effort to set up for visual novel projects. Renpy uses a simplified scripting language, while Godot uses GDScript (similar to Python) or other supported languages. Choose Renpy for quick visual novel development, or Godot for more complex game projects with potential for expansion beyond the visual novel genre.
Open source UI framework written in Python, running on Windows, Linux, macOS, Android and iOS
Pros of Kivy
- More versatile for general-purpose GUI applications
- Better support for mobile platforms (Android, iOS)
- Larger and more active community
Cons of Kivy
- Steeper learning curve for beginners
- Less optimized for visual novel/game development
- Requires more boilerplate code for simple applications
Code Comparison
Renpy (creating a simple dialogue):
label start:
"Hello, world!"
"This is a simple Ren'Py script."
return
Kivy (creating a simple label):
from kivy.app import App
from kivy.uix.label import Label
class MyApp(App):
def build(self):
return Label(text='Hello, world!')
MyApp().run()
Renpy is specifically designed for visual novels and dialogue-based games, making it easier to create such content with less code. Kivy, being a more general-purpose framework, requires more setup but offers greater flexibility for various types of applications.
Renpy has a built-in scripting language tailored for storytelling, while Kivy uses standard Python with its own UI markup language (KV language). This makes Renpy more accessible for writers and non-programmers, whereas Kivy is better suited for developers comfortable with Python and GUI programming concepts.
🐍🎮 pygame (the library) is a Free and Open Source python programming language library for making multimedia applications like games built on top of the excellent SDL library. C, Python, Native, OpenGL.
Pros of Pygame
- More flexible and suitable for a wider range of game types
- Lower-level access to graphics and audio, allowing for greater customization
- Larger community and ecosystem of third-party libraries
Cons of Pygame
- Steeper learning curve, especially for beginners
- Requires more code to implement basic game functionality
- Less built-in support for visual novel-specific features
Code Comparison
Pygame example:
import pygame
pygame.init()
screen = pygame.display.set_mode((800, 600))
running = True
while running:
for event in pygame.event.get():
if event.type == pygame.QUIT:
running = False
Ren'Py example:
label start:
scene bg room
show eileen happy
e "Hello, world!"
return
Pygame requires more setup code for basic functionality, while Ren'Py provides a higher-level abstraction for visual novel development. Pygame offers more control over the game loop and event handling, whereas Ren'Py simplifies common visual novel tasks with its domain-specific language.
Desktop/Android/HTML5/iOS Java game development framework
Pros of LibGDX
- More versatile for general game development, supporting 2D and 3D games
- Cross-platform support for desktop, mobile, and web
- Offers lower-level control and better performance for complex games
Cons of LibGDX
- Steeper learning curve, especially for beginners
- Requires more coding and setup for basic game functionality
- Less specialized for visual novel or narrative-driven games
Code Comparison
Renpy (creating a simple dialogue):
label start:
"Hello, world!"
"This is a simple dialogue in Ren'Py."
return
LibGDX (creating a simple screen):
public class SimpleScreen implements Screen {
@Override
public void render(float delta) {
Gdx.gl.glClearColor(1, 1, 1, 1);
Gdx.gl.glClear(GL20.GL_COLOR_BUFFER_BIT);
}
// Other required methods...
}
Summary
Renpy is specialized for visual novels and narrative games, offering a simpler learning curve and faster development for such projects. LibGDX is a more general-purpose game development framework, providing greater flexibility and performance at the cost of increased complexity. The choice between them depends on the specific needs of your game project and your programming experience.
Cocos2d-x is a suite of open-source, cross-platform, game-development tools utilized by millions of developers across the globe. Its core has evolved to serve as the foundation for Cocos Creator 1.x & 2.x.
Pros of cocos2d-x
- More powerful and flexible for complex game development
- Better performance for graphics-intensive games
- Supports multiple platforms including mobile, desktop, and web
Cons of cocos2d-x
- Steeper learning curve, especially for beginners
- Requires more low-level programming and manual setup
- Larger codebase and potentially longer development time
Code Comparison
Renpy (simple dialogue):
label start:
"Hello, world!"
"This is a simple Renpy script."
return
cocos2d-x (basic scene setup):
auto scene = Scene::create();
auto layer = Layer::create();
scene->addChild(layer);
Director::getInstance()->runWithScene(scene);
Summary
Renpy is ideal for visual novels and simple games, offering a user-friendly scripting language and rapid development. cocos2d-x provides more power and flexibility for complex, multi-platform game development but requires more programming expertise. Choose based on your project requirements and programming experience.
LÖVE is an awesome 2D game framework for Lua.
Pros of LÖVE
- More flexible and suitable for a wider range of game genres
- Lower-level access to graphics and audio, allowing for greater customization
- Faster performance for complex games or simulations
Cons of LÖVE
- Steeper learning curve, especially for beginners
- Less built-in support for visual novel-specific features
- Requires more code to achieve basic game functionality
Code Comparison
Renpy (creating a simple dialogue):
label start:
"Hello, world!"
"This is a Ren'Py game."
LÖVE (creating a simple text display):
function love.draw()
love.graphics.print("Hello, world!", 400, 300)
end
Summary
Renpy is specialized for visual novels and dialogue-heavy games, offering a simpler syntax and built-in features for that genre. LÖVE is a more general-purpose game engine, providing greater flexibility but requiring more programming knowledge. Renpy excels in rapid development of narrative-driven games, while LÖVE shines in creating a wider variety of 2D games with more customization options.
Convert
designs to code with AI
Introducing Visual Copilot: A new AI model to turn Figma designs to high quality code using your components.
Try Visual CopilotREADME
============================== The Ren'Py Visual Novel Engine
Branches
The following branches are the most interesting.
fix
The fix branch is used for fixes to the current version of Ren'Py that do
not require dangerous changes. The fix branch is also the source of the
documentation on https://www.renpy.org/. This branch is automatically
merged into master on a regular basis.
Pull requests that contain fixes or documentation improvements should be
made to the fix branch. When a release is made, the master branch is
copied to the fix branch.
master
The master branch is where the main focus of development is. This branch
will eventually become the next release of Ren'Py.
Pull requests that contain new features, that require incompatible changes,
or major changes to Ren'Py's internals should be targeted at the master
branch.
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 macOS, and can be made to run on Windows using an environment like MSYS.
Nightly Build
Nightly builds can be downloaded from:
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/X) 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::
sudo apt install virtualenvwrapper python3-dev libassimp-dev libavcodec-dev libavformat-dev \
libswresample-dev libswscale-dev libharfbuzz-dev libfreetype6-dev libfribidi-dev libsdl2-dev \
libsdl2-image-dev libsdl2-gfx-dev libsdl2-mixer-dev libsdl2-ttf-dev libjpeg-dev pkg-config
Ren'Py requires SDL_image 2.6 or greater. If your distribution doesn't include that version, you'll need to download it from:
https://github.com/libsdl-org/SDL_image/tree/SDL2
We strongly suggest installing the Ren'Py modules into a Python virtualenv. To create a new virtualenv, open a new terminal and run::
. /usr/share/virtualenvwrapper/virtualenvwrapper.sh
mkvirtualenv renpy
To return to this virtualenv later, run::
. /usr/share/virtualenvwrapper/virtualenvwrapper.sh
workon renpy
After activating the virtualenv, install additional dependencies::
pip install -U setuptools cython future six typing pefile requests ecdsa
Then, install pygame_sdl2 by running the following commands::
git clone https://www.github.com/renpy/pygame_sdl2
pushd pygame_sdl2
python setup.py install
popd
Finally, use setup.py to compile extension modules that support Ren'Py::
python setup.py install
Ren'Py will be installed into the activated virtualenv. It can then be run using the command::
python renpy.py
Other Platforms
Where supported, Ren'Py will attempt to find include directories and library paths using pkg-config. If pkg-config is not present, include and library paths can be specified using CFLAGS and LDFLAGS.
If RENPY_CFLAGS is present in the environment and CFLAGS is not, setup.py will set CFLAGS to RENPY_CFLAGS. The same is true for RENPY_LDFLAGS, RENPY_CC, RENPY_CXX, and RENPY_LD.
Setup.py does not support cross-compiling. See https://github.com/renpy/renpy-build for software that cross-compiles Ren'Py for many platforms.
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 <https://www.sphinx-doc.org>
_ documentation generator.
If you have pip working, install Sphinx using::
pip install -U sphinx sphinx_rtd_theme sphinx_rtd_dark_mode
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 function 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:
https://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.
License
For the complete licensing terms, please read:
Top Related Projects
Godot Engine – Multi-platform 2D and 3D game engine
Open source UI framework written in Python, running on Windows, Linux, macOS, Android and iOS
🐍🎮 pygame (the library) is a Free and Open Source python programming language library for making multimedia applications like games built on top of the excellent SDL library. C, Python, Native, OpenGL.
Desktop/Android/HTML5/iOS Java game development framework
Cocos2d-x is a suite of open-source, cross-platform, game-development tools utilized by millions of developers across the globe. Its core has evolved to serve as the foundation for Cocos Creator 1.x & 2.x.
LÖVE is an awesome 2D game framework for Lua.
Convert
designs to code with AI
Introducing Visual Copilot: A new AI model to turn Figma designs to high quality code using your components.
Try Visual Copilot