<?xml version="1.0" encoding="utf-8" ?>
<rss version="2.0"
    xmlns:dc="http://purl.org/dc/elements/1.1/"
    xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
    xmlns:admin="http://webns.net/mvcb/"
    xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
    xmlns:content="http://purl.org/rss/1.0/modules/content/">
    
    <channel>
    
    <title>General Discussion</title>
    <link>http://davidseah.com/forums/</link>
    <description>General Discussion</description>
    <dc:language>en</dc:language>
    <dc:rights>Copyright 2008</dc:rights>
    <dc:date>2008-10-05T23:21:12-05:00</dc:date>
    <admin:generatorAgent rdf:resource="http://expressionengine.com/" />
    

    <item>
      <title>Nice models and free models, new site!</title>
      <link>http://davidseah.com/forums/viewthread/14/</link>
      <guid>http://davidseah.com/forums/viewthread/14/#When:22:12:50Z</guid>
      <description>&lt;p&gt;Hey there!
We&apos;ve just started a small 3d model site which would be cool for your game development:&lt;/p&gt;

&lt;p&gt;&lt;a href=&quot;http://www.3d4ya.com&quot;&gt;http://www.3d4ya.com&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;We have free real&#45;time models like this:&lt;/p&gt;

&lt;p&gt;&lt;a href=&quot;http://img525.imageshack.us/img525/3223/x0207bsn1.jpg&quot;&gt;http://img525.imageshack.us/img525/3223/x0207bsn1.jpg&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href=&quot;http://img295.imageshack.us/img295/2056/x020xbqz8.jpg&quot;&gt;http://img295.imageshack.us/img295/2056/x020xbqz8.jpg&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href=&quot;http://img300.imageshack.us/img300/2527/copyofx0202beb7.jpg&quot;&gt;http://img300.imageshack.us/img300/2527/copyofx0202beb7.jpg&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href=&quot;http://img525.imageshack.us/img525/4761/copyofx0205bei2.jpg&quot;&gt;http://img525.imageshack.us/img525/4761/copyofx0205bei2.jpg&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;and others:&lt;/p&gt;

&lt;p&gt;&lt;a href=&quot;http://img177.imageshack.us/img177/5711/x0301brx5.jpg&quot;&gt;http://img177.imageshack.us/img177/5711/x0301brx5.jpg&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href=&quot;http://img523.imageshack.us/img523/9731/x0102bys4.jpg&quot;&gt;http://img523.imageshack.us/img523/9731/x0102bys4.jpg&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href=&quot;http://img177.imageshack.us/img177/2812/x0601bro6.jpg&quot;&gt;http://img177.imageshack.us/img177/2812/x0601bro6.jpg&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href=&quot;http://img257.imageshack.us/img257/2262/x0701bhn9.jpg&quot;&gt;http://img257.imageshack.us/img257/2262/x0701bhn9.jpg&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Developers always need model, so we try our best to make as many free model as we can and hope they might help you!
New products are available every week, we kindly invite you to visit 3d4ya.com frequently to check them out!
Sorry if you find it annoying.&lt;/p&gt;

&lt;p&gt;3d4ya.com&lt;/p&gt;

</description>
      <dc:date>2008-09-05T22:12:50-05:00</dc:date>
    </item>

    <item>
      <title>Getting Started with XNA</title>
      <link>http://davidseah.com/forums/viewthread/5/</link>
      <guid>http://davidseah.com/forums/viewthread/5/#When:13:33:37Z</guid>
      <description>&lt;p&gt;I&apos;m not clear on what I need to do to use XNA instead of MDX. If there is a time to do it, I suppose right now is the time. Anyone have some pointers? I would prefer to use Microsoft Visual Studio 2005 for the development; my understanding is that there are betas of XNA Game Studio or whatever it&apos;s called, but it&apos;s not geared toward professional development. Does that matteR?&lt;/p&gt;

