This page is out of date

You've reached a page on the Ren'Py wiki. Due to massive spam, the wiki hasn't been updated in over 5 years, and much of the information here is very out of date. We've kept it because some of it is of historic interest, but all the information relevant to modern versions of Ren'Py has been moved elsewhere.

Some places to look are:

Please do not create new links to this page.


Vítejte v Ren'Py tutorialu

Veškteré připomíky, dotazy a komentáře můžete směřovat na české Ren'Py fórum na adrese: http://denzil.ic.cz/renpy/

Pokud jste se dívali na skript dodávaný s Ren'Py a připadlo vám to strašně složité, nebojte se jenom to tak vypadá. V tomto tutorialu vás krok po kroku provedu tvorbou vlastní jednoduché vizuální novely.

Začneme tím, že si stáhneme a nainstalujeme českou verzi Ren'Py (pokud už máte staženou, nemusíte to dělat znovu). V adresáři game smažeme soubory script.rpy a script.rpyc, potom v nějakém textovém editoru vytvoříme nový soubor a uložíme ho do adresáře game pod jménem script.rpy v kódování UTF-8 (nedoporučuju používat textové procesory jako Word nebo Open Office Writer můžou způsobit problémy při práci, to už radši použijte Poznámkový blok). Potom napíšeme:

init:
    # verze použitého Ren'Py
    $ config.script_version = (5, 5, 3)
    # šířka
    $ config.screen_width = 800
    # výška
    $ config.screen_height = 600
    # titulek okna
    $ config.window_title = u"Naše hra"

Vysvětlení:

init:

tímto řádkem začíná speciální blok která slouží k nastavování různých věcí, dále na ni budu odkazovat jako na "init blok"

Řádky začínající #

jsou to komentáře, které slouží k dokumentování, psaní komentářů a poznámek. Ren'Py si jich nevšímá, jako by tam nebyly.

Jak jste si asi všimli jsou řádky následující po init: odsazené 4 mezerami. Všechny řádky se stejným odsazením , mezi kterými není řádek s menším odsazením jsou v jednom bloku. To znamená že patří do stejnho bloku (v tomto případě init bloku).

$ config.script_version = (5, 5, 3)

Toto slouží k nastavení použité verze Ren'Py. V našem případě je to 5.5.3 Číslo v závorce je oddělené čárkami z technických důvodů.

$ config.screen_width = 800 a $ config.screen_height = 600

slouží k nastavení velikosti okna.

$ config.window_title = u"Naše hra"

