Tramp 0.16.3 2026-02-16

I’m sorry to have been distant; things have been complex and time slips away…

There’s a lot planned (ie. ideas, code elements, and stuff on the dev branch), and it is being worked on. Much of what has been going on is refactoring to support more complex behaviour with the NPCs. This has caused a bit of a stall in releases unfortunately, but as a complex game it needs a solid foundation.
I’m so glad you like it!

You can get heavier than 880, but it is very, very hard as the PC starts the unbreakable part of her diet (there’s no clamp on the PC’s weight). Post immobility content is in the works, but not my main focus right now.

Images would have slowed me down a lot, and I’d rather do them when everything is fleshed out. Revising text is a lot easier than revising images!

This! I’m an untalented artist.

I do like the first person thing, both because I personally like the perspective of being the one gaining, and it avoids the “control-of-others” aspect of having NPCs gain which is harder to make feel natural rather than forced.

Yes, I do - a lot of though has gone into how that will work: it’s why the PC’s weight goes up in stages and why there’s an upper limit (in the main body of the game).

Current thoughts around options are are:

  • Backgrounds only (otherwise too white)
  • Backgrounds, NPCs, and PC in 3rd person line art.

I was looking at vector stuff for Yaffaif (a whole other story). Vector support in Ren’Py is sketchy: I was going to see where it stood once I needed to experiment/choose. It can warp 2d things though in much the same way as vtuber art.

I won’t be going down the Tainted Elysium route! (not that I think is was actually vectored).

Not having art makes me work harder now on the text! I think this helps…

Because there will, in the fullness of time, be at least backgrounds and Ren’Py isn’t really designed for text-only it’s not easy to do. If I find an easy solution (ie. one that still allows for light mode and doesn’t involve writing shaders) it would happen.

I’m glad you like it! Yes, am alive, but haven’t been able to work as fast or as often as I want.

In the release you have Reg was unique of the three romancable NPCs in that he had an attraction stat that you have to build up (some by teasing him) and meet specific weight criteria, before he’d ask you out. It would often trigger near the 650…750lbs mark (it’s not actually affected by other characters), depending on how you play - rushing the game is actually sub-optimal.

Yes, mostly, it’s complicated…

Thank-you!

No, you can’t and if you could it would break so much else that relies on certain other conditions to have been satisfied before that happened.

That is one change. Please do not advise people to edit the game files, especially with incomplete and game breaking suggestions! I want to focus on writing more, not dealing with not-real-bugs. The debug tool is there for a reason!

28 Likes

Now I don’t know how you’ve got your game set up - how many labels etc. But an easy-ish way to do it is have a button toggle tied to a simple True/False for light/dark modes on click. Lets say default darkmode = True.
Then in your labels you just need
if darkmode:
(indent) scene black
else:
(indent) scene white

copy and paste as needed. Or define a function to set it globally.

Here’s an example:

# Variables - put this in your script.rpy or a separate variables file
default darkmode = False

# Global function that automatically runs when labels start
init python:
    def set_scene_by_mode():
        if darkmode:
            renpy.scene("black")
        else:
            renpy.scene("white")
    
    # Override the default label behavior to automatically set scenes
    def auto_darkmode_label(name, *args, **kwargs):
        # Set the scene based on darkmode before running the label
        set_scene_by_mode()
        # Call the original label function
        return renpy.call_in_new_context(name, *args, **kwargs)
    
    # Hook into Ren'Py's label system
    old_call = renpy.call
    def new_call(label, *args, **kwargs):
        set_scene_by_mode()
        return old_call(label, *args, **kwargs)
    
    # Alternative approach using config callbacks
    def darkmode_scene_callback(name):
        set_scene_by_mode()
    
    # Register the callback to run before each label
    config.label_callback = darkmode_scene_callback

# Screen for the toggle button - you can include this in your main menu or settings screen
screen darkmode_toggle():
    textbutton "[darkmode and 'Dark Mode: ON' or 'Dark Mode: OFF']":
        action ToggleVariable("darkmode")
        xalign 0.9
        yalign 0.1

