hey~~ glad to see that~~ I just tested you .love, it seems that the fps is a little low ? or the movement is not very smooth.
and here is something new
Lovely Physics Sandbox
Re: Lovely Physics Sandbox
Last edited by Alexar on Mon Sep 12, 2016 12:38 am, edited 2 times in total.
Re: Lovely Physics Sandbox
Try adjusting the "updates per second" slider, I left the default value very low but it should look smooth between 30 and 60. If that doesn't fix it please let me know.Alexar wrote:it seems that the fps is a little low ? or the movement is not very smooth.
I couldn't get it to run: Error: editor/interface.lua:0: bad argument #1 to 'unpack' (table expected, got nil)and here is something new
Looking forward to seeing what you're working on, though. I hope the progress that's been made lately with serializable physics worlds will be useful to you in your latest project. I think worlds will be fully serializable when #1194 is resolved (I hope that will be soon; there's a patch there that should be good to go whenever someone finds time to review it).
Re: Lovely Physics Sandbox
Did you notice that, sometimes the objects go missing if GC is on. not completely deleted, but remains the base class, but the class inherited. for example, a revolute joint, witch has a motor, after gc, the type of the joint remains revolute, but the function setMotorSpeed is gone. that's why?
in my opinion, the serialization of the world should not only readable to the engine, but also to human.
in my opinion, the serialization of the world should not only readable to the engine, but also to human.
Re: Lovely Physics Sandbox
Yes, it's really weird and really rare. I'm not sure why it happens. It always seems to be methods of joints that disappear. I suspect this is happening on Love's end, but I haven't been able to recreate it reliably, so I haven't filed a bug report yet. If you (or anyone else) has any idea why this happens or how to recreate it, please let me know.Alexar wrote:Did you notice that, sometimes the objects go missing if GC is on. not completely deleted, but remains the base class, but the class inherited. for example, a revolute joint, witch has a motor, after gc, the type of the joint remains revolute, but the function setMotorSpeed is gone. that's why?
This is up to the serialization library, I just dropped in knife.serialize but it could use a serialization library that does some kind of pretty-printing that's more geared toward debugging. Is there a pretty-printing serialization library that you like?Alexar wrote:in my opinion, the serialization of the world should not only readable to the engine, but also to human.
I intend to make the scenes scriptable by letting users give IDs and maybe "tags" to objects in the editor that would be saved along with the world. Then you would write code in a separate file named scene.lua stored in the save folder alongside world.lua. When you first create a world, the tool would save a skeleton of scene.lua. So world.lua would be generated by the tool, and you wouldn't touch that, but you'd edit scene.lua, which would require world.lua, and you could write collision callbacks, an update function, and so on in scene.lua, referencing any unique objects by their IDs and referencing groups of similar objects by their tags. I haven't totally worked out how I want to do everything, but I think it will go something like that. In the end I'm thinking you'd treat world.lua as a sort of black box (similar to UI code generated by UI design tools). It wouldn't hurt to make it human readable anyway, though.
- bartbes
- Sex machine
- Posts: 4946
- Joined: Fri Aug 29, 2008 10:35 am
- Location: The Netherlands
- Contact:
Re: Lovely Physics Sandbox
Is it possible the only reference to the class is a Fixture's userdata? In that case it may be issue #1177.airstruck wrote:Yes, it's really weird and really rare. I'm not sure why it happens. It always seems to be methods of joints that disappear. I suspect this is happening on Love's end, but I haven't been able to recreate it reliably, so I haven't filed a bug report yet.
Re: Lovely Physics Sandbox
I don't think it has anything to do with userdata, it also seems to happen when none of the physics objects have any userdata. This tool only uses userdata for a custom color plugin, and I'm sure I noticed it before that was added. I've had this happen maybe 5 times over the whole time I've been working on this thing.bartbes wrote:Is it possible the only reference to the class is a Fixture's userdata?
I had a more descriptive explanation here but I'm removing it because It's been a while since I've seen the bug and I'm not sure I'm remembering it properly. I'll be working on this more over the next few weeks, and I'll put together a bug report if it happens again. I can't actually prove it's a bug in Love and not my own code at the moment, but the relevant part of my code is pretty straightforward and every time I looked into this I couldn't find any place for a bug like that to hide. My original plan was to eventually try to force the bug through some kind of stress test and then report it.
Re: Lovely Physics Sandbox
I am testing if I use a global reference to every joint could fix the problem.
Code: Select all
local ref
local _newWorld = love.physics.newWorld
function love.physics.newWorld(...)
ref = {}
return _newWorld(...)
end
local function add(j)
table.insert(ref, j)
return j
end
local _gearjoint = love.physics.newGearJoint
love.physics.newGearJoint=function(...)
return add(_gearjoint(...))
end
Re: Lovely Physics Sandbox
Are you seeing the same problem in Box2D Helper?Alexar wrote:I am testing if I use a global reference to every joint could fix the problem.
I'd like to make a small test case to isolate the problem. I guess it might go something like this:
- create a joint, and let any references to it go out of scope
- manually call collectgarbage to ensure the reference is collected
- get a new reference to the joint through World:getJointList
- ensure that the new reference is really not the same as the old reference (using tostring maybe)
- call some method of the joint, like setFrequency, and call world:update
- repeat everything in a loop and hope the problem occurs
Do you think that might work, or do you have any other ideas?
I think I've only seen the problem during undo/redo with this tool, which means a new world is being created from a saved state. That makes me think it might not have as much to do with the GC, and might have more to do with the joint somehow not being fully initialized when its methods are called. I've looked at that part of Love's code quite a bit and have no idea how it would happen, though. Maybe something weird with memoizer?
If anyone has any ideas about how to isolate this problem, please let me know. Again, the problem is that joints seem to "lose" the methods of their most specialized type, resulting in errors like "attempt to call method 'setFrequency' (a nil value)." This happens very rarely and, as far as I can tell, very unpredictably.
-
- Prole
- Posts: 1
- Joined: Sun Sep 11, 2016 10:33 am
Re: Lovely Physics Sandbox
Its just not working.......
The first screen with panels and stuff that's it.
I can't give any command.
The first screen with panels and stuff that's it.
I can't give any command.
Re: Lovely Physics Sandbox
What version of Love are you using?Blizzard47 wrote:Its just not working.......
The first screen with panels and stuff that's it.
I can't give any command.
Who is online
Users browsing this forum: No registered users and 2 guests