Is Ren'Py capable of doing this?

Discuss how to use the Ren'Py engine to create visual novels and story-based games. New releases are announced in this section.
Forum rules
This is the right place for Ren'Py help. Please ask one question per thread, use a descriptive subject like 'NotFound error in option.rpy' , and include all the relevant information - especially any relevant code and traceback messages. Use the code tag to format scripts.
Message
Author
RPin
Newbie
Posts: 7
Joined: Wed Jun 06, 2007 5:38 pm
Contact:

Is Ren'Py capable of doing this?

#1 Post by RPin »

Hello everyone, I've been toying lately with the idea of creating an adult renai game. At first I was going to use macromedia Flash, since it's the only software capable of doing this sort of thing that I know I'm capable of using. But someone I know reccomended using Ren'Py, since it's a program created especially for this kind of thing, which is cool.

The problem is that by browsing the finished games so far, I don't see anything that looks like what I'm trying to do. I'm not aiming for the usual kind of graphic novel, visually speaking. I want something that looks like the "Froating" Frame Director (engrish, lol) that is used in Little Witch's games. If you're not familiar with them, here are some screenshots from Episode of Clovers:

Image

Image

It's a sort of hybrid between graphic novels and comics. There isn't the standart text box nor the game reuses sprites over and over. Instead they have panels and text comes in the form of speech bubbles.

I'm quite fond of this concept myself, but I know next to jack shit when it comes to programming. Ren'Py tutorials seem easy enough but then I don't know how simple doing something like this (or even if it can be done at all).

Perhaps some of you can shed some light, thanks.

User avatar
DaFool
Lemma-Class Veteran
Posts: 4171
Joined: Tue Aug 01, 2006 12:39 pm
Contact:

#2 Post by DaFool »

Speech bubbles have been used in MagBou:

http://magbou.visualnews.net/

Although it's only in a limited extent...having to position things everytime there's dialogue is pretty cumbersome.

Funny that you mentioned Little Witch... the graphics there were used as placeholders during MagBou's development.

Dunno if monele might pop in to give some advise. All I know is it might be better to standardize the bubbles, otherwise scripting to fit text will become a nightmare. Bubbles are nothing more than drawn textbox frame pngs positioned specifically.

Twar3Draconis
Regular
Posts: 129
Joined: Thu Apr 19, 2007 12:07 am
Location: Michigan, United States, Terra
Contact:

#3 Post by Twar3Draconis »

Outside of C# and Ruby, I know jack squat.

I assume, however, that you could do such with the usage of many pictures? Say, like uses Ren'Py's character, or scene function to do such. As the massive-ness (sp?) of this code that would be requried to define the images a seperate scripts file (say, define.rpy) would be used to define all the images that you use, and you could simply have them show up in-game.

monele
Lemma-Class Veteran
Posts: 4101
Joined: Sat Oct 08, 2005 7:57 am
Location: France
Contact:

#4 Post by monele »

Hello, fellow LittleWitch fan ^_^... I actually made a FFD look-alike in Flash at some point (reproduced a scene from Quartett). But it's quite painful to place all the bubbles. I have no idea wether FFD automates the process or not... but I somewhat doubt it.

As for Ren'Py, hmm... the hardest part is in making the bubbles : vector drawing is the best for these (that's where Flash shone). And of course, placement is still a b*tch :/...
The bubbles in Magical Boutique were made as a simple PNG image and there's no stretching that I remember of... oh wait... yes, I made the bubbles kinda squareish so that they could be stretched.

I'm curious to hear other ideas for this :)

RPin
Newbie
Posts: 7
Joined: Wed Jun 06, 2007 5:38 pm
Contact:

#5 Post by RPin »

Being called a fellow Little Witch fan kinda puts me into an awkward spot...

I must admit I'm currently leaning towards Flash, although the lack of features such as saving the game will be a problem. Also there is the fact that I'm not familiar with coding anything. Well... Not sure if it's appropriate to ask this here, but I perhaps if there's anyone here interested in helping me co-author the game...

Scout
Veteran
Posts: 201
Joined: Fri Mar 02, 2007 12:46 am
Projects: A Princess of Venus
Location: Peterborough, Canada
Contact:

#6 Post by Scout »

I'm very very super busy for the next week or so, but if your problem is just coding, I'd certainly be willing to help; especially if you want to do something that stylish, because I'd really like to see the end product. It would definitely be possible to have an at least partially systematic way of setting up the bubble layout, and I'd certainly be interested in trying to work that out.

If you want to tell me a bit more about what you're doing, we can talk.

Nafai
Veteran
Posts: 290
Joined: Thu Jun 29, 2006 2:10 pm
Projects: Elect: Ascendance
Location: Philippines
Contact:

#7 Post by Nafai »

Ah I'm trying for the graphic novel style too, though Moni told me doing the bubbles will indeed be difficult, so I'll save that format for special scenes ^_^
Image

