RenPy is used commercially for visual novels and point and click adventures.
There's quite a few RenPy games on Steam and many more on those adult anime dating game vendor sites.
It does involve maths, but it's a very different type of maths to what you learn in school. I know programmers who hate maths and mathematicians who hate programming.
EDIT: If you start off by writing Visual Novels, which is a very writing focused style of game, you won't need to know very much programming and it will involve hardly any maths at all. I recommend checking out turorials for Ren'Py.
EDIT 2: Twine is also a good shout.
i heard about renpy a while ago, it's a visual novel engine that you can code with literally just YAML (basically just write out the script in a super simple but structured format) and can run on Android, iOS, Windows, mac, linux.
could host it on 0xacab.org too
Hey u/PlagueOfGripes , if you are interested in actually making a visual novel out of this I can help out you with that.
Most visual novels you see on Steam are made with a library/framework called Ren'Py. This uses the Python programming language for game logic and a custom scripting language for dialogue/scenes. The custom scripting language is very easy to learn and Python is a relatively easy language to get into. Ren'Py is Open Source and free to use without any royalties, payments, obligations or anything like that.
I'm a developer and I'm experienced in Python and toyed a little bit with Ren'Py (never made a visual novel before though). I can help you in one of two ways, as you prefer:
I can give you advise, sample code, help and code resources for Python and Ren'Py. Also if you are considering another programming language/framework/library to make the visual novel I can give you an educated guess of how it is, pros, cons, etc.
I can actually develop the game for you. I can spare between 10 and 15 hours per week (I have a full time job as a dev), I would do this for free only because you plan on releasing the game for free and I think that people could benefit from such a game existing. Think of it as community service. If you want to confirm I can do the job, I can make a small proof-of-concept game in Ren'Py.
Either way, if you are interested or want my contact info just send me a PM.
Please choose one option: :
a) make a text based game for PC and for Android
b) want to take one step further in Python
If your choice is "a" - use the Instead engine.
If your choice is "b" - use the RenPy engine.
I wish I hadn't had to read the entire thread and then followed a link to find out that this is a Windows game that is functional in Wine. I would very much appreciate it if such threads mentioned Wine in the title, or in the body, or linked to /r/Wine_Gaming, or maybe even just had a first-post that indicated that it was a Windows game in Wine, and not a native release, a Unity user port, a Ren'Py user port, an open-source reimplementation, or something else.
Please keep in mind that most of us don't have exhaustive knowledge of non-Linux games and wouldn't be able to make any assumptions about how the OP got this game functional on Linux. Thanks!
Here's a good video tutorial and here's a good written tutorial that goes into more detail.
Took me about 2 minutes because I knew what I was doing and went down that road myself. In fact I was that person asking that broad question at one point. I googled and had so many different answers with varying levels of assumed prior knowledge and jargon I wanted someone to cut through all the bullshit and give me a straightforward answer of where I needed to start and what I needed to do.
People asking the same questions over and over is a good sign, it means more people are trying to get involved in your community. It's annoying, but telling them "There's a sticky for a reason" or complaining about all the noob questions or just telling people to google it doesn't solve the problem, it tells people this community doesn't want them.
I'm more than willing to take 2 minutes out of my day if it means I can help someone else pursue a shared passion.
On that note if someone here has the skills, perhaps one could copy the functionality of Ren'Py. As the name suggests that is a python package but their "grid", "hbox" and "vbox" abstract containers are designed to be flexible and easy to use with full nesting support.
Double the renpy suggestion. You will mostly be writing in its own language (which is mostly even easier than Python), and Python is beautifully integrated in case you need some complex logic, minigames or something like that. It's mostly a VN system, but we've used it for the interactive fiction prototype (CAUTION: it's entirely in Russian!) with a card game in it, and it works like a charm.
Actually, this is common enough that renpy built it in. There's still a fair bit of work, but the hardest stuff is done for you.
You'd build a screen.
If you're good with documentation, then this will help, otherwise - given how complex screens can be, you'd want a tutorial of some description, some pre-built code you can dump in a test game and then fiddle with to see what does what. Specifically you'd be looking for things relating to Imagebuttons.
I'd point you to a good tutorial, but I can't find any of the text based ones I used before, just a lot of videos, and I have no idea if any of those are good or not.
Use persistent variables, just use persistent.x
with x as the variable name. For example, you could have persistent.playthroughs
(int) or persistent.some_character_ending
(bool). Check the official documentation and this Reddit post for more info.
Actually coding the dialogue is really easy. In Renpy you use the "menu" command.
Most of Monika's questions are rhetorical, though. It's kind of a pattern of her speech established in Act 3 of the original game. Even if you had the option to answer "Yes" or "No" to those questions, it would change very little about the following conversation.
There's no inbuild quest-menu in renpy. You could try and customize the ordinary menu screen to your needs but I wouldn't recommend it. Instead you should build the menu yourself. You can replicate the menu you posted, with 1-2 image screens, around 7 text buttons (the ones on the left) and 2 text screens ("opportunities" and the text below the image on the left).
Your best approach is to learn how to use screens by starting with the inbuild tutorials that comes with renpy. Read the documentation for screens: https://www.renpy.org/doc/html/screens.html and look around the lemmasoft forum for some examples and try for yourself again.
The first can be done using character callbacks as explained here:
https://www.renpy.org/doc/html/character_callbacks.html
There's an example doing exactly what you asked about.
The rare dialogue can be done using Ren'Py's random number generation.
https://www.renpy.org/doc/html/other.html#renpy-random
For example, you could generate a number from 1 to 10 and then use an "if" statement to only play it if a 1 was rolled.
Hope that helps!
I guess, "extend" could help?
u "text" with vpunch extend "text2"
and so on?
That aside you can add to your "u-character" some pre- and suffix ( what_prefix and what_suffix), so that you don't have to add the " that are shown in the textbox.
https://www.renpy.org/doc/html/dialogue.html#defining-character-objects
The room will be a Screen in Ren'Py. Each of the things you can click will be an Imagebutton. You can get the shine effect by setting a different image for "hover". You also want to define an "action" for each one. For the objects, the action would be to show text. For the door, the action would be to show a new Screen for the new room.
Let me know if anything doesn't make sense. I tried to write it as simply as I could. I know the links are in English, but there's no Spanish ones.
Heya! For visual novels the main engine to use is Ren'Py- it's free, easy to use, has tons of tutorials, and is constantly being updated. However, I will warn you that VNs aren't as easy to make as it seems- it's not just throwing together words and pictures on the screen and calling it a day. There's the character art, expressions, backgrounds, writing, music, sound effects, programming, GUI, and more.
For Creative Commons assets for VNs, LemmaSoft has a great selection as well as an active community to share your VN in progress.
Good luck!
I used the Monika After Story mod for this, but the regular game should work fine aswell.
First, you need to configure your pi. Run sudo raspi-config
, go to Advanced
and change the following:
You'll need to download Ren'Py 6.99.13 and the Raspberry Pi support thing
Extract both, and move the pi support zip's "lib" folder into the renpy folder. Move the game directory inside the renpy folder and execute the following command:
./renpy.sh "./<game folder name>"
Also, this is only tested under a Raspberry Pi 3B. Might not work on older pi's.
LOL I tried to make a dating game back in the day using Ren'Py for another fandom 😂 I was actually playing with the idea of making one for Glee too (where you play Santana as the MC, so Rachel was definitely going to be a love interest HAHA), but ugh it just takes so much time and effort--writing the story, making the character art, the background, choosing the music... 😭
Who knows though, if fans could make one for Life is Strange, maybe some fans could get together to make one for Glee 😌
There's an antialias style property that you can disable.
https://www.renpy.org/doc/html/style_properties.html#style-property-antialias
Note that it will make your text look particularly unpleasant on anything that uses an High DPI/Retina display.
When the player makes a choice, you'll want to add some Python code. For example, if the player made a pro-Trevor decision, you could write $ trevor_points = trevor_points + 1
. The "$" makes it so you are writing Python code by the way. Don't forget to set "trevor_points" to 0 at the start of the game too. The same stuff will apply to Coen.
Once you get to the scene that decides who you end up with, you'll want something like this:
"This is normal dialogue." if trevor_points > coen_points: jump trevor_ending elif coen_points > trevor_points: jump coen_ending else: jump neutral_ending
You may need to replace "jump" with "call" depending on if those scenes will return or not. Elsewhere, you'll need labels with those scene names.
Here's some information about if statements and Python statements so you can learn more. Hope this helps!
Ren'py for sure, it's really easy to pickup and you should be able to get something going rather quickly.
Follow the QuickStart tutorial and you'll have your first (basic) visual novel up in no time. https://www.renpy.org/doc/html/quickstart.html
Ren'Py can somewhat run under a Raspberry Pi. And setting up a VNC server should be easy.
One VNC client on a phone, one in a computer.
Game always running and easy way to get in touch.
-
I guess I got something to do today.
For generating random numbers use renpy.random.
For animations, this is how you do them:
image Test_animation: "Frame_1.png" 7 "Frame_2.png" 0.15 "Frame_3.png" 0.15 "Frame_4.png" 0.15 "Frame_5.png" 0.15 "Frame_6.png" 0.15 "Frame_7.png" 0.15 repeat
You use that by adding it to a screen that you show:
add "Test_animation"
For everything else you need to actually learn and use Python scripting.
If you are wondering how some game did something you can just use Ren'py decompiler to get the game source code.
I assure you that if you do that, you will realize that all advanced stuff is done in Python and it takes a lot of effort.
There is a (NSFW, adult) game called Allie's Quantum Adventure. You can learn a lot from looking at its code.
You can always use a persistent variable like for example $ persistent.playtrough = 0
. Persistent variables are saved in a local persistent file and apply across all saves and new playthroughs (from my understanding). At the end of the first playthrough, you could increase the variable by one and add if statements across the files which only happen if the variable is equal to 1.
Here's the documentation.
There are two different types of double quote marks. One are the neutral ones that look like "this"
. The others are the fancier ones that look like “this”
. You have to use the neutral ones on the outside of your dialogue:
bob "Hello."
That will not show any quotation marks. If you want to put quotes inside as in your second example, you'd want to use one of these methods depending on the type of quotation mark you want.
"The human said \"hello\"." "The human said “hello”."
In the first, you have to put backslashes in front, which is called an escape character. In the second, this isn't needed because fancy quotes aren't special characters in Ren'Py.
If you always want quatation marks around your dialogue, you'll want to define your characters to use what_prefix
and what_suffix
as talked about here.
Hope that helps!
Never used Renpy, know little about it, but it might be an option?
Posting on crappy phone.. difficulty to be detailed, but possibly look at the pyro framework for the monkey programming language
Where did you get the line
block:
?
It looks like you're trying to play an animation - that's not really the method to do that - give this document a read
You're looking for persistent variables! There's a lot of things to read about it and how you can use it but I'll give you the gist.
For regular variables, you would declare them after start, so they have a default value that is reset each time the game is started over. Persistent variables, however, are not defined at start. Their default value is False, and once set to True (or any other state, they can take numbers, strings, etc. just like regular variables), they will stay that way until you change them or the persistent data is deleted, usually by deleting all game files or using the "delete persistent data" option on the Ren'py launcher for WIPs. Persistent variables look the same as regular variables, but have "persistent." in front of them.
label start: if persistent.remember: "You remember your previous life, and a sense of confusion washes over you." return elif persistent.forget: "You feel like you're forgetting something, but you can't quite seem to remember it..." return
menu: "Remember what happened here.": $ persistent.remember = True pass "Forget what happened here.": $ persistent.forget = True pass return
In this example, if the player has already played the game, the game will show one of the first two lines of dialogue and then return. If they haven't it'll show the choice and then return. You can use these in screen codes to show/hide things like CGs for galleries too!
It sounds like you're describing a spalsh screen - check out the documentation here: https://www.renpy.org/doc/html/splashscreen_presplash.html
Basically, you just need to put
label splashscreen:
$ renpy.movie_cutscene('opencard.mp4')
return
somewhere in your script, as long as it's not in a block (including label start). I put mine right near the top, immediately before start.
Hope that helps!
Yes, you want to use renpy random.
https://www.renpy.org/doc/html/other.html
For example, you could use:
Storyline = renpy.random.choice(['hacker','wizard','barbarian'])
Edit then set your storyline to have some checks so if storyline = 'hacker' goto...
For the door clicking you'll need to look into screens and screen language. You could make it easier on yourself by just having menu options pop up in a list on top of a picture of the room, but it might not be as aesthetically pleasing so either direction is understandable.
Here's the documentation for Ren'Py screens: https://www.renpy.org/doc/html/screens.html
And here's a YouTube tutorial I like: https://youtu.be/SaWkkmU1QLI
If you have any questions you can post them here and we'll try to help where we can. The community is really nice from my experience.
You want to set a default cps (characters per second) option and see the slider for it in the options menu. To force it for a specific line (since the player can change that value, see the cps text tag.
If you define your characters with an image attribute as explained here, you can just “show” the new sprites and Ren’Py will automatically hide the old ones that belong to the same character. So you only have to use hide when the character leaves the scene. Note that your images for the character have to begin with the same word in this case, like “eileen happy” and “eileen sad”.
Showing without effects is done using with None
. Hope that helps!
So, the way the at left and at right work is that they put the bottom left/right corner of the image in the respective bottom corner of the screen.
If they are covering the central figure, then your images are too big.
Now maybe they're transparent PNGs with too much space on each side of them. If that's the case, readjust as needed. Cut off the empty space and the problem will self resolve.
But let's assume part of them needs to hang off screen AND that you need the full image because you have the figure on the left move across the screen to the right or vice versa.
What you're going to want to do is define your own transformation.
So instead of
show Mike at left
you'll use something like
show Mike at trueleft
or whatever you decide to name the transformation.
so you'd do something like
transform trueleft:
xalign 0.01
or whatever your xalign is.
If it's the same size and proportions as the default, then replacing /gui/textbox.png will work.
Otherwise you'll want to change it in options.rpy
You can also look in RenPy (graphics are optional there). It does a lot of the work to package a standalone Android app. This can be complicated with other ways to bring Python to Android (PyDroid3 = Interpreter/IDE, no standalone, Termux/Python = Interpreter, no standalone, Kivy = Standalone possible). And you can build PC and Android versions from same source code basis. The RenPy script language is easy with pure Python in the background.
>Visual Novels
Renpy. Just go with Renpy. It's very simple to use, it comes with a baked in tutorial, it's on it's seventh edition, it's free.
Even if you have some vision for new age visual novels that is radically divergent from Renpy, Renpy's a good place to start.
Unless you have extensive video editing or animation experience, I'd recommend actually rendering your story as a VN using Ren'Py? No need to code everything, you would only need to prepare the segments which will appear in the video, and therefore to prepare some backgrounds, characters, music and of course the text itself.
Then you could record yourself playing the VN using a video capture software like Fraps or Camtasia.
I think that'd be the easiest way! Ren'Py has the benefit of being a VN engine already, so you'll get a VN-like look very easily.
It would also be possible to animate and design everything using a video editing software and/or Photoshop… but it might get tedious unless you're already really good in the area.
Movies are not supported on Web
That said, it shouldn't cause it to crash.
You can use the animation features to run the images through one frame at a time, and the sound options to play the appropriate sounds.
The phrase "HD resolution" is meaningless, as that simply means 1280 pixels or higher on one dimension - technically two dimensions, 1920 X 1080 and 1280 X 720, but it's generally used as a catch-all for 1280 or higher that isn't 4K. That said, the resolution shouldn't matter.
https://www.renpy.org/doc/html/splashscreen_presplash.html
its not too hard, pretty much just make a label named "splashscreen." Everything in that label happens before the main menu is rendered!
Yes, you can use renpy.input for this with a prompt:
$ name = renpy.input("What is your name?", "hopiequinn")
That way, it'll display the prompt at the bottom as a text box with the input allow the player to type their name.
define config.rollback_enabled = True
Set that to False to prevent players from rolling back. I strongly suggest you not do that, especially if you like to add in blocks of "...." or clicks to finish a full textbox as players can accidentally skip text. One of the first comments on your game is likely to be someone giving a walkthrough on how to re-enable rollback, since people expect it to exist, thus negating the whole thing in the first place.
The way I'd recommend to "block" Rollback is $ renpy.fix_rollback()
Here's a description of how to use it. That way, players can still roll back to re-read text they missed, but they cannot change decisions they made.
It's not only harder to undo as it's not a simple boolean in a config but an entry after every single choice option, it also prevents accidental clicks from preventing the player from reading the story.
You can use the volume clause to decrease the volume of audio as shown in the second example here. I don't believe it's possible to increase it within Ren'Py.
Your best bet is to do it in an audio editing program like Audacity and modify the file directly. Just be sure to not to go too high or you'll oversaturate the audio and it'll sound distorted.
Oh boy. Five days is not much time and that's quite a bit. I'll take it item by item.
All that said, that is a lot to do and learn in 5 days. I'd recommend simplifying it by removing the mini games, and try to find some free sprites online. I know there are some websites that have them.
You should go through the bulit-in tutorial that comes with Ren'Py so you can get a better feel for what the engine has built-in support for so you can form your ideas around that.
> I only have five days left.
It will be very difficult to do most of the things on your list in five days if you have no experience with Ren'Py.
Your best resource will be the official documentation, especially the quickstart guide.
That said, in five days, you probably won't be able to anything except an extremely short and very simple game. That means something like "The Question", which is the demo game included with Ren'Py.
I know this is possible. I think you have to copy the menu screen, calling it something like "timed_menu". Add a timer to that screen. Jump to the second menu.
The old documentation provides an example but I don't know if it still works.
Yes, but you might want to look into Ren'Py before making any decisions, since it's an engine specialized in visual novels and everything you need to learn is going towards your visual novel.
Whether you choose GMS or Ren'Py the process of planning is more or less the same: try working the script from start to finish, keep updated character sheets with any important info, keep track of needed assets and their completion status, write down any other game mechanic you might want to implement outside of the basics and try to be as detailed as possible (almost as if you were explaining what every line of code does) so implementing later is easier for whoever has to do it.
If you're planning on using GameMaker, however, you'll also benefit from writing a technical document with all your visual novel's features. Since you're not planning on making an action-oriented game I wouldn't recommend you start cloning simple games outside of practicing your coding skills. If you don't know how to code, I'd suggest you start with basic stuff like basic coding (variable types, conditionals, loops, etc.) and understanding how objects work (stuff like events, instances vs. objects, inheritance/parent-child relations on objects and such) and once you have a grasp on how to make something simple (simple as "when you press a key, different instances of different objects do something" simple) I'd recommend you study topics on string manipulation and data structures, since visual novels tend to be data-heavy and managing assets and data will help you greatly implementing all the things you need.
Since you say you're writing a visual novel, I wonder, do you actually need a CS major on your team? To be honest, it doesn't seem like there's going to be much coding involved. Have you considered using RenPy for your project? I've seen some very impressive visual novels made with RenPy, like Butterfly Soup and Her Tears Were My Light. As far as I could tell, the authors didn't come from a technical background.
Renpy is free and super easy to start with. There's also a robust community around it.
You can find free assets to use. A lot of people use free photos as backgrounds (unsplash and pixabay are good for this), and there are a good number of free sprites available online.
Here are some good resources to get you started.
For someone who isn't really inclined to programming, but does have writting chops or talent as an artist. I recommend doing something like a visual novel (which you can try your hand in with this), or an RPG Maker game.
Usually for people lacking in game dev experience, the smaller your starting project is, the better. There are still two more weeks to go before the competition even properly begins. So theres still a lotta time to prepare and practice.
I am very interested in seeing whatever jam projects come out, especially those made by people who aren't usually associated with the fangame scene.
Ren'Py is the engine, as for characters DoD and other similar-looking 3D games like DmD and BB use Daz3D for the models.
If you go down that route you'll need a powerful GPU to render scenes in a reasonable amount of time (like 1080 Ti or Titan Z powerful). Also some developers using Daz only do posing/composition in Daz Studio, but then export to Octane for higher quality renders.
GameMaker is definitely easier to learn than Unity. You can make a game in GameMaker without utilizing very much code or scripting.
If you want to tell a story, have you looked at Ren'py or Twine? They're much more suited to complete beginners and Ren'py, in particular, is popular for dialogue-heavy visual novels and games.
If you're on a Mac like you said in your other comment, you can still get that PC version to work. You need to download and unpack Ren'Py, drop the PC version in the installation folder and launch ren'py. From there you can run the game itself.
(This at least works on Linux, so I'm assuming it also works on MacOS)
That is not true. I have no knowledge of python whatsoever, and I found it pretty intuitive to pick up. Here is an example of a short visual novel that I made with Ren'py. It's pretty basic, but you can check out my itch.io for another VN that's a bit more complicated/polished.
The built-in tutorial is all right, but a simple way to get into it is to google "renpy quickstart" and check out the results. Note that the Renpy Wiki is obsolete and a total beginner might want to go with the Renpy documentation instead.
Here are some idea's for a small project progression to get you towards your goal project. When I say "make," I really mean follow some tutorials and maybe add a few things. Move on to the next step unless you feel you can do what you want.
Make a simple non-linear text story in Twine. Get a feel of how you can present story through a tree.
Create a short visual novel with Renpy. Now you're displaying backgrounds and character sprites, in addition to text.
Try a top down RPG with Gamemaker. You're adding in character movement, tilemaps and maybe even basic rpg elements at this step. You may be happy with what you can make at this step.
Use something like Godot, Cocos2d, Love2d or Unity. Try to implement the mechanics from 1-3 with your own customization.
As a final word, there is a problem with RPGs and the reason its often discouraged for early projects. The trouble isn't the programming and game logic, its the need for content. Text for the story and UI, art for characters, backgrounds, items. Creating content can be a lot of fun, but it's also time consuming. Focus on learning how to structure the games and the programming around the core systems with small amounts of content at first. Then you can commit to making something epic.
While it would work, it really feel like something that could/should be defined by a warper or some other equation. (I'm not sure of the method, tho. Probably a bounce that get from X to Y, and then another from Y to X to go back to the default position)
There's a number of things that could be going wrong, but I think the most likely is that you're using characters that aren't available in your font, in which case you'll need to use font groups to define fallbacks
A rotating clock hand would be easier than an hourglass, as you just need to have the clock hand image (with the base of the hand being in the center of the image, most of the image being completely empty space) and then rotate it however many arcs you need (180 if you're doing 30 seconds on a stopwatch, for example) in however long you need it to rotate.
This thread has some older information that may help, as well as the documentation on transformations and animations
If you wanted to do an hourglass, an image of an hourglass with a translucent middle part, then a static image of a pile of sand could crudely work, of animating the sand as two different images behind the hourglass (one pile slowly rising up, the other pile inverted and sinking down). Would need to edit the images creatively, possibly have the hourglass in multiple parts....
A rotating arm is easier.
Thank you!
Adding emojis is actually very easy.
"message": "Check out this emoji! {image=/ui/phone_ui/emojis/waving.webp}"
Since messages are simple text strings, you can use tags on them.
In this case I'm using the image tag.
You could create your own function, I would suppose. Look at How to create my own functions? - https://www.reddit.com/r/RenPy/comments/8dv4cu/how_to_create_my_own_functions
You could also try to create your own statement, but I have never done that myself, so I don't know if it's a good idea or not. https://www.renpy.org/dev-doc/html/cds.html
These will go into your screens.rpy
, something like:
style quick_button:
properties gui.button_properties("quick_button")
activate_sound "audio/sfx/Confirm-UI.ogg"
​
Also hm... I'm sorry the documentation isn't working for you. Maybe I linked it wrong?
https://www.renpy.org/doc/html/style\_properties.html
Append the following to your buttons/styles.
activate_sound "audio/sfx/Confirm-UI.ogg"
There is also hover_sound as well. Check the documentation below for more details:
https://www.renpy.org/doc/html/style\_properties.html?#style-property-hover\_sound
You can try to define custom transforms and use them like this:
show character at your_custom_transform
Here is how you define a custom transform: https://www.renpy.org/doc/html/atl.html#atl
But this will take some time to define all the needed transformations and you may lose a bit of flexibility if you want to create "custom" transformations.
When I get to this point my best friend is the classic copy/paste. It is faster and more flexible than to declare those custom transforms. But if I need a specific transform each time I do go and define it.
Hey, try replacing your call line with the following:
call expression "chapter" + str(chapters)
There's more information on call statements in the renpy wiki.
Good luck!
What exactly do you want to happen?
If you want to give the player a choice of scenes, then you want to use a menu instead.
If you want to set a flag/variable that is later checked and leads to a different scene depending on whether it's True or False, then check out the documentation here.
IIRC, "wav" is not supported.
https://www.renpy.org/doc/html/audio.html
Ren'Py supports playing music and sound effects in the background, using the following audio file formats:
Opus Ogg Vorbis MP3 WAV (uncompressed 16-bit signed PCM only)
Opus and Ogg Vorbis may not be supported in WebKit-based web browsers, such as Safari, but are the best formats for other platforms.
You could also use condition switches, so that you have a base image that gets/removes some stuff so you could still uses "eileen smiling" if that is more up your alley.
https://www.renpy.org/doc/html/displayables.html?highlight=condition%20switch#ConditionSwitch
You'll want to edit the navigation
screen in the autogenerated screens.rpy
file. Specifically, you'll want to add code like this under a main_menu
check, probably just before or after the Start
button:
if persistent.finished_game: textbutton _("New Game+") action Jump("new_game_plus")
You can read about the Jump
screen action here, and remember to tweak it based on the names you've chosen for things. Then, just define the new_game_plus
label, set a flag, and jump to the real game:
label new_game_plus: $ in_new_game_plus = True jump start
Check the default transitions that are available to be incorporated in your images.
https://www.renpy.org/doc/html/transitions.html
You can add the transition to any of your images using the "with" expression. For example:
scene first_image with dissolve
Hello! One way to do it would be to use a viewport in a custom screen; this way you can navigate the image with the mouse.
https://www.renpy.org/doc/html/screens.html#viewport
You can also learn about viewport in the tutorial included with Renpy; it's a very useful ressource in general!
Good luck with your project!
What you are talking about is a Visual Novel. There is some good options for creating Visual Novels out there already.
Ren'py is a good choice to start with, because it is free.
But there are paid options as well that make have more features.
I'd recommend using https://www.renpy.org/doc/html/translation.html for this.
There are a couple jokes I coded that I can think of that involve the menu/UI that probably won't translate properly, though.
I haven't tested this, but to make sections of the game unskippable you could try this:
$ renpy.pause(1.0, hard=True)
The 1.0 is the time until the user can press to skip.
Making a game play automatically is what the Auto function is for, so if you do some digging, you may find a way to have it turned on by default.
For voice functions, here's the documentation on the matter: https://www.renpy.org/doc/html/voice.html
"Voice sustain" may be what you're looking for?
As Karrion said, the Lemmasoft Forum is a great place to ask more specific questions.
I agree!
Unfortunately, I wasn't able to discuss Transition Class (which has customizations) in the same video but I plan to make a video about it in the future.
You can learn more about transition class here to increase your game's quality:
https://www.renpy.org/doc/html/transitions.html#transition-classes
You're close, just missed one thing. Menus with if statements are explained here.
The short version is that you are missing the actual menu
statement, so it should be like this:
label menu_tour: menu: smartass "Let's go to..." "Kitchen" if notint_kitchen: jump introduction_kitchen "Bathroom" if notint_bathroom: jump introduction_bathroom "Laundry Room" if notint_laundry: jump introduction_laundry "Living Room" if notint_living: jump introduction_living "Garage" if notint_garage: jump introduction_garage "Porch" if end_prologue == 5: jump introduction_porch
Also, note the "==" on the last if statement. That's how you comepare with integers properly. Hope that helps!
You want to use "call". After you return from a call, it will put you right back where you were in the previous code block.
https://www.renpy.org/doc/html/label.html#call-statement
Alternatively, you could just have the menu as its own separate label, we'll call it "menu". Then at the end of your dialogue snippets, they just use jump menu
>kalau buat game tipe gini, buat pasar wibu cowok di indo laku kali yah
Udah banyak banget, Fate/Stay Night aslinya juga game model gini kok, dan dulunya juga Makoto Shinkai juga ngerjain ilustrasi background dan opening movie untuk game gini sebelum fokus di movie.
Kalau mau bikin sendiri juga bisa pake Ren'py, tinggal masalah ilustrator, storyline, sama ost.
show [character] at right with moveinright
show [character2] at left with moveinleft
show [character3] at left with moveinright
show [character4] at right with moveinleft
should get you started.
If a character is already on a screen, you can do something like
show [character]
linear 2.0 xpos 0.5
that'll move them to the middle of the screen. xpos 0.0 is one side (left I think?), 1.0 is the opposite side, 0.5 is dead center. The linear X.X is how long it takes to move in seconds.
You first need to define the images like this:
image delilah smile = "delilah_smile.png"
Then to show it you use this:
show delilah smile
More information here: https://www.renpy.org/doc/html/displaying_images.html
That’s doable in Ren’Py. You’d want to create a new Screen for the mini game, and add Imagebuttons for the ingredients. You’ll want to call some function when they’re clicked to check which were selected against the recipe or whatever. It’ll definitely take some work, but shouldn’t be too bad.
You want the nw tag for the interruptions. The half second pause could be done with a “pause 0.5” on the following line.
Edit: Maybe also the “fast” tag from the example at the link.
Is there a specific reason you're not using the predefined audio channels?
You shouldn't need to define audio just to play a song; Ren'Py is equipped to handle this already.
If you have a folder "audio" in your game directory, with "yearning.mp3" as a file in that audio folder, line 8 shouldn't be needed, and line 42 should read as:
play music "audio/yearning.mp3"
To later stop playing with a 1 second fadeout, code would read as:
stop music fadeout(1)
You can read more about predefined audio channels in Ren'Py here: https://www.renpy.org/doc/html/audio.html
Hope this helps :)
renpy.random.choice() Gets a random item from a list. Just assign that to a variable and then use variable interpolation to insert the selected item into the menu choice. Hope that helps!
I was also trying to play around with the side image feature of RenPy recently, so maybe I can help out?Here's an example directly from my VN code:
define c_f = Character("???", image="creator") image side creator happy_s = "side_creator_happy_s.png" label start: c_f happy_s "Hello, and welcome to the world of your ordinary high school life!"
To break down line by line what my code is doing:
1) Defining the character 'c_f' and also giving it the image name of "creator". This means that any image defined with its first tag as 'creator' (ex. image creator blargle) can be called up by the character 'c_f'.
2) Defining the particular image you want to display as a side image. It has its primary tag as 'creator' and its secondary tag as 'happy_s', meaning that it can be called with the character 'c_f'
3) 'start' is a special kind of label that indicates to RenPy that the game has officially started.
4) This line basically calls the character c_f to speak, while also assigning the image that will appear with the character's speech. In this case, the picture with the secondary tag 'happy_s' will automatically appear in the bottom left corner.
Your 2nd line is missing a secondary tag characteristic, and you should be defining it like:
image side mercy neutral = "wherever the picture is"
Your 3rd line may be unnecessary for what you're trying to accomplish.
Try giving Mercy a few words to say and test it out! Practice is the best way to get familiar with RenPy. And make sure to always have the RenPy Official Documentation handy. Good luck! :DD
Not sure about the icon issue.
For other things you should do, set config.developer to False or auto. You can also remove .rpy files from the distribution to save some space and/or package things into .rpa files. There’s quite a bit on this page if you haven’t seen it.
After you install it, run through the built-in tutorial. That'll teach you about 90% of how to make a game in the engine, but it's pretty basic. After that, have look through the online manual whenever you need to learn something new, or at least at the Quickstart section. It's well-organized and explains everything in more depth. That'll get you to about the 99% mark. That last 1% is Python, which you should only use when you need it. What you need to do will vary from project to project though, so just search on the internet for how to do that once the need arises.
Outside Ren'Py itself, you'll want a good text editor. I personally use Atom, but that's down to your preference.
Lastly, when questions come up, both this sub and the Lemma Soft forums have people who can help answer them.
Hope that helps!
Here's a link to the manual page. The short version is:
play music "song.mp3"
to your scriptHope that helps!
Is using Lua, specifically, part of your requirements? Python has a reputation for being easy to use, is much more of a "real" programming language than Lua is . . . and has Ren'Py, an engine made specifically for visual novels!
According to the documentation, Ren'Py requires the Open GL driver which means that it won't be able to run in RetroPie. For more info why this is, you can read this.
Ren'Py should be able to run in Raspbian with desktop by following the instructions in the Configuring the Raspberry Pi section of the documentation.
For more support, you can try the Raspberry Pi Gaming forum or the subreddit r/raspberrypi.
I like using wipeleft (without adding '_scene') for transitions because it feels more natural. The new background just rolls over the old one. Naturally you can also do wiperight, wipeup, and wipedown.
Here are the transitions listed in the renpy documentation.
So what's happening there is that you're attempting to pass an object named sfx (which isn't defined anywhere) as opposed to the string "sfx" (which is a string indicating, in this case, a mixer).
If you're ever referencing something in Ren'Py using a python statement like this, be it a mixer, sound channel, label, whatever, you will more often than not need to pass its name as a string.
Replace that line with the following:
renpy.music.register_channel("environment", mixer="sfx", tight=True, buffer_queue=True)
(Again, like in my other example, all the parameters you aren't changing from their defaults are omitted)
And on a related note: I'm curious as to why you're sticking stuff related to your sound in a rpy file that, based on its name, is meant for stuff relating to graphics. Then again, I've seen projects released on Steam that stick all of their script - audio, graphics, and all - inside script.rpy, so you're already doing better than them, IMO.
quick edit: I'm gonna go ahead and link you to the old tutorial regarding adding a sound channel that's on the deprecated wikidoc. The code and renpy script on there works, though if you like being verbose in your function calls (which you seem to be), the following two lines of code are equivalent:
renpy.music.register_channel("nature", "sfx", True) renpy.music.register_channel("nature", mixer="sfx", loop=True)
Double-check the current documentation. You were on the right track with changing mixer, but there's only 3 mixers defined by default:
These are the three built-in mixers. If you want to add additional mixers, you will need to add a preference setting on the preferences menu for them (follow the same pattern as with the music and sound sliders, only instead of "xxx volume", use "mixer xxx volume" where xxx is the name of your mixer)
As an additional aside, your channel-creation statement in your post can be simplified to the following:
renpy.music.register_channel("environment", mixer=None, tight=True, buffer_queue=True)
When using keyword (named) arguments in Python, the order does not matter. It's only when using positional (unnamed) arguments that order matters. Since the only parameter that does NOT have a default value is the name, that's actually the only strictly-required parameter, though it is highly suggested to set the mixer parameter to a mixer (see above).
Would it help to first design the game as a visual novel?
That way you could plan your routing, choices options, characters, introductions, dialogues, locations, scenes and probably a whole lot of other stuff I'm seeing you mention.
Ren'Py runs on Python and is generally really use in use. I don't suppose you could write a custom loader for your format in python and go from there?
Once you finish the game you could just write another python exporter to save the entire game in a format you could use more easily with another engine, like JSON.
I'll take my most ridiculous solution award now.
Ren’Py is a widely used, fairly intuitive, free visual novel engine. Take a look through the documentation if you want to see some example script files.
An alternative would be Ink, Inkle Studios’s custom language. It’s perfect for interactive fiction, but probably requires a bit of retooling to suit a classic visual novel.
You can download the program itself here:
> https://www.renpy.org/release/6.99.12
You'll also need the mod template:
> https://github.com/Monika-After-Story/DDLCModTemplate/releases
Just follow the instructions here:
> https://www.reddit.com/r/DDLCMods/comments/89tf1p/getting_started_with_your_ddlc_mod/