|
-
M.D.
[WIP] pinball
hello
here's an update on my pinball game, coming along slowly as I'm building this from scratch but things are starting to shape up.
anyway, have a play around and please tell me and bugs you find. Would really love to know your opinions on the flippers, I still haven't quite figured out how to handle a response when the angular velocity of the flipper is very small and the balls velocity is very large, i've done a hacky fix where If the collision is the first reported and ball's velocity is greater than flippers angular velocity bounce the ball using a static line-circle response, else add angular velocity. It works in most cases but I think there are still errors.
I've created a test level to show ramps (switching layers) and there are circle and line events in there to (circle with blue x, line with blue rectangle). I really need to incorporate some graphics, been putting that off for quite some time.
left, right - flippers
down - plunger
click + drag ball.
http://soap.com.au/chris/pinball/working
http://soap.com.au/chris/pinball/working/editor
http://soap.com.au/chris/pinball/wor...ll_offline.zip
made a nice little editor to , there's some problems with re-arranging layers, xml is coming out funny, so don't re-arrange layers around unless you want to shift some xml and only 4 layers can be visible at any time. Didn't want to add a scrollPane. Who needs 5 layers anyway. Click "loadTable" to load the ramp test level
Last edited by mr_malee; 05-09-2008 at 04:57 AM.
-
veeeery nice,- keep us updated
-
Elvis...who tha f**k is Elvis?
-
Hype over content...
Mate, how much work have you managed to do in just a couple of days ? Wow.
Coming along really well ( I'll send you mine when I get chance, I've been off work with a stinking cold )
Squize.
-
Senior Member
Wow great, I was impressed by your system of collision layers in the editor.
Waiting for the rendering now 
Just a suggestion, on the game engine, maybe you can display the top and unactive layers in alpha 0.5 until the ball activates them.
-
Fantastic work! I really like the feel of the flippers, you could maybe make them a touch "lighter", ie. a bigger difference in speed between when they are in contact with the ball and not.
One minor editor bug, the bounce on bumpers seems to always get written to the xml as 0 when you first create something and give it a bounce value, although they load fine if you edit the xml manually and reload into the editor.
Can't wait to see the finished product.
Last edited by slight; 05-09-2008 at 09:54 AM.
Signature
-
Senior Member
Cool project 
That editor is shaping up nice! Is it mostly done in flex mxml code?
-
Very nice!! Can't wait to see the rendered version!
 Originally Posted by mr_malee