User avatar
PyTom
Ren'Py Creator
Posts: 16096
Joined: Mon Feb 02, 2004 10:58 am
Completed: Moonlight Walks
Projects: Ren'Py
IRC Nick: renpytom
Github: renpytom
itch: renpytom
Location: Kings Park, NY
Contact:

#8 Post by PyTom »

I would be interested in adding something like this to Ren'Py, but it won't be until after 6.3 comes out.

I also have no idea what the syntax would look like. Well, I have one idea, that we could write something like:

circle (100, 200) "Hello, world."
square (400, 300) "How are you doing."

The idea is that the user could pre-declare the shapes of the word balloons, and then Ren'Py would place them at the given position.

Of course, this is a real pain in the rear... since we'd also need to take into account the little "flags" that are put on the word balloons, to tell you who's talking.

Does anyone want to help brainstorm a clever way to accomplish this? One that would be sane enough people actually use it?
Supporting creators since 2004
(When was the last time you backed up your game?)
"Do good work." - Virgil Ivan "Gus" Grissom
Software > Drama • https://www.patreon.com/renpytom

Counter Arts
Miko-Class Veteran
Posts: 649
Joined: Fri Dec 16, 2005 5:21 pm
Completed: Fading Hearts, Infinite Game Works
Projects: Don't Save the World
Organization: Sakura River
Location: Canada
Contact:

#9 Post by Counter Arts »

Hmm... well...

You can do this. If you do then you're going to have make liberal use of one feature.

That is the live recompiling feature. You just press a hotkey while playing and it will rebuild your game just like that at the same point.


Actually... here's an idea.

If you have predefined positions you can do it easily enough theorically. Just map it out on paper beforehead all your pixels.

monele
Lemma-Class Veteran
Posts: 4101
Joined: Sat Oct 08, 2005 7:57 am
Location: France
Contact:

#10 Post by monele »

If you have predefined positions you can do it easily enough theorically. Just map it out on paper beforehead all your pixels.
Tried that in my Flash version and it's really not great ^^;... You kinda *have* to see the actual end result and be able to move things around (what I did was a debug mode where I could just drag and drop the bubbles and get their x,y position which I would carry back into the code. Much easier.


I'd say we should try to automate things so that a script looks as close as a regular Ren'Py script as possible... but leave a possibility to give exact positions in case the automation doesn't work as intented.
Dialog bubbles are usually visually linked to some of the inner frames (and the pointy part of the bubbles should point towards them)... and when one bubble isn't enough, new ones will appear above or below the previous one, with a slight (maybe random) horizontal shift. They overlap each other some to clearly indicate continuity.

Somehow... if we could do something like this :

Code: Select all

show marin smile at Position(xpos=400, ypos=220)
marin bubbles "Hey, over here!"
and have the bubble "attach" itself to the marin sprite (it fetches its position)... Mmm... we would need a way to give the type of bubble too... and a way to tell if it starts on the left, right, top, bottom of the marin sprite.

You know what? I'll try to analyze how it works again and see if I can guess how they do it ^^;...

Jake
Support Hero
Posts: 3826
Joined: Sat Jun 17, 2006 7:28 pm
Contact:

#11 Post by Jake »

monele wrote:Somehow... if we could do something like this :

Code: Select all

show marin smile at Position(xpos=400, ypos=220)
marin bubbles "Hey, over here!"
and have the bubble "attach" itself to the marin sprite (it fetches its position)... Mmm... we would need a way to give the type of bubble too... and a way to tell if it starts on the left, right, top, bottom of the marin sprite.
My first thought was similar - to tie the display of graphics to the character (I know, I know, I've gone on about this before...) in a descendant class of Character specially for use with speech bubbles - and have a 'head point' defined for each character sprite. Then, when you position the bubble, you can work out the angle from the centre of the bubble to the relevant character's head point and composite in the tail in that direction. If you draw the black of the outline as a filled ellipse, then draw a filled-black tail, then draw the white inner bubble over the top and the filled-white tail over that, compositing should be relatively easy. As a cute bonus, the tail would rotate around the edge of the bubble to follow a character that was moving from a non-moving bubble, or vice versa. ;-)

As an extension to that, you could perhaps have a collection of curved tail graphics that are chosen either randomly or based on the relative height/distance between the edge of the bubble and the character's head (and/or draw your own on the fly, I don't know what PyGame's curve-drawing is like), which are defined relative to the end-angle and the necessary ellipse radius to fit them in...

...or, if you're defining the point of each character's head and carrying that information around anyway (and have a vague idea of the space characters occupy by the bounding rectangle of their sprite), you could probably (with a lot more work) look ahead through the scene to see how many speech bubbles are going to be drawn before the next cleardown, work out how much space each one will take given the size of the font you're using, string them out evenly across the scene starting at the top-left and working to the bottom-right, zig-zagging down-left/right to lay the bubbles for each 'page' out... but that'd probably get really complicated fast if you were also moving elements around, and would need some kind of override for authors who wanted to place their own anyway...

