Out of Memory Error

Discuss how to use the Ren'Py engine to create visual novels and story-based games. New releases are announced in this section.
Forum rules
This is the right place for Ren'Py help. Please ask one question per thread, use a descriptive subject like 'NotFound error in option.rpy' , and include all the relevant information - especially any relevant code and traceback messages. Use the code tag to format scripts.
Post Reply
Message
Author
User avatar
Obscura
Eileen-Class Veteran
Posts: 1431
Joined: Fri Mar 09, 2012 6:58 pm
Projects: Coming Out On Top
Location: United States
Contact:

Out of Memory Error

#1 Post by Obscura »

For some reason a few players are encountering an "out of memory" error when playing through a certain scene, at different points in the scene. I can't seem to replicate this, and it doesn't happen for everyone, so I'm having difficulty pinpointing the problem.

The two sprites are such that they're often rotated and angled throughout the scene. Each sprite has multiple expression/clothing layers. Each layer is 1640 × 2460. All .png.

Example where the error occurs:

Code: Select all

label twins_jesse_appears:
    $jessebigs ("arch","normal","talk")
    $hughbigx ("nervous","left","line")
    show jessebig onlayer sprites at overleft
    with fade
Another example where the error occurs:

Code: Select all

show hughbig onlayer sprites at overright with dissolve
$hughbigx ("up","shock","happy")
hugh "Got 'em!"
$jessebigx ("up","down","line")
show jessebig onlayer sprites with dissolve:
zoom 1.00 
The code for the transforms:

Code: Select all

transform overleft:
   xpos -270
   ypos -420
   rotate 47
        
transform overright:
   xpos 300
   ypos -450
   rotate -45
        
        
The code for one of the sprites is below. (The other sprite is similar.)

Code: Select all

# initialize side sprite
  def jessebigs(brow,eye,mouth):
     global jesse_brow,jesse_eye,jesse_mouth
     jesse_brow,jesse_eye,jesse_mouth=brow,eye,mouth

image jessebig:
    LiveComposite(
        (1640,945),
        (0,0), "sprites/jesse/torso.png",
        (0,0), ConditionSwitch(
        "persistent.jessehair == False", "sprites/blank.png",
        "persistent.jessehair <> False", "sprites/jesse/bodyhair_torso.png",
        ),
        (0,0), ConditionSwitch(
        "jesse_pose=='hips'","sprites/jesse/arms_hips.png",
        "jesse_pose=='cross'","sprites/jesse/arms_cross.png",
        ),
        (0,0), ConditionSwitch(
        "persistent.jessehair == False", "sprites/blank.png",
        "jesse_pose=='cross'","sprites/jesse/bodyhair_arms_cross.png",
        "jesse_pose=='hips'","sprites/jesse/bodyhair_arms_hips.png",
        ),
        (0,0), ConditionSwitch(
        "jesse_outfit=='shirtless'","sprites/blank.png",
        "jesse_outfit<>'shirtless'","sprites/jesse/outfit_%s_%s.png"%(jesse_outfit,jesse_pose),
        ),
        (0,0), "sprites/jesse/head.png",
        (0,0), "sprites/jesse/headhair_short.png",
        (0,0), ConditionSwitch(
        "persistent.jessebeard == False", "sprites/blank.png",
        "persistent.jessebeard == True","sprites/jesse/beard.png",
        ),
        (0,0), "sprites/jesse/brow_%s.png"%(jesse_brow),
        (0,0), "sprites/jesse/eye_%s.png"%(jesse_eye),
        (0,0), "sprites/jesse/mouth_%s.png"%(jesse_mouth),
        )




One player's error report:

Code: Select all

I'm sorry, but an uncaught exception occurred.

While loading <'Image' 'sprites/jesse/bodyhair_arms_hips.png'>:
  File "game/script_brofinder.rpy", line 19, in script call
  File "game/script_brofinder.rpy", line 143, in script call
  File "game/script_brofinder.rpy", line 362, in script call
  File "game/script_date_twins.rpy", line 671, in script
error: Out of memory

-- Full Traceback ------------------------------------------------------------

