  | | | Platformer with physics | Platformer with physics 2004-03-07 - By Jonas Beckeman
Back 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
<html xmlns:o="urn:schemas-microsoft-com:office:office" xmlns:w="urn:schemas -microsoft-com:office:word" xmlns="http://www.w3.org/TR/REC-html40">
<head> <META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=us-ascii">
<meta name=ProgId content=Word.Document> <meta name=Generator content="Microsoft Word 10"> <meta name=Originator content="Microsoft Word 10"> <link rel=File-List href="cid:filelist.xml@(protected)"> <!--[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> <!-- /* Style Definitions */ p.MsoNormal, li.MsoNormal, div.MsoNormal {mso-style-parent:""; margin:0cm; margin-bottom:.0001pt; mso-pagination:widow-orphan; font-size:12.0pt; font-family:"Times New Roman"; mso-fareast-font-family:"Times New Roman";} a:link, span.MsoHyperlink {color:blue; text-decoration:underline; text-underline:single;} a:visited, span.MsoHyperlinkFollowed {color:purple; text-decoration:underline; text-underline:single;} span.E-postmall17 {mso-style-type:personal-compose; mso-style-noshow:yes; mso-ansi-font-size:10.0pt; mso-bidi-font-size:10.0pt; font-family:Arial; mso-ascii-font-family:Arial; mso-hansi-font-family:Arial; mso-bidi-font-family:Arial; color:windowtext;} span.SpellE {mso-style-name:""; mso-spl-e:yes;} span.GramE {mso-style-name:""; mso-gram-e:yes;} @(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;} 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 link=blue vlink=purple style='tab-interval:65.2pt'>
<div class=Section1>
<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span class=SpellE><font size=2 face="Courier New"><span style='font-size:10.0pt; font-family:"Courier New"'>I've</span></font></span><font size=2 face="Courier New"><span style='font-size:10.0pt;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;text-autospace:none'><font size=2 face="Courier New"><span style='font-size:10.0pt;font-family:"Courier New"'><o:p> </o:p></span></font></p>
<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span class=GramE><font size=2 face="Courier New"><span style='font-size:10.0pt; 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 size=2 face="Courier New"><span style='font-size: 10.0pt;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;text-autospace:none'><font size=2 face="Courier New"><span style='font-size:10.0pt;font-family:"Courier New"'><o:p> </o:p></span></font></p>
<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span class=SpellE><font size=2 face="Courier New"><span style='font-size:10.0pt; font-family:"Courier New"'>Some</span></font></span><font size=2 face="Courier New"><span style='font-size:10.0pt;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;text-autospace:none'><font size=2 face="Courier New"><span style='font-size:10.0pt;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;text-autospace:none'><font size=2 face="Courier New"><span style='font-size:10.0pt;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;text-autospace:none'><font size=2 face="Courier New"><span style='font-size:10.0pt;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;text-autospace:none'><font size=2 face="Courier New"><span style='font-size:10.0pt;font-family:"Courier New"'><o:p> </o:p></span></font></p>
<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span class=SpellE><font size=2 face="Courier New"><span style='font-size:10.0pt; font-family:"Courier New"'>Using</span></font></span><font size=2 face="Courier New"><span style='font-size:10.0pt;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;text-autospace:none'><font size=2 face="Courier New"><span style='font-size:10.0pt;font-family:"Courier New"'><o:p> </o:p></span></font></p>
<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><span class=SpellE><span class=GramE><font size=2 face="Courier New"><span style='font-size:10.0pt;font-family:"Courier New"'>Anyone</span></font></span>< /span><span class=GramE><font size=2 face="Courier New"><span style='font-size:10.0pt; font-family:"Courier New"'> <span class=SpellE>solved</span> <span class=SpellE>such</span> a problem? </span></font></span><span class=SpellE> <font size=2 face="Courier New"><span style='font-size:10.0pt;font-family:"Courier New"'>Anyone</span></font></span><font size=2 face="Courier New"><span style='font-size:10.0pt;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;text-autospace:none'><font size=2 face="Courier New"><span style='font-size:10.0pt;font-family:"Courier New"'><o:p> </o:p></span></font></p>
<p class=MsoNormal style='mso-layout-grid-align:none;text-autospace:none'><font size=2 face="Courier New"><span style='font-size:10.0pt;font-family:"Courier New"'>/Jonas<o:p></o:p></span></font></p>
</div>
</body>
</html>
__ ____ ____ ____ ____ ____ ____ ____ ____ ____ Dir3d-l mailing list Dir3d-l@(protected) http://nuttybar.drama.uga.edu/mailman/listinfo/dir3d-l
|
|
 |