Ok, after some trial and error, i even found a combination of filters, that allow Krita automatically to create those masks for me - as in, i just need to drag in a background image and the image, i want to get the difference as an overlay, and it now automatically cuts out this area (thanks to the difference filter as fist step), then a recoloring filter recolors those differences to a black and white mask, then a clone of the image from which i want the difference is multiplied with that black and white mask, to get the color of this area, and the rest stays pure black. And the last step was just a filter to convert a defined color (black in my case) to transparency. or maybe change the order, so that you already convert the black and white mask to transparent and white, then multiply that with the color - that way even black in the difference will be kept and not accidently converted to transparency.
Now its just dragging in images and saving the result as a new overlay for background images.
I have tested it with some of your images, all in all was able to reduce the size by half for those, granted that i had no clean backgorund and needed to cover old chars too.
Your biggest problem is, that many images do indeed have slight camera movements, which ruin this, but there are still enough images, where just the chars poses change (and some anti aliasing "errors"), for which this still can make a significant difference.
Kentro
Recent community posts
Doesn´t Photoshop has those "Difference" filters, that show you the difference between the background layer and the next layer in colors? Black areas are then the same color as the background = no change, and every color other than black is a different color than the background has (and this would catch shadows too).
I just have Krita, and there they exist too, but my lack of XP with Krita hinders me in converting this difference layer then to a simple black and white filter mask, that you could use as to cut out the affected area for overlays.
But if you render out the pure background images, that you know will be used more often, then you could use them against those scenes, where different chars appear, and the diference layer should automatically give you the affected area, which you could use for overlays.
An example image of Kritas Difference filter at work:
This game is really funny :) BUT the size is insane ^.^ You can save plenty of Gigabytes, if you start using layers, and composite images (i was curious and extracted your images to see, what was going on there). Most scenes use the very same background, and only a tiny area changes, where a character stands, or even just blinks with his eyes. So instead of making a full sized color image for every little change, you can render out the background image, and then use masks for the characters, so that you can add them as a new layer ontop of the background image.
If you want see a game, that uses this method to save a lot on diskspace, then you can take a look at "Welcum to the city", and how its images are split, and get combined in the game for the final image. :)
I have, and thats not good, because it brings me a little bit too far into the story. From what i can see, my old saves were some quests before this new entry point, not too far, but far enough to miss out of some seemingly crucial story events (and there is a girl available, Neon, which i do not recognize).
So if i cannot get the savegame running, i pretty much have to restart from scratch, just to not miss out on some important story parts :/
And ignoring that error just doesn´t work, like the other user already mentioned.
Hello there, with your newest update to 0.92, all my previous saves don´t work anymore, even those made with 0.91 (have also tried saves from 0.90 and 0.89). The error says this:
I'm sorry, but an uncaught exception occurred.
While running game code:
File "renpy/common/00action_file.rpy", line 498, in __call__
renpy.load(fn)
AttributeError: Can't get attribute 'readyCallback' on <renpy.python.StoreModule object at 0x0000000009b96220>
-- Full Traceback ------------------------------------------------------------
Full traceback:
File "renpy/common/_layout/screen_main_menu.rpym", line 28, in script
python hide:
File "D:\ItchIO\project-cor\ChampionOfRealms-0.92-pc\renpy\ast.py", line 823, in execute
renpy.python.py_exec_bytecode(self.code.bytecode, self.hide, store=self.store)
File "D:\ItchIO\project-cor\ChampionOfRealms-0.92-pc\renpy\python.py", line 1178, in py_exec_bytecode
exec(bytecode, globals, locals)
File "renpy/common/_layout/screen_main_menu.rpym", line 28, in <module>
python hide:
File "renpy/common/_layout/screen_main_menu.rpym", line 35, in _execute_python_hide
ui.interact()
File "D:\ItchIO\project-cor\ChampionOfRealms-0.92-pc\renpy\ui.py", line 301, in interact
rv = renpy.game.interface.interact(roll_forward=roll_forward, **kwargs)
File "D:\ItchIO\project-cor\ChampionOfRealms-0.92-pc\renpy\display\core.py", line 2165, in interact
repeat, rv = self.interact_core(preloads=preloads, trans_pause=trans_pause, pause=pause, pause_start=pause_start, pause_modal=pause_modal, **kwargs) # type: ignore
File "D:\ItchIO\project-cor\ChampionOfRealms-0.92-pc\renpy\display\core.py", line 3201, in interact_core
rv = root_widget.event(ev, x, y, 0)
File "D:\ItchIO\project-cor\ChampionOfRealms-0.92-pc\renpy\display\layout.py", line 1202, in event
rv = i.event(ev, x - xo, y - yo, cst)
File "D:\ItchIO\project-cor\ChampionOfRealms-0.92-pc\renpy\display\transition.py", line 53, in event
return self.new_widget.event(ev, x, y, st) # E1101
File "D:\ItchIO\project-cor\ChampionOfRealms-0.92-pc\renpy\display\layout.py", line 1202, in event
rv = i.event(ev, x - xo, y - yo, cst)
File "D:\ItchIO\project-cor\ChampionOfRealms-0.92-pc\renpy\display\layout.py", line 1202, in event
rv = i.event(ev, x - xo, y - yo, cst)
File "D:\ItchIO\project-cor\ChampionOfRealms-0.92-pc\renpy\display\screen.py", line 793, in event
rv = self.child.event(ev, x, y, st)
File "D:\ItchIO\project-cor\ChampionOfRealms-0.92-pc\renpy\display\layout.py", line 1202, in event
rv = i.event(ev, x - xo, y - yo, cst)
File "D:\ItchIO\project-cor\ChampionOfRealms-0.92-pc\renpy\display\layout.py", line 1426, in event
rv = super(Window, self).event(ev, x, y, st)
File "D:\ItchIO\project-cor\ChampionOfRealms-0.92-pc\renpy\display\layout.py", line 288, in event
rv = d.event(ev, x - xo, y - yo, st)
File "D:\ItchIO\project-cor\ChampionOfRealms-0.92-pc\renpy\display\layout.py", line 1202, in event
rv = i.event(ev, x - xo, y - yo, cst)
File "D:\ItchIO\project-cor\ChampionOfRealms-0.92-pc\renpy\display\layout.py", line 1426, in event
rv = super(Window, self).event(ev, x, y, st)
File "D:\ItchIO\project-cor\ChampionOfRealms-0.92-pc\renpy\display\layout.py", line 288, in event
rv = d.event(ev, x - xo, y - yo, st)
File "D:\ItchIO\project-cor\ChampionOfRealms-0.92-pc\renpy\display\layout.py", line 1202, in event
rv = i.event(ev, x - xo, y - yo, cst)
File "D:\ItchIO\project-cor\ChampionOfRealms-0.92-pc\renpy\display\layout.py", line 288, in event
rv = d.event(ev, x - xo, y - yo, st)
File "D:\ItchIO\project-cor\ChampionOfRealms-0.92-pc\renpy\display\behavior.py", line 1174, in event
return handle_click(self.clicked)
File "D:\ItchIO\project-cor\ChampionOfRealms-0.92-pc\renpy\display\behavior.py", line 1095, in handle_click
rv = run(action)
File "D:\ItchIO\project-cor\ChampionOfRealms-0.92-pc\renpy\display\behavior.py", line 395, in run
return action(*args, **kwargs)
File "renpy/common/00action_file.rpy", line 498, in __call__
renpy.load(fn)
File "D:\ItchIO\project-cor\ChampionOfRealms-0.92-pc\renpy\loadsave.py", line 828, in load
roots, log = loads(log_data)
File "D:\ItchIO\project-cor\ChampionOfRealms-0.92-pc\renpy\compat\pickle.py", line 100, in loads
return load(io.BytesIO(s))
File "D:\ItchIO\project-cor\ChampionOfRealms-0.92-pc\renpy\compat\pickle.py", line 97, in load
return up.load()
File "D:\ItchIO\project-cor\ChampionOfRealms-0.92-pc\renpy\compat\pickle.py", line 93, in find_class
return super().find_class(module, name)
AttributeError: Can't get attribute 'readyCallback' on <renpy.python.StoreModule object at 0x0000000009b96220>
Windows-10-10.0.19042 AMD64
Ren'Py 8.2.1.24030407
Champion of Realms 0.92
Tue Sep 10 19:14:46 2024
Yeah, because to me, i prefer, if the narrative fits the gameplay, or that those two go hand in hand :) But the narrative in this case falls apart from day two (or whenever you are able to unlock the Stonks app), and its not even grinding, or abusing some wird unintended effects, its just using the game given mechanic in exactly the way it is intended to be used.
I know, that the title implies a dystopian world, but if the games very own mechanics allow you from the second day to not be poor anymore, and to basically solve most of your problems, then... wouldn´t i tbe nice, if there exist a tiny well hidden kind of happy end route?
Your God of War example can easily be countered by the fact, that more and more games allow you to go everywhere, to climb up and down, swim and dive, or even fly, and explore whereever you want. They take into account, that your char is strong, can climb, or jump really high, and they have to find good ingame ways to hinder the char from exploring some areas. Cyberpunk f.e. lets you rip open the locked doors, if you are strong enough. It also lets you unlock the locks, if your tech and hacking skills are good enough.
Artificially hindering the char from doing something by f.e. some invisible walls etc. just breaks the immersion, and takes away the fun, in some cases it just a massive disconnect between the game mechanics and the story/narrative.
Yeah, i got that response too, and there i already wondered, why not also add a way to stay legal, as in, just pay all the taxes etc for trading. As far as i can see, trading coins is just as legal there as it is here, if you pay all the taxes and declare everything. No reason to go shady, because the bot has nothing to do with trading (other than that you have to stream at least one time to get the link to the stonks app).
But it was more like those situations, where you go out on a date, in a restaurant, MC is already millionaire, but while she orders a nice steak, MC just sounds like almost broke and just want a tomatoe soup :( Dude, check the millions of dollars in your inventory, you can afford a steak too.
Or where the landlord tells you, that he has to kick out another family because the can´t pay rent, and you get to choose, if you want pay for them too. The landlord then tells you, thats nice and understandable, but a bad idea, because they have to pay next week too. He asks me, if i want to pay then too, and looking in my inventory... yeah, indeed, i could pay for them too for the rest of their lifes ^.^ The game just does not take large amounts of money into account.
:)
Hello there,
would it be possible to add some reactions or responses, that the main char is at least a a little bit aware of his owned money, if he has a a nice sum? Because... right now, my char owns enough to buy the whole building, or a small island somewhere nice and live the rest of his life in peace without having any worry in the world. Or if i have to continue to pay rent, then its enough for several millenia. And thats just afer 20 days of playing.
He shouldn´t be so angsty, if hes a millionaire o.o even after paying 50% taxes or something like that.