Full traceback:
  File "game/script_brofinder.rpy", line 19, in script call
  File "game/script_brofinder.rpy", line 143, in script call
  File "game/script_brofinder.rpy", line 362, in script call
  File "game/script_date_twins.rpy", line 671, in script
  File "C:\Program Files (x86)\Steam\steamapps\common\Coming Out on Top\renpy\ast.py", line 613, in execute
    renpy.exports.say(who, what, interact=self.interact)
  File "C:\Program Files (x86)\Steam\steamapps\common\Coming Out on Top\renpy\exports.py", line 1147, in say
    who(what, interact=interact)
  File "C:\Program Files (x86)\Steam\steamapps\common\Coming Out on Top\renpy\character.py", line 877, in __call__
    self.do_display(who, what, cb_args=self.cb_args, **display_args)
  File "C:\Program Files (x86)\Steam\steamapps\common\Coming Out on Top\renpy\character.py", line 716, in do_display
    **display_args)
  File "C:\Program Files (x86)\Steam\steamapps\common\Coming Out on Top\renpy\character.py", line 508, in display_say
    rv = renpy.ui.interact(mouse='say', type=type, roll_forward=roll_forward)
  File "C:\Program Files (x86)\Steam\steamapps\common\Coming Out on Top\renpy\ui.py", line 285, in interact
    rv = renpy.game.interface.interact(roll_forward=roll_forward, **kwargs)
  File "C:\Program Files (x86)\Steam\steamapps\common\Coming Out on Top\renpy\display\core.py", line 2526, in interact
    repeat, rv = self.interact_core(preloads=preloads, trans_pause=trans_pause, **kwargs)
  File "C:\Program Files (x86)\Steam\steamapps\common\Coming Out on Top\renpy\display\core.py", line 2883, in interact_core
    self.draw_screen(root_widget, fullscreen_video, (not fullscreen_video) or video_frame_drawn)
  File "C:\Program Files (x86)\Steam\steamapps\common\Coming Out on Top\renpy\display\core.py", line 1955, in draw_screen
    renpy.config.screen_height,
  File "renpy/display/render.pyx", line 427, in renpy.display.render.render_screen (gen\renpy.display.render.c:6806)
    rv = render(root, width, height, 0, 0)
  File "renpy/display/render.pyx", line 196, in renpy.display.render.render (gen\renpy.display.render.c:2978)
    rv = d.render(widtho, heighto, st, at)
  File "C:\Program Files (x86)\Steam\steamapps\common\Coming Out on Top\renpy\display\layout.py", line 693, in render
    surf = render(child, width, height, cst, cat)
  File "renpy/display/render.pyx", line 110, in renpy.display.render.render (gen\renpy.display.render.c:3440)
    cpdef render(d, object widtho, object heighto, double st, double at):
  File "renpy/display/render.pyx", line 196, in renpy.display.render.render (gen\renpy.display.render.c:2978)
    rv = d.render(widtho, heighto, st, at)
  File "C:\Program Files (x86)\Steam\steamapps\common\Coming Out on Top\renpy\display\layout.py", line 693, in render
    surf = render(child, width, height, cst, cat)
  File "renpy/display/render.pyx", line 110, in renpy.display.render.render (gen\renpy.display.render.c:3440)
    cpdef render(d, object widtho, object heighto, double st, double at):
  File "renpy/display/render.pyx", line 196, in renpy.display.render.render (gen\renpy.display.render.c:2978)
    rv = d.render(widtho, heighto, st, at)
  File "C:\Program Files (x86)\Steam\steamapps\common\Coming Out on Top\renpy\display\layout.py", line 693, in render
    surf = render(child, width, height, cst, cat)
  File "renpy/display/render.pyx", line 110, in renpy.display.render.render (gen\renpy.display.render.c:3440)
    cpdef render(d, object widtho, object heighto, double st, double at):
  File "renpy/display/render.pyx", line 196, in renpy.display.render.render (gen\renpy.display.render.c:2978)
    rv = d.render(widtho, heighto, st, at)
  File "renpy/display/accelerator.pyx", line 108, in renpy.display.accelerator.transform_render (gen\renpy.display.accelerator.c:2027)
    cr = render(child, widtho, heighto, st - self.child_st_base, at)
  File "renpy/display/render.pyx", line 196, in renpy.display.render.render (gen\renpy.display.render.c:2978)
    rv = d.render(widtho, heighto, st, at)
  File "C:\Program Files (x86)\Steam\steamapps\common\Coming Out on Top\renpy\display\image.py", line 387, in render
    return wrap_render(self.target, width, height, st, at)
  File "C:\Program Files (x86)\Steam\steamapps\common\Coming Out on Top\renpy\display\image.py", line 208, in wrap_render
    rend = render(child, w, h, st, at)
  File "renpy/display/render.pyx", line 110, in renpy.display.render.render (gen\renpy.display.render.c:3440)
    cpdef render(d, object widtho, object heighto, double st, double at):
  File "renpy/display/render.pyx", line 196, in renpy.display.render.render (gen\renpy.display.render.c:2978)
    rv = d.render(widtho, heighto, st, at)
  File "renpy/display/accelerator.pyx", line 108, in renpy.display.accelerator.transform_render (gen\renpy.display.accelerator.c:2027)
    cr = render(child, widtho, heighto, st - self.child_st_base, at)
  File "renpy/display/render.pyx", line 196, in renpy.display.render.render (gen\renpy.display.render.c:2978)
    rv = d.render(widtho, heighto, st, at)
  File "C:\Program Files (x86)\Steam\steamapps\common\Coming Out on Top\renpy\display\layout.py", line 693, in render
    surf = render(child, width, height, cst, cat)
  File "renpy/display/render.pyx", line 110, in renpy.display.render.render (gen\renpy.display.render.c:3440)
    cpdef render(d, object widtho, object heighto, double st, double at):
  File "renpy/display/render.pyx", line 196, in renpy.display.render.render (gen\renpy.display.render.c:2978)
    rv = d.render(widtho, heighto, st, at)
  File "C:\Program Files (x86)\Steam\steamapps\common\Coming Out on Top\renpy\display\layout.py", line 318, in render
    surf = render(self.child, width, height, st, at)
  File "renpy/display/render.pyx", line 110, in renpy.display.render.render (gen\renpy.display.render.c:3440)
    cpdef render(d, object widtho, object heighto, double st, double at):
  File "renpy/display/render.pyx", line 196, in renpy.display.render.render (gen\renpy.display.render.c:2978)
    rv = d.render(widtho, heighto, st, at)
  File "C:\Program Files (x86)\Steam\steamapps\common\Coming Out on Top\renpy\display\layout.py", line 318, in render
    surf = render(self.child, width, height, st, at)
  File "renpy/display/render.pyx", line 110, in renpy.display.render.render (gen\renpy.display.render.c:3440)
    cpdef render(d, object widtho, object heighto, double st, double at):
  File "renpy/display/render.pyx", line 196, in renpy.display.render.render (gen\renpy.display.render.c:2978)
    rv = d.render(widtho, heighto, st, at)
  File "C:\Program Files (x86)\Steam\steamapps\common\Coming Out on Top\renpy\display\layout.py", line 1224, in render
    return renpy.display.render.render(self.child, w, h, st, at)
  File "renpy/display/render.pyx", line 110, in renpy.display.render.render (gen\renpy.display.render.c:3440)
    cpdef render(d, object widtho, object heighto, double st, double at):
  File "renpy/display/render.pyx", line 196, in renpy.display.render.render (gen\renpy.display.render.c:2978)
    rv = d.render(widtho, heighto, st, at)
  File "C:\Program Files (x86)\Steam\steamapps\common\Coming Out on Top\renpy\display\im.py", line 473, in render
    im = cache.get(self)
  File "C:\Program Files (x86)\Steam\steamapps\common\Coming Out on Top\renpy\display\im.py", line 200, in get
    surf = image.load()
  File "C:\Program Files (x86)\Steam\steamapps\common\Coming Out on Top\renpy\display\im.py", line 524, in load
    surf = renpy.display.pgrender.load_image(renpy.loader.load(self.filename), self.filename)
  File "C:\Program Files (x86)\Steam\steamapps\common\Coming Out on Top\renpy\display\pgrender.py", line 162, in load_image
    rv = copy_surface_unscaled(surf)
  File "C:\Program Files (x86)\Steam\steamapps\common\Coming Out on Top\renpy\display\pgrender.py", line 127, in copy_surface
    rv = surface_unscaled(surf.get_size(), alpha)
  File "C:\Program Files (x86)\Steam\steamapps\common\Coming Out on Top\renpy\display\pgrender.py", line 116, in surface
    surf = Surface((width + 4, height + 4), 0, sample)
  File "src/pygame_sdl2/surface.pyx", line 164, in pygame_sdl2.surface.Surface.__init__ (gen\pygame_sdl2.surface.c:2479)