tímto nastavíme titulek okna, což znamená že v uvozovkách bude jméno námi vytvářené hry. V tomto případě "Naše hra". Písmeno u před úvozovkami značí, že používáme UTF-8 a mělo by zařídit aby se české znaky správně zobrazily. (Pozn: V současné verzi Ren'Py je chyba, která způsobí, že místo některých českých znaků se zobrazují otazníky).

Nyní soubor uložíme a spustíme soubor run_game.exe. Po několika vteřinách se Ren'Py spustí a my uvidíme menu (nabídku) na černém pozadí. Když ale zkusíme kliknout na Začít hru tak Ren'Py zmizí a místo toho se objeví Poznámkový blok s anglicým textem. To proto, že jsme ještě nevytvořili žádný obsah. Takže nakonec připíšeme:

label start:
    "To je ale den."

Vysvětlení:

label start:

toto slouží k označení začátku obsahu. Po něm následuje nový blok (odsazený text).

"To je ale den."

Toto slouží k zobrazení textu. Povšiměte si, že před uvozovkami NENÍ písmeno u. Pro zobrazování textu to není potřeba, Ren'Py si ho doplní automaticky.

Znovu skript uložíme a spustíme run_game.exe (od teď už to dělejte automaticky po provedení změn). Na první pohled vypadá všechno stejně, ale když tentokrát klikneme na začít hru menu zmizí a místo něho se v levé dolní části objeví nápis "Ukázka textu". Sice to není nic úžasného, ale je to začátek. Když ale klikneme tak se znovu objeví menu. Chtělo by to vylepšit. A ta černá není zrovna nejhezčí. Takže napíšeme:

init:
    # verze použitého Ren'Py
    $ config.script_version = (5, 5, 3)
    # šířka
    $ config.screen_width = 800
    # výška
    $ config.screen_height = 600
    # titulek okna
    $ config.window_title = u"Naše hra"

    # obrázky
    image bila = Solid((255, 255, 255, 255))

    # nastavení bílé pro hlavní menu a nastavení
    $ style.mm_root.background = Solid((255, 255, 255, 255))
    $ style.gm_root.background = Solid((255, 255, 255, 255))

label start:
    scene bila
    "To je ale den."

Vysvětlení:

image bila = Solid((255, 255, 255, 255))

Příkaz image slouží k definování obrázků. Takže image bila vytvoří obrázek se jménem bila. Za rovnítkem napíšeme jaký obrázek ke jménu bila bude patřit. V tomto případě používáme příkaz Solid, který slouží k vytvoření jednobarevného obrázku.

$ style.mm_root.background = Solid((255, 255, 255, 255)) a $ style.gm_root.background = Solid((255, 255, 255, 255))

Opět používáme příkaz Solid, tentokrát pro nastavení bílého obrázku jako pozadí v hlavním menu (style.mm_root.background) a v Nastavení (style.gm_root.background, platí také pro ukládání, načítaní a ukončení hry).

scene bila

Příkaz scene slouží ke zobrazení pozadí. Zobrazujeme obrázek bila.

Pro pokročilé - mícháme si vlastní barvy:

Pokud si budete chtít namíchat vlastní pak budeme muset změnit čísla v závorkách. Barvy jsou uvedeny v pořadí červená (R), zelená (G) a modrá (B), poslední čtvrté číslo není barva ale průsvitnost. Minimální hodnotou pro barvu je 0 maximální 255, stejně tak pro průhlednost. Narozdíl od míchání malířských barev tady ale mícháme světlo, takže pokud budeme chtít namíchat použijeme ode všech barev maximální hodnoty (255), zatímco barvu na plátno by jsme nepoužili, protože už bílé je. Průsvitnost 0 znamená, že barva bude úplně průsvitná, vůbec ji neuvidíme, zatímco prusvitnost 255 znamená neprůhlednou barvu. Pokud vás toto vysvětlení mátne prostě se podívejte na tabulku na http://www.renaigames.net/dev.html vyberte si barvu a prostě její hodnoty opište do závorky v pořadí (R, G, B, průsvitnost) (průsvitnost není v tabulce uvedena).

Znovu vyzkoušíme. S bílou barvou je to o něco lepší, ale jestli chceme udělat vizuální novelu budeme potřebovat nějaké postavy. Nebo alespoň jednu:

init:
    # verze použitého Ren'Py
    $ config.script_version = (5, 5, 3)
    # šířka
    $ config.screen_width = 800
    # výška
    $ config.screen_height = 600
    # titulek okna
    $ config.window_title = u"Naše hra"

    # obrázky
    image bila = Solid((255, 255, 255, 255))

    # obrázky postav
    image eileen stasna = "9a_happy.png"

    # nastavení bílé pro hlavní menu a nastavení
    $ style.mm_root.background = Solid((255, 255, 255, 255))
    $ style.gm_root.background = Solid((255, 255, 255, 255))

label start:
    scene bila
    "To je ale den."
    show eileen stasna
    "Eileen" "Ahoj, já jsem Eileen."

Vysvětlení:

image eileen stasna = "9a_happy.png"

Tentokrát už by jste měli vědět, že se jedná o obrázek se jménem "eileen stasna". Ale tentokrát je za rovnítkem text v úvozovkách. Pokud použijeme text v úvozovkách tak tím říkáme Ren'Py, že má obrázek nahrát ze souboru se jménem uvedeném v úvozovkách.

show eileen stasna

Příkaz show slouží ke zobrazování obrázků. Zobrazujeme obrázek "eileen stasna". Jaký je rozdíl mezi scene a show si vysvětlíme později.

"Eileen" "Ahoj, já jsem Eileen."

Tohle už známe. Zobrazí nám to text. Ale tentokrát je před textem Eileenino jméno v uvozovkách. To způsobí, že se v té části kde se zobrazuje text objeví jméno Eileen, aby indikovalo kdo mluví.

Znovu si vyzkoušíme provedené změny. Tentokrát se nám po odkliknutí první věty na obrazovce objeví a představí Eileen. Ale hodilo by se, kdyby za ní byl nějaký obrázek a ne jen prázdná bílá plocha. Už by jste ale měli vědět jak to udělat a tak si to zkuste sami a použijte jméno orázku carillon a jméno souboru carillon.jpg pak si vyzkoušejte jestli to funguje a pokud ano čtěte dál. Pokud ne doporučuji první zkusit přijít na to kde je chyba a teprve potom číst dál.

Skript by teď měl vypadat přibližně takhle:

init:
    # verze použitého Ren'Py
    $ config.script_version = (5, 5, 3)
    # šířka
    $ config.screen_width = 800
    # výška
    $ config.screen_height = 600
    # titulek okna
    $ config.window_title = u"Naše hra"

    # obrázky
    image bila = Solid((255, 255, 255, 255))

    # obrázky pozadí
    image carillon = "carillon.jpg"

    # obrázky postav
    image eileen stasna = "9a_happy.png"

    # nastavení bílé pro hlavní menu a nastavení
    $ style.mm_root.background = Solid((255, 255, 255, 255))
    $ style.gm_root.background = Solid((255, 255, 255, 255))

label start:
    scene carillon
    "To je ale den."
    show eileen stasna
    "Eileen" "Ahoj, já jsem Eileen."

Jak vidíte nejedná se o žádné velké změny. Přidali jsme řádek:

image carillon = "carillon.jpg"

a změnili řádek:

scene white

na

scene carillon

Pro změnu pozadí v menu je to trochu jiné, řadky:

$ style.mm_root.background = Solid((255, 255, 255, 255))
$ style.gm_root.background = Solid((255, 255, 255, 255))

změníme na:

$ style.mm_root.background = Image("mainmenu.png")
$ style.gm_root.background = Image("gamemenu.png")

A opět vyzkoušíme.

Co kdyby jsme chtěli přehrát hudbu?

Pro hlavní menu přidáme do init bloku: $ config.main_menu_music = jméno souboru v uvozovkách

Ve hře použijeme: $ renpy.music.play(jméno souboru) kde jméno souboru napíšeme v uvozovkách podobně jako u obrázků např: $ renpy.music.play("sun-flower-slow-drag.mid") Zkuste si to přidat hned za label start: K zastavení přehrávání hudby slouží: $ renpy.music.stop()

Skript by teď měl vypadat přibližně takto:

init:
    # verze použitého Ren'Py
    $ config.script_version = (5, 5, 3)
    # šířka
    $ config.screen_width = 800
    # výška
    $ config.screen_height = 600
    # titulek okna
    $ config.window_title = u"Naše hra"

    # obrázky
    image bila = Solid((255, 255, 255, 255))

    # obrázky pozadí
    image carillon = "carillon.jpg"

    # obrázky postav
    image eileen stasna = "9a_happy.png"

    # nastavení bílé pro hlavní menu a nastavení
    $ style.mm_root.background = Image("mainmenu.png")
    $ style.gm_root.background = Image("gamemenu.png")

label start:
    $ renpy.music.play("sun-flower-slow-drag.mid")
    scene carillon
    "To je ale den."
    show eileen stasna
    "Eileen" "Ahoj, já jsem Eileen."

A co zvuky? Zvuky pro menu přidáváme opět do init sekce:

$ style.button.activate_sound = "click.wav"

tímto nastavíme zvuk při klepnutí na tlačítko na soubor "click.wav"

$ style.imagemap.activate_sound = "click.wav'"

klepnutí na imagemap

$ config.enter_sound = "click.wav"

vstup do nastavení, ukládání...

$ config.exit_sound = "click.wav"

odchod z nastavení. ukládání...

A použití zvuků ve hře? Podobné hudbě: $ renpy.play(jméno souboru) zvuky ovšem na rozdíl od hudby po jednom přehrání zastaví samy, takže není příkaz pro zastavení zvuků.

Teď už toho znáte dost na to abyste dokázali udělat jednoduchou kinetickou novelu. Kdybyste to ale zkusili tak zjistíte, že psát jméno postavy před jejím textem je poněkud nepohodlné. A tak do init bloku přidáme:

$ e = Character(u"Eileen", color=(200, 255, 200, 255))

Vysvětlení:

Znamená to že k písmenu e přiřadíme postavu (Character) se jménem Eileen, přičemž její jméno se bude zobrazovat barvou s hodnotami (200, 255, 200, 255). Takže od teď už nemusíte psát:

"Eileen" "Ahoj, já jsem Eileen."

ale bude stačit:

e "A tohle jsem pořád já Eileen."