VN Ren'Py Memories of You [Development Thread]

Thalia Solari

New Member
Nov 15, 2022
8
7
Hello. Memories of You is a Visual Novel I'm working on set in an original universe of my creation.

The plane of existence, Demoniki, is home to a planet named Solarin. In the past it was ravaged by disasters of such strength that its populace grew to believe the "end of the world" was around every corner, By the modern day, Apocalypse Prevention Agencies keep the world from completely falling apart, but the threats are not the same. What once seemed to just be perpetual natural disasters, have turned into something more... personal.

We follow Atelis Sneezy, aka Lil Sneezy, aka the Not-So-Dead Soundclown rapper. A down in the dumps man with a troubled, storied past. A particularly traumatic part of his life comes to a close and it's time to forget. With help from his adoptive mother, Madam Lafur, head of Corsei Allemoi, he's able to get back on his feet and forge a new life forward.
I've been working on this project actively for the last four years (way longer if you count all the time I've spent on soundtrack stuff), developing a solid 3D modeling, rigging, and non-photorealistic rendering pipeline. I finally feel it's around time to show off some of the fruits of my labor. Just keep in mind that this is still a work in progress. Outfits, eyes, colors, hair, shading... all likely to change in the future.

Some disclaimers.
- Generally wholesome/vanilla, the core is processing trauma, and that'll occur through healthy relationships being formed. That doesn't mean there won't be heavy topics, but they will be handled maturely.
- No NTR, there is one minor aspect of the story that might end up being understood as Netori, not quite sure as I'm not versed in the genre. Regardless, I'm not into it and it's not fetishized at the very least.
- Story focused. In case it wasn't already obvious, this is going to be more than just porno.
- There likely won't be any animation. I'd love to, but it's just too much work for me right now.

Here are some renders of some of the main heroines, as well as Atelis himself. Spoiler tags here are just to keep the images from taking up too much space. No real spoilers within.
You don't have permission to view the spoiler content. Log in or register now.

You don't have permission to view the spoiler content. Log in or register now.

You don't have permission to view the spoiler content. Log in or register now.

You don't have permission to view the spoiler content. Log in or register now.

You don't have permission to view the spoiler content. Log in or register now.

As I said, work in progress. I hope the blurbs don't seem too short. I just don't want to ramble on and on. I hope this piques people's interest a little bit. But... If that wasn't quite enough. I've got one little spoiler for you.

You don't have permission to view the spoiler content. Log in or register now.
 

HELIO CESAR

Active Member
May 30, 2018
857
1,926
Heh cool stuff, i wont lie, the big anime eyes will take a bit of getting used to most people, considering the contrast with the rest of the semi-realistic style of the renders, but it's nice, i like these out the norm styles.

It seems it'll have a kinda emo+gothic vibe, really dig it up, there are not enough games like this, superhuman and Pact with a Witch being the firsts that come to my mind.

The story is gonna be a multi branch one? Kinect? Really cool that you gonna do everything, your composition skills are pretty good!
And it seems Mephelina has a pretty impact in the story, is she a deuteragonist or just a LI ?(dunno if answering this would spoil anything :p)
Good luck mate, hope everything goes well with it!
 
  • Like
Reactions: Thalia Solari

Thalia Solari

New Member
Nov 15, 2022
8
7
Heh cool stuff, i wont lie, the big anime eyes will take a bit of getting used to most people, considering the contrast with the rest of the semi-realistic style of the renders, but it's nice, i like these out the norm styles.
And this is just the start! One of the reasons this project is in 3D as opposed to 2D is so that I have non-destructive control over the rendering style. My shading set up is completely deferred into a later part of the pipeline, so literally with a click of a couple of buttons I can start making scene wide stylistic changes. Which can be very easily swapped out scene to scene.

The general idea behind my rendering methodology is to create non-photorealistic art that plays into the strength of 3D as a medium. As opposed to meticulously copying the styles of 2D art, which is rather common in the NPR sphere. Lots of cel-shading and painterly stuff.

Not really going for a particular style outside of that, but some of my biggest aesthetic inspirations include Cool World, Megami Ibunroku Persona, 13 Sentinels: Aegis Rim, JoJo's Bizarre Adventure..

Cool World in particular, something about the sets in the Cool World look really rad too me... Plus Holi Would is dope. Would.

Edit: A major narrative influence is Neon Genesis Evangelion and some of its contemporaries. Some very specific inspirations come into play within individual routes. The Stanley Parable (Scream too, kinda), Dogville, Batman in general, and Bojack Horseman (a very specific character).

It seems it'll have a kinda emo+gothic vibe, really dig it up, there are not enough games like this, superhuman and Pact with a Witch being the firsts that come to my mind.
The general idea I have in my head is "the fringes of alt culture", so you're not far off. Individuals in the process of entering, or exiting alternative cultural demographics.

