<?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>Liu Zhongshu &#187; game</title>
	<atom:link href="http://www.liuzhongshu.com/tag/game/feed" rel="self" type="application/rss+xml" />
	<link>http://www.liuzhongshu.com</link>
	<description>幸福之人并非拥有一切，只是尽力享受生活的赐予。</description>
	<lastBuildDate>Sat, 31 Jul 2010 02:47:06 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.8.4</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>Tile Map</title>
		<link>http://www.liuzhongshu.com/code/tile-map.html</link>
		<comments>http://www.liuzhongshu.com/code/tile-map.html#comments</comments>
		<pubDate>Thu, 09 Apr 2009 14:34:31 +0000</pubDate>
		<dc:creator>zhongshu</dc:creator>
				<category><![CDATA[code|编程]]></category>
		<category><![CDATA[game]]></category>
		<category><![CDATA[gui]]></category>

		<guid isPermaLink="false">http://www.liuzhongshu.com/code/tile-map.html</guid>
		<description><![CDATA[Tile Map，这个是在GUI程序设计和游戏设计领域常用的一个技术－用贴瓷砖（Tile）的方法拼大的地图（Map），好处有很多，很明显的就是节约内存，并且也可以提高画图效率。很多引擎都内置了对Tile Map的支持，比如Cocos2d这个我用过的2D引擎。
一个Tile素材加上一个2维矩阵就构成了一个典型的Tile Map，通常Tile素材就是各种图像资源了，他们构成了最终Map中的基本元素，通常的很多引擎里用一个PNG文件来表达这个，有了元素，还要在整个Map上适当的引用它们，这就是那个二维矩阵做的事情了，这个就更简单了，一个二维整数的数组就够了，至于剩下的渲染和平移的工作，就全交给引擎了。
当然，为了编辑Tile Map，有很多人写了专门的工具，这里我找到了一个Java版的，所以也相对比较通用的Tile Map Editor：Tiled。简单的试了一下，还不错，记在这里，以后也许可以用上，关于它的使用可以看看这篇文章。如果它不能满足你的文件格式要求（Tile Map并没有标准可言，很多人用一些专有的Tile Map格式），你还可以为它写输入输出插件来支持你自己的格式，Tiled本身也是开源软件，真不错。
]]></description>
			<content:encoded><![CDATA[<p><a href="http://en.wikipedia.org/wiki/Tile_map" target="_blank">Tile Map</a>，这个是在GUI程序设计和游戏设计领域常用的一个技术－用贴瓷砖（Tile）的方法拼大的地图（Map），好处有很多，很明显的就是节约内存，并且也可以提高画图效率。很多引擎都内置了对Tile Map的支持，比如<a href="http://cocos2d.org/" target="_blank">Cocos2d</a>这个我用过的2D引擎。</p>
<p>一个Tile素材加上一个2维矩阵就构成了一个典型的Tile Map，通常Tile素材就是各种图像资源了，他们构成了最终Map中的基本元素，通常的很多引擎里用一个PNG文件来表达这个，有了元素，还要在整个Map上适当的引用它们，这就是那个二维矩阵做的事情了，这个就更简单了，一个二维整数的数组就够了，至于剩下的渲染和平移的工作，就全交给引擎了。</p>
<p>当然，为了编辑Tile Map，有很多人写了专门的工具，这里我找到了一个Java版的，所以也相对比较通用的Tile Map Editor：<a href="http://mapeditor.org/index.html" target="_blank">Tiled</a>。简单的试了一下，还不错，记在这里，以后也许可以用上，关于它的使用可以看看<a href="http://kwigbo.com/wp/2009/03/15/cocos2d-alternative-map-editor/" target="_blank">这篇文章</a>。如果它不能满足你的文件格式要求（Tile Map并没有标准可言，很多人用一些专有的Tile Map格式），你还可以为它写输入输出插件来支持你自己的格式，Tiled本身也是开源软件，真不错。</p>
]]></content:encoded>
			<wfw:commentRss>http://www.liuzhongshu.com/code/tile-map.html/feed</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>2D物理引擎</title>
		<link>http://www.liuzhongshu.com/code/2d-physics-engine.html</link>
		<comments>http://www.liuzhongshu.com/code/2d-physics-engine.html#comments</comments>
		<pubDate>Thu, 11 Dec 2008 00:40:48 +0000</pubDate>
		<dc:creator>zhongshu</dc:creator>
				<category><![CDATA[code|编程]]></category>
		<category><![CDATA[game]]></category>
		<category><![CDATA[physics]]></category>

		<guid isPermaLink="false">http://www.liuzhongshu.com/code/2d-physics-engine.html</guid>
		<description><![CDATA[2D物理引擎，我在前面一个帖子已经给出了一个Javascript的实现了，下面是c/c++的两个通用实现（作为库来使用）：

box2d: 比较早，功能很全。
chipmunk: 衍生自box2d，c语言实现，在xmoto（我喜欢的一个摩托游戏）的新版本中就用了这个。

这里有一篇比较二者的文章，据说是box2d功能丰富一些，chipmunk性能高一些，我只有过chipmunk，遗憾不能发表自己的比较意见。
chipmunk中的基本概念
Space：这是Chipmunk中对“空间”的表述，在这个space中所有的刚体（下面介绍）发生相互作用，Space有两个重要的属性，一个是重力（gravity），一个是阻尼（damping），重力显然是有方向的，所以重力是用一个矢量来表达的，当然也可以为0，那就类似于太空了，阻尼显示是没有方向的，用一个浮点数表达就好。
刚体（rigid body）：这是这类物理引擎最核心的概念了，他们和粒子（Particle）的区别是，除了质量、位置、速度外，刚体还是可以旋转的。刚体们都活跃在chipmunk的space中。很重要的是：它们本身并没有形状（shape），形状是通过一个Collision shape（简称shape）的概念加到刚体上去的。刚体具有几个非常重要的属性，比如m（质量），i（转动惯量），p（位置），v（速度）以及和转动相关的一些属性等。
Shape是表达一个刚体的形状的概念，它附加在刚体上，从而才能让刚体间发生碰撞，Chipmunk只支持三种形状：圆、线、多边形。所以像是弧这样的形状只能通过多线来拟合了。注意Chipmunk中的shape和一般意义的Spirit独立的，Spirit（精灵）表达的是一个物体是如何显示的，尽管大部分情况下Spirit和Collision shape都是一致的（这样看起来才合理），但在内部实现上，Spirit和Collision shape是完全不相干的。
Chipmunk的基本使用：
待续
]]></description>
			<content:encoded><![CDATA[<p>2D物理引擎，我在前面一个帖子已经给出了一个Javascript的实现了，下面是c/c++的两个通用实现（作为库来使用）：</p>
<ul>
<li><a href="http://www.box2d.org/">box2d</a>: 比较早，功能很全。</li>
<li><a href="http://wiki.slembcke.net/main/published/Chipmunk">chipmunk</a>: 衍生自box2d，c语言实现，在<a href="http://xmoto.tuxfamily.org/">xmoto</a>（我喜欢的一个摩托游戏）的新版本中就用了这个。</li>
</ul>
<p>这里有一篇<a href="http://nightschool.near-time.net/news/2008/3/25/switching-to-box2d">比较二者的文章</a>，据说是box2d功能丰富一些，chipmunk性能高一些，我只有过chipmunk，遗憾不能发表自己的比较意见。</p>
<p><strong>chipmunk中的基本概念</strong></p>
<p>Space：这是Chipmunk中对“空间”的表述，在这个space中所有的刚体（下面介绍）发生相互作用，Space有两个重要的属性，一个是重力（<code>gravity），一个是阻尼（damping），重力显然是有方向的，所以重力是用一个矢量来表达的，当然也可以为0，那就类似于太空了，阻尼显示是没有方向的，用一个浮点数表达就好。</code></p>
<p>刚体（rigid body）：这是这类物理引擎最核心的概念了，他们和粒子（Particle）的区别是，除了质量、位置、速度外，刚体还是可以旋转的。刚体们都活跃在chipmunk的space中。很重要的是：它们本身并没有形状（shape），形状是通过一个Collision shape（简称shape）的概念加到刚体上去的。刚体具有几个非常重要的属性，比如m（质量），i（转动惯量），p（位置），v（速度）以及和转动相关的一些属性等。</p>
<p>Shape是表达一个刚体的形状的概念，它附加在刚体上，从而才能让刚体间发生碰撞，Chipmunk只支持三种形状：圆、线、多边形。所以像是弧这样的形状只能通过多线来拟合了。注意Chipmunk中的shape和一般意义的Spirit独立的，Spirit（精灵）表达的是一个物体是如何显示的，尽管大部分情况下Spirit和Collision shape都是一致的（这样看起来才合理），但在内部实现上，Spirit和Collision shape是完全不相干的。</p>
<p>Chipmunk的基本使用：</p>
<p>待续</p>
]]></content:encoded>
			<wfw:commentRss>http://www.liuzhongshu.com/code/2d-physics-engine.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