# Alternative version with more styling
screen darkmode_toggle_styled():
    frame:
        xalign 0.9
        yalign 0.1
        padding (10, 5)
        
        textbutton "[darkmode and '🌙 Dark' or '☀️ Light']":
            action ToggleVariable("darkmode")
            text_size 20

# Usage in your labels - NO NEED to call the function manually anymore!
label start:
    # Scene is automatically set based on darkmode - no function call needed!
    show screen darkmode_toggle
    
    "Welcome to the game!"
    "You can toggle dark mode using the button in the top right."
    
    jump example_scene

label example_scene:
    # Scene automatically set - no manual call needed!
    
    "This scene will have a white or black background depending on the dark mode setting."
    "The toggle button remains on screen so you can test it."
    
    menu:
        "Go to another scene":
            jump another_scene
        "End game":
            return

label another_scene:
    # Scene automatically set - no manual call needed!
    
    "This is another scene that also respects the dark mode setting."
    "Notice how you don't need ANY function calls in your labels!"
    
    jump example_scene

# Advanced version: If you want to use different backgrounds instead of just black/white
init python:
    def set_scene_advanced():
        if darkmode:
            renpy.scene("bg dark_room")  # Replace with your dark background
        else:
            renpy.scene("bg light_room")  # Replace with your light background
    
    # To use custom backgrounds instead, replace the callback:
    # config.label_callback = lambda name: set_scene_advanced()

# You can also make the toggle button persist across all screens by adding it to a screen that's always shown
screen persistent_ui():
    # This screen can contain UI elements that should always be visible
    use darkmode_toggle_styled

# To show the persistent UI, add this to your start label:
# show screen persistent_ui

# NOTE: The global function approach means you never need to manually call 
# set_scene_by_mode() in your labels - it happens automatically!
2 Likes

Of course I’m aware of that!

I chose to distribute the source because I want other devs to be able to see how it works. This is a game dev forum after all. However, giving people instructions on how to mod the game if they can’t figure it out themselves is Not Acceptable as stated multiple times in this thread. Bug reports from modded games waste time that could be spent progressing. Even hinting that its is possible wastes my precious time!

Including source allows you to change it, yes, even take bits that are useful - which is why I do it. You MAY NOT share your changes with others and expect me to handle the fallout.

Please never do this again!

15 Likes

I’m curious about the additional depth for the characters - I know that one of the areas you’ve been working on has been how to handle moving in with a partner, are there other changes you plan to implement that you can share? Is the intent to make them into more fully fledged NPCs with their own stats/lives or focus on dialogue/interactions more?

Nice to hear from you. Hope you’re doing well.

3 Likes

Hey, you’ve come up for air that’s all that matters, honestly.

3 Likes

Made an account here finally (for the jam)! Been lurking for years.

Just wanna say, love your game and glad to see you back! <3

Sucks that people are going against your wishes to not talk about modifying the game. I think making that clearer in the opening post was/is a good idea since it was kinda buried in the middle of the thread.

I’m glad your game is open for devs to learn. I’ve been inspired by your game and want to make something similar; at least in structure.

1 Like

Hello hmm a bit of a dumb question how do you start something with reg?

1 Like

Be over a certain weight (don’t remember off the top of my head, but it’s pretty high, like 400lb+), and take the flirty action with the chocolate bar every time he delivers parts.

1 Like

If I’m in a relationship with Sofia it won’t trigger?

1 Like

For bug reporting it is possible to have a script generate hashes of all sources? You can ask for it when a report is filed, but I don’t know if RenPY allows you to personalize the exception screen to add this function.

1 Like

The more difficult it is to report, the less people do. And fixes are often simple enough, so you can just post a solution alongside the report and can continue playing without having to wait for the creator to update the game.

1 Like

Wow, it looks like big changes are on the way. Probably, all the modifications will stop working, but this is a fair price to pay for the next big thing. After all, it was more than 2 years since the last release.

1 Like