Mephelina, as I already pointed out is a goth girl (or the equivalent of such on Solarin) in progress, so she doesn't quite grasp the style completely. Same thing goes for the other main characters, they're all in some sort of transitional state in terms of identity.

It's probably not that obvious with the other heroines. But listing them off one by one:

- Corsi: Spoiler to cottage core, something minimalist anyways
- Sayoko: Spoiler to vintage
- Trias: Normie(?) to avant garde

The story is gonna be a multi branch one? Kinect? Really cool that you gonna do everything, your composition skills are pretty good!
Right now, I'm planning on it being a sort of mix of both. Opening will be rather linear, middle is varied depending upon the route chosen, but they all lead to the same general conclusion, with some relatively minor variance based on the route taken to get there.

And it seems Mephelina has a pretty impact in the story, is she a deuteragonist or just a LI ?(dunno if answering this would spoil anything :p)
Mephelina will be very important, but shouldn't overshadow the other love interests AS a love interest. Ideally. Can't get more into that without spoilers. Once again, right on the money.

Good luck mate, hope everything goes well with it!
Thanks for the support! Sorry for ramblin'.
 
Last edited:
  • Like
Reactions: HELIO CESAR

HELIO CESAR

Active Member
May 30, 2018
857
1,926
Any news bro? How are things going? Hope everything is fine.

I dunno how thread reallocation works, but maybe if you ask them to move it or post it under here the game gets more attention, this really deserves more views!
 

Thalia Solari

New Member
Nov 15, 2022
8
7
I was supposed to be moving to a different location in the US months ago but unfortunately some major family problems surfaced which have put that in the ground. Like literally a week or two after I made this post my life plans changed substantially. This has sorta messed up some of my plans for the project. I'd like to believe I would have released a demo of sorts by now but I don't know. It was a just a disruption I wasn't expecting.

That's not to say I have not been at work! I've just been predominantly working on wiki/character sheets for the project. Just kinda working out character psychology and stuff.

1738972192842.png
1738980297739.png

The character sheets I've written so far, combined, are nearly half the length of the average novel. And that's just the character sheets! :)

I have made some technical improvements and bugfixes to my models as well. Such as setting up a layered body sim set up for squish. Though, it's not perfect, and I only have the "layers" set up for each of the characters, not all the outfits I've modeled make use of it yet.

1738982829100.png
1738982967969.png


I dunno how thread reallocation works, but maybe if you ask them to move it or post it under here the game gets more attention, this really deserves more views!
Yeah I wasn't quite sure where to post this originally as it was just supposed to be a teaser at the time, and I'm not that well versed with the site, but I wouldn't mind it just being moved to a more appropriate location. Am I just supposed to report the post and use "other" to request a move? Couldn't find anything on the site about this.

Edit: To add, right now the main thing that's keeping me from progressing with a demo is the lack of a few character models. Madam Lafur, Iolia Gadoui, and two other individuals. But I think I might end up creating some "generic" male and female models to substitute for the time being. That way instead of laboring away with making more 3D models I can instead shift focus to programming, shot building, and dialogue.
 
Last edited:

HELIO CESAR

Active Member
May 30, 2018
857
1,926
Hope everything goes well with the personal problems. But cool that there was some breath room to work in the project.

Yeah I wasn't quite sure where to post this originally as it was just supposed to be a teaser at the time, and I'm not that well versed with the site, but I wouldn't mind it just being moved to a more appropriate location. Am I just supposed to report the post and use "other" to request a move? Couldn't find anything on the site about this.
I'm not very versed in this too but i believe you could either report the thread or open a ticket asking to move it.

The game will come with a wiki bro? really setting the bar up for solo development xD.
 

Thalia Solari

New Member
Nov 15, 2022
8
7
The game will come with a wiki bro? really setting the bar up for solo development xD.
It's just a personal wiki, loosely organized markdown world building documents and stuff. Maybe way in the future I could release it as a neat little thing, but as of right now it's filled with spoilers for not just Memories of You, but potential future installments as well.

I did program a term highlighting system in RenPy for some testing I did a year back, and have briefly considered doing an in game encyclopedia at some point. Maybe it'd be a good idea in the future, there might be a lot of conlang terms in Trias's route, could be hard to remember what it all means, if it ends up being that relevant.

Edit: Used a support ticket and it got moved lickety split, so if anyone is wondering in the future, that's how you do it.
 
Last edited:

Thalia Solari

New Member
Nov 15, 2022
8
7
Okay, I've got something interesting, and perhaps even useful to other Ren'Py developers.

I recently set up expression and outfit masks in my rendering pipeline—though I should probably do it as a compositing step—regardless, I wanted an easy way to render attribute sprites for imagelayers. Like so:

