Video summary
렌파이 강좌 - "모바일 완성 까지" 1강: 대사/이미지/조건 처리
Main summary
Key takeaways
Summary of the “RennPy/렌파이 강좌” Lesson 1 (Dialogue / Images / Condition Handling)
1) Setup & Project Preparation (Lampy / Lampy-like editor)
- Download and install Ren’Py from lampy.org (latest version mentioned: 6.99.10).
- Unzip the downloaded project/template files.
- Run the
.app/ Windows executable depending on OS. - In Preferences → Environment settings:
- Set UI/language to Korean.
- Create 3 folders and set an execution path for the project.
- For the script editor, set it to the system editor.
- Optionally install an external editor (Sumt / thumbnail text) to improve autocomplete.
- Launch the Ren’Py launcher and confirm the screen matches expectations.
- Example project: “Gilla Guide The Question” Run it to see dialogue, images, and choice-based endings in action.
2) Ren’Py Project Structure (where to edit what)
Inside the created game folder:
images/: stores image assets (e.g., character sprites, backgrounds).- Scripts (
.rpy): core story/dialogue scripting. options screen/ other config: general option settings (resolution, fonts, etc.).BAKfiles: temporary; can be deleted.RPYC: compiled versions; not needed for beginners.
Key idea:
- Story/dialogue/control logic belongs in
.rpyfiles. - Background/UI behavior comes from script commands plus image assets.
3) Writing Dialogue: Labels, Names, Narration
- The story entry point is a label, e.g.
label Start: - Comments are not game logic; comment text is ignored by the engine.
- Dialogue structure:
- With a name:
Name "Dialogue"outputs character dialogue with that name. - Without a name: lines can function as narration/monologue.
- With a name:
returnends a segment/story branch (framed as ending that flow in the lesson).
4) Displaying Character Images
- Conceptually similar to defining named images mapped to files, e.g.:
image <name> = "<file>.png"(image name → file insideimages/)
- Use:
show <image_name>to display the declared image.
- The lesson highlights that character name + dialogue often needs repetition, motivating “shortcut” approaches (aliases/variables).
5) Defining Characters (avoid repeating name mappings)
- Use
defineto create character aliases, e.g.:define CHm = Character "Myth"
- Then use the alias in dialogue statements to avoid retyping full names each time.
- The lesson also suggests that English variable-like identifiers can be more convenient than Korean identifiers.
6) Backgrounds
Background handling is similar to character images:
- Declare a background image and show it using an image reference (conceptually like
show School).
Important behavior:
- When the background changes, previously shown character sprites are cleared/hidden—so characters often need to be shown again after switching backgrounds.
7) Choices / Menus (branching)
- Use a
menuconstruct for player choice:- Options appear as numbered selectable items.
- Selecting an option runs the corresponding branch’s lines, then continues with that branch’s flow.
- The lesson demonstrates multi-ending behavior:
- Choosing option 1 vs option 2 leads to different dialogue and outcomes.
8) Multiple Characters on One Screen + Positioning
- You can declare multiple character sprites and display them simultaneously.
- Positioning:
- Use keywords like left / center / right (and transforms/
at-style positioning). - You can also specify custom positions beyond predefined ones.
- Use keywords like left / center / right (and transforms/
- Without positioning, characters can overlap; positioning prevents that.
9) Facial Expressions via Image Tags
- Facial expressions are handled using tags appended to image variants, such as:
neutral,angry,smile,excited, etc.
- The concept:
- Define one image group/base, then select an expression variant via tags.
- This can avoid creating entirely separate full assets per expression (depending on how the files are organized).
10) Hiding Characters (and transitions/effects)
- Use
hideto remove a character sprite. - Hiding a character “group” can hide all expression variants.
- Use
withto apply transitions when showing/hiding.- Example transition mentioned:
dissolve(fade/opacity change).
- Example transition mentioned:
showtransitions can also be applied similarly.
Pause behavior
- Mentions a concept like pause affecting input timing:
- e.g., when clicking advances dialogue or how the click is consumed.
11) Audio: BGM vs Sound Effects
- Background music (loops as BGM):
- Use a
play music <file>-type command.
- Use a
- Sound effects (one-shot):
- Use
play sound <file>for effects that play once.
- Use
- Audio files are referenced from the project using example filenames (e.g.,
BGM.mp3,sfx.mp3).
12) Background Change + Dissolve Combo
- Demonstrates combining background and character changes using transitions (e.g., dissolve).
- Reinforces the rule: after changing the background, you often need to re-show characters because sprites from the old stage disappear.
13) Labels and jump (branch control)
- Use labels as named story markers.
jump <label>transfers execution to another label, skipping intermediate script sections.- Shows how
jumpworks with choice branches to implement multi-ending flows.
14) Conditional Logic with Variables and if
- Use variables (e.g., affection/favorability counters) to drive branching.
- Typical conditional form:
if <variable> > 0:
- A practical bug explanation is included:
- If scripts run “simultaneously” or in an unexpected order, you may get an error because a referenced variable doesn’t exist yet in that execution timeline.
- Fix: group commands using an
init/ initializer so the engine processes them in a safe order and the variable is defined before use.
- The lesson ties together:
- menu/choices, jump, if, and variables to create multi-endings.
Main speaker / source
- Jaemin (solo developer; instructor presenting the Ren’Py tutorial).