That is one of the reasons not to share modifications in this thread. They are unpredictable and unmaintainable, making more of a mess in the discussion than anything.

1 Like

While that won’t work with the way Tramp is intended to handle it’s (eventual) art, it has given me some new ideas, so thank you!

While a lot of the changes are under the hood, the broad goal is to make the NPCs appear more “natural”. In particular adding several scenarios where the NPCs approach the PC if they’ve fallen for her. More events are getting added slowly (now at ~330k dialogue blocks) as the underpinnings are fixed. Oh, and the next version will have a built in Walkthrough/Wiki.

I’m okay. I have three long term health problems, and some of the meds really suck.

Thank you. My energy and focus has been kind of lacking for reasons above.

Welcome to these forums! And thank you for your enjoyment of this game.

I should have done it sooner, expecting each occurence to be the last was at best wishful thinking. I’ll be adding similar text in-game and as a ReadMe so there are no excuses.

This was the intention (also Ren’Py archives are trivial to unpack - which makes the exercise pointless) as I see lots of devs getting into the engine by opening script.rpy and just typing (nothing wrong with that), but “sandbox” style games like Tramp benefit from a more structured approach. See also my slowly evolving Developing with Ren’Py pages.

It’s not entirely charitable though; I like playing games other’s have written!

From memory ('cause it’s different and evolving - there are 7 paths in the dev branch), you need to build up Reg’s interest in the PC by teasing him with chocolate over time before they get in a romantic relationship, then getting to the weight range he’s interested in - which I think is the 600lbs+ mark.

I think at 300lbs+ he starts to take an interest and gets flirty with the PC, but romance is double that.

No, there are no lock-outs between Reg and Sofia or Steve.

I’m going down the route that @Juxtaterrestrial started and having a bug reporter built into the game’s quick-bar for non-exception cases. It’s still in dev but can generate short reports to cut-n-paste:

Bug in "{alt}Menu. {/alt}Would you like another donut? You could eat a lot as you are so very hungry. Your tummy rumbles."
Comment: Steve only had 3 donuts, this is the fourth!
start_main > main_free > main_free_event > eor_no_event > river_free_jog > nw_river_jog_steve > nw_river_jog_steve_rom > nw_river_jog_steve_rom_g8p_lim > game/loc/nw/river/nwRiverFood.rpy:233

I’d be hesitant to alter the exception screen. However if you use the “Copy Markdown” button the text can be pasted into Discourse (here) or Discord (over there).

As for hashes, there are north of 260 .rpy files - there’s no way I’m comparing that many hash values!

This is true, but I still don’t want untested fixes posted on the forums. It’s much better for me to create a new patched release (there were four for v0.15) and most were turned around in 24hrs. One looked like a simple fix - but was actually a systemic problem - that took longer.

If you’ve your own personalised edits, then yes, they probably will no longer work in a future v0.16. And the two year thing is honestly kind of embarrasing at this point!

This! I’d say if you’ve found a bug, then as a matter of common deceny report it to the dev, but do not post work arounds to the internet at large. Search engines remember that stuff forever. One of the founding guidlines of these forums is to encourage, not distract or demotivate, devs from making games you enjoy playing.

11 Likes

I can understand that and if it requires a bigger change, than it could lead to confusion.

On the other hand, variables misspellings are notorious in Ren’Py games…

1 Like

While that won’t work with the way Tramp is intended to handle it’s (eventual) art, it has given me some new ideas, so thank you!

No trouble at all. Though depending on how imminent that “eventual” is and if you’re planning any releases between now and its implementation could be a good temporary addition to bridge the gap then just delete or comment it out once its served its purpose.

I have played this game quite a bit and well it’s just amazing I love it and hope it might continue development

4 Likes

i’m just curious to know what the word count is sitting at right now. :B

1 Like

I’m still working on it, just have to reach a natural point where I can do a release. There have been a lot of changes under the covers.

Currently sitting at ~343,000 words, though a lot of that is variations on various scenes. I’m not writing a GoT novel!

31 Likes