<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Resurrected Entertainment &#187; Niblet</title>
	<atom:link href="http://www.resurrected-entertainment.com/category/game-development/niblet/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.resurrected-entertainment.com</link>
	<description>It's not dead until you take it outside and bury it</description>
	<lastBuildDate>Thu, 07 Jan 2010 16:41:34 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.9</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>Qt for Games &#8211; Niblet #5</title>
		<link>http://www.resurrected-entertainment.com/2008/12/12/qt-for-games-niblet-5/</link>
		<comments>http://www.resurrected-entertainment.com/2008/12/12/qt-for-games-niblet-5/#comments</comments>
		<pubDate>Sat, 13 Dec 2008 03:02:49 +0000</pubDate>
		<dc:creator>Mr. Robot</dc:creator>
				<category><![CDATA[Game Development]]></category>
		<category><![CDATA[Niblet]]></category>

		<guid isPermaLink="false">http://www.resurrected-entertainment.com/?p=135</guid>
		<description><![CDATA[I spent some time trying to place a QGLWidget into a QGraphicsScene. Apparently, this is not a supported use of the QGraphicsScene class. One Trolltech engineer suggested creating a viewport using a QGLWidget instead of the typical QWidget (default). Neither approach worked and both ended up suspending the program on my Mac. There goes option [...]]]></description>
			<content:encoded><![CDATA[<p>I spent some time trying to place a QGLWidget into a QGraphicsScene. Apparently, this is not a supported use of the QGraphicsScene class. One Trolltech engineer suggested creating a viewport using a QGLWidget instead of the typical QWidget (default). Neither approach worked and both ended up suspending the program on my Mac. There goes option number two for OpenGL sprites in the game.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.resurrected-entertainment.com/2008/12/12/qt-for-games-niblet-5/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Qt for Games &#8211; Niblet #4</title>
		<link>http://www.resurrected-entertainment.com/2008/12/12/qt-for-games-niblet-4/</link>
		<comments>http://www.resurrected-entertainment.com/2008/12/12/qt-for-games-niblet-4/#comments</comments>
		<pubDate>Fri, 12 Dec 2008 22:54:11 +0000</pubDate>
		<dc:creator>Mr. Robot</dc:creator>
				<category><![CDATA[Game Development]]></category>
		<category><![CDATA[Niblet]]></category>

		<guid isPermaLink="false">http://www.resurrected-entertainment.com/?p=131</guid>
		<description><![CDATA[Before I began my investigation into the suitability of Qt for games, I wanted to use Qt's new QGraphicsItem framework alongside the OpenGL support. I was curious to see if an OpenGL object could be wrapped by a QGraphicsItem and rendered into the same view. The short answer is yes, but the result is not [...]]]></description>
			<content:encoded><![CDATA[<p>Before I began my investigation into the suitability of Qt for games, I wanted to use Qt's new QGraphicsItem framework alongside the OpenGL support. I was curious to see if an OpenGL object could be wrapped by a QGraphicsItem and rendered into the same view. The short answer is yes, but the result is not very pretty or practical. Basically, it comes down to a fundamental issue with OpenGL and sharing rendering contexts with other engines. OpenGL doesn't allow this by design, but you could use an QGLWidget and encapsulate that in a QGraphicsItem implementation. The result is very heavy weight, not particularly elegant, and doesn't easily support animation of the OpenGL shape. With the latest version of the Qt API, you can render a QWidget object into an OpenGL rendering context, but not the other way around (without using a container like QGLWidget).</p>
<p>This is fine and not detrimental to the project, so we'll continue using the new graphics framework minus the features relating to OpenGL. This gives us plenty of options for rendering, but 3D will be set aside for now (unless I get a spark of genius). We may revisit it later to explore different ideas, like the intro screen or credits; however, we will need to find out how well Qt supports direct pixel rendering. I am very familiar with various image classes, but whether they can be used in and efficient rendering pipeline is still an unknown.</p>
<p>I'm trying to be realistic here. Niblet is not an overly complex idea, but I would like to use compositing for a variety of effects and some effects like fire would need to be rendered using fast pixel access.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.resurrected-entertainment.com/2008/12/12/qt-for-games-niblet-4/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Qt for Games &#8211; Niblet #3</title>
		<link>http://www.resurrected-entertainment.com/2008/07/24/niblet3/</link>
		<comments>http://www.resurrected-entertainment.com/2008/07/24/niblet3/#comments</comments>
		<pubDate>Thu, 24 Jul 2008 18:40:01 +0000</pubDate>
		<dc:creator>Mr. Robot</dc:creator>
				<category><![CDATA[Game Development]]></category>
		<category><![CDATA[Niblet]]></category>

		<guid isPermaLink="false">http://www.resurrected-entertainment.com/?p=100</guid>
		<description><![CDATA[During the development of this project, there are going to be things which Qt simply can't, won't, or doesn't do. I am going to talk about a few of the features which must be implemented using other libraries, or if you're feeling particularly creative, by writing large chunks of hand-crafted code. Besides being 100% organic, [...]]]></description>
			<content:encoded><![CDATA[<p>During the development of this project, there are going to be things which Qt simply can't, won't, or doesn't do. I am going to talk about a few of the features which must be implemented using other libraries, or if you're feeling particularly creative, by writing large chunks of hand-crafted code. Besides being 100% organic, it also gives you a lot of background knowledge and can grow into its own project.</p>
<p>The first missing piece of functionality falls into the realm of input controls. While Qt can easily handle mouse and keyboard input, it cannot handle joysticks. Joysticks have numerous buttons and features, some of which can be accessed through standard interfaces; others require special drivers and access methods. Support for most typical joysticks can be easily implemented using a library like SDL. This is exactly what we will be using for Niblet. It would be cumbersome to try and incorporate SDL directly into our code, so we will be writing a wrapper or integrating it into one of the core classes and emitting Qt signals when input is detected. Since this sort of input almost always requires a polling mechanism, it will need to be done in the main game loop at some point. Careful planning will be required so that our game play doesn't suffer as a result of this new input method. Ultimately, if it doesn't work out to the benefit of the game, then it will not be used.</p>
<p>Qt does have support for audio, but that support is extremely limited especially when you want to anything other than your basic audio functions like playing, pausing, or stopping a sound. As I said, it's pretty basic, so we'll be using the OpenAL audio system. It's flexible, clean, cross-platform and open-sourced. It has more than enough functionality for Niblet, so it seems to be the better choice over similar audio libraries, such as SDL_mixer, whose future is not so certain. Even though on some platforms, the underlying implementation may in fact be OpenAL.</p>
<p>Other libraries for additional mathematics, physics, and OpenGL support, such as GLUT, will probably be used since (spoiler) at least some of Niblet will be rendered in 3D. At least, that's the plan since I want to see how well the two technologies can work together. There are many physics engines to choose from such as Box2D, Bullet, and Open Dynamics Engine. Many of these libraries also support collision detection which is a fine candidate for third party support.</p>
<p>Last but not least is the build system. We are currently using Qt's qmake utility which takes Qt project files and produces native project files for different development platforms. It's a pretty basic tool by itself and doesn't offer any platform discovery functionality. For example, using a build framework like autotools or cmake, one can write helper scripts which perform tests, discover libraries and header files, and execute tools which can be very useful for cross platform projects. The need is especially great when your project needs to be built easily by other people with a minimum of fuss. Niblet is not going to be a huge project by any stretch of the imagination, so qmake will do just fine. It's used to generate the build files for the entire Qt framework after all. Should I be struck by a desire to move to something more sophisticated in the future, don't be surprised.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.resurrected-entertainment.com/2008/07/24/niblet3/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Qt for Games &#8211; Niblet #2</title>
		<link>http://www.resurrected-entertainment.com/2008/07/22/qt-for-games-niblet-2/</link>
		<comments>http://www.resurrected-entertainment.com/2008/07/22/qt-for-games-niblet-2/#comments</comments>
		<pubDate>Tue, 22 Jul 2008 22:43:33 +0000</pubDate>
		<dc:creator>Mr. Robot</dc:creator>
				<category><![CDATA[Game Development]]></category>
		<category><![CDATA[Niblet]]></category>

		<guid isPermaLink="false">http://www.resurrected-entertainment.com/?p=91</guid>
		<description><![CDATA[I had my first attempt at a brainstorm for project Niblet last night. I used the software program called Curio to collect my ideas in a synergistic, multi-media, power-house document. Too bad you only get to see the rasterized and PDFized versions. A few people have scoffed at my desire to use Curio, they asked [...]]]></description>
			<content:encoded><![CDATA[<p>I had my first attempt at a brainstorm for project Niblet last night. I used the software program called Curio to collect my ideas in a synergistic, multi-media, power-house document. Too bad you only get to see the rasterized and <a href="http://www.resurrected-entertainment.com/res/docs/niblet/niblet_mindgames.pdf" target="_blank">PDFized versions</a>. A few people have scoffed at my desire to use Curio, they asked "why not just use a piece of paper and pencil?" Aside from the obvious <em>cool</em> software motivation, I often have the <span style="text-decoration: line-through;">need</span> urge to put stuff like this on-line in the off chance someone may find it <span style="text-decoration: line-through;">useful or interesting</span> better than most of the crap on <a title="MySpace -- Crap Content Within" href="http://www.myspace.com" target="_blank">MySpace</a>. It's a fool's dream but there you have it.</p>
<p style="text-align: center;"><a title="Niblet brain dump in Curio" href="http://www.resurrected-entertainment.com/res/graphics/blog/niblet_curio.png" target="_blank"><img class="aligncenter" src="http://resurrected-entertainment.com/res/graphics/blog/niblet_curio_thumb.png" alt="Niblet brain dump in Curio" /></a></p>
<p>The project has been extended to include addtional modules (mostly empty) and some additional framework functionality which allows me to suspend or activate game play amoung other things. The game's scene area has also been enlarged and auto-scrolls when Niblet approaches the borders of the viewport.</p>
<p>Instead of me wasting time assembling a .zip file every time I want to release an update, I'll just refer you to this handy-dandy <a title="Subversion Repository for Niblet" href="http://projects.resurrected-entertainment.com/listing.php?repname=Niblet&amp;path=%2F&amp;sc=0" target="_blank">Subversion URL</a>. You can check out the project using this command:</p>
<p><em>$ svn co http://projects.resurrected-entertainment.com/niblet</em></p>
]]></content:encoded>
			<wfw:commentRss>http://www.resurrected-entertainment.com/2008/07/22/qt-for-games-niblet-2/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Qt for Games &#8211; Niblet #1</title>
		<link>http://www.resurrected-entertainment.com/2008/07/19/qt-for-games1/</link>
		<comments>http://www.resurrected-entertainment.com/2008/07/19/qt-for-games1/#comments</comments>
		<pubDate>Sun, 20 Jul 2008 03:53:00 +0000</pubDate>
		<dc:creator>Mr. Robot</dc:creator>
				<category><![CDATA[Game Development]]></category>
		<category><![CDATA[Niblet]]></category>
		<category><![CDATA[Programming]]></category>

		<guid isPermaLink="false">http://www.resurrected-entertainment.com/?p=85</guid>
		<description><![CDATA[A few days ago, I decided to experiment with Qt as it applies to game development. You haven't heard of Qt? Well, it's an SDK for cross-platform development which has really started to take off in the cross-platform arena over the last couple of years. KDE, a desktop platform for Linux, is based on the [...]]]></description>
			<content:encoded><![CDATA[<p>A few days ago, I decided to experiment with Qt as it applies to game development. You haven't heard of Qt? Well, it's an SDK for cross-platform development which has really started to take off in the cross-platform arena over the last couple of years. KDE, a desktop platform for Linux, is based on the Qt library; so is the VOIP application called Skype. They even have a mobile platform called Qtopia for those who are interested in small devices. You can find out more information on the <a title="Trolltech" href="http://www.trolltech.com" target="_blank">Trolltech website</a>.</p>
<p>To begin the project and to get the brain juices flowing (after the second cup of coffee, of course), I wanted to come up with a small, interactive demo which would make use of some of the classes related to QSceneGraph and QGraphicsItem. I also wanted to play around with the layers a little bit and see how suitable they would be for games. The first program is a simple one indeed; in fact, it's not really a game at all - unless of course you're really bored and you start to chase invisible dots on your screen. Just run demo, and you'll understand what I'm talking about.</p>
<p>I am basing this project off a classic so that I don't stray too far off topic. MS-DOS 5.0 shipped with a QBasic game called <em>Nibbles</em>. The game play revolves around a worm that you control through a maze of walls while looking for food. If your worm collides with a wall or itself, you lose one life. The difficulty revolves around the worm's velocity; it gets faster as you advance. The idea is to use that basic game as a model at first and build on it a little as time goes on; this will help to keep the project focused, which can be a real challenge for those who are new to game programming. To get things started, I have decided to dub the codename for the project: <strong>Niblet</strong>. The real name will be decided, if and when, this Qt game comes together.</p>
<p>The first problem is the worm, of course. It needs to snake around and grow to certain lengths when food pellets are ingested (or numbers as was the case in the original game).; I also like the idea of it shrinking in response to an item collected during the progression through a level. Anyway, the rules can be fleshed out later. For now, let's just get a very basic framework up and running. To compile the <a href="http://www.resurrected-entertainment.com/res/projects/niblet/dynamicpath.zip">little demo</a>, just run <strong>qmake</strong> and then <strong>make</strong> if you're on Linux or open up the project in Xcode if you're using Mac OS X; Windows users can open the project in Microsoft Visual Studio. If you're using Mac OS X Leopard, I suggest you try out Qt 4.4 which will produce a proper project file for Xcode 3.1.</p>
<p style="text-align: center;"><img class="aligncenter" title="Dynamic Path" src="http://www.resurrected-entertainment.com/res/graphics/blog/niblet/dynamicpath1.png" alt="Dynamic Path Demo using Qt" width="175" height="185" /></p>
<p>As you can see, very little code is needed when using Qt. If you were to write the same program for Windows using DirectX or even through the GDI, you would need considerably more code just to handle the application start-up process and surface initialization. But that's the beauty of these SDKs, they essentially handle a lot of the routine programming so you can concentrate on building your software faster and better using these handy libraries.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.resurrected-entertainment.com/2008/07/19/qt-for-games1/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
