I have been attempting to make a Picotron game. When there are too many objects in a table that are being updated, some objects just do not update. I really don't know if this is a problem on my end or a Picotron bug.
I have falling rocks from the sky (as it is a sequel to Rockfall 3), and when there are maybe 10-20 of them at once, they will collectively pause in the air before continuing. The player movement does not turn choppy, and the CPU usage stays quite low (15% with about 100 rocks), so I don't think it's an optimization problem.
Here's the code in my rocks.lua
:
rocks = {} function add_rock(x,y,xv,yv) add(rocks, { x=x, y=y, xv=xv, yv=yv }) end function add_rock_master() add_rock(rnd(464),-rnd(32)-8,0,0) end function update_rocks() for i,r in pairs(rocks) do r.x += r.xv r.y += r.yv r.yv += grav r.yv /= wind_res if r.y > 270 then add_rock_master() del(rocks,r) break end end end function draw_rocks() for i,r in pairs(rocks) do sspr(5,0,0,8,8,r.x,r.y,16,16) end |
And in my main.lua
-- Rockfall 4 -- SealProgrammer include "player.lua" include "constants.lua" include "rocks.lua" add_players(7) add_rock_master() window{ cursor = 0 } screen = 0 function _update() if screen == 0 then screen = 1 elseif screen == 1 then update_rocks() update_players() if flr(rnd(120)) == 0 then add_rock_master() end end end function _draw() cls(12) map() draw_players() draw_rocks() print(stat(1)) end |
If there's any other relevant code I can provide it, but it's probably easier to just load the cart.
Last, here's the cartridge:
It can be loaded with load #weirdrockstuffpleasehelpthanks
.
Thanks everyone. I really don't know how I can fix it.
EDIT: I think it is tied to when new rocks are created. I switched it out to spawn a couple of new rocks in a wave, and not delete the old ones, and it gets the jitters only when new rocks are being added.
Figured it out, I had a break statement that meant that whenever a rock was respawned, it would stop all the rocks after it from updating.
[Please log in to post a comment]