I still haven't quite figured out how to handle a response when the angular velocity of the flipper is very small and the balls velocity is very large, i've done a hacky fix where If the collision is the first reported and ball's velocity is greater than flippers angular velocity bounce the ball using a static line-circle response, else add angular velocity. It works in most cases but I think there are still errors.
Have you tried treating the point of impact between the pinball and the flipper as the tangent point between two balls. One ball is of course the pinball, the other is treated as being at the mirrored tangent point on the opposite side of the flipper. Give this mirrored ball the angular velocity, and a mass that will mimic your flipper, then resolve based on sphere/sphere collision response. I think by tweeking the mass and bounce/friction values, you might be able to get the results you like.
-
Senior Member
It's excellent! I am so jealous of your coding skills.
My complaint now would be that the flippers are too slow. ;-)
Regarding the problem if fast ball + slow flipper. There's a bit of a dampening effect. The flipper is just plastic, held on an axis rod. A high impact will have a dampening effect on the ball, but then the rubber on the flipper adds a little bounce, such that the dampening is not 100%. (What % I could not guess without observing the real thing).
I just bought Pinball Hall of Fame Williams Collection for the Wii. It's an EXCELLENT simulation of classic pinball machines. It's only $20, so pick it up.
-
Senior Member
I found some reference videos for you... Might help you just flipper speed, ball behaviour, etc:
Family guy pinball (watch starting from 4:10):
http://www.youtube.com/watch?v=BiSKK...eature=related
http://www.youtube.com/watch?v=kZc6loqkrxs
There are many more on Youtube, but beware the ones that are of video games instead of real. (You'll just be duplicating the innacuracies those versions have)
-
^^ Ray, you can set flipper speed to whatever you like in the editor. It seems to develop some odd bugs at flipper speed 50 though.
Also worth checking out is www.futurepinball.com if you haven't already seen it. It's a 3d pinball simulator with a very detailed editor and some amazing tables people have built with it, also it's free.
-
can't edit the above post, so...
the flipper bug isnt just on high speed flippers, it seems to happen when the ball is below the flipper, here's a table, take a look at the top flipper.
Code:
<table>
<layers>
<layer>
<object name="" type="circle" px="295" py="180" radius="5" />
<object name="" type="line" sx="370" sy="290" ex="375" ey="305" />
<object name="" type="circle" px="405" py="240" radius="5" />
<object name="" type="bezier" sx="370" sy="290" cx="405" cy="270" ex="400" ey="240" />
<object name="" type="flipper" px="365" py="300" length="40" speed="20" dir="-1" flipAngle="-170" idleAngle="141" />
<object name="" type="circle" px="115" py="270" radius="5" />
<object name="" type="circle" px="135" py="230" radius="5" />
<object name="" type="circle" px="330" py="190" radius="5" />
<object name="" type="circle" px="355" py="210" radius="5" />
<object name="" type="circle" px="370" py="240" radius="5" />
<object name="" type="circle" px="175" py="215" radius="5" />
<object name="" type="circle" px="470" py="140" radius="5" />
<object name="" type="lineBumper" sx="50" sy="145" ex="25" ey="145" bounce="8" />
<object name="" type="bezier" sx="90" sy="310" cx="50" cy="260" ex="50" ey="145" />
<object name="" type="bezier" sx="75" sy="335" cx="25" cy="275" ex="25" ey="145" />
<object name="" type="bezier" sx="35" sy="410" cx="35" cy="355" ex="75" ey="335" />
<object name="" type="bezier" sx="375" sy="305" cx="410" cy="290" ex="410" ey="240" />
<object name="" type="bezier" sx="400" sy="320" cx="435" cy="305" ex="435" ey="255" />
<object name="" type="bezier" sx="400" sy="350" cx="380" cy="330" ex="400" ey="320" />
<object name="" type="bezier" sx="435" sy="405" cx="435" cy="380" ex="400" ey="350" />
<object name="" type="circleEvent" px="455" py="405" radius="5" />
<object name="" type="circleEvent" px="455" py="615" radius="5" />
<object name="" type="line" sx="260" sy="95" ex="260" ey="65" />
<object name="" type="line" sx="230" sy="95" ex="230" ey="65" />
<object name="" type="circle" px="255" py="65" radius="5" />
<object name="" type="circle" px="255" py="95" radius="5" />
<object name="" type="circle" px="225" py="95" radius="5" />
<object name="" type="circle" px="225" py="65" radius="5" />
<object name="" type="lineEvent" sx="220" sy="655" ex="250" ey="655" />
<object name="" type="line" sx="185" sy="90" ex="200" ey="90" />
<object name="" type="bezier" sx="200" sy="60" cx="140" cy="90" ex="185" ey="90" />
<object name="" type="bezier" sx="360" sy="115" cx="370" cy="130" ex="360" ey="130" />
<object name="" type="bezier" sx="280" sy="60" cx="335" cy="65" ex="360" ey="115" />
<object name="" type="line" sx="280" sy="90" ex="360" ey="130" />
<object name="" type="line" sx="280" sy="60" ex="280" ey="90" />
<object name="" type="line" sx="250" sy="65" ex="250" ey="95" />
<object name="" type="line" sx="220" sy="65" ex="220" ey="95" />
<object name="" type="line" sx="200" sy="60" ex="200" ey="90" />
<object name="" type="circleBumper" px="240" py="180" radius="25" bounce="10" />
<object name="" type="circleBumper" px="175" py="150" radius="25" bounce="10" />
<object name="" type="circleBumper" px="110" py="120" radius="25" bounce="10" />
<object name="" type="bezier" sx="250" sy="10" cx="165" cy="15" ex="140" ey="60" />
<object name="" type="bezier" sx="75" sy="430" cx="80" cy="415" ex="90" ey="430" />
<object name="" type="bezier" sx="145" sy="540" cx="160" cy="545" ex="150" ey="515" />
<object name="" type="lineBumper" sx="90" sy="430" ex="150" ey="515" bounce="6" />
<object name="" type="line" sx="75" sy="495" ex="145" ey="540" />
<object name="" type="line" sx="75" sy="430" ex="75" ey="495" />
<object name="" type="bezier" sx="335" sy="510" cx="320" cy="535" ex="335" ey="535" />
<object name="" type="bezier" sx="380" sy="430" cx="390" cy="415" ex="395" ey="430" />
<object name="rsling" type="lineBumper" sx="335" sy="510" ex="380" ey="430" bounce="6" />
<object name="" type="line" sx="395" sy="500" ex="335" ey="535" />
<object name="" type="line" sx="395" sy="430" ex="395" ey="500" />
<object name="" type="line" sx="415" sy="515" ex="310" ey="575" />
<object name="" type="line" sx="310" sy="575" ex="315" ey="585" />
<object name="" type="line" sx="415" sy="525" ex="415" ey="430" />
<object name="" type="line" sx="315" sy="585" ex="415" ey="525" />
<object name="" type="line" sx="160" sy="575" ex="55" ey="510" />
<object name="" type="line" sx="155" sy="585" ex="160" ey="575" />
<object name="" type="line" sx="55" sy="525" ex="155" ey="585" />
<object name="" type="line" sx="55" sy="525" ex="55" ey="445" />
<object name="" type="flipper" px="165" py="585" length="55" speed="30" dir="1" flipAngle="-20" idleAngle="26" />
<object name="" type="flipper" px="305" py="585" length="55" speed="30" dir="-1" flipAngle="-160" idleAngle="155" />
<object name="kicker" type="lineBumper" sx="35" sy="570" ex="55" ey="570" bounce="15" />
<object name="" type="line" sx="55" sy="555" ex="55" ey="570" />
<object name="" type="circle" px="440" py="565" radius="5" />
<object name="" type="line" sx="205" sy="670" ex="220" ey="655" />
<object name="" type="line" sx="445" sy="240" ex="435" ey="255" />
<object name="" type="line" sx="435" sy="405" ex="435" ey="545" />
<object name="" type="line" sx="250" sy="655" ex="250" ey="665" />
<object name="" type="line" sx="435" sy="545" ex="250" ey="655" />
<object name="" type="bezier" sx="50" sy="145" cx="50" cy="40" ex="140" ey="60" />
<object name="" type="bezier" sx="465" sy="175" cx="495" cy="0" ex="250" ey="10" />
<object name="" type="line" sx="55" sy="555" ex="220" ey="655" />
<object name="return" type="lineBumper" sx="205" sy="670" ex="210" ey="695" bounce="12" />
<object name="" type="line" sx="255" sy="690" ex="210" ey="695" />
<object name="" type="line" sx="435" sy="565" ex="250" ey="665" />
<object name="" type="line" sx="435" sy="590" ex="255" ey="690" />
<object name="" type="line" sx="445" sy="600" ex="435" ey="590" />
<object name="" type="line" sx="445" sy="565" ex="445" ey="240" />
<object name="" type="line" sx="445" sy="700" ex="445" ey="600" />
<object name="" type="line" sx="35" sy="570" ex="35" ey="410" />
<object name="" type="line" sx="465" sy="695" ex="465" ey="175" />
<object name="ball" type="ball" px="455" py="641" />
<object name="plunger" type="plunger" px="440" py="650" />
</layer>
</layers>
</table>
-
formerly hooligan2001 :)
wow mr_malee, runs fine here. Collision works so well and so does the editor. You have officially received flash guruness.
-
M.D.
thanks for the kind comments everyone 
the editor is a bit of a slug, but thanks for finding throse bugs slight, I'll fix those as soon as I can.
Jerry, if I treat the collision as ball-ball and the pinball is travelling faster than the flipper, would that mean the flipper would bounce back from the collision?
Ray, so you're saying that on every collision dampen the ball's velocity?
as for the flipper speed issue, this is something I'm working on. Anyway, thanks for testing it out, hopefully I'll have a better editor and engine by mid next week, gotta get rid of graphics+sounds lists and add groups, graphics and sounds should be handled by the specific pinball game, by giving the option of creating groups this could make it much easier to achieve.
I'll keep working on the flippers, but as of now the priority is to get the game working
-
This is more an observation than a bug, but wherever a bouncer meets another edge at an acute angle, the ball will often jam in the corner, even if it is only a tiny fraction less than 90 degrees, like at the top and bottom corners of a ' D ' shape. On the table I posted above, you can see it happen if you land a solid shot up the tube on the left side.
-
 Originally Posted by mr_malee