You could probably get away with just assuming that the head comprises the top 1/4 of the sprite and is relatively central in most current cases, but the more you go for the above-style floating-comic-panels look the less likely that is to be the case, I guess.
Server error: user 'Jake' not found

RPin
Newbie
Posts: 7
Joined: Wed Jun 06, 2007 5:38 pm
Contact:

#12 Post by RPin »

PyTom wrote:The idea is that the user could pre-declare the shapes of the word balloons, and then Ren'Py would place them at the given position.

Of course, this is a real pain in the rear... since we'd also need to take into account the little "flags" that are put on the word balloons, to tell you who's talking.

Does anyone want to help brainstorm a clever way to accomplish this? One that would be sane enough people actually use it?
I don't know if you ver played something that uses FFD, but if you did you'd notice that the bubbles are not randomly generated. They seem to have a predefined number of shapes that are called accordingly to the position of the panels.

In a game that uses sprites of the regular kind that should be simple enough to do, since they roughly appear always on the same position. But with that format the characters could be anywhere in the screen.

I honestly have no idea of how hard it would be implement something like this.
Scout wrote:If you want to tell me a bit more about what you're doing, we can talk.
I don't have a whole lot to show at this point, and I'm still trying to figure out the scenarios, but the thing is supposed to be a hentai game, of the simple kind. So far I only got down the designs of a few characters. Here are some quick sketches if you're curious: 1 2 3

User avatar
EwanG
Miko-Class Veteran
Posts: 711
Joined: Thu Oct 26, 2006 5:37 pm
Location: San Antonio, TX
Contact:

#13 Post by EwanG »

I suspect this is more than a little impossible to implement, but I figure if anyone can, PyTom can... (Note, this idea comes from a Code Generator that used to be used to create front ends to Databases that was called VirtualWindow I believe)

My ideal VN/game generator would have two panes. On the left side would be source code, on the right side would be a preview pane with a toolbar between the two panes. As I added a Scene statement, I would get that picture loaded into the preview pane. I could then use a selection tool to create a hotspot, or a graphic balloon, or a pre-defined text box, or whatever on the preview pane, and the necessary code would then be put into the source code pane. I could then go back to the source code pane and add my text, or tweak the positioning, or whatever.

That would make RenPy rather Scene specific (i.e. each label would be a series of scenes), but would vastly simplify (for the coder) the ability to add new elements and not have to do so much outside the scripting environment itself.

OK, lets open the floor to some more practical solutions then, shall we? :D

User avatar
DaFool
Lemma-Class Veteran
Posts: 4171
Joined: Tue Aug 01, 2006 12:39 pm
Contact:

#14 Post by DaFool »

You can define a standard of subdividing the screen into 3 columns.

You have the background, then you have the framed sprite on the left, center, or right side. If the sprite is on the left, the bubbles will be in the center position, with their tails pointing toward the left. If the framed sprite is on the right, then the tails point toward the right. If the sprite is in the center, you can specify the bubbles to either branch towards the left column, or right column, or alternately.

Each of the 3 columns will act as a "mini-NVL" mode, but constrained to fit a certain array of bubble shapes.

chronoluminaire
Eileen-Class Veteran
Posts: 1153
Joined: Mon Jul 07, 2003 4:57 pm
Completed: Elven Relations, Cloud Fairy, When I Rule The World
Tumblr: alextfish
Skype: alextfish
Location: Cambridge, UK
Contact:

#15 Post by chronoluminaire »

I don't think it would look too good, with the bubbles constrained to be in just one of three positions. If you look at the example pics at the top, I think the fluidity would be an important part of this style.

My first idea was something akin to Ewan's suggestion - a "dynamic preview" that let you drag bubbles around, or at least click on the preview to automatically insert a bubble at the position you clicked.

Of course, Jake's idea would have a good chance of looking awesome as well.

That said, in the absence of such a mode, you could probably do a crude approximation, and get away with maybe 30 bubble positions (in a 6x5 grid) and about 4 different bubble shapes (thought, speech, narration, exclamation), which could all be done pretty straightforwardly in the current Ren'Py. The one complication is that you'd need to tell the different character objects to not remove their text, but stay there until cleared or changed.
A scene would look like:
scene campus
show eileen standing at farlefttop
thinkx2y1 "Ah, my old campus."
thinkx2y3 "It's good to be back here."
show badguy threatening at centrebottom
show eileen worried
with dissolve
sayx2y4 "...Who are you?"
exclaimx4y3 "You better scram, girly!"

...and so on. You could optionally add ways to add the pointing arrows, clear the bubbles without having to reshow the character images, and so on.
I released 3 VNs, many moons ago: Elven Relations (IntRenAiMo 2007), When I Rule The World (NaNoRenO 2005), and Cloud Fairy (the Cute Light & Fluffy Project, 2009).
More recently I designed the board game Steam Works (published in 2015), available from a local gaming store near you!

Post Reply

Who is online

Users browsing this forum: Ahrefs [Bot], Bing [Bot], DraymondDarksteel, eleloyce, Google [Bot]