Don't think that it's this simple. The problem would happen too often and by reported more
You must be registered to see the links
; apparently in this case it was because of a side image. It look more like a side effect.
Technically, the error happen in a part that haven't changed since the 6.99.14 (and perhaps above I haven't gone further in the past) :
Code:
try:
rendering += 1
old_st = render_st
old_at = render_at
render_st = st
render_at = at
rv = d.render(widtho, heighto, st, at)
finally:
rendering -= 1
render_st = old_st
render_at = old_at
if rv.__class__ is not Render:
raise Exception("{!r}.render() must return a Render.".format(d))
rv.render_of.append(d) # <- The error is triggered here
The return value of
[displayable].render
return an object of the right class. But instead of the expected list for its
render_of
attribute, Ren'py found a
None
value.
When you look at the code,
rv
is a
Render
object and
render_of
is used six times :
- Initialized as empty list in
__init__
;
- Displayed in
__repr__
;
- Iterated in
main_displayables_at_point
;
- Assigned in
subsurface
, but assigned a slice ;
- Iterated in
kill_cache
;
- Assigned in
kill_cache
... and assigned with a None
value.
The last entry have been introduced in the version 7.2.0, so if the same error is triggered with the version 7.2.0, but not with the version 7.1.3, it's the culprit.
You can also test it by editing "renpy/display/render.pyx:1113" (for the 7.3.1 version) and replacing the
None
by an empty list.
But this isn't a Python file, by a CPython one, so for the change to take effect, you need to compile it, the put the library in the "lib/[your platform]/Lib/renpy" folder.
Now, if it's effectively the culprit, the question is why Ren'py suddenly try to works with a rendered object that have been removed from the cache ? And I have no idea, but there's chance that this part of the error come from your own code.