I really liked this game, despite the errors that come in a playthrough (see below). You have a solid foundation and I am very excited to see where you take this.
I love the sprites, and am seriously looking forward to more of this. Exploring their contrasting personalities is such a pleasure to read, and your descriptions of scenes “flesh-out” the characters and their environments.
My bug report/thoughts/tracebacks
-
FYI, the game tries to call a missing event hazel_mall12.
-
Bug found for every 2nd feeding:
So to give a little more info, let’s say you feed Sophia, then you head over to Rebecca and feed her, an error will pop up. Ignoring this error will send you back to Sophia, though the game doesn’t lose the fact you fed Sophia and Rebecca and will still count for their calories, etc.
This bug persists through a New Day. Ex: if you feed Rebecca then the day ends, then feed Hazel in the new day, the error pops up again and ignoring it will send you back to Rebecca (though the food to Rebecca and Hazel again is still recorded as expected).
For testing purposes, I completed a run where I only fed Hazel and didn’t go to the mall or gym. The error occurred again, and the traceback is below:
I'm sorry, but an uncaught exception occurred.
While running game code:
File "game/hazel.rpy", line 367, in script
$ feed_hazel_from_inventory(choice)
File "game/hazel.rpy", line 367, in <module>
$ feed_hazel_from_inventory(choice)
File "game/inventory.rpy", line 88, in feed_hazel_from_inventory
feed_character_from_inventory("Hazel", hazel_current_capacity, hazel_relation_capacity, item, feed_hazel)
File "game/inventory.rpy", line 80, in feed_character_from_inventory
feed_function(item["calories"], item["capacity_increase"], adjusted_affection, item["eating_time"])
File "game/hazel.rpy", line 198, in feed_hazel
renpy.call_in_new_context("feed_hazel")
File "game/hazel.rpy", line 367, in script
$ feed_hazel_from_inventory(choice)
File "game/hazel.rpy", line 367, in script
$ feed_hazel_from_inventory(choice)
File "game/hazel.rpy", line 367, in <module>
$ feed_hazel_from_inventory(choice)
File "game/inventory.rpy", line 88, in feed_hazel_from_inventory
feed_character_from_inventory("Hazel", hazel_current_capacity, hazel_relation_capacity, item, feed_hazel)
File "game/inventory.rpy", line 80, in feed_character_from_inventory
feed_function(item["calories"], item["capacity_increase"], adjusted_affection, item["eating_time"])
File "game/hazel.rpy", line 198, in feed_hazel
renpy.call_in_new_context("feed_hazel")
File "game/hazel.rpy", line 360, in script
$ choice = renpy.display_menu([(item["name"], item) for item in inventory_items] + [("Back", "back")])
File "game/hazel.rpy", line 360, in script
$ choice = renpy.display_menu([(item["name"], item) for item in inventory_items] + [("Back", "back")])
File "game/hazel.rpy", line 360, in <module>
$ choice = renpy.display_menu([(item["name"], item) for item in inventory_items] + [("Back", "back")])
RecursionError: maximum recursion depth exceeded while calling a Python object
-- Full Traceback ------------------------------------------------------------
Full traceback:
File "game/hazel.rpy", line 367, in script
$ feed_hazel_from_inventory(choice)
File "./Indulgences.app/Contents/Resources/autorun/renpy/ast.py", line 1111, in execute
renpy.python.py_exec_bytecode(self.code.bytecode, self.hide, store=self.store)
File "./Indulgences.app/Contents/Resources/autorun/renpy/python.py", line 1049, in py_exec_bytecode
exec(bytecode, globals, locals)
File "game/hazel.rpy", line 367, in <module>
$ feed_hazel_from_inventory(choice)
File "game/inventory.rpy", line 88, in feed_hazel_from_inventory
feed_character_from_inventory("Hazel", hazel_current_capacity, hazel_relation_capacity, item, feed_hazel)
File "game/inventory.rpy", line 80, in feed_character_from_inventory
feed_function(item["calories"], item["capacity_increase"], adjusted_affection, item["eating_time"])
File "game/hazel.rpy", line 198, in feed_hazel
renpy.call_in_new_context("feed_hazel")
File "./Indulgences.app/Contents/Resources/autorun/renpy/game.py", line 346, in call_in_new_context
return renpy.execution.run_context(False)
File "./Indulgences.app/Contents/Resources/autorun/renpy/execution.py", line 938, in run_context
context.run()
File "game/hazel.rpy", line 367, in script
$ feed_hazel_from_inventory(choice)
File "/home/tom/ab/renpy-build/tmp/install.linux-x86_64/lib/python3.9/site-packages/future/utils/__init__.py", line 441, in raise_
File "game/hazel.rpy", line 367, in script
$ feed_hazel_from_inventory(choice)
File "./Indulgences.app/Contents/Resources/autorun/renpy/ast.py", line 1111, in execute
renpy.python.py_exec_bytecode(self.code.bytecode, self.hide, store=self.store)
File "./Indulgences.app/Contents/Resources/autorun/renpy/python.py", line 1049, in py_exec_bytecode
exec(bytecode, globals, locals)
File "game/hazel.rpy", line 367, in <module>
$ feed_hazel_from_inventory(choice)
File "game/inventory.rpy", line 88, in feed_hazel_from_inventory
feed_character_from_inventory("Hazel", hazel_current_capacity, hazel_relation_capacity, item, feed_hazel)
File "game/inventory.rpy", line 80, in feed_character_from_inventory
feed_function(item["calories"], item["capacity_increase"], adjusted_affection, item["eating_time"])
File "game/hazel.rpy", line 198, in feed_hazel
renpy.call_in_new_context("feed_hazel")
File "./Indulgences.app/Contents/Resources/autorun/renpy/game.py", line 346, in call_in_new_context
return renpy.execution.run_context(False)
File "./Indulgences.app/Contents/Resources/autorun/renpy/execution.py", line 938, in run_context
context.run()
File "game/hazel.rpy", line 360, in script
$ choice = renpy.display_menu([(item["name"], item) for item in inventory_items] + [("Back", "back")])
File "/home/tom/ab/renpy-build/tmp/install.linux-x86_64/lib/python3.9/site-packages/future/utils/__init__.py", line 441, in raise_
File "game/hazel.rpy", line 360, in script
$ choice = renpy.display_menu([(item["name"], item) for item in inventory_items] + [("Back", "back")])
File "./Indulgences.app/Contents/Resources/autorun/renpy/ast.py", line 1111, in execute
renpy.python.py_exec_bytecode(self.code.bytecode, self.hide, store=self.store)
File "./Indulgences.app/Contents/Resources/autorun/renpy/python.py", line 1049, in py_exec_bytecode
exec(bytecode, globals, locals)
File "game/hazel.rpy", line 360, in <module>
$ choice = renpy.display_menu([(item["name"], item) for item in inventory_items] + [("Back", "back")])
File "./Indulgences.app/Contents/Resources/autorun/renpy/exports.py", line 1250, in display_menu
rv = renpy.ui.interact(mouse='menu', type=type, roll_forward=roll_forward)
File "./Indulgences.app/Contents/Resources/autorun/renpy/ui.py", line 299, in interact
rv = renpy.game.interface.interact(roll_forward=roll_forward, **kwargs)
File "./Indulgences.app/Contents/Resources/autorun/renpy/display/core.py", line 3376, in interact
repeat, rv = self.interact_core(preloads=preloads, trans_pause=trans_pause, pause=pause, pause_start=pause_start, **kwargs) # type: ignore
File "./Indulgences.app/Contents/Resources/autorun/renpy/display/core.py", line 3905, in interact_core
self.draw_screen(root_widget, fullscreen_video, (not fullscreen_video) or video_frame_drawn)
File "./Indulgences.app/Contents/Resources/autorun/renpy/display/core.py", line 2601, in draw_screen
surftree = renpy.display.render.render_screen(
File "render.pyx", line 495, in renpy.display.render.render_screen
File "render.pyx", line 266, in renpy.display.render.render
File "./Indulgences.app/Contents/Resources/autorun/renpy/display/layout.py", line 884, in render
surf = render(child, width, height, cst, cat)
File "render.pyx", line 170, in renpy.display.render.render
File "render.pyx", line 266, in renpy.display.render.render
File "./Indulgences.app/Contents/Resources/autorun/renpy/display/layout.py", line 884, in render
surf = render(child, width, height, cst, cat)
File "render.pyx", line 170, in renpy.display.render.render
File "render.pyx", line 266, in renpy.display.render.render
File "./Indulgences.app/Contents/Resources/autorun/renpy/display/layout.py", line 884, in render
surf = render(child, width, height, cst, cat)
File "render.pyx", line 170, in renpy.display.render.render
File "render.pyx", line 266, in renpy.display.render.render
File "./Indulgences.app/Contents/Resources/autorun/renpy/display/screen.py", line 704, in render
child = renpy.display.render.render(self.child, w, h, st, at)
File "render.pyx", line 170, in renpy.display.render.render
File "render.pyx", line 266, in renpy.display.render.render
File "./Indulgences.app/Contents/Resources/autorun/renpy/display/layout.py", line 884, in render
surf = render(child, width, height, cst, cat)
File "render.pyx", line 170, in renpy.display.render.render
File "render.pyx", line 266, in renpy.display.render.render
File "./Indulgences.app/Contents/Resources/autorun/renpy/display/transform.py", line 747, in render
return transform_render(self, width, height, st, at)
File "accelerator.pyx", line 187, in renpy.display.accelerator.transform_render
File "render.pyx", line 266, in renpy.display.render.render
File "./Indulgences.app/Contents/Resources/autorun/renpy/display/layout.py", line 1334, in render
surf = render(child,
File "render.pyx", line 170, in renpy.display.render.render
File "render.pyx", line 266, in renpy.display.render.render
File "./Indulgences.app/Contents/Resources/autorun/renpy/display/layout.py", line 1105, in render
surf = render(d, width - x, rh, cst, cat)
File "render.pyx", line 170, in renpy.display.render.render
File "render.pyx", line 266, in renpy.display.render.render
File "./Indulgences.app/Contents/Resources/autorun/renpy/text/text.py", line 2111, in render
layout = Layout(self, width, height, renders, splits_from=virtual_layout)
File "./Indulgences.app/Contents/Resources/autorun/renpy/text/text.py", line 873, in __init__
tex = renpy.display.draw.load_texture(surf, properties={ "mipmap" : renpy.config.mipmap_text if (style.mipmap is None) else style.mipmap })
File "gl2draw.pyx", line 736, in renpy.gl2.gl2draw.GL2Draw.load_texture
File "gl2texture.pyx", line 185, in renpy.gl2.gl2texture.TextureLoader.load_surface
File "gl2texture.pyx", line 113, in renpy.gl2.gl2texture.TextureLoader.load_one_surface
File "gl2texture.pyx", line 288, in renpy.gl2.gl2texture.GLTexture.from_surface
File "gl2mesh2.pyx", line 122, in renpy.gl2.gl2mesh2.Mesh2.texture_rectangle
RecursionError: maximum recursion depth exceeded while calling a Python object
macOS
Ren'Py 8.0.0.22062402
Indulgences 0.11
- Regarding saves not working:
I do not know how since I’m not very proficient in Ren’Py, but it almost seems like the game is running in a single “instance” if that makes sense. Normally Ren’Py allows you to rollback to the previous dialogue, but this seems to be halted the moment you feed any girl for the first time and failing to update the game state after any additional progress is made. Pressing the “Back” button in the Ren’Py UI will revert you back to this moment, which for probably 99% of people is the first day. Loading a save from after this point will also revert you back to this moment.
Additionally, after a certain point the game just doesn’t allow you to open the Ren’Py menu? I’ve attached a report log below. This error popped up for me in the fast food main menu, though it occurs everywhere when trying to open the Preferences menu. The only difference is this line in the traceback:
File “game/fast_food.rpy”, line 73, in script
menu:
Done from home:
File “game/script.rpy”, line 108, in script
menu:
I’m not sure exactly how to fix the infinite recursion loop it seems to be stuck in, but I thought a traceback might be helpful for you. Only edits I’ve made is to replace personally identifying filenames with “./” but thought it was worth mentioning.
I'm sorry, but an uncaught exception occurred.
While running game code:
File "game/reb.rpy", line 314, in script call
call expression reb_state from _call_expression
File "game/reb.rpy", line 314, in script call
call expression reb_state from _call_expression
File "game/sophia.rpy", line 317, in script call
call expression sophia_state from _call_expression_1
File "game/hazel.rpy", line 218, in script call
call hazel21 from _call_hazel21
File "game/sophia.rpy", line 317, in script call
call expression sophia_state from _call_expression_1
File "game/sophia.rpy", line 317, in script call
call expression sophia_state from _call_expression_1
File "game/sophia.rpy", line 317, in script call
call expression sophia_state from _call_expression_1
[Previous line repeated 4 more times]
File "game/fast_food.rpy", line 73, in script
menu:
File "renpy/common/00action_menu.rpy", line 110, in __call__
renpy.call_in_new_context("_game_menu", *self.args, _game_menu_screen=screen, **self.kwargs)
File "renpy/common/00gamemenu.rpy", line 170, in script
$ ui.interact()
File "renpy/common/00gamemenu.rpy", line 170, in script
$ ui.interact()
File "renpy/common/00gamemenu.rpy", line 170, in <module>
$ ui.interact()
RecursionError: maximum recursion depth exceeded while calling a Python object
-- Full Traceback ------------------------------------------------------------
Full traceback:
File "game/reb.rpy", line 314, in script call
call expression reb_state from _call_expression
File "game/reb.rpy", line 314, in script call
call expression reb_state from _call_expression
File "game/sophia.rpy", line 317, in script call
call expression sophia_state from _call_expression_1
File "game/hazel.rpy", line 218, in script call
call hazel21 from _call_hazel21
File "game/sophia.rpy", line 317, in script call
call expression sophia_state from _call_expression_1
File "game/sophia.rpy", line 317, in script call
call expression sophia_state from _call_expression_1
File "game/sophia.rpy", line 317, in script call
call expression sophia_state from _call_expression_1
[Previous line repeated 4 more times]
File "game/fast_food.rpy", line 73, in script
menu:
File "./Indulgences.app/Contents/Resources/autorun/renpy/ast.py", line 1883, in execute
choice = renpy.exports.menu(choices, self.set, args, kwargs, item_arguments)
File "./Indulgences.app/Contents/Resources/autorun/renpy/exports.py", line 1010, in menu
rv = renpy.store.menu(new_items)
File "./Indulgences.app/Contents/Resources/autorun/renpy/exports.py", line 1250, in display_menu
rv = renpy.ui.interact(mouse='menu', type=type, roll_forward=roll_forward)
File "./Indulgences.app/Contents/Resources/autorun/renpy/ui.py", line 299, in interact
rv = renpy.game.interface.interact(roll_forward=roll_forward, **kwargs)
File "./Indulgences.app/Contents/Resources/autorun/renpy/display/core.py", line 3376, in interact
repeat, rv = self.interact_core(preloads=preloads, trans_pause=trans_pause, pause=pause, pause_start=pause_start, **kwargs) # type: ignore
File "./Indulgences.app/Contents/Resources/autorun/renpy/display/core.py", line 4251, in interact_core
rv = root_widget.event(ev, x, y, 0)
File "./Indulgences.app/Contents/Resources/autorun/renpy/display/layout.py", line 1175, in event
rv = i.event(ev, x - xo, y - yo, cst)
File "./Indulgences.app/Contents/Resources/autorun/renpy/display/layout.py", line 1175, in event
rv = i.event(ev, x - xo, y - yo, cst)
File "./Indulgences.app/Contents/Resources/autorun/renpy/display/layout.py", line 1175, in event
rv = i.event(ev, x - xo, y - yo, cst)
File "./Indulgences.app/Contents/Resources/autorun/renpy/display/screen.py", line 743, in event
rv = self.child.event(ev, x, y, st)
File "./Indulgences.app/Contents/Resources/autorun/renpy/display/layout.py", line 1175, in event
rv = i.event(ev, x - xo, y - yo, cst)
File "./Indulgences.app/Contents/Resources/autorun/renpy/display/layout.py", line 1175, in event
rv = i.event(ev, x - xo, y - yo, cst)
File "./Indulgences.app/Contents/Resources/autorun/renpy/display/behavior.py", line 1054, in event
return handle_click(self.clicked)
File "./Indulgences.app/Contents/Resources/autorun/renpy/display/behavior.py", line 989, in handle_click
rv = run(action)
File "./Indulgences.app/Contents/Resources/autorun/renpy/display/behavior.py", line 329, in run
return action(*args, **kwargs)
File "renpy/common/00action_menu.rpy", line 110, in __call__
renpy.call_in_new_context("_game_menu", *self.args, _game_menu_screen=screen, **self.kwargs)
File "./Indulgences.app/Contents/Resources/autorun/renpy/game.py", line 346, in call_in_new_context
return renpy.execution.run_context(False)
File "./Indulgences.app/Contents/Resources/autorun/renpy/execution.py", line 938, in run_context
context.run()
File "renpy/common/00gamemenu.rpy", line 170, in script
$ ui.interact()
File "/home/tom/ab/renpy-build/tmp/install.linux-x86_64/lib/python3.9/site-packages/future/utils/__init__.py", line 441, in raise_
File "renpy/common/00gamemenu.rpy", line 170, in script
$ ui.interact()
File "./Indulgences.app/Contents/Resources/autorun/renpy/ast.py", line 1111, in execute
renpy.python.py_exec_bytecode(self.code.bytecode, self.hide, store=self.store)
File "./Indulgences.app/Contents/Resources/autorun/renpy/python.py", line 1049, in py_exec_bytecode
exec(bytecode, globals, locals)
File "renpy/common/00gamemenu.rpy", line 170, in <module>
$ ui.interact()
File "./Indulgences.app/Contents/Resources/autorun/renpy/ui.py", line 299, in interact
rv = renpy.game.interface.interact(roll_forward=roll_forward, **kwargs)
File "./Indulgences.app/Contents/Resources/autorun/renpy/display/core.py", line 3376, in interact
repeat, rv = self.interact_core(preloads=preloads, trans_pause=trans_pause, pause=pause, pause_start=pause_start, **kwargs) # type: ignore
File "./Indulgences.app/Contents/Resources/autorun/renpy/display/core.py", line 3905, in interact_core
self.draw_screen(root_widget, fullscreen_video, (not fullscreen_video) or video_frame_drawn)
File "./Indulgences.app/Contents/Resources/autorun/renpy/display/core.py", line 2601, in draw_screen
surftree = renpy.display.render.render_screen(
File "render.pyx", line 495, in renpy.display.render.render_screen
File "render.pyx", line 266, in renpy.display.render.render
File "./Indulgences.app/Contents/Resources/autorun/renpy/display/layout.py", line 884, in render
surf = render(child, width, height, cst, cat)
File "render.pyx", line 170, in renpy.display.render.render
File "render.pyx", line 266, in renpy.display.render.render
File "./Indulgences.app/Contents/Resources/autorun/renpy/display/transition.py", line 378, in render
top = render(self.new_widget, width, height, st, at)
File "render.pyx", line 170, in renpy.display.render.render
File "render.pyx", line 266, in renpy.display.render.render
File "./Indulgences.app/Contents/Resources/autorun/renpy/display/layout.py", line 884, in render
surf = render(child, width, height, cst, cat)
File "render.pyx", line 170, in renpy.display.render.render
File "render.pyx", line 266, in renpy.display.render.render
File "./Indulgences.app/Contents/Resources/autorun/renpy/display/layout.py", line 884, in render
surf = render(child, width, height, cst, cat)
File "render.pyx", line 170, in renpy.display.render.render
File "render.pyx", line 266, in renpy.display.render.render
File "./Indulgences.app/Contents/Resources/autorun/renpy/display/screen.py", line 704, in render
child = renpy.display.render.render(self.child, w, h, st, at)
File "render.pyx", line 170, in renpy.display.render.render
File "render.pyx", line 266, in renpy.display.render.render
File "./Indulgences.app/Contents/Resources/autorun/renpy/display/layout.py", line 884, in render
surf = render(child, width, height, cst, cat)
File "render.pyx", line 170, in renpy.display.render.render
File "render.pyx", line 266, in renpy.display.render.render
File "./Indulgences.app/Contents/Resources/autorun/renpy/display/layout.py", line 1334, in render
surf = render(child,
File "render.pyx", line 170, in renpy.display.render.render
File "render.pyx", line 266, in renpy.display.render.render
File "./Indulgences.app/Contents/Resources/autorun/renpy/display/layout.py", line 1060, in render
surf = render(d, rw, height - y, cst, cat)
File "render.pyx", line 170, in renpy.display.render.render
File "render.pyx", line 266, in renpy.display.render.render
File "./Indulgences.app/Contents/Resources/autorun/renpy/display/layout.py", line 1334, in render
surf = render(child,
File "render.pyx", line 170, in renpy.display.render.render
File "render.pyx", line 266, in renpy.display.render.render
File "./Indulgences.app/Contents/Resources/autorun/renpy/display/layout.py", line 1847, in render
cwidth, cheight = sizeit('c', width, height, 0, 0)
File "./Indulgences.app/Contents/Resources/autorun/renpy/display/layout.py", line 1844, in sizeit
rend = renpy.display.render.render_for_size(pos_d[pos], width, height, st, at)
File "render.pyx", line 318, in renpy.display.render.render_for_size
File "render.pyx", line 266, in renpy.display.render.render
File "./Indulgences.app/Contents/Resources/autorun/renpy/display/viewport.py", line 256, in render
surf = renpy.display.render.render(self.child, child_width, child_height, st, at)
File "render.pyx", line 170, in renpy.display.render.render
File "render.pyx", line 212, in renpy.display.render.render
RecursionError: maximum recursion depth exceeded while calling a Python object
macOS
Ren'Py 8.0.0.22062402
Indulgences 0.11