Note that we're speaking of SGE+jBox2D, which is a different matter from libGDX, which fully integrates Box2D and where Box2D is much easier to use.
ohh i was talking about box2d + libgdx to be way more complex then spritekit so if SGE is harder to use with jbox2d i understand why you add your own collisions system to SGE. (that will be for sure very useful in lot of games, as you mentioned)
Could you explain what's great in iSpriteKit? I'm very interested but I cannot try it (I don't have any device from Apple). If there are good ideas, I will take them for sure. However one thing is clear: I won't add a physics engine to SGE, just to make Box2D simpler. It's too much work and the SGE audience is very limited.
actually its the combination and logic how spritekit handle sprites and phsyic bodies. i fully understand why you wont invest to much work on making an own physic engine. but i could imagine how we can use jBox2d with a game engine and try to make it simple as spritekit works.
this is also not a simple and quick task but it will make game making much much simpler.
after using both iSpriteKit and Libgdx+box2d i will list the main reason why i would define spritekit as the big winner in simplicity.
1. create a simple template. in spritekit you just create an SkView and add everything to it. its like a big panel where you add it to your Page like you would add a panel. so you always can hide it or do what ever you want with it.
2. skscene: an skscene is also like a panel where you add childs to it (sknodes) so its like a page in your skview
if you have a menu you create an skscene and add all childs to it. now when you want to show the menu you just say
Dim GameView As SKView
Dim MenuScene As SKScene
GameView.PresentScene(MenuScene)
this will present only the MenuScene and all other Scenes (GameScene, SettingScene, LevelSelectScene,...) are paused and you dont need to care about them at all.
its really simple like this to move from Game to Menu and then back to Level Selection Page,..
you can also do it with Transition:
Dim GameView As SKView
Dim MenuScene As SKScene
Dim fadeout As SKTransition
fadeout.Initialize
fadeout.FadeWithColor(Colors.Black,1)
GameView.PresentScene2(MenuScene, fadeout)
now try to do it with libgdx and you will see you need to think about a lot of stuff !!
so creating a scene and showing it is way simpler!
3. in spritekit you create a node. a node can hold textures or can be a labelnode... but the awesome thing in sprite kit is that every node has his own physicbody.
even a gamescene has his phsyicbody. if you dont set it its like just a simple sprite but if you set it it will react to gravity and collisions.
so you dont create body and attach a image to it (like in box2d and libgdx) you create a SkSpriteNode for example. set his texture and use his own PhysicBody for your needs. you can set his physicbody very simple as a circle or polygon or rect,... but you dont need to bother the size and the rendering of the image.
the center of the SkSpriteNode and PhysicBody is the Same Center as his Texture so the x/y of both are the center of the node. this means that the image will always be a rect but the body can be what ever you want and everytime the body rotates the texture rotates with him. you dont write a single code to do it.
SpriteKit takes the x/y and zRotation of the Node and if the physicbody rotates it rotates together with the texture.
this is really awesome!
even the Skscene has a physicbody. in my iSpriteKit Pong Game i created an PhysicBody for the SkScene from his Frame size. so if the ball hits the frame it will collide with it
Dim GameScene As SKScene
Dim body As SKPhysicsBody
body.Initialize
body.BodyWithEdgeLoopFromRect = GameScene.Frame
GameScene.PhysicsBody = body
look how simple it is
4. in spritekit you can create very simple multiple bodies and attach them to the same SkSpritenode.
this is how i create a Pipe in my new Game
the 2 yellow lines are 2 physicbodies that are attached to the same SkSpriteNode. so what means if i rotate the node the texture rotate together according to the SAME centerPoint.
you also can change the AncherPoint but i had no use for that until now.
so very very simple.
5. u can create SKLabelNode and use it as a label but the great thing is that it also has a physicbody so you can apply force, impulse... to it and move the label on your screen like its a ball. (with some imagination you can find very useful ways you can use a label with a physicbody)
6. the new spritekit update has new cool features like wrap transition that allow you to wrap your skspritenode and can give you a very nice effect without a need of creating a sprite animation.
(scroll to minute 34:45)
there are a lot other feature that makes the whole framework simpler to use. i just wrote few of them.