<rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:copyright="http://blogs.law.harvard.edu/tech/rss" xmlns:image="http://purl.org/rss/1.0/modules/image/">
    <channel>
        <title>.plan</title>
        <link>http://geekswithblogs.net/jolson/category/909.aspx</link>
        <description>.plan</description>
        <language>en-US</language>
        <copyright>Jason Olson</copyright>
        <managingEditor>jolson88@yahoo.com</managingEditor>
        <generator>Subtext Version 0.0.0.0</generator>
        <item>
            <title>Whew - Finally, progress on game for articles</title>
            <link>http://geekswithblogs.net/jolson/archive/2005/01/31/21589.aspx</link>
            <description>&lt;P&gt;[Update: With some help from some friends, I have decided that the source will be released under the CPL, instead of the GPL. Thanks to all of you! ]&lt;/P&gt;
&lt;P&gt;Wow. I can't believe it took me this long to find the time to make some serious progress on the game articles that everyone is waiting for. So, I figure I'll use this post as a brain dump of what is done and what is not done.&lt;/P&gt;
&lt;P&gt;The overall plan for the entire series of &amp;#8220;2d Sidescroller Engine&amp;#8221; articles over at Managed World (which are the replacement/continuation of what are currently here on my blog) is that every time a milestone is reached in the engine's architecture, there will be an extra article or two implementing a simple game with the current build of the engine at that time. For instance, the first game will be a simple game of &amp;#8220;Guess My Number&amp;#8221; which is actually good example to get a handle of the State Manager, messaging, and command systems.&lt;/P&gt;
&lt;P&gt;As for progress, the core of the engine is basically done. I have the rendering system almost complete. The only step left with the rendering system is my own font engine. Once the font engine is finished, I'm ready to close the lid on the rendering system for now. The command and messaging systems are complete. The keyboard input system is finished and hooked into the messaging system of the engine. The mouse input system as well as the sound system will be for later articles. &lt;/P&gt;
&lt;P&gt;The other change I'm making is since I'm hosting this over at GameDev, I will be posting zip files of the code after each article where it is applicable. All the source on Managed World will be released under the GPL. So, feel free to do whatever you want with it (within the GPL of course) when it is posted. I'm hoping that I will be able to wrap up the font engine by the end of the week or weekend so I can crank out a bunch of articles after that. Why not just use DrawText() you might ask. Well, there's two reasons. The first reason is speed. I want to be able to output a lot of text if need be (mostly for debugging purposes (like AI debugging (think of outputting the state that an AI's State Manager is in for instance))). The second reason is that I want the text to be put into the depth buffer and have it be able to be in front as well as behind game objects. Or, for partially transparent textures to pass over text, for instance. I believe these goals will be easier to achieve with my own font engine using color-keyed textures (the font files) and textured quads. The rendering should be able to handle this without a single hiccup. &lt;/P&gt;
&lt;P&gt;So, the font engine is the last hurdle in the way before I write the next bunch of articles. Once that point comes, we will be further along in the game. I'm realizing that this series of articles is going to be *LONG*, mostly because there are so many aspects to discuss when it comes to architecting software for a game. I also want to take the opportunity to discuss issues dealing with best practices for coding and development (stuff you might pick up if you've read Code Complete, or similar books). &lt;/P&gt;
&lt;P&gt;Remember, the articles aren't only about how to write a game. The articles are mostly about software architecture and things you can do to make yourself a better developer. There are not a lot of resources in game development that discuss software architecture and how it applies to game development. I'm hoping that's an area that these articles can help in. These articles are meant to be thought out architecturally. There are quite a few resources out there for game development in general but I find that the architecture of the code most of the time is atrocious. So, the ultimate goal (as much as you might not believe it), is similar to the &lt;A title=XGameStation href="http://www.xgamestation.com" target=_blank&gt;XGameStation&lt;/A&gt;. I'm not necessarily trying to teach game development. The overall goal is actually trying to teach software architecture and development best practices in the context of game development. Game development is simply a &amp;#8220;compass&amp;#8220; that is used to keep your attention focused on what's actually more important. That is, making ourselves better craftsman for the sake of the craft.&lt;/P&gt;
&lt;P&gt;Until next time, I'm outtie :).&lt;/P&gt;
&lt;P&gt; &lt;/P&gt;&lt;p&gt;&lt;a href="http://www.pheedo.com/click.phdo?x=6cda6ad746d942b9a1110d0715a4fa12&amp;u=21589"&gt;&lt;img src="http://www.pheedo.com/img.phdo?x=6cda6ad746d942b9a1110d0715a4fa12&amp;u=21589" border="0"/&gt;&lt;/a&gt;&lt;/p&gt;&lt;iframe src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;PageID=31016&amp;amp;SiteID=1" width=1 height=1 Marginwidth=0 Marginheight=0 Hspace=0 Vspace=0 Frameborder=0 Scrolling=No&gt;
&lt;script language='javascript1.1' src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;Browser=NETSCAPE4&amp;amp;NoCache=True&amp;PageID=31016&amp;amp;SiteID=1"&gt;&lt;/script&gt;
&lt;noscript&gt;&lt;a href="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Click&amp;amp;Mode=HTML&amp;amp;SiteID=1&amp;amp;PageID=31016" target="_blank"&gt;
&lt;img src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;Mode=HTML&amp;amp;SiteID=1&amp;amp;PageID=31016" width="1" height="1" border="0"  alt=""&gt;&lt;/a&gt;
&lt;/noscript&gt;
&lt;/iframe&gt;
&lt;img src="http://geekswithblogs.net/jolson/aggbug/21589.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>Jason Olson</dc:creator>
            <guid>http://geekswithblogs.net/jolson/archive/2005/01/31/21589.aspx</guid>
            <pubDate>Mon, 31 Jan 2005 20:29:00 GMT</pubDate>
            <wfw:comment>http://geekswithblogs.net/jolson/comments/21589.aspx</wfw:comment>
            <comments>http://geekswithblogs.net/jolson/archive/2005/01/31/21589.aspx#feedback</comments>
            <slash:comments>7</slash:comments>
            <wfw:commentRss>http://geekswithblogs.net/jolson/comments/commentRss/21589.aspx</wfw:commentRss>
            <trackback:ping>http://geekswithblogs.net/jolson/services/trackbacks/21589.aspx</trackback:ping>
        </item>
        <item>
            <title>Dynamo</title>
            <link>http://geekswithblogs.net/jolson/archive/2004/11/04/14394.aspx</link>
            <description>&lt;P&gt;You know, I really suck at coming up with cool code names for projects. So, I'm going to adopt my own style. All I can say is that a thesaurus is the best friend of a person like me. Well, to make a long story short (o.k., it's not really that long anyways, like you care...), I decided to use the thesaurus this time around. Since I will be making two engines for &lt;A href="http://www.managed-world.com"&gt;Managed World&lt;/A&gt;, the first one being a simple 2d engine, the next one being a 3d engine, I decided to do a trusty thesaurus lookup for &amp;#8220;engine&amp;#8221;. So, I would like to present to the world the first two projects for &lt;A href="http://www.managed-world.com"&gt;Managed World&lt;/A&gt;, &amp;#8220;Dynamo&amp;#8221; and &amp;#8220;Turbine&amp;#8221;. Yay! &lt;/P&gt;
&lt;P&gt;Dynamo is making good progress. Dynamo is the revamped &amp;#8220;Harvest&amp;#8221; engine. I have thrown away a lot of the abstractions that were diluting the design simply to accommodate for being able to plug different technologies into the engine (like DirectX vs. OpenGL). Well, that crap is gone now. The designs definitely already seem much more pure and better and conveying the aspect of game engine design. &lt;/P&gt;
&lt;P&gt;Now, I just need to go back and revamp the first couple articles up at &lt;A href="http://www.managed-world.com"&gt;Managed World&lt;/A&gt; to reflect the changes I have made. Perhaps at the same time I can crank out the next article. It's been way too long. Well, a lot of work ahead. I fear I must now get back to it :). &lt;/P&gt;&lt;p&gt;&lt;a href="http://www.pheedo.com/click.phdo?x=6cda6ad746d942b9a1110d0715a4fa12&amp;u=14394"&gt;&lt;img src="http://www.pheedo.com/img.phdo?x=6cda6ad746d942b9a1110d0715a4fa12&amp;u=14394" border="0"/&gt;&lt;/a&gt;&lt;/p&gt;&lt;iframe src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;PageID=31016&amp;amp;SiteID=1" width=1 height=1 Marginwidth=0 Marginheight=0 Hspace=0 Vspace=0 Frameborder=0 Scrolling=No&gt;
&lt;script language='javascript1.1' src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;Browser=NETSCAPE4&amp;amp;NoCache=True&amp;PageID=31016&amp;amp;SiteID=1"&gt;&lt;/script&gt;
&lt;noscript&gt;&lt;a href="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Click&amp;amp;Mode=HTML&amp;amp;SiteID=1&amp;amp;PageID=31016" target="_blank"&gt;
&lt;img src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;Mode=HTML&amp;amp;SiteID=1&amp;amp;PageID=31016" width="1" height="1" border="0"  alt=""&gt;&lt;/a&gt;
&lt;/noscript&gt;
&lt;/iframe&gt;
&lt;img src="http://geekswithblogs.net/jolson/aggbug/14394.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>Jason Olson</dc:creator>
            <guid>http://geekswithblogs.net/jolson/archive/2004/11/04/14394.aspx</guid>
            <pubDate>Thu, 04 Nov 2004 18:49:00 GMT</pubDate>
            <wfw:comment>http://geekswithblogs.net/jolson/comments/14394.aspx</wfw:comment>
            <comments>http://geekswithblogs.net/jolson/archive/2004/11/04/14394.aspx#feedback</comments>
            <slash:comments>2</slash:comments>
            <wfw:commentRss>http://geekswithblogs.net/jolson/comments/commentRss/14394.aspx</wfw:commentRss>
            <trackback:ping>http://geekswithblogs.net/jolson/services/trackbacks/14394.aspx</trackback:ping>
        </item>
        <item>
            <title>Managed World - Update</title>
            <link>http://geekswithblogs.net/jolson/archive/2004/11/02/14285.aspx</link>
            <description>&lt;P&gt;This is just a quick update on my approach to the engine for the articles on Managed World. For those of you that don't care, feel free to skip.&lt;/P&gt;
&lt;P&gt;I did some more work on the 2d engine for Managed World. I've decided to step back and revise my plans. I was taking a pretty abstract approach to the engine, to the point where I could plug in an OpenGL renderer if I wished to. Well, in order to be able to abstract the renderer, you need to abstract almost any feature of DirectX or OpenGL that you wish to use so that the end-user (the actual game code) can use the abstractions and not care how they operate under the hood.&lt;BR&gt;&lt;BR&gt;All in all, this isn't the real problem. Really, there is no problem. I've been doing find abstracting the details when I need to. It's definitely a fun exercise in software design. However, I stepped back and asked myself what the true audience is for the articles that I will be writing, and for Managed World in general.&lt;BR&gt;&lt;BR&gt;Well, the audience I'm targeting is Managed DirectX developers. So, in that case, I don't think it is a problem if I expect the users to be using DirectX. I don't want to make it too complicated, unnecessarily. So, time to pull out the abstractions tonight and get a straight forward, DirectX-specific, engine running&lt;/P&gt;&lt;p&gt;&lt;a href="http://www.pheedo.com/click.phdo?x=6cda6ad746d942b9a1110d0715a4fa12&amp;u=14285"&gt;&lt;img src="http://www.pheedo.com/img.phdo?x=6cda6ad746d942b9a1110d0715a4fa12&amp;u=14285" border="0"/&gt;&lt;/a&gt;&lt;/p&gt;&lt;iframe src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;PageID=31016&amp;amp;SiteID=1" width=1 height=1 Marginwidth=0 Marginheight=0 Hspace=0 Vspace=0 Frameborder=0 Scrolling=No&gt;
&lt;script language='javascript1.1' src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;Browser=NETSCAPE4&amp;amp;NoCache=True&amp;PageID=31016&amp;amp;SiteID=1"&gt;&lt;/script&gt;
&lt;noscript&gt;&lt;a href="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Click&amp;amp;Mode=HTML&amp;amp;SiteID=1&amp;amp;PageID=31016" target="_blank"&gt;
&lt;img src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;Mode=HTML&amp;amp;SiteID=1&amp;amp;PageID=31016" width="1" height="1" border="0"  alt=""&gt;&lt;/a&gt;
&lt;/noscript&gt;
&lt;/iframe&gt;
&lt;img src="http://geekswithblogs.net/jolson/aggbug/14285.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>Jason Olson</dc:creator>
            <guid>http://geekswithblogs.net/jolson/archive/2004/11/02/14285.aspx</guid>
            <pubDate>Tue, 02 Nov 2004 22:03:00 GMT</pubDate>
            <wfw:comment>http://geekswithblogs.net/jolson/comments/14285.aspx</wfw:comment>
            <comments>http://geekswithblogs.net/jolson/archive/2004/11/02/14285.aspx#feedback</comments>
            <slash:comments>8</slash:comments>
            <wfw:commentRss>http://geekswithblogs.net/jolson/comments/commentRss/14285.aspx</wfw:commentRss>
            <trackback:ping>http://geekswithblogs.net/jolson/services/trackbacks/14285.aspx</trackback:ping>
        </item>
        <item>
            <title>.plan - 10/24/2004</title>
            <link>http://geekswithblogs.net/jolson/archive/2004/10/25/13203.aspx</link>
            <description>&lt;P&gt;Well, I was finally able to get around and make more progress with the Harvest engine. It's still in the ridiculously early stages, but it feels good to actually make some more progress. I wired up (again (and got it working properly this time)) a C++ Makefile project in order to build&amp;nbsp;the solution&amp;nbsp;(the engine + the sample application) using the NAnt build project from within Visual Studio. Last time I tried it I couldn't get intellisense to work on an ongoing basis. It turns out that it was an easy fix. I'm not exactly comfortable with it, but at this time building a solution builds both with devenv.exe (aka Visual Studio (this helps Intellisense continue to function properly)) into a temp directory, and then builds it again with the C++ makefile project (e.g. the nant build script). &lt;/P&gt;
&lt;P&gt;Outside of the build and development environment, I was able to get the Vertex Manager and Vertex Cache working. The sample is ridiculous right now. It just shows two animated triangles and an animated square, but the manager and caches are working nonetheless :D. The next step is to wire up texturing. Once texturing is wired into the Vertex Cache, the bulk of the rendering engine is complete. All that would be left after that is to implement lighting. All in all, good progress. &lt;/P&gt;
&lt;P&gt;Sooner rather than later, it looks like I'll finally be able to get around to implementing my own sprites and maps. Yee haw!&lt;/P&gt;&lt;p&gt;&lt;a href="http://www.pheedo.com/click.phdo?x=6cda6ad746d942b9a1110d0715a4fa12&amp;u=13203"&gt;&lt;img src="http://www.pheedo.com/img.phdo?x=6cda6ad746d942b9a1110d0715a4fa12&amp;u=13203" border="0"/&gt;&lt;/a&gt;&lt;/p&gt;&lt;iframe src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;PageID=31016&amp;amp;SiteID=1" width=1 height=1 Marginwidth=0 Marginheight=0 Hspace=0 Vspace=0 Frameborder=0 Scrolling=No&gt;
&lt;script language='javascript1.1' src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;Browser=NETSCAPE4&amp;amp;NoCache=True&amp;PageID=31016&amp;amp;SiteID=1"&gt;&lt;/script&gt;
&lt;noscript&gt;&lt;a href="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Click&amp;amp;Mode=HTML&amp;amp;SiteID=1&amp;amp;PageID=31016" target="_blank"&gt;
&lt;img src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;Mode=HTML&amp;amp;SiteID=1&amp;amp;PageID=31016" width="1" height="1" border="0"  alt=""&gt;&lt;/a&gt;
&lt;/noscript&gt;
&lt;/iframe&gt;
&lt;img src="http://geekswithblogs.net/jolson/aggbug/13203.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>Jason Olson</dc:creator>
            <guid>http://geekswithblogs.net/jolson/archive/2004/10/25/13203.aspx</guid>
            <pubDate>Mon, 25 Oct 2004 07:29:00 GMT</pubDate>
            <wfw:comment>http://geekswithblogs.net/jolson/comments/13203.aspx</wfw:comment>
            <comments>http://geekswithblogs.net/jolson/archive/2004/10/25/13203.aspx#feedback</comments>
            <slash:comments>2</slash:comments>
            <wfw:commentRss>http://geekswithblogs.net/jolson/comments/commentRss/13203.aspx</wfw:commentRss>
            <trackback:ping>http://geekswithblogs.net/jolson/services/trackbacks/13203.aspx</trackback:ping>
        </item>
        <item>
            <title>Harvest Progress</title>
            <link>http://geekswithblogs.net/jolson/archive/2004/10/20/12936.aspx</link>
            <description>&lt;P&gt;Well, I was finally able to get some time last night to do some more coding up on my engine. I got the Vertex Manager and Vertex Cache wired up. It's not quite hooked into DirectX yet, but the whole rendering pipeline of the engine (from Renderer -&amp;gt; Vertex Manager -&amp;gt; Vertex Cache) is finally working properly. &lt;/P&gt;
&lt;P&gt;I'm hoping that I can continue to make progress on it tonight. I'm a lot further behind on this engine than I wanted to be at this point. To tell you the truth, it's not nearly as far as I've seen a lot of other people make more progress on their projects in the same amount of time. Arg, sometimes it's quite intimidating being surrounded by Type-A people when you are not a Type-A person yourself. Oh well, that's the way of the world I suppose (and yes, I have been listening to a lot of Earth, Wind, &amp;amp; Fire lately). &lt;/P&gt;
&lt;P&gt;If all goes well, I should be able to hook the Vertex Cache into DirectX this evening and at least have an actual rendering pipeline in the engine by this evening. Then I can start making true progress on the meat of the project. All I have to say is this: I LOVE software architecture! There's just something exciting about designing a solution with known and tested software architecture memes that makes me giddy like a schoolgirl.&lt;/P&gt;
&lt;P&gt;Until then, my friends....&lt;/P&gt;&lt;p&gt;&lt;a href="http://www.pheedo.com/click.phdo?x=6cda6ad746d942b9a1110d0715a4fa12&amp;u=12936"&gt;&lt;img src="http://www.pheedo.com/img.phdo?x=6cda6ad746d942b9a1110d0715a4fa12&amp;u=12936" border="0"/&gt;&lt;/a&gt;&lt;/p&gt;&lt;iframe src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;PageID=31016&amp;amp;SiteID=1" width=1 height=1 Marginwidth=0 Marginheight=0 Hspace=0 Vspace=0 Frameborder=0 Scrolling=No&gt;
&lt;script language='javascript1.1' src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;Browser=NETSCAPE4&amp;amp;NoCache=True&amp;PageID=31016&amp;amp;SiteID=1"&gt;&lt;/script&gt;
&lt;noscript&gt;&lt;a href="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Click&amp;amp;Mode=HTML&amp;amp;SiteID=1&amp;amp;PageID=31016" target="_blank"&gt;
&lt;img src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;Mode=HTML&amp;amp;SiteID=1&amp;amp;PageID=31016" width="1" height="1" border="0"  alt=""&gt;&lt;/a&gt;
&lt;/noscript&gt;
&lt;/iframe&gt;
&lt;img src="http://geekswithblogs.net/jolson/aggbug/12936.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>Jason Olson</dc:creator>
            <guid>http://geekswithblogs.net/jolson/archive/2004/10/20/12936.aspx</guid>
            <pubDate>Wed, 20 Oct 2004 18:29:00 GMT</pubDate>
            <wfw:comment>http://geekswithblogs.net/jolson/comments/12936.aspx</wfw:comment>
            <comments>http://geekswithblogs.net/jolson/archive/2004/10/20/12936.aspx#feedback</comments>
            <slash:comments>3</slash:comments>
            <wfw:commentRss>http://geekswithblogs.net/jolson/comments/commentRss/12936.aspx</wfw:commentRss>
            <trackback:ping>http://geekswithblogs.net/jolson/services/trackbacks/12936.aspx</trackback:ping>
        </item>
        <item>
            <title>.plan - 9/18/2004</title>
            <link>http://geekswithblogs.net/jolson/archive/2004/09/19/11363.aspx</link>
            <description>&lt;P&gt;Man, it's been a while since I've been able to put some time into the Harvest Engine. Lots o' deadlines with my music publisher, don't cha know. Anyways, I was finally able to spend at least a little time tonight trying to make some progress with the engine (albeit it very *small* progress).&lt;/P&gt;
&lt;P&gt;I whipped up a quick reasonably high-resolution timer for the engine that uses QueryPerformanceCounter in the Windows API. Along with that, I added in pausing/resuming functionality into the engine. That is just a simple matter of pausing/resuming the counter though.&lt;/P&gt;
&lt;P&gt;I added the ability to my renderer to output debugging text to the screen. This will allow me to output text with different colors to the screen to help view game object state information. For instance, for any game object I can whip out the state the AI is in, as well as many other uses. Currently, the engine is using the OnPaint() and Invalidate() method for the pseudo-game loop. Next coding session I will probably change that to use the good ol' Message Proc API that is used in the sample framework. &lt;/P&gt;
&lt;P&gt;I also fleshed out more details about the architecture of the engine.&lt;/P&gt;
&lt;P&gt;One of the next steps is to build a Math library independant of DirectX so that it can be used with the OpenGL renderer also. Once I make the math library, I can work on some classes for Sprites, Textures, and the accompanying Managers. Once that is all done, I can finally start delving into the good stuff, like actually putting together the tiling engine (since the Harvest Engine is a simple 2D engine). &lt;/P&gt;
&lt;P&gt;I'm still working out the details in my head of when I want to start on the audio module and other modules. I don't want to leave them out until the last minute. But I also want at least a workable framework up and running first. Anyways, until next time (hopefully it won't be as long as this)....&lt;/P&gt;&lt;p&gt;&lt;a href="http://www.pheedo.com/click.phdo?x=6cda6ad746d942b9a1110d0715a4fa12&amp;u=11363"&gt;&lt;img src="http://www.pheedo.com/img.phdo?x=6cda6ad746d942b9a1110d0715a4fa12&amp;u=11363" border="0"/&gt;&lt;/a&gt;&lt;/p&gt;&lt;iframe src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;PageID=31016&amp;amp;SiteID=1" width=1 height=1 Marginwidth=0 Marginheight=0 Hspace=0 Vspace=0 Frameborder=0 Scrolling=No&gt;
&lt;script language='javascript1.1' src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;Browser=NETSCAPE4&amp;amp;NoCache=True&amp;PageID=31016&amp;amp;SiteID=1"&gt;&lt;/script&gt;
&lt;noscript&gt;&lt;a href="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Click&amp;amp;Mode=HTML&amp;amp;SiteID=1&amp;amp;PageID=31016" target="_blank"&gt;
&lt;img src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;Mode=HTML&amp;amp;SiteID=1&amp;amp;PageID=31016" width="1" height="1" border="0"  alt=""&gt;&lt;/a&gt;
&lt;/noscript&gt;
&lt;/iframe&gt;
&lt;img src="http://geekswithblogs.net/jolson/aggbug/11363.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>Jason Olson</dc:creator>
            <guid>http://geekswithblogs.net/jolson/archive/2004/09/19/11363.aspx</guid>
            <pubDate>Sun, 19 Sep 2004 07:52:00 GMT</pubDate>
            <comments>http://geekswithblogs.net/jolson/archive/2004/09/19/11363.aspx#feedback</comments>
            <wfw:commentRss>http://geekswithblogs.net/jolson/comments/commentRss/11363.aspx</wfw:commentRss>
            <trackback:ping>http://geekswithblogs.net/jolson/services/trackbacks/11363.aspx</trackback:ping>
        </item>
        <item>
            <title>.plan - 9/5/2004</title>
            <link>http://geekswithblogs.net/jolson/archive/2004/09/06/10713.aspx</link>
            <description>&lt;P&gt;Well, I didn't get nearly as much done as I was hoping for today. A lot of the time was spent wrestling with NAnt and getting my build scripts to properly reference the Managed DirectX assemblies. I still don't really like the solution I came up so maybe I can find some time soon to see if I can wrangle up a better solution. However, with all that said, I have my projects all setup for the Harvest Engine (it's just a code name (I wouldn't go with a name that cheesy, I swear (well, I probably would (but that's not really the point is it?)))). I have the NAnt build scripts running and compiling the application properly.&lt;/P&gt;
&lt;P&gt;I also got the Direct3D device up and running in windowed mode. I know, not that big of a step, but I'm trying to do some cool stuff to really make this engine cross-API possible. That involves a lot of coding up my own enumerations among other things so that display modes and card capabilities can be read in structures specific to my game engine so that the Direct3D renderer and the OpenGL renderer can read the same values. No sense for striving for cross-API capabilities if you aren't going to go the whole way, eh? &lt;/P&gt;
&lt;P&gt;The next step is to get the enumerations and renderer config file working so that I can implement the fullscreen as well as the windowed mode and allow the user to switch between the two. Before I go there and while I am still working on the bare-bones windowed mode, I am going to implement some swap chains so that you can render into as many as eight windows controls. We will see how that goes. I think the money number of swap chains is four to be able to implement the level editor. That way, I can do some level editor development while I am developing the engine side-by-side.&lt;/P&gt;
&lt;P&gt;Perhaps before I go on with other .plans, I should outline exactly what I am shooting for for this engine. I am *not* shooting for cross-platform development. However, I am shooting for cross-API development. I am also not shooting for native code development. This engine will be entirely managed code (probably all in C#), and is meant to be used only in a managed environment. You *could* use it from native code I suppose by implementing a COM wrapper, but that seems pretty pointless to me. To recap: the engine will be a Windows-specific, cross-API, managed engine. The architecture for the engine is that the actual game will be in an EXE and the engine itself will be in a statically-linked assembly (although the renderer will be dynamically loaded in order to allow changing between the different graphics APIs). I am aware that this is not &amp;#8220;the&amp;#8221; approach that companies like id use. id uses an architecture where the game is in the dll and the engine is in the EXE (I believe). We are not developing this engine to easily support mods. The engine will be a simple 2d (via Direct3D) tile-based engine.&lt;/P&gt;
&lt;P&gt;After much wrestling with myself, I am going to be using few of the &amp;#8220;helper&amp;#8221; classes in Direct3DX. This is not because they aren't useful. They are, and they are implemented better and faster than I could probably do at this point in time. However, the key to this engine is to *teach*. I want all of you to understand exactly *how* the helper functions work by implementing them yourself. Yes, this is re-inventing the wheel. I am usually strong opposed to re-inventing the wheel. However, when dealing with a performance-oriented application like game development, I think it is important to understand exactly what is happening under the hood rather than taking it for granted. This is also the main reason that I won't use the sample framework that the DirectX Template from the 2004 Summer Update installs. &lt;/P&gt;
&lt;P&gt;At this point, you might notice that comments are not enabled on these .plan updates. That is on purpose. I am really gearing these updates as a one-way communication. If you do have questions/suggestions about things I bring up, please feel free to contact me through the contact form on my homepage here or email at jolson88 AT yahoo NOSPAM DOT com. &lt;/P&gt;
&lt;P&gt;I think that's all for this brain dump (at least I hope so since I can't remember anything else at this point).&lt;/P&gt;
&lt;P&gt;Until next time.....&lt;/P&gt;&lt;p&gt;&lt;a href="http://www.pheedo.com/click.phdo?x=6cda6ad746d942b9a1110d0715a4fa12&amp;u=10713"&gt;&lt;img src="http://www.pheedo.com/img.phdo?x=6cda6ad746d942b9a1110d0715a4fa12&amp;u=10713" border="0"/&gt;&lt;/a&gt;&lt;/p&gt;&lt;iframe src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;PageID=31016&amp;amp;SiteID=1" width=1 height=1 Marginwidth=0 Marginheight=0 Hspace=0 Vspace=0 Frameborder=0 Scrolling=No&gt;
&lt;script language='javascript1.1' src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;Browser=NETSCAPE4&amp;amp;NoCache=True&amp;PageID=31016&amp;amp;SiteID=1"&gt;&lt;/script&gt;
&lt;noscript&gt;&lt;a href="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Click&amp;amp;Mode=HTML&amp;amp;SiteID=1&amp;amp;PageID=31016" target="_blank"&gt;
&lt;img src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;Mode=HTML&amp;amp;SiteID=1&amp;amp;PageID=31016" width="1" height="1" border="0"  alt=""&gt;&lt;/a&gt;
&lt;/noscript&gt;
&lt;/iframe&gt;
&lt;img src="http://geekswithblogs.net/jolson/aggbug/10713.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>Jason Olson</dc:creator>
            <guid>http://geekswithblogs.net/jolson/archive/2004/09/06/10713.aspx</guid>
            <pubDate>Mon, 06 Sep 2004 06:53:00 GMT</pubDate>
            <comments>http://geekswithblogs.net/jolson/archive/2004/09/06/10713.aspx#feedback</comments>
            <wfw:commentRss>http://geekswithblogs.net/jolson/comments/commentRss/10713.aspx</wfw:commentRss>
            <trackback:ping>http://geekswithblogs.net/jolson/services/trackbacks/10713.aspx</trackback:ping>
        </item>
        <item>
            <title>.plan - 9/4/2004</title>
            <link>http://geekswithblogs.net/jolson/archive/2004/09/05/10678.aspx</link>
            <description>&lt;P&gt;Well, I've been reading &lt;A href="http://www.amazon.com/exec/obidos/tg/detail/-/1592003516/qid=1094367283/sr=8-1/ref=sr_8_xs_ap_i1_xgl14/102-8017993-5516968?v=glance&amp;s=books&amp;n=507846"&gt;3d Game Engine Programming&lt;/A&gt; lately and I love what I've read so far. I have decided that I am going to be adopting a similar engine architecture for my game. The architecture is largely based around late-binding modules (aka assemblies) into the game to accomodate a plugin architecture. This allows any in the future to plug in modules based on different APIs that I will use. For the game, I will be using Managed DirectX. However, if someone wanted to implemented a Managed OpenGL renderer for the engine, it is entirely possible and not that difficult (if you know OpenGL that is). &lt;/P&gt;
&lt;P&gt;I've now got a prototype architecture up and running as of this evening. The architecture (in its infant state) is based around one statically linked assembly (for now it is a simple project reference in the solution), and one dynamically linked assembly that contains the actual renderer and is loaded at runtime via reflection. The abstract base class for the renderer is implemented in the statically linked assembly so that the game can use the renderer via this base class. This is possible because the actual renderer in the late-bound assembly derives from this base class. Pretty slick. I'm fairly proud of myself. To this point, it is almost a direction translation of the renderer implemented in the book mentioned above. However, the book above is in native C++, so I have had to translate the intent of the architecture into the .NET way of doing things (was quite fun since I've never written or programmed against a runtime &amp;#8220;plug-in&amp;#8221; architecture before). &lt;/P&gt;
&lt;P&gt;I have also implemented all the functionality for logging in the application. The initial plan is to have all modules log to their own log file. Logging will be able to be turned on and off at the flick of a switch. Currently, I have it implemented where logging always occurs if in debug mode. I currently have logging calls placed throughout some of the loading routines. The actual determination of whether to log or not is in the Logger class itself, so the modules aren't having to check whether they should log or not for every call. This may need to be optimized out in the future. But until it is proven that the overhead of the potentially useless method calls is too high, I am sticking to my guns and doing it this way.&lt;/P&gt;
&lt;P&gt;Now that I have the bugs worked out in general plugin architecture, the plan is to move the code from my research directory into the final game engine directory and to start game engine development. Before I do that though, I plan on writing up an NAnt build script so that the build order and the moving around of assemblies is handled properly. Because of its flexability, I prefer this way as opposed to pre and post build steps in Visual Studio.&lt;/P&gt;
&lt;P&gt;Until next time....&lt;/P&gt;&lt;p&gt;&lt;a href="http://www.pheedo.com/click.phdo?x=6cda6ad746d942b9a1110d0715a4fa12&amp;u=10678"&gt;&lt;img src="http://www.pheedo.com/img.phdo?x=6cda6ad746d942b9a1110d0715a4fa12&amp;u=10678" border="0"/&gt;&lt;/a&gt;&lt;/p&gt;&lt;iframe src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;PageID=31016&amp;amp;SiteID=1" width=1 height=1 Marginwidth=0 Marginheight=0 Hspace=0 Vspace=0 Frameborder=0 Scrolling=No&gt;
&lt;script language='javascript1.1' src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;Browser=NETSCAPE4&amp;amp;NoCache=True&amp;PageID=31016&amp;amp;SiteID=1"&gt;&lt;/script&gt;
&lt;noscript&gt;&lt;a href="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Click&amp;amp;Mode=HTML&amp;amp;SiteID=1&amp;amp;PageID=31016" target="_blank"&gt;
&lt;img src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;Mode=HTML&amp;amp;SiteID=1&amp;amp;PageID=31016" width="1" height="1" border="0"  alt=""&gt;&lt;/a&gt;
&lt;/noscript&gt;
&lt;/iframe&gt;
&lt;img src="http://geekswithblogs.net/jolson/aggbug/10678.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>Jason Olson</dc:creator>
            <guid>http://geekswithblogs.net/jolson/archive/2004/09/05/10678.aspx</guid>
            <pubDate>Sun, 05 Sep 2004 08:08:00 GMT</pubDate>
            <comments>http://geekswithblogs.net/jolson/archive/2004/09/05/10678.aspx#feedback</comments>
            <wfw:commentRss>http://geekswithblogs.net/jolson/comments/commentRss/10678.aspx</wfw:commentRss>
            <trackback:ping>http://geekswithblogs.net/jolson/services/trackbacks/10678.aspx</trackback:ping>
        </item>
    </channel>
</rss>