<?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>cyborgDino</title>
	<atom:link href="http://cyborgdino.com/feed/" rel="self" type="application/rss+xml" />
	<link>http://cyborgdino.com</link>
	<description>RAWWWR!</description>
	<lastBuildDate>Sun, 02 Jun 2013 12:31:07 +0000</lastBuildDate>
	<language>en-US</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.5.1</generator>
		<item>
		<title>Confessions of a Game Jammer</title>
		<link>http://cyborgdino.com/2013/03/confessions-of-a-game-jammer/</link>
		<comments>http://cyborgdino.com/2013/03/confessions-of-a-game-jammer/#comments</comments>
		<pubDate>Thu, 21 Mar 2013 01:15:21 +0000</pubDate>
		<dc:creator>mcteapot</dc:creator>
				<category><![CDATA[art]]></category>
		<category><![CDATA[concepts]]></category>
		<category><![CDATA[gamedev]]></category>
		<category><![CDATA[Unity3D]]></category>

		<guid isPermaLink="false">http://cyborgdino.com/?p=1153</guid>
		<description><![CDATA[It is a special kind of person that will actively choose to go to a Game Jam. These jams are usually a 48-hour crucible that pushes mental endurance to the limits and to willingly give up two days in order to co-create a video game...]]></description>
				<content:encoded><![CDATA[<p><a href="http://cyborgdino.com/wp-content/uploads/2013/04/GGJPING.jpg"><img class="alignnone size-full wp-image-1157" alt="GGJPING" src="http://cyborgdino.com/wp-content/uploads/2013/04/GGJPING.jpg" width="800" height="529" /></a></p>
<p>It is a special kind of person that will actively choose to go to a Game Jam. These jams are usually a 48-hour crucible that pushes mental endurance to the limits and to willingly give up two days in order to co-create a video game with a collection of strangers and friends speaks volumes. At the end, one comes away with an unparalleled felling of accomplishment and an electric pulse that will leave one hungering for more. In addition, the camaraderie of fellow game jammers will flourish into close friendships lasting years to come.</p>
<p><a title="GGJ" href="http://globalgamejam.org/" target="_blank">Global Game Jam</a> of 2013 in San Francisco was no different, which took place in a co-working space in the heart of downtown. Upon arriving at the jam, I knew I was amongst my own people.  The folks that had gathered were all craftsman in their own right, be that in code, art or design. After the usual pleasantries of meet and greets, we broke off into smaller groups, all ranging from the single lone ranger to the massive tribes of ten. Personally, I had found fellowship with a motley crew of three other characters. Maybe it was written in the stars, maybe it was just luck of the draw, but over the next three days we would come together as a tight-knit team.  In the end, we had created a game that received a number of accolades from our fellow jammers.</p>
<p>At the core of any game jam is a theme, which is meant to serve as the seed for a game’s creative start. This year’s GGJ the theme was an audio clip of a beating heart. The key with any theme is not to take it literally, but to explore the fringes of what it could represent. After an hour or two of scheming, we had settled on a collection of ideas for the start of our entry. Taking the concept that a heart beat was a continuous signal; we chose to create a space horror survival game where the player is stranded in a pitch-black maze. The only guide for further progression is a constant “<a title="ping game" href="http://techiealex.com/ggj13/ping.html">ping</a>” or signal beckoning the player to proceed forward. It was decided upon early that there should be a feeling of helplessness as your move through the experience.  To make our lives easier and for effect, the player would never be able to fight back but only run as the main mechanic. We then came up with a quick concept art sketch to get the team’s mind on a single track; this also provided further inspiration as the jam progressed.</p>
<p><a href="http://cyborgdino.com/wp-content/uploads/2013/04/character02.jpeg"><img class="alignnone size-full wp-image-1159" alt="character02" src="http://cyborgdino.com/wp-content/uploads/2013/04/character02.jpeg" width="1024" height="611" /></a></p>
<p><b>What Went Right</b></p>
<p>From early on, what drew our team together was that we were going to use <a title="unity 3d" href="http://unity3d.com/" target="_blank">Unity3D</a> as the basic building block for the game jam entry. Unlike most of our fellow game jammers, the team had their heart set on creating a fully interactive 3D game with characters and environments.  This is also what set our entry apart from the rest. A fully walking, running and jumping 3D character is no small achievement, but, thanks to a fellow game jammer, we were turned on to a character animation middleware by the name of <a title="mixamo" href="http://www.mixamo.com/" target="_blank">Mixamo</a>. After reviewing the basic setup required by the animation software, we had a fully rigged and working character in less than four hours. Once the basic setup was completed, the team was able to choose from a huge library of motion capture data. Using the pre-made scripts provided by <a title="mixamo" href="http://www.mixamo.com/" target="_blank">Mixamo</a> made the integration of the animation as simple as dragging and dropping. It was also a godsend that one of the key developers of Mixamo was on hand to answer any of our questions and help work through any issues that had cropped up.  This in turn left our team to focus on the task of creating an experience instead of worrying about the minutiae of technical details.</p>
<p>The second major contributing factor of the overall success of the game was the visual and audio ambiance that was achieved.  It has been said horror is more about what is what your eyes cannot see than what it can. By creating a contrast of light and darkness, the player was left with a sense of helplessness and fear. This was the basic core of emotion that the team wanted to convey in the overall experience. In addition, the team was able to provide a music and effects soundtrack that perfectly complemented the bleak settings portrayed in the game.</p>
<p><b>What Went Wrong</b></p>
<p>Like any game jam, time is both the principal strength and weakness. Although we were able to achieve a lot of the basic gameplay that was initially conceived, a majority was left out due to a sheer lack of time.  Areas that we wished we could have explored more were a more substantial use of the light in the game as well as a better AI and Enemies. Maybe someday, we as a team will get together and try to flush out a more comprehensive experience. This could be very much be a <a title="kickstarter" href="http://www.kickstarter.com/">Kickstarter</a> in the making&#8211;a boy can dream…</p>
<p>In the end, we were proud of what we accomplished in such a short amount of time. It was due in part to the technology we used while the sheer skill of our fellow team members made up for the rest. What made everything truly worthwhile was seeing complete strangers become so engrossed in something you had put your heart and soul into. With that, I can only say for anyone that has ever thought about attending a hackathon or game jam, go do it. Go do it now! Once you have threaded that needle, you will come out a changed person and all for the better.</p>
<p>This article is featured on the official <a title="mixamo blog" href="http://blog.mixamo.com/mixamo/confessions-of-a-game-jammer/" target="_blank">Mixamo blog</a>, also the game can be played via the <a title="ping game" href="http://techiealex.com/ggj13/ping.html">link</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://cyborgdino.com/2013/03/confessions-of-a-game-jammer/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Font Generating Script Using Illustrator and FontLab Studio</title>
		<link>http://cyborgdino.com/2012/11/font-generating-script-using-illustrator-and-fontlab-studio/</link>
		<comments>http://cyborgdino.com/2012/11/font-generating-script-using-illustrator-and-fontlab-studio/#comments</comments>
		<pubDate>Mon, 26 Nov 2012 02:18:48 +0000</pubDate>
		<dc:creator>mcteapot</dc:creator>
				<category><![CDATA[font]]></category>
		<category><![CDATA[illustrator]]></category>
		<category><![CDATA[script]]></category>
		<category><![CDATA[tutorial]]></category>
		<category><![CDATA[video]]></category>
		<category><![CDATA[art]]></category>
		<category><![CDATA[extendscript]]></category>
		<category><![CDATA[fontlab]]></category>
		<category><![CDATA[production]]></category>

		<guid isPermaLink="false">http://cyborgdino.com/?p=1124</guid>
		<description><![CDATA[About three weeks ago, my employer HAUS Interactive sponsored a weekend-long art hack. During the hack, I helped a fellow colleague create a font from scratch. Initially, the font was designed in Illustrator. Once the basic font-set was laid out, it quickly became apparent that taking font paths and converting it to a TrueType .tff...]]></description>
				<content:encoded><![CDATA[<p>About three weeks ago, my employer <a title="haus" href="http://madeinhaus.com/" target="_blank">HAUS Interactive</a> sponsored a weekend-long art hack. During the hack, I helped a fellow colleague create a font from scratch. Initially, the font was designed in Illustrator. Once the basic font-set was laid out, it quickly became apparent that taking font paths and converting it to a TrueType <a title="ttf" href="http://en.wikipedia.org/wiki/TrueType" target="_blank">.tff</a> was going to be the majority of the work. Also, getting all the fonts properly spaced and sized was going to be a pain in the butt. After some searching, I came across this <a title="old tutorial" href="http://youtu.be/fOTLwmmrv8s" target="_blank">tutorial</a> and template file to help export fonts from <a title="illustrator" href="http://www.adobe.com/products/illustrator.html" target="_blank">Illustrator</a> to <a title="fontlab" href="http://www.fontlab.com/font-editor/fontlab-studio/" target="_blank">FontLab Studio</a>. A god send at the time. But the template file eventually came up short in my eyes being that it was set up to export one font at a time and getting proper kerning between the fonts was going to be a nightmare. After a few hours of preparing the fonts to be exported into FontLab Studio I vowed no one should ever have to do this again and decided to create a script to take away most of the production work of font development.</p>
<p>After a few nights of work (much thanks to <a title="drwoohoo" href="http://www.drwoohoo.com/" target="_blank">Dr.Woohoo</a> for guidance and his <a title="git extendscript" href="https://github.com/drwoohoo/ExtendScripts_AI" target="_blank">extendscript tutorials</a>), it was complete. So without further banter, here is the <a title="zip link" href="http://cyborgdino.com/wp-content/uploads/2012/11/fontGenerator.zip" target="_blank">zip</a> with a script, Illustrator and FontLab Studio template files to help vastly speed up the hours of tedium that comes with creating a font.</p>
<p><iframe width="500" height="281" src="http://www.youtube.com/embed/3S1hATBSGKQ?feature=oembed" frameborder="0" allowfullscreen></iframe></p>
<h3><strong><a href="http://cyborgdino.com/wp-content/uploads/2012/11/fontGenerator.zip">fontGenerator.zip</a></strong></h3>
<p>Also a link to the <a title="fontGen git" href="https://github.com/mcteapot/fontGenerator" target="_blank">git repo</a> of the project if you choose to extend the script.</p>
]]></content:encoded>
			<wfw:commentRss>http://cyborgdino.com/2012/11/font-generating-script-using-illustrator-and-fontlab-studio/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Circle Slider Button &#8211; Cocos2D</title>
		<link>http://cyborgdino.com/2012/07/circle-slider-button-cocos2d/</link>
		<comments>http://cyborgdino.com/2012/07/circle-slider-button-cocos2d/#comments</comments>
		<pubDate>Thu, 19 Jul 2012 04:54:32 +0000</pubDate>
		<dc:creator>mcteapot</dc:creator>
				<category><![CDATA[cocoa]]></category>
		<category><![CDATA[Cocos2D]]></category>
		<category><![CDATA[gamedev]]></category>
		<category><![CDATA[programming]]></category>
		<category><![CDATA[Cocoa]]></category>
		<category><![CDATA[cocos2d]]></category>
		<category><![CDATA[design]]></category>
		<category><![CDATA[ios]]></category>
		<category><![CDATA[objective-c]]></category>
		<category><![CDATA[ui]]></category>
		<category><![CDATA[ux]]></category>
		<category><![CDATA[xcode]]></category>

		<guid isPermaLink="false">http://cyborgdino.com/?p=1103</guid>
		<description><![CDATA[As development of our first ipad app winds down, we are reflecting upon what we have learned and it is a lot. In this process, we have tread into some new territories. One of our proudest accomplishments is in the form of a completely new UI paradigm for the iOS...]]></description>
				<content:encoded><![CDATA[<p>As development of our first ipad app winds down, we are reflecting upon what we have learned and it is a lot. In this process, we have tread into some new territories. One of our proudest accomplishments is in the form of a completely new UI paradigm for the iOS platform.</p>
<p><iframe width="500" height="375" src="http://www.youtube.com/embed/teAUEKx_dOA?feature=oembed" frameborder="0" allowfullscreen></iframe></p>
<p>We are calling it the &#8220;<a title="circle slider source" href="https://github.com/mcteapot/CocosSliderButton" target="_blank">Circle Slider Button</a>&#8220;. Yes, the name could use some work; suggestions are welcome. But as defined in the video above, it is a button that slides out to reveal other buttons that can be set and unset accordingly.  The CircleSliderButton object is initialized with a set number of <a title="ccMenuItem" href="http://www.cocos2d-iphone.org/api-ref/0.99.2/interface_c_c_menu_item.html" target="_blank">CCMenuItem</a>s. With a little magic from a <a title="double angle" href="http://mathworld.wolfram.com/Double-AngleFormulas.html" target="_blank">double angle formula</a> and some objective-c, it will then create an equally spaced radial menu. The reveal can <span style="line-height: 24px;">also </span>be altered at any point by redefining the object&#8217;s actions.</p>
<p>The full source as well as the PSD files for all the buttons used in the demo can be found at its home at <a title="github source" href="https://github.com/mcteapot/CocosSliderButton" target="_blank">github</a>. Feel free to alter or use the code to your heart&#8217;s content.</p>
<p>&nbsp;</p>
]]></content:encoded>
			<wfw:commentRss>http://cyborgdino.com/2012/07/circle-slider-button-cocos2d/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Detect Heterogeneous or Mixed Arrays in Ruby</title>
		<link>http://cyborgdino.com/2012/06/detect-heterogeneous-or-mixed-arrays-in-ruby/</link>
		<comments>http://cyborgdino.com/2012/06/detect-heterogeneous-or-mixed-arrays-in-ruby/#comments</comments>
		<pubDate>Thu, 07 Jun 2012 21:43:07 +0000</pubDate>
		<dc:creator>mcteapot</dc:creator>
				<category><![CDATA[programming]]></category>
		<category><![CDATA[ruby]]></category>
		<category><![CDATA[tutorial]]></category>

		<guid isPermaLink="false">http://cyborgdino.com/?p=1075</guid>
		<description><![CDATA[Over the past few days I have been picking up some Ruby. Overall, I enjoy the fully object oriented nature of the language. An interesting aspect of Ruby is its collections and the ability to create a heterogeneous or mixed set of objects. Although there...]]></description>
				<content:encoded><![CDATA[<p>Over the past few days I have been picking up some <a title="ruby lang" href="http://www.ruby-lang.org/en/" target="_blank">Ruby</a>. Overall, I enjoy the fully object oriented nature of the language. An interesting aspect of Ruby is its collections and the ability to create a heterogeneous or mixed set of objects. Although there are a number of <a title="collection debate" href="http://stackoverflow.com/questions/4534612/what-is-the-point-of-heterogenous-arrays" target="_blank">debates</a> on the usefulness of these types of collections, it is a good feature for those rare cases. One drawback of this feature is some methods such as <a title=".sort ruby doc" href="http://ruby-doc.org/core-1.9.3/Array.html#method-i-sort" target="_blank">.sort</a> will produce an Error when applied to the mixed collection. One way to prevent this would be to detect if a collection was heterogeneous prior to the method call. After digging around, I found there was no clear way to detect this. So for any future padawan learner of Ruby I will share my solution.</p>
<pre class="brush: ruby"># Detect for heterogeneous array
array = [1, 4, "hello", [2, 4], 3.5]
if array.map {|e| e.class}.uniq.size &gt; 1
  puts "Heterogeneous Collection"
end</pre>
<p>Using the map iterator, the code will generate a new array of object class definitions for every object in the collection. Now, it is a matter of checking for the number of uniques in the resulting array. If it is more than one, you will have yourself a mixed collection.</p>
]]></content:encoded>
			<wfw:commentRss>http://cyborgdino.com/2012/06/detect-heterogeneous-or-mixed-arrays-in-ruby/feed/</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
		<item>
		<title>The Mystery Behind Physics Engines</title>
		<link>http://cyborgdino.com/2012/04/the-mystery-behind-physics-engines/</link>
		<comments>http://cyborgdino.com/2012/04/the-mystery-behind-physics-engines/#comments</comments>
		<pubDate>Sun, 08 Apr 2012 00:25:13 +0000</pubDate>
		<dc:creator>mcteapot</dc:creator>
				<category><![CDATA[gamedev]]></category>
		<category><![CDATA[programming]]></category>
		<category><![CDATA[engines engine]]></category>
		<category><![CDATA[physics]]></category>

		<guid isPermaLink="false">http://cyborgdino.com/?p=978</guid>
		<description><![CDATA[Physics engines in games have been around for quite a while. Games from large to small that are worth their metal have some type of physics implemented within their gameplay—all the way from AAA games such as Gears of War to casual games such as...]]></description>
				<content:encoded><![CDATA[<p>Physics engines in games have been around for quite a while. Games from large to small that are worth their metal have some type of physics implemented within their gameplay—all the way from AAA games such as Gears of War to casual games such as Angry Birds. Just want to give a shout out to <a title="angry birds space" href="http://space.angrybirds.com/launch/" target="_blank">Angry Birds Space</a>, &#8220;that ish is bananas.&#8221; Also, another space mechanic game that was a predecessor to Angry Birds Space that is worth checking out is <a title="No Human" href="http://vol-2.com/nohuman/" target="_blank">No, Human</a>. The term physics can cover a broad range of topics such as the way light works or how nuclear fission is created in the core of stars. When it comes to game development, we are dealing with classic mechanics, which are based on the <a title="Newton's laws wiki" href="http://en.wikipedia.org/wiki/Newton's_laws_of_motion" target="_blank">laws</a> laid down by <a title="Isaac Newton wiki" href="http://en.wikipedia.org/wiki/Isaac_Newton" target="_blank">Isaac Newton</a>. This describes the motion of macroscopic objects such as birds being shot from a sling to astronomical objects such as the effect of a planetoid’s gravity on pigs flying through space.</p>
<p>When a game requires real world simulations of objects interacting with one another, programmers turn to a <a title="physics engine wiki" href="http://en.wikipedia.org/wiki/Physics_engine" target="_blank">physics engine</a>. These engines are just large calculators that help determine the position, rotation, velocity and acceleration of game entities. But, when it comes to the internal structure of how these engines work, most game developers are at a loss. We tend to think of physics engines as black boxes that perform some magic and rarely care about the deeper implementation. Although the output of these engines are amazing to behold, it can be quite advantageous to understand its underlying mechanics. So, when one comes across anomalies caused by physics, we can dissect the causality of what is going wrong.</p>
<p>The underlying characteristics that determine how to deal with objects in an engine are either Mass-aggregate or Rigid-body. Some other types of physics engines that are outside the scope of this article are <a title="soft body wiki" href="http://en.wikipedia.org/wiki/Soft_body_dynamics" target="_blank">soft body dynamics</a> and <a title="fluid dynamics" href="http://en.wikipedia.org/wiki/Fluid_dynamics" target="_blank">fluid dynamics</a>.</p>
<p><strong>Mass-Aggregate Engines</strong>: These types of engines treat entities as a collection of smaller masses. These masses are connected with a network of rigid poles. A box can be constructed with eight separate masses that link in a web to form a solid. Mass-Aggregate engines are generally easier to program, due to each mass being expressed in only linear motion. But there is a drawback to these engines: truly solid objects become hard to simulate. There is always going to be some amount of spring in your mass, so extra code is required to correct these imperfections.</p>
<p><iframe width="500" height="375" src="http://www.youtube.com/embed/kPrpdJcXbRk?feature=oembed" frameborder="0" allowfullscreen></iframe></p>
<p><strong>Rigid-Body Engines</strong>: With rigid body dynamics, objects are based on movement in three degrees of freedom. These objects occupy space and have properties such as a center of mass, moments of inertia, and are characterized as being non-deformable. Central characteristics of these properties are motion that is defined in six degrees of freedom, which are defined by translation in three directions plus rotation in three directions. What sets this type of engine apart is their level of realism, but this comes at the cost of being harder to program.</p>
<p><iframe width="500" height="375" src="http://www.youtube.com/embed/u8CMlJTr9Ko?feature=oembed" frameborder="0" allowfullscreen></iframe></p>
<p>When boiled down, a physics engine processes how and when two objects are to touch which is denoted as contact resolution. This is delegated to objects that are sitting on the floor, objects connected together and collision of objects. There are three major avenues to go about handling these contacts.</p>
<p><strong>Iterative Approach:</strong> Usually the easiest approach to implement, each contact is processed one by one. This works well with a limited number of contacts and can be resolved quickly. But it can run into problems with multiple objects colliding creating a large chain of collisions.</p>
<p><strong>Jacobian Approach:</strong> In this method, each contact between objects is calculated as an overall set of effects and are applied to all objects at the same time. The down side is the calculations involved are processer intensive, but this can result in a more physically accurate simulation. Another pitfall to this approach is some collisions are just not accounted for and extra code must be written to deal with these conditions.</p>
<p><strong>Reduced Coordinate Approach:</strong> These engines throw the laws of Newton out the window. Instead, sets of calculations are created to deal with every type of contact and constraints between objects. Most engineering software take this approach due to it’s high level of accuracy but it is an unrealistic solution for real time simulations where speed is key.</p>
<p>The last part of the puzzle is how these engines resolve contacts, or what happens after objects collide. This is when <a title="force wiki" href="http://en.wikipedia.org/wiki/Force" target="_blank">force</a> comes into play. In physics, force is what changes a state of rest or motion in an object. Forces cause objects to accelerate, change direction or change shape. A crate sitting on the ground receives the force pushing up from the ground while at the same rate of gravity pushing down. In turn, no change of motion is experienced. In the case of a bouncing angry bird, the force acting on the bird is greater than gravity in turn causing a change in velocity. But this force is acting in such a small interval of time it can be considered just an <a title="Impulse wiki" href="http://en.wikipedia.org/wiki/Impulse_(physics)" target="_blank">impulse</a>.</p>
<p><strong>Force Based:</strong> Some engines use force to rest objects and impulses for colliding objects. A more frequent approach is to just treat everything as a force. This approach proves to be quite tricky to implement being that the equations behind forces are complex and are harder to implement.</p>
<p><strong>Impulse Based:</strong> An alternative is to treat every collision as impulses, which are just, forces acting over a short period of time. A stationary object is kept still by calculating multiple collisions. The draw back is at lower frame rates; stationary objects can appear to jitter. But, being that the implementation is simpler, it is a good route to take.</p>
<p>When creating a physics engine from scratch, it is advisable to create it in stages. First, taking simple steps to create projectiles and eventually working your way up to cars and ragdolls. A wonderful book on the subject on physics engines is <a title="game physics engine development" href="http://www.amazon.com/gp/product/0123819768/ref=as_li_tf_tl?ie=UTF8&amp;tag=cyborgdino-20&amp;linkCode=as2&amp;camp=1789&amp;creative=9325&amp;creativeASIN=0123819768" target="_blank">Game Physics Engine Development</a> by Ian Millington. Also, currently we are developing an open-source JavaScript physics engine <a title="bounce.js github" href="https://github.com/mcteapot/bounce.js" target="_blank">Bounce.js</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://cyborgdino.com/2012/04/the-mystery-behind-physics-engines/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>Space Invaders iPad-HD Wallpaper!</title>
		<link>http://cyborgdino.com/2012/03/space-invaders-ipad-hd-wallpaper/</link>
		<comments>http://cyborgdino.com/2012/03/space-invaders-ipad-hd-wallpaper/#comments</comments>
		<pubDate>Sat, 17 Mar 2012 03:19:50 +0000</pubDate>
		<dc:creator>mcteapot</dc:creator>
				<category><![CDATA[art]]></category>
		<category><![CDATA[games]]></category>
		<category><![CDATA[ipad]]></category>
		<category><![CDATA[wallpaper]]></category>

		<guid isPermaLink="false">http://cyborgdino.com/?p=949</guid>
		<description><![CDATA[For all the video game loving peeps out there, that got them selves a sweet new HD ipad today! The full size image can be downloaded here.]]></description>
				<content:encoded><![CDATA[<p><img src="http://farm8.staticflickr.com/7057/6988815307_00aa37e2f0_z.jpg" alt="Space invader ipad3" /></p>
<p>
For all the video game loving peeps out there, that got them selves a sweet new HD ipad today! The full size image can be <a href="http://www.box.com/shared/static/b28c2a80d5a5ebf95c23" title="Space Invader iPad" target="_blank">downloaded here</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://cyborgdino.com/2012/03/space-invaders-ipad-hd-wallpaper/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Let’s Make a 3D Game with HTML5: 01</title>
		<link>http://cyborgdino.com/2012/03/lets-make-a-3d-game-with-html5-01/</link>
		<comments>http://cyborgdino.com/2012/03/lets-make-a-3d-game-with-html5-01/#comments</comments>
		<pubDate>Tue, 13 Mar 2012 04:41:03 +0000</pubDate>
		<dc:creator>mcteapot</dc:creator>
				<category><![CDATA[gamedev]]></category>
		<category><![CDATA[programming]]></category>
		<category><![CDATA[tutorial]]></category>
		<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[3d]]></category>
		<category><![CDATA[html5]]></category>
		<category><![CDATA[shooter]]></category>
		<category><![CDATA[three.js]]></category>

		<guid isPermaLink="false">http://cyborgdino.com/?p=848</guid>
		<description><![CDATA[So we will kick off the second installment of Let&#8217;s Make a 3D Game with HTML5. This series of tutorials is meant to help one get a better understanding on how to create a slick 3D game with the newest of WebGL technologies. As stated...]]></description>
				<content:encoded><![CDATA[<p>So we will kick off the second installment of <em>Let&#8217;s Make a 3D Game with HTML5</em>. This series of tutorials is meant to help one get a better understanding on how to create a slick 3D game with the newest of <a href="http://www.khronos.org/webgl/" title="WebGL" target="_blank">WebGL</a> technologies.</p>
<p>As stated before in my <a href="http://cyborgdino.com/2012/02/lets-make-a-3d-game-with-html5-00/" title="Let's make a 3D game with html5: 00" target="_blank">previous tutorial</a>, we are going to be building a 3D shooter that is an homage to some of the classic games of yesteryears. The goal of this installment of the series is to get an understanding of how to create a graphics pipeline. But before we get to into the nitty-gritty, we need an update on some of the tools and frameworks we are going to use.</p>
<h3>Selected Frameworks and Tools</h3>
<p>This is in addition to the list from the last tutorial in the series.</p>
<ul>
<li><a href="http://www.mamp.info/en/index.html" title="MAMP" target="_blank">MAMP</a>: Quick set up of a local server for web development on OSX.</li>
<li><a href="https://github.com/zz85/sparks.js/" title="sparks.js" target="_blank">Sparks.js</a>: Particle engine built on top of three.js.</li>
<li><a href="https://github.com/kripken/ammo.js/" title="Ammo.js" target="_blank">Ammo.js</a>: Physics engine for collision detection.</li>
<li><a href="http://cyborgdino.com/2012/02/threeconvert-osx-batch-exporter-utility-for-three-js/" title="ThreeConvert" target="_blank">ThreeConvert</a>: Utility for batch converting .obj files to .js format.</li>
<li><a href="http://blackjk3.github.com/threefab/" title="ThreeFab" target="_blank">ThreeFab</a>: JSON .js asset viewer</li>
<li><a href="http://webchat.freenode.net/" title="irc.freenode.net webchat" target="_blank">irc.freenode.net</a> #three.js: chat room for three.js help</li>
</ul>
<h3>Graphics Pipeline</h3>
<p>According to Wikipedia, “the <a href="http://en.wikipedia.org/wiki/Graphics_pipeline" title="graphics pipeline wiki" target="_blank">graphics pipeline</a> typically accepts some representation of three-dimensional primitives as an input and results in a 2D rasterized image as output.” In our case, the 3D models we are going to create for the project are going to be rasterized by our draw engine&#8211;which is WebGL. This is done with the help of the abstracted layer that is <a href="https://github.com/mrdoob/three.js/" title="three.js" target="_blank">three.js</a>. Boiled down, the graphics pipeline is detailing how we are going to get our art into our code.</p>
<p>Before we even get into exporting our models, we need to talk about 3D packages. The current application for creating 3D assets for this project is going to be <a href="http://www.maxon.net/" title="C4D" target="_blank">Cinema 4D</a>. There are much better alternative 3D packages for setting up a pipeline to three.js. Currently, <a href="http://www.blender.org/" title="Blender" target="_blank">Blender</a> comes out on top as the best software for integrating models into three.js. This is mainly due to the add-ons that let you export and import the native JSON three.js format. The second in line is <a href="http://usa.autodesk.com/3ds-max/" title="3ds Max" target="_blank">3ds Max</a>, a popular 3D package that is exclusive to Windows. It is also the application of choice for most of the AAA game industry at large. Max via a plugin lets you export to the native JSON format while importing is not supported as of yet.</p>
<p>The rest of us who are not on Windows and those of us who detest Blender (any real 3D artist) are left with the very few alternatives. The first method is to output as an <a href="http://en.wikipedia.org/wiki/Wavefront_.obj_file" title=".obj" target="_blank">.obj</a> or <a href="http://en.wikipedia.org/wiki/FBX" title=".fbx" target="_blank">.fbx</a> file and then convert to the native JSON format by using the python scripts that comes with three.js. To compile problems, the script for converting .fbx files is extremely outdated, in turn leaving us with the only choice of our export format as .obj. It must also be stated .obj files have no support for bones or animations, but for the current project, static meshes will work fine. Also, for those of you who can’t be bothered with command line utilities, there is <a href="http://cyborgdino.com/2012/02/threeconvert-osx-batch-exporter-utility-for-three-js/" title="ThreeConvert" target="_blank">ThreeConvert</a>&#8211;an OSX utility app that lets you batch convert .obj files. The second method is to export as a COLLADA file format.</p>
<p><a title="JSON vs XML by cyborgdino, on Flickr" href="http://farm8.staticflickr.com/7190/6975239141_7fb7a54571_b.jpg" target="_blank"><img src="http://farm8.staticflickr.com/7190/6975239141_7fb7a54571_z.jpg" alt="Lets Make a 3D HTML5 01" width="640" height="276" /></a></p>
<p><em>Note:</em> All the plugins and exporters can be found inside of the three.js package in the folder utils/exporters.</p>
<h3>JSON vs XML Fight!</h3>
<p>Although the <a href="https://collada.org/mediawiki/index.php/COLLADA_-_Digital_Asset_and_FX_Exchange_Schema" title="COLLADA" target="_blank">COLLADA</a> files seem to work fine, the optimal method for importing 3D objects into three.js is to use the native .js format. The reason for this is due to the speed of <a href="http://www.json.org/" title="JSON" target="_blank">JSON</a> vs <a href="http://en.wikipedia.org/wiki/XML" title="XML" target="_blank">XML</a> on the web. COLLADA documents are descriptions of digital objects using an XML schema to exchange digital assets in various graphics applications.</p>
<p>With traditional game development, the issue of loading large files is trivial being that the files live on the hard drive. The low latency between the data storage of the hard drive and the CPU lets native applications deal with large formats with minimal effort. This is the opposite case with the Internet. Your browser is only fast as your Internet connection and the choice of file formats plays a crucial role in the speed of your application.</p>
<p>This is where the native JSON loader of three.js comes into play. JSON or JavaScript Object Notation is a lightweight text-based open standard that is derived from the <a href="http://en.wikipedia.org/wiki/JavaScript" title="JavaScript" target="_blank">JavaScript</a> associative arrays and is used for data interchange. Three.js itself has defined a model format using JSON to represent 3D objects and currently it is in <a href="https://github.com/mrdoob/three.js/wiki/JSON-Model-format-3.0" title="version 3.0" target="_blank">version 3.0</a>. After some extensive testing, the results of the two files were astonishing. Not only was the JSON format faster on load time, the output was also visually much cleaner. This was very much the case for very low poly objects as you can see with the side-by-side comparisons. Another caveat of using COLLADA was more lights were required in the scene to properly display the assets.</p>
<p>It has to be stated that the development of the COLLADA loader has currently ceased. There has been interest shown from <a href="http://www.khronos.org/" title="The Khronos Group" target="_blank">The Khronos Group</a> to pick up work for the loader, but at the current time, nothing has come of it.</p>
<h3>Getting Baked with Tricks of the Trade</h3>
<p>At the end of the day, all we want are clean assets in our game and we have to choose the best set of methods to accomplish this task. Being that we are dealing with the limited nature of webGL, we are going to have to employ a few tricks to get our assets to look nice and pretty inside of our game. The avenue we plan to take is a trick used in such games as <a href="http://en.wikipedia.org/wiki/Mirror's_Edge" title="Mirror's Edge" target="_blank">Mirrors Edge</a> and <a href="http://www.proun-game.com/" title="Proun Game" target="_blank">Proun</a>. The style of our game is very simplistic but the visual fidelity of the objects can be improved upon by using <a href="http://en.wikipedia.org/wiki/Global_illumination" title="Global Illumination" target="_blank">Global Illumination</a>(GI) and <a href="http://en.wikipedia.org/wiki/Ambient_occlusion" title="Ambient Occlusion" target="_blank">Ambient Occlusion</a>(AO). These graphics rendering techniques are very processor intensive and virtually impossible to accomplish in a real time web based game. But, what we can do is bake the lights and AO into our game before exporting our models.</p>
<p>The game Proun used these techniques with some beautiful results, as you can see with the sample image below. If you have yet to play the game, <a href="http://www.proun-game.com/Buy.html" title="Proun buy" target="_blank">go download</a> it now! It is ok, this webpage will still be here when you get back.</p>
<p><img src="http://cyborgdino.com/wp-content/uploads/2012/03/proun1.jpg" alt="Proun Baking" /></p>
<p>The baking of GI and AO are a little bit out of the scope of this article. But, thanks to the awesome people of the Internet, detailed explanations have already been made on these subjects. Below is a list of the tutorials.</p>
<ul>
<li><a href="http://www.youtube.com/watch?v=JddOx9G70XA" title="Baking Objects C4D youtube" target="_blank">Bake Object in Cinema 4d – YouTube</a></li>
<li><a href="http://www.c4dcafe.com/ipb/files/file/207-baking-gi-basics/" title="Baking GI Basics c4d cafe" target="_blank">Baking GI Basics &#8211; C4D Café</a></li>
<li><a href="http://www.youtube.com/watch?v=CsSxUSvdrgg" title="C4D GI Baking youtube" target="_blank">Cinema 4d GI Baking with Importing into Unity Pro &#8211; YouTube</a></li>
</ul>
<h3>Conclusions</h3>
<p>So what have we learned? Exporting from C4D into three.js is no easy task. But, the pipeline has been forged and it is too late to switch 3D packages. Down the line, I <em>“might”</em> consider using Blender, but a better option would be to create an exporter for C4D that creates JSON objects. Scale is another issue that was tackled while exporting. Generally the smaller the better; it is best to work at a millimeter scale when creating 3D models or just resize objects accordingly during exporting or loading. Another gotcha that one might run into deals with the local center axes of assets. If the object you are exporting is going to animate and move, it is important to set the local center point at the origin of the 3D package. With assets such as backgrounds or scenery, it can be advantageous to set its position inside of the 3D package as opposed to hand setting it in your coding environment.</p>
<p>At this point in the article, you must be asking yourselves where is the big payoff? So without further adieu here it is: <a href="http://bit.ly/yvqNNg" title="SHOOTER01" target="_blank">Shooter01</a></p>
<p>Now, if you are not all that impressed, it is ok. Mind you, this is what is referred to as the <a href="http://rampantgames.com/blog/2004/10/black-triangle.html" title="Black Triangle" target="_blank">Black Triangle</a>. It is the journey that the object had to take to get on to the screen. It had to pass through a modeling tool, then to a converter program, then had to be loaded into the three.js code fully textured, and then finally rendered. The black triangle is a statement of a complex system being completed and now we can put work into doing more cool stuff.</p>
<p>When dealing with bleeding edge technologies, it is guaranteed you are going to run into unforeseen roadblocks a lot of the time. It is going to be up to you to forge ahead and set a path that has never been taken before. You will have to learn to roll with the punches. Just because there is a lack of documentation of what you want to accomplish, it should never hold you back. One great thing about three.js is the helpfulness of the community. With a little bit of digging around, you can easily find <a href="https://twitter.com/#!/mrdoob" title="mrdoob" target="_blank">someone</a> that will help answer your questions. Any framework is only as good as the people that are supporting it. So with that stated, if you have any questions please feel free to <a title="email me" href="mailto:contact@cyborgdino.com">contact me</a> or leave a comment.</p>
<h3>Next</h3>
<p>Coming up, we plan to get the ship moving around and firing some bullets.</p>
<ul>
<li>Quick overview of three.js.</li>
<li>Moving the ship via input commands from the user by JS event methods</li>
<li>Shooting lasers and bullets</li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://cyborgdino.com/2012/03/lets-make-a-3d-game-with-html5-01/feed/</wfw:commentRss>
		<slash:comments>7</slash:comments>
		</item>
		<item>
		<title>Cyborg Gabo</title>
		<link>http://cyborgdino.com/2012/03/cyborg-gabo/</link>
		<comments>http://cyborgdino.com/2012/03/cyborg-gabo/#comments</comments>
		<pubDate>Tue, 06 Mar 2012 08:07:49 +0000</pubDate>
		<dc:creator>mcteapot</dc:creator>
				<category><![CDATA[art]]></category>
		<category><![CDATA[concepts]]></category>
		<category><![CDATA[dinosaurs]]></category>

		<guid isPermaLink="false">http://cyborgdino.com/?p=905</guid>
		<description><![CDATA[This amazing piece was done by a close friend of mine, Gabo. Who has reminded me of what it means to be an artist once again. With any skill that is learned, it can also be unlearned. The only way to become a great artist...]]></description>
				<content:encoded><![CDATA[<p><a title="Cyborg Gabo by Gabo" href="http://farm8.staticflickr.com/7193/6958329029_d4f92828b3_b.jpg" target="_blank"><img src="http://farm8.staticflickr.com/7193/6958329029_d4f92828b3_z.jpg" alt="Cyborg Gabo" width="640" height="485" /></a></p>
<p>
This amazing piece was done by a close friend of mine, <a href="https://twitter.com/#!/gabotron2000" title="gabo twitter" target="_blank">Gabo</a>. Who has reminded me of what it means to be an <a href="http://en.wikipedia.org/wiki/Pablo_Picasso" title="artist" target="_blank">artist</a> once again. With any skill that is learned, it can also be unlearned. The only way to become a great artist is to draw and draw every day, draw every hour, draw every minute, draw every second! If you want to check out more of Gabo&#8217;s badass work that ranges from art to game design, it can be found at his blog <a href="http://gabotron2000.tumblr.com/" title="gabotron2000 blog" target="_blank">gabotron2000.tumblr.com</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://cyborgdino.com/2012/03/cyborg-gabo/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>ThreeConvert OSX Batch Exporter Utility For three.js</title>
		<link>http://cyborgdino.com/2012/02/threeconvert-osx-batch-exporter-utility-for-three-js/</link>
		<comments>http://cyborgdino.com/2012/02/threeconvert-osx-batch-exporter-utility-for-three-js/#comments</comments>
		<pubDate>Wed, 29 Feb 2012 05:38:24 +0000</pubDate>
		<dc:creator>mcteapot</dc:creator>
				<category><![CDATA[gamedev]]></category>
		<category><![CDATA[programming]]></category>
		<category><![CDATA[Cocoa]]></category>
		<category><![CDATA[exporter]]></category>
		<category><![CDATA[objective-c]]></category>
		<category><![CDATA[three.js]]></category>
		<category><![CDATA[tool]]></category>
		<category><![CDATA[utility]]></category>

		<guid isPermaLink="false">http://cyborgdino.com/?p=865</guid>
		<description><![CDATA[After working with the command line utilities for three.js I realized I was going to need a batch exporter for converting a group of 3d object files in one shot. So I whipped up an OSX app(ThreeConvert), that links to the three.js exporter python scripts...]]></description>
				<content:encoded><![CDATA[<p>
After working with the command line utilities for <a title="three.js" href="https://github.com/mrdoob/three.js/" target="_blank">three.js</a> I realized I was going to need a batch exporter for converting a group of 3d object files in one shot. So I whipped up an OSX app(<a title="threeconvert.zip" href="http://cyborgdino.com/wp-content/uploads/2012/03/ThreeConvert.zip" target="_blank">ThreeConvert</a>), that links to the three.js exporter python scripts and lets you batch convert <a title="obj" href="http://en.wikipedia.org/wiki/Wavefront_.obj_file" target="_blank">.obj</a> and <a title="fbx" href="http://en.wikipedia.org/wiki/FBX" target="_blank">.fbx</a> files. Hope it comes in handy!
</p>
<p><img src="http://cyborgdino.com/wp-content/uploads/2012/02/threeconvert01.jpg" alt="threeconver app" /></p>
<p>
The OSX app <a title="threeconvertapp" href="http://cyborgdino.com/wp-content/uploads/2012/03/ThreeConvert.zip" target="_blank">ThreeConvert</a> can be <a title="threeconvert app" href="http://cyborgdino.com/wp-content/uploads/2012/03/ThreeConvert.zip" target="_blank">downloaded here</a>. Also the source can be found on <a title="threeconvert github" href="https://github.com/mcteapot/ThreeConvert" target="_blank">github</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://cyborgdino.com/2012/02/threeconvert-osx-batch-exporter-utility-for-three-js/feed/</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
		<item>
		<title>DOOM Gameplay</title>
		<link>http://cyborgdino.com/2012/02/doom-gameplay/</link>
		<comments>http://cyborgdino.com/2012/02/doom-gameplay/#comments</comments>
		<pubDate>Sat, 25 Feb 2012 17:59:39 +0000</pubDate>
		<dc:creator>mcteapot</dc:creator>
				<category><![CDATA[gamedev]]></category>
		<category><![CDATA[video]]></category>
		<category><![CDATA[camera]]></category>
		<category><![CDATA[design]]></category>
		<category><![CDATA[doom]]></category>
		<category><![CDATA[pc]]></category>

		<guid isPermaLink="false">http://cyborgdino.com/?p=795</guid>
		<description><![CDATA[Great video essay by Chris Franklin aka Errant Signal on what makes Doom, Doom. A breakdown of one of the greatest FPS games ever made. Must watch!]]></description>
				<content:encoded><![CDATA[<p><iframe width="500" height="281" src="http://www.youtube.com/embed/TyOF2RsO3ck?feature=oembed" frameborder="0" allowfullscreen></iframe></p>
<p>
Great video essay by Chris Franklin aka <a href="https://twitter.com/#!/Campster" title="Errant Signal">Errant Signal</a> on what makes <a href="http://en.wikipedia.org/wiki/Doom_(video_game)" title="Doon wiki">Doom</a>, Doom. A breakdown of one of the greatest FPS games ever made. Must watch!</p>
]]></content:encoded>
			<wfw:commentRss>http://cyborgdino.com/2012/02/doom-gameplay/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
	</channel>
</rss>