error: Out of memory

Windows-8-6.2.9200
Ren'Py 6.99.12.4.2187
Coming-Out-On-Top 1.71c
[/s]


Am I correct in thinking the rotates and zooms are too much for some systems? It only seems to happen to some players, and I'm not sure why (maybe their video card?) This only seems to happen if you reach this point through the longer main game, and not the shortcut. Would it help if I created a separate batch of images that are already rotated where they need to be, so Renpy doesn't need to rotate them?
Coming Out On Top - An Adult Gay Dating Sim
website

User avatar
Obscura
Eileen-Class Veteran
Posts: 1431
Joined: Fri Mar 09, 2012 6:58 pm
Projects: Coming Out On Top
Location: United States
Contact:

Re: Out of Memory Error

#2 Post by Obscura »

Oh, I should add the original was compiled in 6.99. I'll be recompiling using the latest version (7.1.3)...maybe that will solve the memory issue...
Coming Out On Top - An Adult Gay Dating Sim
website

User avatar
Imperf3kt
Lemma-Class Veteran
Posts: 3791
Joined: Mon Dec 14, 2015 5:05 am
itch: Imperf3kt
Location: Your monitor
Contact:

Re: Out of Memory Error

#3 Post by Imperf3kt »

Might be worth chucking in a renpy.free_memory()
https://www.renpy.org/doc/html/other.ht ... ree_memory
Warning: May contain trace amounts of gratuitous plot.
pro·gram·mer (noun) An organism capable of converting caffeine into code.