Jerry, if I treat the collision as ball-ball and the pinball is travelling faster than the flipper, would that mean the flipper would bounce back from the collision?
I think you can prevent that by applying an appropriately large mass value to the "flipper ball."
It is rare in the real-world to have the flipper go down due to ball speed, except when the coils which drive the flippers are getting bad, in which case you can finesse a game for hours on end with a single token (ahhh memories of a wasted youth ). The torque applied by the coils to the flipper can be computed as a component of the mass you apply to the "flipper ball."
-
I've been messing with this a bit more this morning, seems like the more complex a table gets, the more flipper bugs creep in. Take a look at this one.. =)
Code:
<table>
<layers>
<layer>
<object name="" type="circleEvent" px="230" py="335" radius="5" />
<object name="" type="bezier" sx="280" sy="90" cx="325" cy="90" ex="360" ey="130" />
<object name="" type="circleEvent" px="325" py="215" radius="5" />
<object name="" type="line" sx="115" sy="200" ex="130" ey="195" />
<object name="" type="circle" px="130" py="230" radius="5" />
<object name="" type="circle" px="130" py="190" radius="5" />
<object name="" type="circleEvent" px="120" py="210" radius="5" />
<object name="" type="bezierBumper" sx="115" sy="200" cx="105" cy="210" ex="115" ey="220" bounce="4" />
<object name="" type="bezier" sx="90" sy="205" cx="105" cy="185" ex="130" ey="185" />
<object name="" type="line" sx="130" sy="225" ex="115" ey="220" />
<object name="" type="bezier" sx="90" sy="255" cx="75" cy="220" ex="90" ey="205" />
<object name="" type="circleEvent" px="130" py="240" radius="5" />
<object name="" type="circleEvent" px="120" py="245" radius="5" />
<object name="" type="circleEvent" px="110" py="250" radius="5" />
<object name="" type="circleEvent" px="100" py="255" radius="5" />
<object name="" type="line" sx="90" sy="255" ex="130" ey="235" />
<object name="" type="circleEvent" px="315" py="225" radius="5" />
<object name="" type="circleEvent" px="335" py="205" radius="5" />
<object name="" type="lineBumper" sx="300" sy="215" ex="325" ey="190" bounce="3" />
<object name="" type="ramp" sx="50" sy="125" ex="30" ey="125" enterLayer="2" />
<object name="" type="bezier" sx="465" sy="190" cx="475" cy="180" ex="475" ey="170" />
<object name="" type="line" sx="310" sy="225" ex="335" ey="200" />
<object name="" type="circle" px="330" py="195" radius="7" />
<object name="" type="bezier" sx="435" sy="590" cx="265" cy="695" ex="210" ey="695" />
<object name="" type="circleEvent" px="165" py="55" radius="5" />
<object name="" type="circleEvent" px="70" py="60" radius="5" />
<object name="" type="circleEvent" px="60" py="280" radius="5" />
<object name="" type="circleEvent" px="45" py="220" radius="5" />
<object name="" type="circleEvent" px="420" py="260" radius="5" />
<object name="" type="circleEvent" px="415" py="285" radius="5" />
<object name="" type="circleEvent" px="400" py="305" radius="5" />
<object name="" type="circle" px="235" py="625" radius="5" />
<object name="" type="circleEvent" px="230" py="360" radius="15" />
<object name="" type="circleEvent" px="230" py="295" radius="10" />
<object name="" type="circleEvent" px="425" py="475" radius="5" />
<object name="" type="circleEvent" px="405" py="480" radius="5" />
<object name="" type="circleEvent" px="65" py="480" radius="5" />
<object name="" type="circleEvent" px="45" py="475" radius="5" />
<object name="" type="circleEvent" px="40" py="110" radius="5" />
<object name="" type="circleEvent" px="40" py="160" radius="5" />
<object name="" type="circleEvent" px="210" py="80" radius="5" />
<object name="" type="circleEvent" px="240" py="80" radius="5" />
<object name="" type="circleEvent" px="270" py="80" radius="5" />
<object name="" type="bezier" sx="415" sy="575" cx="445" cy="560" ex="445" ey="570" />
<object name="" type="bezier" sx="435" sy="590" cx="445" cy="585" ex="445" ey="595" />
<object name="" type="line" sx="50" sy="145" ex="50" ey="125" />
<object name="r_kicker" type="bezierBumper" sx="415" sy="555" cx="425" cy="565" ex="435" ey="555" bounce="10" />
<object name="" type="bezier" sx="30" sy="125" cx="30" cy="10" ex="145" ey="65" />
<object name="" type="circle" px="205" py="285" radius="5" />
<object name="" type="circleBumper" px="390" py="175" radius="25" bounce="4" />
<object name="" type="line" sx="250" sy="290" ex="245" ey="300" />
<object name="" type="line" sx="215" sy="300" ex="210" ey="285" />
<object name="" type="bezierBumper" sx="215" sy="300" cx="230" cy="330" ex="245" ey="300" bounce="4" />
<object name="" type="circle" px="255" py="285" radius="5" />
<object name="" type="circle" px="160" py="340" radius="5" />
<object name="" type="circle" px="300" py="340" radius="5" />
<object name="" type="ramp" sx="270" sy="340" ex="295" ey="340" enterLayer="2" />
<object name="" type="circleBumper" px="405" py="95" radius="25" bounce="4" />
<object name="" type="bezier" sx="260" sy="285" cx="305" cy="285" ex="305" ey="340" />
<object name="" type="bezier" sx="155" sy="340" cx="155" cy="285" ex="200" ey="285" />
<object name="" type="bezierBumper" sx="50" sy="145" cx="40" cy="135" ex="30" ey="145" bounce="12" />
<object name="l_kicker" type="bezierBumper" sx="35" sy="570" cx="45" cy="575" ex="55" ey="570" bounce="12" />
<object name="" type="flipper" px="165" py="585" length="55" speed="30" dir="1" flipAngle="-27" idleAngle="-330" />
<object name="" type="ramp" sx="165" sy="340" ex="190" ey="340" enterLayer="1" />
<object name="" type="circle" px="195" py="340" radius="5" />
<object name="" type="circle" px="265" py="340" radius="5" />
<object name="" type="bezierBumper" sx="260" sy="340" cx="230" cy="310" ex="200" ey="340" bounce="6" />
<object name="" type="circle" px="405" py="240" radius="5" />
<object name="" type="bezier" sx="370" sy="290" cx="405" cy="270" ex="400" ey="240" />
<object name="" type="flipper" px="370" py="300" length="40" speed="20" dir="-1" flipAngle="-170" idleAngle="141" />
<object name="" type="circle" px="305" py="220" radius="7" />
<object name="" type="bezier" sx="90" sy="300" cx="50" cy="265" ex="50" ey="145" />
<object name="" type="bezier" sx="75" sy="335" cx="30" cy="280" ex="30" ey="145" />
<object name="" type="bezier" sx="35" sy="410" cx="35" cy="355" ex="75" ey="335" />
<object name="" type="bezier" sx="375" sy="305" cx="410" cy="290" ex="410" ey="240" />
<object name="" type="bezier" sx="400" sy="320" cx="435" cy="305" ex="435" ey="255" />
<object name="" type="bezier" sx="410" sy="365" cx="360" cy="340" ex="400" ey="320" />
<object name="" type="bezier" sx="435" sy="405" cx="435" cy="380" ex="410" ey="365" />
<object name="" type="circleEvent" px="455" py="405" radius="5" />
<object name="" type="circleEvent" px="455" py="615" radius="5" />
<object name="" type="line" sx="260" sy="95" ex="260" ey="65" />
<object name="" type="line" sx="230" sy="95" ex="230" ey="65" />
<object name="" type="circle" px="255" py="65" radius="5" />
<object name="" type="circle" px="255" py="95" radius="5" />
<object name="" type="circle" px="225" py="95" radius="5" />
<object name="" type="circle" px="225" py="65" radius="5" />
<object name="" type="lineEvent" sx="220" sy="655" ex="250" ey="655" />
<object name="" type="line" sx="185" sy="90" ex="200" ey="90" />
<object name="" type="bezier" sx="200" sy="60" cx="155" cy="90" ex="185" ey="90" />
<object name="" type="bezier" sx="360" sy="115" cx="370" cy="130" ex="360" ey="130" />
<object name="" type="bezier" sx="280" sy="60" cx="335" cy="65" ex="360" ey="115" />
<object name="" type="line" sx="280" sy="60" ex="280" ey="90" />
<object name="" type="line" sx="250" sy="65" ex="250" ey="95" />
<object name="" type="line" sx="220" sy="65" ex="220" ey="95" />
<object name="" type="line" sx="200" sy="60" ex="200" ey="90" />
<object name="" type="circleBumper" px="240" py="205" radius="25" bounce="6" />
<object name="" type="circleBumper" px="185" py="150" radius="25" bounce="6" />
<object name="" type="circleBumper" px="110" py="125" radius="25" bounce="6" />
<object name="" type="bezier" sx="315" sy="15" cx="180" cy="15" ex="145" ey="65" />
<object name="" type="bezier" sx="75" sy="430" cx="75" cy="410" ex="90" ey="430" />
<object name="" type="bezier" sx="145" sy="540" cx="160" cy="545" ex="150" ey="525" />
<object name="" type="lineBumper" sx="90" sy="430" ex="150" ey="525" bounce="6" />
<object name="" type="line" sx="75" sy="495" ex="145" ey="540" />
<object name="" type="line" sx="75" sy="430" ex="75" ey="495" />
<object name="" type="bezier" sx="335" sy="510" cx="320" cy="535" ex="335" ey="535" />
<object name="" type="bezier" sx="380" sy="430" cx="395" cy="410" ex="395" ey="430" />
<object name="rsling" type="lineBumper" sx="335" sy="510" ex="380" ey="430" bounce="6" />
<object name="" type="line" sx="395" sy="500" ex="335" ey="535" />
<object name="" type="line" sx="395" sy="430" ex="395" ey="500" />
<object name="" type="line" sx="415" sy="515" ex="305" ey="575" />
<object name="" type="line" sx="415" sy="525" ex="415" ey="440" />
<object name="" type="line" sx="315" sy="585" ex="415" ey="525" />
<object name="" type="line" sx="165" sy="575" ex="55" ey="510" />
<object name="" type="line" sx="55" sy="525" ex="155" ey="585" />
<object name="" type="line" sx="55" sy="525" ex="55" ey="445" />
<object name="" type="flipper" px="305" py="585" length="55" speed="30" dir="-1" flipAngle="-153" idleAngle="150" />
<object name="" type="line" sx="55" sy="555" ex="55" ey="570" />
<object name="" type="line" sx="205" sy="670" ex="220" ey="655" />
<object name="" type="line" sx="445" sy="240" ex="435" ey="255" />
<object name="" type="line" sx="435" sy="405" ex="435" ey="555" />
<object name="" type="line" sx="250" sy="655" ex="260" ey="660" />
<object name="" type="line" sx="415" sy="555" ex="250" ey="655" />
<object name="" type="bezier" sx="50" sy="125" cx="50" cy="70" ex="85" ey="70" />
<object name="" type="bezier" sx="475" sy="170" cx="470" cy="15" ex="315" ey="15" />
<object name="" type="line" sx="55" sy="555" ex="220" ey="655" />
<object name="return" type="lineBumper" sx="205" sy="670" ex="210" ey="695" bounce="7" />
<object name="" type="line" sx="415" sy="575" ex="260" ey="660" />
<object name="" type="line" sx="445" sy="570" ex="445" ey="240" />
<object name="" type="line" sx="445" sy="700" ex="445" ey="595" />
<object name="" type="line" sx="35" sy="570" ex="35" ey="410" />
<object name="" type="line" sx="465" sy="695" ex="465" ey="190" />
<object name="ball" type="ball" px="455" py="641" />
<object name="plunger" type="plunger" px="440" py="650" />
</layer>
<layer>
<object name="" type="bezier" sx="430" sy="400" cx="410" cy="420" ex="415" ey="460" />
<object name="" type="bezier" sx="410" sy="390" cx="390" cy="410" ex="395" ey="460" />
<object name="" type="bezier" sx="435" sy="330" cx="435" cy="365" ex="410" ey="390" />
<object name="" type="bezier" sx="455" sy="330" cx="455" cy="375" ex="430" ey="400" />
<object name="" type="ramp" sx="415" sy="460" ex="395" ey="460" enterLayer="0" />
<object name="" type="bezier" sx="280" sy="185" cx="445" cy="185" ex="455" ey="330" />
<object name="" type="bezier" sx="165" sy="340" cx="165" cy="185" ex="280" ey="185" />
<object name="" type="bezier" sx="280" sy="205" cx="425" cy="205" ex="435" ey="330" />
<object name="" type="bezier" sx="190" sy="340" cx="185" cy="205" ex="280" ey="205" />
</layer>
<layer>
<object name="" type="bezier" sx="30" sy="125" cx="30" cy="190" ex="150" ey="200" />
<object name="" type="bezier" sx="50" sy="125" cx="50" cy="165" ex="150" ey="180" />
<object name="" type="bezier" sx="215" sy="260" cx="210" cy="205" ex="150" ey="200" />
<object name="" type="bezier" sx="235" sy="260" cx="235" cy="185" ex="150" ey="180" />
<object name="" type="ramp" sx="75" sy="450" ex="55" ey="450" enterLayer="0" />
<object name="" type="bezier" sx="215" sy="260" cx="55" cy="265" ex="55" ey="450" />
<object name="" type="bezier" sx="225" sy="280" cx="75" cy="285" ex="75" ey="450" />
<object name="" type="bezier" sx="270" sy="340" cx="270" cy="285" ex="225" ey="280" />
<object name="" type="bezier" sx="295" sy="340" cx="295" cy="270" ex="235" ey="260" />
</layer>
</layers>
</table>
With the ramps, it would be better IMO if the ramps didn't propagate into their target layer. You can always put an entrance in both layers if you want a ramp entrance, but as it is there is no way to make an exit-only chute.
Last edited by slight; 05-10-2008 at 09:29 PM.
Signature
-
M.D.
 Originally Posted by slight
This is more an observation than a bug, but wherever a bouncer meets another edge at an acute angle, the ball will often jam in the corner, even if it is only a tiny fraction less than 90 degrees, like at the top and bottom corners of a ' D ' shape. On the table I posted above, you can see it happen if you land a solid shot up the tube on the left side.
yep, this is something I'm working on too, its basically happening because i'm fixing the accuracy of the collision which is also running the velocity resolving function, since the ball doesn't have a perfectly elastic bounce its speed will almost always reach 0, depending on how many fixes is needed. I'm trying to figure out a way around that. If I don't resolve the velocity the ball will keep traveling in roughly the same direction, which is worse imo.
 Originally Posted by slight
With the ramps, it would be better IMO if the ramps didn't propagate into their target layer. You can always put an entrance in both layers if you want a ramp entrance, but as it is there is no way to make an exit-only chute.
yeah, I did consider this, I'll add an attribute which can toggle this on off 
 Originally Posted by slight
I've been messing with this a bit more this morning, seems like the more complex a table gets, the more flipper bugs creep in. Take a look at this one.. =)
wow, thats an amazing table you made there , I think I know whats happening there, its a bug I have struggled with since I first created the flipper, its integrating from the start angle to the end angle of the flipper, there was 180 to -180 angle problems which I thought I had fixed, maybe there's another one, possibly going above 360, because it looks like the player stops for a second while it tries to compute the massive endless loop. I'll check it out tomorrow.
Gotta say again, nice table, I hope my editor was easy to use. Did you find anything quite frustrating when creating the table? something I want to add is layer alpha, so you can still position stuff on new layers with objects on other layers.
-
would be nice shot if you´d get the chance to port it to the nintendo DS,- not sure what your first goal is. But the idea of including a editor for a community to build their own dream pinball tables could be a pretty big hit. It has the flafour of a physic game (like Crysis, HL2, crayon physics,...) with a solid aesthetic package (unlike many shooters who have a to broad mix of many mini games in them [shooting, collecting, talking,...]).
my very personal thoughts (if I´d work on this as well):
Perhaps it would be cool to write a maxscript that reads in the XML data as well and creates a set of splines inside 3dsmax,- a orhtographic camera that is placed on top of it fitting pixel perfect the table within it. Snapping and grid settings would be configured so that it matches the editor ones.
Then on the splines one could start creating a 3d table with some objects - add some textures and render it with some nice lighting.
That rendering could then be loaded as background image within the engine.
-
Most of the problems with the editor are just unfinished things probably.
Groups will make a huge difference, assuming the point is to clone and mirror them as a group.
Probably the only real annoyance is the difficulty selecting control points on small / closely packed objects. Maybe a control-click would work better?
To collapse any points on the same coordinates so that you can move a corner, rather than moving each end separately would be really nice too, maybe include that within groups?
Oh, there are no pins in your pinball! Minimum radius size on circles should be 2, not 5. Even if I edit the XML, the editor resets it to 5. :/
Working around the absence of one-way gates led to a pretty unique table design, heh 
One last little minor gripe... why output xml to a text window when you could just load up the clipboard with one button?
Overall, even with this early editor I find it easier to quickly knock something out in this than in future pinball, fair enough given the simplified 2d nature of your editor, but I think that shows you're really on the right track with it.
Will this editor be available for end users? How do you intend to handle the programmatic side?
Instead of posting xml in here and not being able to edit the post later, here's a link to the latest version: http://www.evilbastard.org/slight/tableConfig.xml
Posting Permissions
- You may not post new threads
- You may not post replies
- You may not post attachments
- You may not edit your posts
-
Forum Rules
|
Click Here to Expand Forum to Full Width
|