Ren'Py vs KAG/KAGEX

For discussion and support of other visual novel engines.
Post Reply
Message
Author
User avatar
uyjulian
Regular
Posts: 128
Joined: Sun Mar 08, 2015 1:40 pm
Github: uyjulian
Contact:

Ren'Py vs KAG/KAGEX

#1 Post by uyjulian »

Ren'Py is nice because there are is a very large amount of resources in English on how to use it.
There are plans for Live2D support but it's not finished.
Ren'Py is written in the Python 2 language.
Ren'Py uses pygame_sdl2 as the core.
Documentation is available in English, Japanese, and Simplified Chinese.
It is possible to write extension modules in C to enhance the functionality. However, I haven't seen many examples of this being used. Here is one example: https://github.com/bitsawer/renpy-shader
File format support is fixed.
The default image formats that can be used in the core are the following: BMP/DIB, GIF, JPEG, LBM, PCX, PNG, PNM, SVG, TGA, XPM, XV, and WebP.
The default audio formats that can be used in the core are the following: FLAC, MP2, MP3, WAV (uncompressed PCM audio), Vorbis, Opus
The default video formats that can be used in the core are the following: MPEG1, MPEG2, MPEG4 (H.264), Theora, VP3, VP8, VP9
The default archive formats that can be used in the core are the following: RPA1, RPA2, RPA3

KAG and KAGEX are very popular engines in Asian countries, and many people and companies have extended it for their needs. For example, M2 and Wamsoft have extended KAGEX to provide E-mote, text-to-speech, Direct3D rendering, flowchart, and many more features. Amanita created a Live2D plugin and a new script syntax based on Markdown called Minaduki. There are also many KAG plugins provided by the community.
KAG is written in the TJS2 language.
KAG and KAGEX uses Kirikiri Z as the core.
Documentation is available in Japanese.
It is possible to write plugins in C++ to enhance the functionality. Here is one example: https://github.com/krkrz/SamplePlugin
File format support depends on the plugins used.
The default image formats that can be used in the core are the following: BMP/DIB, TLG5, TLG6, PNG, JPEG, JPEG XR
Susie image viewer image format plugins can be used to add new image formats, like WebP and BPG.
The default audio formats that can be used in the core are the following: WAV (uncompressed PCM audio), Opus (for dev_multi_platform version)
TVP wave unpacker plugins can be used to add new audio formats, like Vorbis and ATRAC9.
The video format that can be used in the core depend on if DirectShow and/or Windows Media Foundation is available and what codecs are installed.
The default archive formats that can be used in the core are the following: XP3
Susie image viewer archive format plugins can be used to add new archive formats, like 7z and zip.

Since KAG is a very popular language in Asian countries, newer engines like TyranoScript and novelsphere.js are mostly compatible with the KAG scripting syntax. There are also Ren'Py and KAG script parser engines available for Unity.

User avatar
uyjulian
Regular
Posts: 128
Joined: Sun Mar 08, 2015 1:40 pm
Github: uyjulian
Contact:

Re: Ren'Py vs KAG/KAGEX

#2 Post by uyjulian »

A few Ren'Py vs KAG syntax and control flow comparisons:

Comment:
KAG

Code: Select all

; Comment text
Ren'Py

Code: Select all

# Comment text
Label:
KAG

Code: Select all

*labelname|
Ren'Py

Code: Select all

label labelname:
Jump to label:
KAG

Code: Select all

@jump target=*finish
*finish|
Ren'Py

Code: Select all

    jump finish
label finish:
Clear text, display a single line (NVL), and wait for click:
KAG

Code: Select all

[cm]
Hello.[l][r]
Ren'Py

Code: Select all

    nvl clear
    "Hello."
Choice:
KAG

Code: Select all

[link target=*t1]Option 1[endlink][r]
[link target=*t2]Option 2[endlink][r]
@s
*t1|
Option 1 selected.
@jump target=*done
*t2|
Option 2 selected.
*done|
Ren'Py

Code: Select all

menu:
    "Option 1":
        jump t1
    "Option 2":
        jump t2
label t1:
    "Option 1 selected."
    jump done
label t2:
    "Option 2 selected."
label done:
Evaluate script:
KAG

Code: Select all

@eval exp="expression"
Ren'Py

Code: Select all

    $ expression
Set flag:
KAG

Code: Select all

@eval exp="f.testflag=true"
Ren'Py

Code: Select all

    $ testflag = True
Jump based on condition:
KAG

Code: Select all

@jump target=*flagtruelabel cond="f.testflag"
*flagfalselabel|
f.testflag is false!
@jump target=*finish
*flagtruelabel|
f.testflag is true!
*finish|
Ren'Py

Code: Select all

if testflag:
    jump flagtruelabel
label flagfalselabel:
    "testflag is false!"
    jump finish
label flagtruelabel:
    "testflag is true!"
label finish:
If-else based on condition:
KAG

Code: Select all

@if exp="f.testflag"
f.testflag is true!
@else
f.testflag is false!
@endif
Ren'Py

Code: Select all

if testflag:
    "testflag is true!"
else:
    "testflag is false!"
TODO: embed expression, entity, iscript/endscript, macro

User avatar
Lochana
Newbie
Posts: 21
Joined: Fri Jul 28, 2017 6:26 am
Projects: Touhou - Reimu's day out! (Won't see the light of day probably)
Github: lochana-Dineko
Contact:

Re: Ren'Py vs KAG/KAGEX

#3 Post by Lochana »

I like KiriKiri W/KAG and Onscripter because they run very smoothly. Renpy still feels a little clunky and slow.

I think what really sets KAG apart is it's amazing macro and plugin system. I defined ls, cs, and rs as show sprites. So by typing
Ls char.png
I can display character in the left. It is really cool.

Macros turn the engine into the fastest scripting language I've ever used.

I'm excited about the KiriKiri SDl2 project. One question though.
English text wrapping doesn't seem to work in my device. On the demo anyway.
Normally I would use Nagatos Wordwrapping code...

"https://www.google.com/amp/s/lv1transla ... pload/amp/"
It fixed all Wordwrapping issues.
Perhaps consider adding it to the KAG3 port for KiriKriSDL. I think the Mainwindow.tjs is still the same one from KAG3 for KrkrZ

Regardless it's nice to see a multiplatform version of KiriKiri. The best visual novel engine in my opinion. Alongside Onscripter which is still going strong with Ciconia, Higurashi Saku and such with Ponscripter.
Keep up the good work! Just like how Onscripter keeps Nscripter alive. Hopefully this will keep KiriKiri alive.

User avatar
uyjulian
Regular
Posts: 128
Joined: Sun Mar 08, 2015 1:40 pm
Github: uyjulian
Contact:

Re: Ren'Py vs KAG/KAGEX

#4 Post by uyjulian »

Lochana wrote: Wed Feb 03, 2021 7:01 am I like KiriKiri W/KAG and Onscripter because they run very smoothly. Renpy still feels a little clunky and slow.
Are you sure about that? Ren'Py has text layout caching and async/predictive image loading, while Kirikiri and ONScripter does not. You can check out how fast it goes by holding down the control key and seeing how fast it skips.
Lochana wrote: Wed Feb 03, 2021 7:01 am
English text wrapping doesn't seem to work in my device. On the demo anyway.
Word wrapping hasn't been implemented yet. I plan to do this later.

User avatar
Lochana
Newbie
Posts: 21
Joined: Fri Jul 28, 2017 6:26 am
Projects: Touhou - Reimu's day out! (Won't see the light of day probably)
Github: lochana-Dineko
Contact:

Re: Ren'Py vs KAG/KAGEX

#5 Post by Lochana »

Yeah, I'm pretty confident. Although I'm using a pretty potato PC, so everything is a bit slow.

KiriKiri, Suika2, Onscripter, Ponscripter are all pretty snappy. Heck even the beffy Onscripter-ru runs pretty well.

It's not that Renpy itself is slow, it's just that Ons and Krkr are lighter.


For the Wordwrapping I'll use Nagatos code. It's more or less drag and drop anyway.

Thanks for your work.

Post Reply

Who is online

Users browsing this forum: No registered users