  | | | Platformer with physics | Platformer with physics 2004-03-07 - By Geordie Moffatt
Back Try attaching a strong Angular Dashpot to the objects in the havok scene. They can still be moved but their angles are constrained to the objects original orientation. You'll never get the object to stay completely level, but close enough. I'm writing a First person engine using havok to handle all interaction, the collision for the characters are cylinders with angular dashpots applied. This way when you apply a force to a character it stays upright instead of rolling around. I found bevelling the top and bottom of the collision objects helps a lot with climbing gradients etc.
Seeyas,
GM
-- -- Original Message -- -- From: Jonas Beckeman To: dir3d-l@(protected) Sent: Monday, March 08, 2004 3:46 AM Subject: [Dir3d-l] [X-POST] Platformer with physics
I've just started writing a generic platform game engine, a project which is going to be a test for my C#/Director environment as well as some Shockwave games.
To get started quickly, I run a Havok simulation in the background that handles the physics. Of course, I'll have to move away from that solution when porting, but I think I'll use it a while. I haven't used Havok before, and there's one problem with my current simple setup.
Some properties of what I've got now:
* Levels built from bezier curves, converted to mesh
* Allow for Sonic-like gameplay (running in loops etc)
* Balls and boxes that can be moved around, slide on slopes.
Using standard Havok, moving boxes over edges makes them tip and tumble, which doesn't feel very platform-game-like. I'd like them to stay until their whole base is over the edge, then drop without rotating. I've got some ideas, but they'll probably take me quite a while to evaluate.
Anyone solved such a problem? Anyone that is a few hundred dollars from a solution? I can specify further if someone's interested.
/Jonas
-- ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- -----
__ ____ ____ ____ ____ ____ ____ ____ ____ ____ Dir3d-l mailing list Dir3d-l@(protected) http://nuttybar.drama.uga.edu/mailman/listinfo/dir3d-l
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"> <HTML xmlns="http://www.w3.org/TR/REC-html40" xmlns:o = "urn:schemas-microsoft-com:office:office" xmlns:w = "urn:schemas-microsoft-com:office:word"><HEAD> <META http-equiv=Content-Type content="text/html; charset=iso-8859 (See http://iso-8859.ora-code.com)-1"> <META content=Word.Document name=ProgId> <META content="MSHTML 6.00.2800.1226" name=GENERATOR> <META content="Microsoft Word 10" name=Originator><LINK href="cid:filelist.xml@(protected)" rel=File-List><!--[if gte mso 9]><xml> <o:OfficeDocumentSettings> <o:DoNotRelyOnCSS/> </o:OfficeDocumentSettings> </xml><![endif]--><!--[if gte mso 9]><xml> <w:WordDocument> <w:SpellingState>Clean</w:SpellingState> <w:GrammarState>Clean</w:GrammarState> <w:DocumentKind>DocumentEmail</w:DocumentKind> <w:HyphenationZone>21</w:HyphenationZone> <w:EnvelopeVis/> <w:Compatibility> <w:BreakWrappedTables/> <w:SnapToGridInCell/> <w:WrapTextWithPunct/> <w:UseAsianBreakRules/> </w:Compatibility> <w:BrowserLevel>MicrosoftInternetExplorer4</w:BrowserLevel> </w:WordDocument> </xml><![endif]--> <STYLE>@(protected) Section1 {size: 612.0pt 792.0pt; margin: 70.85pt 70.85pt 70.85pt 70.85pt; mso-header-margin: 36.0pt; mso-footer-margin: 36.0pt; mso-paper-source : 0; } P.MsoNormal { FONT-SIZE: 12pt; MARGIN: 0cm 0cm 0pt; FONT-FAMILY: "Times New Roman"; mso -style-parent: ""; mso-pagination: widow-orphan; mso-fareast-font-family: "Times New Roman" } LI.MsoNormal { FONT-SIZE: 12pt; MARGIN: 0cm 0cm 0pt; FONT-FAMILY: "Times New Roman"; mso -style-parent: ""; mso-pagination: widow-orphan; mso-fareast-font-family: "Times New Roman" } DIV.MsoNormal { FONT-SIZE: 12pt; MARGIN: 0cm 0cm 0pt; FONT-FAMILY: "Times New Roman"; mso -style-parent: ""; mso-pagination: widow-orphan; mso-fareast-font-family: "Times New Roman" } A:link { COLOR: blue; TEXT-DECORATION: underline; text-underline: single } SPAN.MsoHyperlink { COLOR: blue; TEXT-DECORATION: underline; text-underline: single } A:visited { COLOR: purple; TEXT-DECORATION: underline; text-underline: single } SPAN.MsoHyperlinkFollowed { COLOR: purple; TEXT-DECORATION: underline; text-underline: single } SPAN.E-postmall17 { COLOR: windowtext; FONT-FAMILY: Arial; mso-style-type: personal-compose; mso -style-noshow: yes; mso-ansi-font-size: 10.0pt; mso-bidi-font-size: 10.0pt; mso -ascii-font-family: Arial; mso-hansi-font-family: Arial; mso-bidi-font-family: Arial } SPAN.SpellE { mso-style-name: ""; mso-spl-e: yes } SPAN.GramE { mso-style-name: ""; mso-gram-e: yes } DIV.Section1 { page: Section1 } </STYLE> <!--[if gte mso 10]> <style> /* Style Definitions */ table.MsoNormalTable {mso-style-name:"Normal tabell"; mso-tstyle-rowband-size:0; mso-tstyle-colband-size:0; mso-style-noshow:yes; mso-style-parent:""; mso-padding-alt:0cm 5.4pt 0cm 5.4pt; mso-para-margin:0cm; mso-para-margin-bottom:.0001pt; mso-pagination:widow-orphan; font-size:10.0pt; font-family:"Times New Roman";} </style> <![endif]--></HEAD> <BODY lang=SV style="tab-interval: 65.2pt" vLink=purple link=blue bgColor=#ffffff> <DIV><FONT face=Arial size=2>Try attaching a strong Angular Dashpot to the objects in the havok scene. They can still be moved but their angles are constrained to the objects original orientation. You'll never get the object to stay completely level, but close enough. I'm writing a First person engine using havok to handle all interaction, the collision for the characters are cylinders with angular dashpots applied. This way when you apply a force to a character it stays upright instead of rolling around. I found bevelling the top and bottom of the collision objects helps a lot with climbing gradients etc. </FONT></DIV> <DIV> </DIV> <DIV><FONT face=Arial size=2>Seeyas,</FONT></DIV> <DIV> </DIV> <DIV><FONT face=Arial size=2>GM</FONT></DIV> <DIV><FONT face=Arial size=2></FONT> </DIV> <BLOCKQUOTE style="PADDING-RIGHT: 0px; PADDING-LEFT: 5px; MARGIN-LEFT: 5px; BORDER-LEFT: #000000 2px solid; MARGIN-RIGHT: 0px"> <DIV style="FONT: 10pt arial">-- -- Original Message -- -- </DIV> <DIV style="BACKGROUND: #e4e4e4; FONT: 10pt arial; font-color: black"><B>From:</B> <A title=list@(protected) href="mailto:list@(protected)">Jonas Beckeman</A> </DIV> <DIV style="FONT: 10pt arial"><B>To:</B> <A title=dir3d-l@(protected) href="mailto:dir3d-l@(protected)">dir3d-l@(protected)< /A> </DIV> <DIV style="FONT: 10pt arial"><B>Sent:</B> Monday, March 08, 2004 3:46 AM</DIV> <DIV style="FONT: 10pt arial"><B>Subject:</B> [Dir3d-l] [X-POST] Platformer with physics</DIV> <DIV><BR></DIV> <DIV class=Section1> <P class=MsoNormal style="mso-layout-grid-align: none"><SPAN class=SpellE><FONT face="Courier New" size=2><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'">I've</SPAN></FONT></SPAN> <FONT face="Courier New" size=2><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'"> just <SPAN class=SpellE>started</SPAN> <SPAN class=SpellE>writing</SPAN> a <SPAN class=SpellE>generic</SPAN> <SPAN class=SpellE>platform</SPAN> game <SPAN class=SpellE>engine</SPAN>, a <SPAN class=SpellE>project</SPAN> <SPAN class=SpellE>which</SPAN> is going to be a test for my C#/Director <SPAN class=SpellE>environment</SPAN> as <SPAN class=SpellE>well</SPAN> as <SPAN class=SpellE>some</SPAN> <SPAN class=SpellE>Shockwave</SPAN> games.<o:p></o:p></SPAN></FONT></P> <P class=MsoNormal style="mso-layout-grid-align: none"><FONT face="Courier New" size=2><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'"><o:p> </o:p></SPAN>< /FONT></P> <P class=MsoNormal style="mso-layout-grid-align: none"><SPAN class=GramE> <FONT face="Courier New" size=2><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'">To get <SPAN class=SpellE>started</SPAN> <SPAN class=SpellE>quickly</SPAN>, I <SPAN class=SpellE>run</SPAN> a <SPAN class=SpellE>Havok</SPAN> simulation in the <SPAN class=SpellE>background</SPAN> that <SPAN class=SpellE>handles</SPAN> the <SPAN class=SpellE>physics</SPAN>. Of <SPAN class=SpellE>course</SPAN>, <SPAN class=SpellE>I'll</SPAN> <SPAN class=SpellE>have</SPAN> to <SPAN class=SpellE>move</SPAN> <SPAN class=SpellE>away</SPAN> from that solution <SPAN class=SpellE>when</SPAN> <SPAN class=SpellE>porting</SPAN>, <SPAN class=SpellE>but</SPAN> I <SPAN class=SpellE>think</SPAN> <SPAN class=SpellE>I'll</SPAN> <SPAN class=SpellE>use</SPAN> it a <SPAN class=SpellE>while</SPAN>. </SPAN></FONT></SPAN><FONT face="Courier New" size=2><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'">I <SPAN class=SpellE>haven't</SPAN> <SPAN class=SpellE>used</SPAN> <SPAN class=SpellE>Havok</SPAN> <SPAN class=SpellE>before</SPAN>, and <SPAN class=SpellE>there's</SPAN> <SPAN class=SpellE>one</SPAN> problem with my <SPAN class=SpellE>current</SPAN> simple <SPAN class=SpellE>setup</SPAN>.<o:p></o:p></SPAN></FONT></P> <P class=MsoNormal style="mso-layout-grid-align: none"><FONT face="Courier New" size=2><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'"><o:p> </o:p></SPAN>< /FONT></P> <P class=MsoNormal style="mso-layout-grid-align: none"><SPAN class=SpellE><FONT face="Courier New" size=2><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'">Some</SPAN></FONT></SPAN> <FONT face="Courier New" size=2><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'"> <SPAN class=SpellE>properties</SPAN> of <SPAN class=SpellE>what</SPAN> <SPAN class=SpellE>I've</SPAN> got <SPAN class=SpellE>now</SPAN>:<o:p></o:p></SPAN></FONT></P> <P class=MsoNormal style="mso-layout-grid-align: none"><FONT face="Courier New" size=2><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'">* <SPAN class=SpellE>Levels</SPAN> <SPAN class=SpellE>built</SPAN> from <SPAN class=SpellE>bezier</SPAN> <SPAN class=SpellE>curves</SPAN>, <SPAN class=SpellE>converted</SPAN> to <SPAN class=SpellE>mesh</SPAN><o:p></o:p></SPAN></FONT></P> <P class=MsoNormal style="mso-layout-grid-align: none"><FONT face="Courier New" size=2><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'">* <SPAN class=SpellE>Allow</SPAN> for <SPAN class=SpellE>Sonic-like</SPAN> <SPAN class=SpellE>gameplay</SPAN> (<SPAN class=SpellE>running</SPAN> in loops <SPAN class=SpellE>etc</SPAN>)<o:p></o:p></SPAN></FONT></P> <P class=MsoNormal style="mso-layout-grid-align: none"><FONT face="Courier New" size=2><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'">* Balls and <SPAN class=SpellE>boxes</SPAN> that <SPAN class=SpellE>can</SPAN> be <SPAN class=SpellE>moved</SPAN> <SPAN class=SpellE>around</SPAN>, slide on <SPAN class=SpellE>slopes</SPAN>.<o:p></o:p></SPAN></FONT></P> <P class=MsoNormal style="mso-layout-grid-align: none"><FONT face="Courier New" size=2><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'"><o:p> </o:p></SPAN>< /FONT></P> <P class=MsoNormal style="mso-layout-grid-align: none"><SPAN class=SpellE><FONT face="Courier New" size=2><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'">Using</SPAN></FONT></SPAN ><FONT face="Courier New" size=2><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'"> standard <SPAN class=SpellE>Havok</SPAN>, <SPAN class=SpellE>moving</SPAN> <SPAN class=SpellE>boxes</SPAN> over <SPAN class=SpellE>edges</SPAN> makes <SPAN class=SpellE>them</SPAN> <SPAN class=SpellE>tip</SPAN> and <SPAN class=SpellE>tumble</SPAN>, <SPAN class=SpellE>which</SPAN> <SPAN class=SpellE>doesn't</SPAN> <SPAN class=SpellE>feel</SPAN> <SPAN class=SpellE>very</SPAN> <SPAN class=SpellE>platform-game-like</SPAN>. <SPAN class=SpellE>I'd</SPAN> like <SPAN class=SpellE>them</SPAN> to <SPAN class=SpellE>stay</SPAN> <SPAN class=SpellE>until</SPAN> <SPAN class=SpellE>their</SPAN> <SPAN class=SpellE>whole</SPAN> <SPAN class=SpellE>base</SPAN> is over the <SPAN class=SpellE><SPAN class=GramE>edge</SPAN></SPAN>, <SPAN class=SpellE>then</SPAN> drop <SPAN class=SpellE>without</SPAN> <SPAN class=SpellE>rotating</SPAN>. <SPAN class=SpellE>I've</SPAN> got <SPAN class=SpellE>some</SPAN> <SPAN class=SpellE>ideas</SPAN>, <SPAN class=SpellE>but</SPAN> <SPAN class=SpellE>they'll</SPAN> <SPAN class=SpellE>probably</SPAN> <SPAN class=SpellE>take</SPAN> <SPAN class=SpellE>me</SPAN> <SPAN class=SpellE>quite</SPAN> a <SPAN class=SpellE>while</SPAN> to <SPAN class=SpellE>evaluate</SPAN>.<o:p></o:p></SPAN></FONT></P> <P class=MsoNormal style="mso-layout-grid-align: none"><FONT face="Courier New" size=2><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'"><o:p> </o:p></SPAN>< /FONT></P> <P class=MsoNormal style="mso-layout-grid-align: none"><SPAN class=SpellE><SPAN class=GramE><FONT face="Courier New" size=2><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'">Anyone</SPAN></FONT>< /SPAN></SPAN><SPAN class=GramE><FONT face="Courier New" size=2><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'"> <SPAN class=SpellE>solved</SPAN> <SPAN class=SpellE>such</SPAN> a problem? </SPAN></FONT></SPAN><SPAN class=SpellE><FONT face="Courier New" size=2><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'">Anyone</SPAN></FONT>< /SPAN><FONT face="Courier New" size=2><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'"> that is a <SPAN class=SpellE>few</SPAN> <SPAN class=SpellE>hundred</SPAN> dollars from a solution? <SPAN class=GramE>I <SPAN class=SpellE>can</SPAN> <SPAN class=SpellE>specify</SPAN> <SPAN class=SpellE>further</SPAN> <SPAN class=SpellE>if</SPAN> <SPAN class=SpellE>someone's</SPAN> <SPAN class=SpellE>interested</SPAN>.</SPAN><o:p></o:p></SPAN></FONT></P> <P class=MsoNormal style="mso-layout-grid-align: none"><FONT face="Courier New" size=2><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'"><o:p> </o:p></SPAN>< /FONT></P> <P class=MsoNormal style="mso-layout-grid-align: none"><FONT face="Courier New" size=2><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'">/Jonas<o:p></o:p></SPAN>< /FONT></P></DIV> <P> <HR>
<P></P>__ ____ ____ ____ ____ ____ ____ ____ ____ ____<BR>Dir3d-l mailing list<BR>Dir3d-l@(protected)<BR>http://nuttybar.drama.uga.edu /mailman/listinfo/dir3d-l<BR></BLOCKQUOTE></BODY></HTML>
__ ____ ____ ____ ____ ____ ____ ____ ____ ____ Dir3d-l mailing list Dir3d-l@(protected) http://nuttybar.drama.uga.edu/mailman/listinfo/dir3d-l
|
|
 |