masks.gif

No finagling with photoshop or gimp necessary! Just tweak a property in my materials and bam, easy. I've got some space in my custom output budget for two more of these masks too, we'll see if they'll be needed.

Moving on, I started testing out the layeredimages, but realized I was gonna have a problem. Scalability. It'd be really fucking annoying to have to type out:

Code:
layeredimage mephel:
    at transform_character_default

    group body auto:
        attribute standing default
        attribute sitting
    group exp variant "standing" auto:
        if_any "standing"
        attribute neutral default
        attribute happy
        attribute angry
    group exp variant "sitting" auto:
        if_any "sitting"
        attribute neutral default
        attribute happy
        attribute angry
    group outfit variant "standing" auto:
        if_any "standing"
        attribute ggc default
        attribute tradimsel
    group outfit variant "sitting" auto:
        if_any "sitting"
        attribute ggc default
        attribute tradimsel
    # and so on...
For every single character. As the sprites get more complicated and more layers get added, this would become a real hassle. So long story short. I figured I'd do it all programmatically! It was kinda annoying figuring out the particulars of defining layeredimage objects via python, but it works. Also went ahead and used the same idea to define all the "speakers."

The code isn't too complicated, just for every character in the character_list dictionary, it separates the file name of that character's sprites out into different keywords, creates attributes based on those keywords, and adds those images to a layeredimage.

Python:
init python:

    character_list = {
        "atelis"         : "#00ff9571",
        "mephel"         : "#e4007a71",
        "trias"          : "#00ffea71",
        "sayoko"         : "#ff480071",
        "corsi"          : "#ff006271",
        "toriyatomu"     : "#00000000",
        "lafur"          : "#ffffff71",
        "iolia"          : "#d2a3ff71",
        "aermi"          : "#ffe60071",
        "adeodata"       : "#5a57ff71",
        "anita"          : "#d400ff71",
        "silen"          : "#00e1ff71",
        "toni"           : "#ff7b0071",
        "naifasomura"    : "#5200eb71",
        "altrafur"       : "#34008671",
        "respi"          : "#ffffff71",
        "jacob"          : "#ff000071",
        "eviline"        : "#00ff9571",
        "angelica"       : "#fffb0071",
        "neir"           : "#2f4c8b71",
        "victoria"       : "#6e36a171",
        "laud"           : "#8cff2071",
        "clier"          : "#8cff2071",
        "reli"           : "#5200eb71",
        "alisani"        : "#d400ff71",
        "eltrasani"      : "#00e1ff71",
    }


    for chara, color in character_list.items():

        globals()[f"{chara}_name"] = "???"
        globals()[chara] = Character(
            _(f"{chara}_name"),
            dynamic = True,
            image = chara,
            who_outlines = [(1, color, 1, 1)]
            )

# === Character Sprites ===

    images = renpy.list_images()

    for chara in character_list.keys():

        poses                   = set()
        outfit_attributes       = set()
        expression_attributes   = set()

        char_attributes         = []

        for image in images:
            if image.startswith(chara + "_"):
                parts = image[len(chara) + 1:].split("_")

                if not parts:
                    continue

                poses.add(parts[1])

                if len(parts) > 1:
                    attributes = parts[2:]

                    if   parts[0] == "outfit":
                        outfit_attributes.update(attributes)
                    elif parts[0] == "exp":
                        expression_attributes.update(attributes)

        outfit_attributes     = sorted(outfit_attributes)
        expression_attributes = sorted(expression_attributes)
        poses                 = sorted(poses)

        for pose in poses:
            default = False

            if poses.index(pose) == 0:
                default = True


            char_attributes.append(
                Attribute(
                    "body",
                    pose,
                    None,
                    default
                )
            )

        for pose in poses:
            for attr in outfit_attributes:
                default = False

                if outfit_attributes.index(attr) == 0:
                    default = True

                char_attributes.append(
                    Attribute(
                        "outfit",
                        attr,
                        None,
                        default,
                        if_any=[pose],
                        variant=pose
                        )
                    )

        for pose in poses:

            for attr in expression_attributes:
                default = False

                if expression_attributes.index(attr) == 0:
                    default = True

                char_attributes.append(
                    Attribute(
                        "exp",
                        attr,
                        None,
                        default,
                        if_any=[pose],
                        variant=pose
                        )
                    )

        i = LayeredImage(
            char_attributes,
            transform_character_default,
            chara
            )

        renpy.image(chara, i)
1739438616885.png
1739438655453.png

It does seem like a good start, but I'm sure I'll run into problems with it in the future. I'm already wondering if I can come up with a good way to batch render out a pose's expressions and outfits. Not sure if it's possible, due to cloth sim. It's always cloth sim.
 
Last edited: