I’d suggest just pushing the files out there and letting the users tell you if they encounter any problems. Luckily Ren’Py is Python, so it’s pretty consistent from one OS to another. If the game’s tested on PC and Android, and you’re not doing anything crazy code-wise, it’s likely to be just fine on macOS.
nypup2train
Recent community posts
Thanks so much for all your work on DoC, and for making it available to all of us!
This is going to sound like a really trivial thing, because it IS, but hopefully because of that it’s also not a huge imposition: Is there any way, instead of naming the download files things like “0.12.2.html.zip”, you could include the game title, something like “DawnOfCorruption-0.12.2.html.zip”?
Right now, if I download any of the files, I either have to rename it by hand when saving it, or I have to wonder for the rest of my life what this random “0.12.2.html.zip” file is. 🤔
(I know, #FirstWorldProblems.)
I have to ask: Your game is marked as compatible with Windows and Linux, but… why Linux? The archive contains .EXE files and DLLs, it’s not like all of the RenPy games that can be run in Python on any system. If the game will run under Wine (the Linux Windows emulation), I haven’t seen any evidence of that.
(To be honest I haven’t gotten it to run even under Windows, I think my graphics card isn’t up to snuff. But that’s why I’d be even more surprised to find it would run on Linux.)
Not sure if this is a bug or intentional, but I thought I’d bring it up since the event seems like it can throw the story off a bit.
Say you’ve long since grown too large for your apartment and moved out to the woods. After you meet (meat?) Chompo, you wake up the next morning and you’re suddenly back in your apartment again. Even though you still couldn’t possibly fit inside.
I get where you’re coming from on that, but understand that a sideloaded game (not installed through Google Play) can’t have a sign-in feature unless it operates its own account system and servers to store the data. Which is a big job, and expensive too.
If the game is distributed through Google Play then you can be signed in to Google and your game data will be synced to their servers (I think for free — to the game developer, I mean), but sideloaded content doesn’t have that option.
I completely understand the frustration of losing progress, and the need to have some way of preserving game saves outside of the app install, since Android is so aggressive about sequestering each app’s data and tying it to the app itself.
What might be possible, instead of cloud-based backups, is a feature that lets you export/import a saved-games backup file stored in your Android “Documents” folder, so it’s not linked to the game install.
But even something like that, I’d think would have to be implemented in Ren’Py first (and the app would need to ask for new permissions)… which would mean, even if it existed, Xperiment would also have to upgrade Ren’Py again to make the feature available. Catch-22.
FYI, hit a traceback when, on my first turn fighting the ‘boss’ sewer monster, I attempted to Item > Grenade.
Full traceback:
File "game/core/combats.rpy", line 10117, in script
call screen new_combat
File "LustOdyssey-0.38.1-pc/renpy/ast.py", line 2015, in execute
self.call("execute")
File "LustOdyssey-0.38.1-pc/renpy/ast.py", line 2003, in call
return renpy.statements.call(method, parsed, *args, **kwargs)
File "LustOdyssey-0.38.1-pc/renpy/statements.py", line 278, in call
return method(parsed, *args, **kwargs)
File "renpy/common/000statements.rpy", line 569, in execute_call_screen
store._return = renpy.call_screen(name, *args, **kwargs)
File "LustOdyssey-0.38.1-pc/renpy/exports.py", line 3134, in call_screen
rv = renpy.ui.interact(mouse="screen", type="screen", roll_forward=roll_forward)
File "LustOdyssey-0.38.1-pc/renpy/ui.py", line 298, in interact
rv = renpy.game.interface.interact(roll_forward=roll_forward, **kwargs)
File "LustOdyssey-0.38.1-pc/renpy/display/core.py", line 3280, in interact
repeat, rv = self.interact_core(preloads=preloads, trans_pause=trans_pause, pause=pause, pause_start=pause_start, **kwargs)
File "LustOdyssey-0.38.1-pc/renpy/display/core.py", line 4114, in interact_core
rv = root_widget.event(ev, x, y, 0)
File "LustOdyssey-0.38.1-pc/renpy/display/layout.py", line 1090, in event
rv = i.event(ev, x - xo, y - yo, cst)
File "LustOdyssey-0.38.1-pc/renpy/display/layout.py", line 1090, in event
rv = i.event(ev, x - xo, y - yo, cst)
File "LustOdyssey-0.38.1-pc/renpy/display/layout.py", line 1090, in event
rv = i.event(ev, x - xo, y - yo, cst)
File "LustOdyssey-0.38.1-pc/renpy/display/screen.py", line 726, in event
rv = self.child.event(ev, x, y, st)
File "LustOdyssey-0.38.1-pc/renpy/display/layout.py", line 1090, in event
rv = i.event(ev, x - xo, y - yo, cst)
File "LustOdyssey-0.38.1-pc/renpy/display/layout.py", line 273, in event
rv = d.event(ev, x - xo, y - yo, st)
File "LustOdyssey-0.38.1-pc/renpy/display/viewport.py", line 299, in event
rv = super(Viewport, self).event(ev, x, y, st)
File "LustOdyssey-0.38.1-pc/renpy/display/layout.py", line 273, in event
rv = d.event(ev, x - xo, y - yo, st)
File "LustOdyssey-0.38.1-pc/renpy/display/layout.py", line 1297, in event
rv = super(Window, self).event(ev, x, y, st)
File "LustOdyssey-0.38.1-pc/renpy/display/layout.py", line 273, in event
rv = d.event(ev, x - xo, y - yo, st)
File "LustOdyssey-0.38.1-pc/renpy/display/layout.py", line 1090, in event
rv = i.event(ev, x - xo, y - yo, cst)
File "LustOdyssey-0.38.1-pc/renpy/display/behavior.py", line 979, in event
return handle_click(self.clicked)
File "LustOdyssey-0.38.1-pc/renpy/display/behavior.py", line 914, in handle_click
rv = run(action)
File "LustOdyssey-0.38.1-pc/renpy/display/behavior.py", line 322, in run
new_rv = run(i, *args, **kwargs)
File "LustOdyssey-0.38.1-pc/renpy/display/behavior.py", line 329, in run
return action(*args, **kwargs)
File "renpy/common/00action_other.rpy", line 537, in __call__
rv = self.callable(*self.args, **self.kwargs)
File "game/core/combat_functions.rpy", line 2456, in new_player_item
renpy.hide(selected_item.anim, layer = 'screens')
File "LustOdyssey-0.38.1-pc/renpy/exports.py", line 795, in hide
key = name[0]
IndexError: tuple index out of range
While running game code:
File "game/core/combats.rpy", line 10117, in script
call screen new_combat
File "renpy/common/000statements.rpy", line 569, in execute_call_screen
store._return = renpy.call_screen(name, *args, **kwargs)
File "renpy/common/00action_other.rpy", line 537, in __call__
rv = self.callable(*self.args, **self.kwargs)
File "game/core/combat_functions.rpy", line 2456, in new_player_item
renpy.hide(selected_item.anim, layer = 'screens')
IndexError: tuple index out of range
I think I see the issue.
The difference is that Sombreve’s game (Dawn of Corruption) runs from an external site published with GitHub Pages, where it sits right at the document level — the page that loads is the game itself.
When Curse of Something loads in the browser, even though it’s a full-page interface it’s using the itch.io loader, which means the game itself is loaded in an iframe embedded in the page. (The iframe takes up the entire page, but it’s still there.) I suspect the browser translation can’t access the iframe content to translate it.
If you’re using Firefox, when Curse of Something loads you can right-click anywhere on the page background and choose This Frame > Open Frame in New Tab/Window to pop the iframe out of the surrounding page and load it on its own.
Other browsers don’t have that option, but the URL that Firefox loads when you open the iframe in its own tab is this one, currently. (Note that the URL may change or not be valid for everyone, maybe it’ll work maybe it won’t. The Firefox method is more likely to work correctly long-term.):
I’m curious whether you have any better luck activating translation when the game isn’t loaded inside an iframe. I suspect you will.
Hey, just FYI, in the FISR temporary-slave encounter where you submit to Rex, there are a bunch of character swaps. (I’m assuming you’d want a heads-up, if not then my apologies and I won’t leave any more comments like this.)
The narration calls Rex “Mike” a bunch of times, and one of the player’s dialogue boxes says “Rex” instead. It’s the one where the player says (or, is supposed to be saying) “I’m innocent!”
Nice, seems like it’s starting to come together!
I have a couple of small suggestions regarding the enhancements “trade”: When buying a new enhancement/transformation will replace an existing one, rather than simply combine (like getting Olg Hide when you already have Scales, for example), it’d be cool to:
- Indicate that, in the listing of available enhancements you can Gain from an NPC
- If the swap means that the stat buff gained from the new trait will be offset by what you lose from giving up the other one, show the stats effect in relative terms — either instead of, or in addition to, absolute terms.
(Meaning: if you’re going to give up Scales [+30 Resist] in exchange for Olg Hide [+20 Resist] — I’m making up these buffs, they may be misremembered, but you get the idea — then, instead of just showing Olg Hide as +20 Resist, (also?) show that the NET effect of Gaining it is -10 Resist.)
I’m not the author, but the impression that I get is this:
Such an option may have been short-term feasible 2 years ago, when this request was originally posted (and when the art overhaul had just happened, so the game was largely unchanged otherwise).
But at this point, with two years’ worth of story changes now separating the current releases from the version(s) with the original artwork, this is probably no longer possible because the old art doesn’t follow the current story. IOW, there are (newer) scenes where no pre-v10.0 art was ever produced, so it would be impossible to “opt-in” to displaying that content in the old style. Simply because it never existed in the old style.
That’s why wolfstar’s committed to keeping version 9.9 available, so that people can still play the old game with the old-style art if they wish… But it also necessarily (IIUC) means sticking with the old game (plot, story), as it existed right before the art overhaul.
A couple of “upgrade”-related questions:
- I have saves from version 0.3.8, are they compatible with 2.3.1 or will I break things trying to migrate them to the new version?
- It looks like the 2.3.1 PC zip file already has a
/game/saves/directory, populated with severalauto-*-LT1.savefiles? What are those about, and should I overwrite them with my older-version save files of the same name, or keep the newer (universally somewhat larger, AFAICT) files from the 2.3.1 zip, when names conflict between the two save directories?