Current project: GGD Mentor

Twitter

User avatar
Obscura
Eileen-Class Veteran
Posts: 1431
Joined: Fri Mar 09, 2012 6:58 pm
Projects: Coming Out On Top
Location: United States
Contact:

Re: Out of Memory Error

#4 Post by Obscura »

Thanks, Imperf3kt!

I'm afraid I'm a complete noob at using that command. My search turned up a few forum posts didn't turn up anything about the basics. Do I simply add it to the beginning of a scene?

And not sure if it matters, but:

Code: Select all

config.predict_screens = False
config.predict_screen_statements = False
because the game was created in an earlier version of the engine and some of the dissolves and transitions started doing odd things when I turned on prediction.
Coming Out On Top - An Adult Gay Dating Sim
website

User avatar
Imperf3kt
Lemma-Class Veteran
Posts: 3791
Joined: Mon Dec 14, 2015 5:05 am
itch: Imperf3kt
Location: Your monitor
Contact:

Re: Out of Memory Error

#5 Post by Imperf3kt »

I've never used it, but I assume you'd just use a python one liner shortly before the problems show.
Warning: May contain trace amounts of gratuitous plot.
pro·gram·mer (noun) An organism capable of converting caffeine into code.

Current project: GGD Mentor

Twitter

User avatar
Obscura
Eileen-Class Veteran
Posts: 1431
Joined: Fri Mar 09, 2012 6:58 pm
Projects: Coming Out On Top
Location: United States
Contact:

Re: Out of Memory Error

#6 Post by Obscura »

Gotcha, I'll fiddle around with it. Thank you!
Coming Out On Top - An Adult Gay Dating Sim
website

Post Reply

Who is online

Users browsing this forum: Bing [Bot], Google [Bot]