</description>
      <dc:date>2008-01-07T13:33:37-05:00</dc:date>
    </item>

    <item>
      <title>3D Math</title>
      <link>http://davidseah.com/forums/viewthread/13/</link>
      <guid>http://davidseah.com/forums/viewthread/13/#When:12:37:53Z</guid>
      <description>&lt;p&gt;One thing I need to do right now is convert from our camera input space (&#45;1 to 1) to 3D space. The current prototype is using a 3D perspective world, so converting the 2D cursor to a point on a plane in 3D space will require the use of the ViewPort.Unproject() method, which is apparently broken in some cases.&lt;/p&gt;

&lt;p&gt;&lt;a href=&quot;http://forums.xna.com/forums/p/10940/57432.aspx&quot;&gt;This thread&lt;/a&gt; on the XNA forums provides a replacement function, which I&apos;m going to use.&lt;/p&gt;

</description>
      <dc:date>2008-08-19T12:37:53-05:00</dc:date>
    </item>

    <item>
      <title>Shaders</title>
      <link>http://davidseah.com/forums/viewthread/11/</link>
      <guid>http://davidseah.com/forums/viewthread/11/#When:08:56:12Z</guid>
      <description>&lt;p&gt;It&apos;s been a few months since I&apos;ve posted, and the status of the project is &quot;slowly building&quot;. I&apos;ve started a second pass, after a longish hiatus, building up the fundamentals again,this time making them work a little cleaner together.&lt;/p&gt;

&lt;p&gt;Our initial pass, designed for quick prototyping so we could really test the motion&#45;tracking camera system, was based entirely on using the BasicEffect fixed function pipeline. We could draw models. We also used SpriteBatch to draw our graphical representations of pieces (called &quot;visuals&quot; in our nomenclature), but these use a different coordinate system than our model space. As a result, everything is kind of a mess. Our physics and collision detection was hacked together out of some rather simplistic assumptions I made about impulses. It worked, mostly, but not reliably in all cases. Still, we were able to test a 80% scale system in a museum space.&lt;/p&gt;

&lt;p&gt;The second pass, which I&apos;m doing now, is more carefully achitected, but I&apos;m also now learning more details about how the graphics device draws. It&apos;s actually pretty simple at the lowest level: lists of triangles get rendered by the graphics device. You set up various buffers that contain vertex data, and then tell the graphic device to draw it through an Effect. Effects are essentially programs that convert the vertex data into the filled, shaded 3D shapes projected on the screen.&lt;/p&gt;

&lt;p&gt;The learning problem: shaders are mysterious black boxes to me, and they are quite varied. BasicEffect, which implements an approximation of the &quot;fixed function pipeline&quot; of older versions of Direct3D, is good enough for drawing textured, lit models, but it doesn&apos;t do fancy stuff that we&apos;d like. To do that, you have to get into using custom Effects, which in essence means you need to learn how to write a shader using a language called HLSL (High Level Shading Language). This is a significant jump. Unfortunately, there is no shader source code available for BasicEffect, which would have been WONDERFUL for people learning how to write shaders who started learning the guts of XNA with the built&#45;in Model code.&lt;/p&gt;

&lt;p&gt;I found this list of &lt;a href=&quot;http://catalinzima.spaces.live.com/blog/cns3D9ECAE1F2DC56EF316.entry&quot;&gt;HLSL Shader Resources&lt;/a&gt;, which I&apos;m starting to work through. My immediate challenge is just to draw a per&#45;pixel opaque texture map onto a quad, which will complete the implementation of my VSprite3D visual class. This is not supported by BasicEffect. So I&apos;m looking for a good starting bit of code that I can just drop in as&#45;is.&lt;/p&gt;

</description>
      <dc:date>2008-07-18T08:56:12-05:00</dc:date>
    </item>

    <item>
      <title>Architecting Pass 1</title>
      <link>http://davidseah.com/forums/viewthread/9/</link>
      <guid>http://davidseah.com/forums/viewthread/9/#When:16:24:32Z</guid>
      <description>&lt;p&gt;Now that some basic XNA is in place, I can start to think about architecture. I&apos;m going to use something like the following top&#45;level objects:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;HumanPlayer &#45; manages pieces representing entities controlled by human players via the CameraTracker&lt;/li&gt;
&lt;li&gt;DenizenPlayer &#45; manages non&#45;player pieces in the world (AI)&lt;/li&gt;
&lt;li&gt;WorldPlayer &#45; manages environment pieces like the world grid, buildings, and the like&lt;/li&gt;
&lt;li&gt;Simulator &#45; calculates physical interactions with the world and between pieces (physics simulation, such as it is)&lt;/li&gt;
&lt;li&gt;GameRef &#45; the state manager for game &quot;logic&quot; (win/lose conditions, turns) based on pieces, simulator results, and game state&lt;/li&gt;
&lt;li&gt;GameState &#45; the current state of the game (points per side, etc)&lt;/li&gt;
&lt;li&gt;GameController &#45; the XNA Game object, renamed, handling high&#45;level game start/stop/running.&lt;/li&gt;
&lt;li&gt;GameHUD &#45; the GUI overlay for the game&lt;/li&gt;
&lt;li&gt;PieceWrangler &#45; utility class for handling all the pieces in the game as groups between players&lt;/li&gt;
&lt;li&gt;SoundMgr &#45; manages environmental sound from pieces and the world&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Player classes manipulate Pieces, which are representations of the various &quot;self&#45;determining&quot; entities in the game. Pieces possess the following kinds of information at minimum:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Physical Properties for use by Simulator: position, direction, velocity, geometry, size&lt;/li&gt;
&lt;li&gt;Visual representation (model) &lt;/li&gt;
&lt;li&gt;Life state (spawning, alive, dying, dead)&lt;/li&gt;
&lt;li&gt;Helper methods for related to managing the above three classes of properties&lt;/li&gt;
&lt;li&gt;AI&#45;relevant data: Current &quot;State of Mind&quot; and &quot;Intention&quot; in subclasses&lt;/li&gt;
&lt;li&gt;Other &quot;piece type specific&quot; data in subclasses&lt;/li&gt;
&lt;li&gt;Update() and Draw() methods&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Player classes also implement Update() and Draw(). Each Player class maintain a list of managed pieces.&lt;/p&gt;

&lt;p&gt;The GameController class, which is the root&#45;level object, essentially will call the following loop:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Player.Update(gameTime) on each Player class so each Player can update its pieces&lt;/li&gt;
&lt;li&gt;Simulator.Update(gameTime) tells all player pieces how to update their physical properties&lt;/li&gt;
&lt;li&gt;GameRef.Update(gameTime) examines the state of all Player and Piece classes, and changes their states accordingly. Also sets GameState for inspection by GameHUD and GameController&lt;/li&gt;
&lt;li&gt;All players Draw() in order of World, Denizens, and Players&lt;/li&gt;
&lt;li&gt;GameHUD.Draw()&lt;/li&gt;
&lt;li&gt;Loop&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The actual loop may be more complicated than this to handle tricky interdependencies, but this is the basic idea.&lt;/p&gt;

</description>
      <dc:date>2008-02-20T16:24:32-05:00</dc:date>
    </item>

    <item>
      <title>Study Group Announcements</title>
      <link>http://davidseah.com/forums/viewthread/6/</link>
      <guid>http://davidseah.com/forums/viewthread/6/#When:21:17:52Z</guid>
      <description>&lt;p&gt;First of all, I&apos;ve started adding my notes to the public wiki: &lt;a href=&quot;http://davidseah.com/publiki/GameDev&#45;Study&#45;Group/&quot;&gt;GameDev Study Group&lt;/a&gt;. Your forum registration also applies to the public wiki, so you can freely add and edit the information there.&lt;/p&gt;

&lt;p&gt;In other news, I&apos;m starting to talk to some other area people who are interested, and we&apos;re talking about getting together somewhere.&lt;/p&gt;

</description>
      <dc:date>2008-01-07T21:17:52-05:00</dc:date>
    </item>

    <item>
      <title>Getting Started with Managed Direct X 1.1</title>
      <link>http://davidseah.com/forums/viewthread/4/</link>
      <guid>http://davidseah.com/forums/viewthread/4/#When:13:30:56Z</guid>
      <description>&lt;p&gt;I started with MDX about a month ago, working through the documentation to first get a feel for the architecture of Direct 3D. I don&apos;t need ultra high 3D performance, so using C# and managed code would theoretically pay off in the long run. My programming partner is not an experience C++ programmer either and comes from a visual languages background on the Mac, but we did work on a big Actionscript 2 project, so he&apos;s familiar with OOP. C# should feel familiar.&lt;/p&gt;

&lt;p&gt;Anyway, here&apos;s what I got started doing:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Installing Visual Studio 2005 &#45; this is going to be our dev platform for the entire project&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Installing DirectX SDK from August 2007, the last stable release version with the MDX 1.1 stuff still in it.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Compiled the sample code to see if it worked.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Created a simple model in Modo, exported to .X format.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Tried to add mesh loading code to EmptyProject sample code, to test if I understood it correctly. It did not work.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Tried  loading my .X mesh using a modifed version of &quot;Enhanced Mesh&quot; sample code. This did work.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Currently, I am trying to figure out what I did wrong in importing Mesh loading code from &quot;Enhanced Mesh&quot;. I am missing something.&lt;/p&gt;

</description>
      <dc:date>2008-01-07T13:30:56-05:00</dc:date>
    </item>

    <item>
      <title>Dave&#8217;s Phase 0 Goals</title>
      <link>http://davidseah.com/forums/viewthread/3/</link>
      <guid>http://davidseah.com/forums/viewthread/3/#When:12:34:31Z</guid>
      <description>&lt;p&gt;I&apos;ve made a preliminary study of Direct3D 9 concepts, and understand it to comprise of two parts: core rendering, and support utilities. Core rendering is in the directx.direct3d namespace, and the support utilities are in directx.direct3dx namespace.&lt;/p&gt;

&lt;p&gt;Direct3D essentially renders lists of triangles, which themselves are collections of vertices in 3D space. Direct3D is a scanline renderer that uses vertex information to help draw the semblance of smoothly&#45;rounded geometry. The concepts are very similar to old 3D polygon modeling programs like 3D Studio (the DOS version).&lt;/p&gt;

&lt;p&gt;Each polygon/triangle that&apos;s rendered can have a Material applied to it, which is a struct that defines surface properties related to the scanline rendering algorithms being used to draw it. Texturing, which is the application of a bitmap to the polygon based on interpolated texture coordinates (the so&#45;called UVs) between vertices, is a separate operation.&lt;/p&gt;

&lt;p&gt;Direct3D programming consists of managing vertex and texture buffers. It also includes enabling/disabling certain features of the core renderer for multiple passes to get the shiny effects we like to see. Closely tied to all this is the notion of Shaders, which are new to me. Shaders are what are used to actually translate the abstract world of polygons and vertices and texture coordinates into what you see on the screen. There is no longer any &quot;fixed function&quot; rendering path (I guess there are default ones). So to make pretty graphics, you must collect a bunch of shaders to actually see something on the screen.&lt;/p&gt;

&lt;p&gt;In addition to polygons, there are other entities such as the world space and the camera, light sources, and surface properties of the triangles. The mechanics of drawing to the screen hardware itself are fairly cut and dry...surfaces, flipping, locking memory.&lt;/p&gt;

&lt;p&gt;NOW, what&apos;s interesting is that there is a WHOLE ARTIST WORKFLOW that I need to work out, from modeling program (I&apos;m using Modo) to importing into a usable format. This is the point I&apos;m at: figuring out how to do it. I was looking for some nice plug and chug code solutions, but I have come to the conclusion that I need to really get a little deeper and learn the innards. Fortunately, the innards are fairly well documented; they are just poorly organized, scattered, and lacking in important supplementary information. There is a huge gap here that I need to fill.&lt;/p&gt;

</description>
      <dc:date>2008-01-07T12:34:31-05:00</dc:date>
    </item>

    <item>
      <title>The Goal: Create Realtime Graphics Systems using DirectX and Managed Code</title>
      <link>http://davidseah.com/forums/viewthread/1/</link>
      <guid>http://davidseah.com/forums/viewthread/1/#When:16:12:59Z</guid>
      <description>&lt;p&gt;Hey y&apos;all!&lt;/p&gt;

&lt;p&gt;I just set up this forum so we have a place to discuss what we&apos;re doing, coordinate meetups, and share our collective knowledge. I&apos;m planning on taking the best from this and other discussions to put in the site &lt;a href=&quot;http://davidseah.com/publiki&quot;&gt;Public Wiki&lt;/a&gt;, which as registered members is editable by all.&lt;/p&gt;

&lt;p&gt;There are two types of participants I think we&apos;ll have: &lt;b&gt;contributors&lt;/b&gt; who are actively creating code, documentation, and digestible insights, and &lt;b&gt;subscribers&lt;/b&gt; who are maybe not technical but are interested in watching what we do and making a comment every once in a while.&lt;/p&gt;

&lt;p&gt;The reason I&apos;m starting this study group is because &lt;b&gt;I need it&lt;/b&gt; to maintain momentum on a big interactive project we&apos;re putting together for a museum. Game development and systems architecture is familiar to me because of my stint in the game industry, but my knowledge base regarding 3D programming with APIs like DirectX and Windows programming in general will need to be built from scratch. There is a lot of material out there on game programming, but very little of it has the quality of being concise yet comprehensive. In the process of getting this group going, I hope that we can make a contribution of that nature.&lt;/p&gt;

&lt;p&gt;I will start outlining what my own development goals are in more detail, and perhaps this will help things start moving along. In the meantime...welcome! Please feel free to introduce yourself here or raise issues.&lt;/p&gt;

</description>
      <dc:date>2008-01-04T16:12:59-05:00</dc:date>
    </item>

    
    </channel>
</rss>