tag:blogger.com,1999:blog-82344216227355474772024-02-18T18:06:22.280-08:00James Makes Games - Game Development BlogJames Creavallehttp://www.blogger.com/profile/04510634852858564820noreply@blogger.comBlogger24125tag:blogger.com,1999:blog-8234421622735547477.post-1996964021565861092013-12-12T20:14:00.002-08:002014-11-16T15:44:06.874-08:00Game Engine Design and Implementation: A Semester Post MordemIt's been a long, hard semester but it's finally coming to an end. The past month has been overwhelmingly busy between programming Gamma Gears and wrestling with course work and the like. In this blog, I'll talk about a few of the lessons I've learned this semester and a bit about what I've been up to.<br />
<br />
<h3>
Lesson 1: Gamedevs Don't Do Documentation.</h3>
<br />
At the start of the semester we were required to use a pre-made engine, despite my requests to use our Dungeon Boy engine from GTFO: The Double Dungeon Debacle. My professor felt that by using a third party engine (in our case Sony's Phyre) we could get straight to the making the most important part, gameplay.<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="http://wildhunt.org/wp-content/uploads/2013/02/you-mad-bro-.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="http://wildhunt.org/wp-content/uploads/2013/02/you-mad-bro-.jpg" height="318" width="320" /></a></div>
<div class="separator" style="clear: both; text-align: center;">
Yeah I mad.</div>
<br />
<br />
I didn't believe him for a second. We had a pretty good workflow with our existing engine with working combat, and all necessary game engine components working in acceptable capacity. Getting set up with a new engine would take time. There would be so much troubleshooting and failure ahead, with no merit to what we had previously accomplished.<br />
<br />
A wise prof once said: "Gamedevs don't do documentation". I thought he was kidding before I met Sony's Phyre Engine.<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="http://www.gameiswar.com/wp-content/uploads/2013/03/PhyreEngine.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="http://www.gameiswar.com/wp-content/uploads/2013/03/PhyreEngine.jpg" height="100" width="400" /></a></div>
<br />
<br />
When using a tool as extensive as a game engine for the first time, there is a lot of uncharted territory. In some cases it's like being given a bag of futuristic Alien tools with little to no instructions on their intended use.<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="http://storage.siliconera.com/wordpress/wp-content/uploads/2011/10/image_thumb112.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="http://storage.siliconera.com/wordpress/wp-content/uploads/2011/10/image_thumb112.png" height="181" width="320" /></a></div>
<div class="separator" style="clear: both; text-align: center;">
Samples like these were our primary means of deconstructing Phyre.</div>
<div class="separator" style="clear: both; text-align: center;">
<br /></div>
<div class="separator" style="clear: both; text-align: left;">
<br /></div>
To clarify, the engine does come with some documentation that will get you started, but there are many common tasks that are not detailed or covered. The instructions are often incomplete and downright negligent. In order to get started making a game with this tool, I had to deconstruct the few sample projects I was provided with. Unfortunately none of these sample projects contained any form of combat, so this left me with very little reference for that aspect of the game. Chances are if you didn't help make Phyre engine, you're going to run in to some issues.<br />
<br />
Thankfully for some of the more technical issues (like how to create a phyre base project) we were able to get help from one of our fellow classmates. His blog can be found here: <a href="http://mikedaprogramma.blogspot.ca/">http://mikedaprogramma.blogspot.ca/</a><br />
<br />
<h3>
Lesson 2: Choosing an engine should be about the right tool for the right job.</h3>
To make a long story short, development on Gamma Gears was slow and often confusing. Due to the intense learning curve in working with Phyre and minimal of availability of assets early on, getting the basics up and running took much longer than expected. Once we managed to get our skeletal animation system working, we had decent animation and locomotion with environment collision detection. All of these features were implemented in script as recommended in Phyre's documentation and demonstrated in the samples. We took this approach so that we could build our game scenes using the Phyre level Editor which we thought would make things easier. Not to mention the samples were implemented in this way. Once the game is constructed in the level editor, the assets are exported and the scene can be loaded in code.<br />
<br />
We ran into problems when trying to access data between our script (lua) and code (c++) platforms. This was most likely due to our own inexperience with the tools, but as a result we were unable to implement certain "code only" features such as GUI and audio.<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhHB8KRFWLg7fPwmFKlM-eRfXg1nrHeZkOCdZogwmzyepdN56vnHsToD91os0IR845CdtATODWfLo3_l0wMxkOa2ivbmsFI2gK6Qx6TIOrlIBfKJSJl9ukvgSSv8E1MXzl0cZ2S_8DznGU/s1600/gammaGearScreen.PNG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhHB8KRFWLg7fPwmFKlM-eRfXg1nrHeZkOCdZogwmzyepdN56vnHsToD91os0IR845CdtATODWfLo3_l0wMxkOa2ivbmsFI2gK6Qx6TIOrlIBfKJSJl9ukvgSSv8E1MXzl0cZ2S_8DznGU/s320/gammaGearScreen.PNG" height="222" width="320" /></a></div>
<br />
<br />
To make matters worse, despite my best efforts at implementing combat in script, things just weren't coming together. <br />
<br />
I knew I had to present some form of gameplay to my Game Design professor today, so last night I coded a combat prototype using our Dungeon Boy engine in about 12 hours. Many new systems had to be added (multiplayer input, chain combos, multiplayer camera), as well as countless adjustments to movement, collision, animation states, and assets. This was only possible because I was working with tools that I had created.<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjmOXOEE3d_GT21Gj4yRubwkNhc7kNt40yqyJnGgv4Que-UY9xPoz-uoVr5mDE-NoM4JSnBZYhJpqe5BKkZIaaxkq49ptSHzNC9CeoUuSFC1Pr4omDbZkVNX-X3nMOr7aejPiMbmyC1K5w/s1600/gammaGearsTitle.PNG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjmOXOEE3d_GT21Gj4yRubwkNhc7kNt40yqyJnGgv4Que-UY9xPoz-uoVr5mDE-NoM4JSnBZYhJpqe5BKkZIaaxkq49ptSHzNC9CeoUuSFC1Pr4omDbZkVNX-X3nMOr7aejPiMbmyC1K5w/s400/gammaGearsTitle.PNG" height="245" width="400" /></a></div>
<div class="separator" style="clear: both; text-align: center;">
Working Title Screen: Check</div>
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgvW5apTEuRckbZ3-E5-Wpddlxpf1tn2CtM_CvnxyeZ5wjT0GoaLDikYG0-BPjUtPBS1v2nipMq_cZ0NRvfJPIePpWzNqcXozl__vuP5UCc7hOx02KP7_EJrrYFSEjFHoOKt56BmCdfsJw/s1600/gammaGameplay2.PNG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgvW5apTEuRckbZ3-E5-Wpddlxpf1tn2CtM_CvnxyeZ5wjT0GoaLDikYG0-BPjUtPBS1v2nipMq_cZ0NRvfJPIePpWzNqcXozl__vuP5UCc7hOx02KP7_EJrrYFSEjFHoOKt56BmCdfsJw/s400/gammaGameplay2.PNG" height="246" width="400" /></a></div>
<div class="separator" style="clear: both; text-align: center;">
It may not look like much, but this is gameplay. There was very little time for visual adjustments.</div>
<div class="separator" style="clear: both; text-align: center;">
<span style="text-align: start;">I can't wait to sleep after this blog is over. </span></div>
<br />
In 12 hours we achieved fully functional 1 on 1 multiplayer combat (I wouldn't say it's super fun yet but you can beat eachother up pretty good), with GUI, sounds, and a basic restart event. This build is sadly, more playable than our Phyre build, which I've spent at least 10 times the hours working on.<br />
<br />
If there's a point I'm trying to make here, it's the one about getting right to the gameplay. Sometimes the right tool for the right job is the one you made yourself.<br />
<br />
<h3>
Lesson 3: The Shawarma effect</h3>
<div class="separator" style="clear: both; text-align: center;">
<a href="http://instpetersburg.files.wordpress.com/2010/05/skewer-of-shawarma.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="http://instpetersburg.files.wordpress.com/2010/05/skewer-of-shawarma.jpg" height="320" width="212" /></a></div>
<div class="separator" style="clear: both; text-align: center;">
Mmmmm Shawarma.</div>
<div>
<br /></div>
<br />
The shawarma effect is a term that refers to the continuous stripping down of an idea or project.<br />
<br />
Often when designing games, the initial scope is set too high. The process of refining the idea is usually very much about simplifying it into it's most important parts. Over the course of the semester, Gamma Gears has been many different things. The Gamma Gears (both prototypes) you see in this blog is nowhere near as complex as planned in the design document. It's meaty bits have been trimmed down until only the base is present. This is a natural reality when creating early prototypes of games, especially when running on a tight schedule.<br />
<br />
To deal with the shawarma effect, it's important to strip your game down early rather than later when it's time to actually implement your design.<br />
<br />James Creavallehttp://www.blogger.com/profile/04510634852858564820noreply@blogger.com0tag:blogger.com,1999:blog-8234421622735547477.post-87816766792068974982013-12-05T12:00:00.000-08:002013-12-07T11:22:32.110-08:00Camera Systems: The Good, The Bad and The Ugly<div class="separator" style="clear: both; text-align: center;">
<a href="http://farm3.staticflickr.com/2469/3954241790_0814844856.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="200" src="http://farm3.staticflickr.com/2469/3954241790_0814844856.jpg" width="141" /></a></div>
<div class="separator" style="clear: both; text-align: center;">
<span style="font-size: xx-small;">I don't know who this guy is, but I hope you agree that his face is awesome.</span></div>
<br />
Camera systems in games play an extremely important role in delivering an enjoyable experience. Not only does the camera represent the viewpoint of the player, it is also responsible for delivering a visually pleasing and functional scene. In this blog I'll be discussing some camera systems from older games and eventually, some much better ones from a few newer titles. Over the years developers have learned from each other's mistakes, and gamers' standards have risen. Back in the day, bad cameras were almost an acceptable part of 3D games. Now as games continue to grow in complexity, so do the cameras that power them.<br />
<br />
Ok let's get started shall we.<br />
<br />
<br />
<h3>
Old Games, Bad Cameras:</h3>
<h4>
Early Resident Evil Games</h4>
<div class="separator" style="clear: both; text-align: center;">
<a href="http://images.wikia.com/residentevil/images/f/f4/Resident_Evil_1_Chris.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="238" src="http://images.wikia.com/residentevil/images/f/f4/Resident_Evil_1_Chris.jpg" width="320" /></a></div>
<div class="separator" style="clear: both; text-align: center;">
I remember this game being <i>so</i> scary in 1996..</div>
<div class="separator" style="clear: both; text-align: center;">
<br /></div>
<div class="separator" style="clear: both; text-align: left;">
Despite being one of my favorite game series' (with the exception of RE6), the Resident Evil franchise has had a history of awkward fixed camera systems. This was largely due to the levels being made up of 2D sprites (pre RE: Code Veronica). Often the player would be engaged by enemies located off screen, or occluded by objects in the level. To make matters worse the movement controls were not relative to the camera, giving the characters a tank like feel. Some would argue that the early RE games owe their scariness to the fumbly controls and awkward camera angles. </div>
<br />
<div style="text-align: center;">
<iframe allowfullscreen='allowfullscreen' webkitallowfullscreen='webkitallowfullscreen' mozallowfullscreen='mozallowfullscreen' width='320' height='266' src='https://www.youtube.com/embed/bdrbLeTx-xM?feature=player_embedded' frameborder='0'></iframe></div>
<div class="separator" style="clear: both; text-align: center;">
Skip to 6:24 to see what I mean.</div>
<div class="separator" style="clear: both; text-align: left;">
<br /></div>
<div class="separator" style="clear: both; text-align: left;">
<br /></div>
<div class="separator" style="clear: both; text-align: left;">
Capcom eventually learned their lesson with Resident Evil 4, popularizing the now standard "over the shoulder" camera perspective. We'll talk about this one in the "good cameras" section.</div>
<div>
<br /></div>
<br />
<h4>
Early Tomb Raider Games</h4>
<div class="separator" style="clear: both; text-align: center;">
<a href="http://indiamarketprice.in/wp-content/uploads/13570390072636/13570390207257.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="240" src="http://indiamarketprice.in/wp-content/uploads/13570390072636/13570390207257.jpg" width="320" /></a></div>
<div class="separator" style="clear: both; text-align: center;">
Again don't get me wrong, I love these games. But boy did the camera make me rage.</div>
<div class="separator" style="clear: both; text-align: center;">
<br /></div>
<div class="separator" style="clear: both; text-align: left;">
The Tomb Raider series was one of the original innovators of the traditional 3rd person camera. The camera is offset a certain distance from Lara in the Y and Z axes, and follows her constantly. The camera interpolates to Lara's orientation as she runs forward (but not when turning on the spot). This is all well and good for the most part.</div>
<div class="separator" style="clear: both; text-align: left;">
<br /></div>
The real problems arise when the game's camera collides with the environment. This can make it very difficult to make precise jumps, or avoid the game's lethal obstacles. Combine this with the camera being unaffected by enemies (on screen or off) and you're in for some pretty frustrating scenarios.<br />
<div class="separator" style="clear: both; text-align: left;">
<br /></div>
<h4>
Dishonorable mention: Prince of Persia Warrior Within</h4>
<div class="separator" style="clear: both; text-align: center;">
<a href="http://www.dan-dare.org/FreeFun/Images/PrinceOfPersiaWallpaper21024.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="238" src="http://www.dan-dare.org/FreeFun/Images/PrinceOfPersiaWallpaper21024.jpg" width="320" /></a></div>
<div class="separator" style="clear: both; text-align: center;">
SPOILER: Sands of Time was better.</div>
<div class="separator" style="clear: both; text-align: center;">
<br /></div>
<div class="separator" style="clear: both; text-align: left;">
As you probably guessed, I am a fan of the Prince of Persia series. The camera system in the Sands of Time trilogy was very good for the most part. However in Warrior Within, whenever the Prince encounters "the Dahaka" the camera takes a turn for the worst (no pun intended).</div>
<br />
<div style="text-align: center;">
<iframe allowfullscreen='allowfullscreen' webkitallowfullscreen='webkitallowfullscreen' mozallowfullscreen='mozallowfullscreen' width='320' height='266' src='https://www.youtube.com/embed/mKTuSXca4zg?feature=player_embedded' frameborder='0'></iframe></div>
<div style="text-align: center;">
<br /></div>
<div style="text-align: center;">
<br /></div>
The transitions from third person camera to fixed camera can be quite jarring, especially since the camera is moving in such a way that the player cannot see the platforms ahead.<br />
<br />
Thankfully they did not continue to use this system in subsequent Prince of Persia titles.<br />
<br />
<h3>
Games with good cameras:</h3>
<h4>
God of War</h4>
<div class="separator" style="clear: both; text-align: center;">
<a href="http://findyourinnergeek.ca/wp-content/uploads/2012/09/krat.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="180" src="http://findyourinnergeek.ca/wp-content/uploads/2012/09/krat.jpg" width="320" /></a></div>
<div class="separator" style="clear: both; text-align: center;">
<br /></div>
<div>
There are many cases where a camera system is so natural that we as players don't notice it all. Chances are if nobody is complaining about it, the developers have gotten it right. God of War is known for it's brutal cinematic gameplay that makes you feel like a total badass. The game gives no camera control to the player as the right analog stick is used for dodging, yet somehow it works nearly flawlessly.</div>
<div>
<br /></div>
<div>
The series is partially responsible for popularizing the node based, cinematic action camera. This camera system involves interpolating between set camera nodes (positions in 3D space) based on the position of the main character. Each camera node has it's own properties (orientation, field of view) that are also interpolated accordingly. The main character's movement may also have a weighted influence on the camera's movement depending on the scene.</div>
<div>
<br /></div>
<div>
In combat the enemies and player become weighted nodes, each with their own varying amounts of influence on the camera's target position. The larger and more threatening enemies have a greater influence than the smaller pawns. This ensures that the scene is always well represented, and the player rarely dies to off-screen threats.</div>
<div>
<br /></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="http://www.godisageek.com/wp-content/uploads/God_Of_War_QTE.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="175" src="http://www.godisageek.com/wp-content/uploads/God_Of_War_QTE.jpg" width="320" /></a></div>
<div class="separator" style="clear: both; text-align: center;">
<br /></div>
<div class="separator" style="clear: both; text-align: left;">
The game makes heavy use of quick time events (QTEs) which trigger a separate camera, synced to the animation of the event. As the animation progresses (Kratos decapitating a poor foe), the camera shakes and interpolates along a curve. These camera curves are specified in the QTE animations themselves.</div>
<div>
<br /></div>
<div>
<br /></div>
<div>
<b>Resident Evil 4</b></div>
<div>
<b><br /></b></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="http://download.xbox.com/content/images/66acd000-77fe-1000-9115-d8024343081c/1033/screenlg8.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="178" src="http://download.xbox.com/content/images/66acd000-77fe-1000-9115-d8024343081c/1033/screenlg8.jpg" width="320" /></a></div>
<div>
<b><br /></b></div>
<div>
Resident Evil 4 was a major departure from Capcom's previous RE titles. For starters, the worlds were rendered in full 3D. While Code Veronica and Resident Evil Zero had already used 3D environments, this was the first Resident Evil game to adopt (and perfect) the "over the shoulder" camera. </div>
<div>
<br /></div>
<div>
This camera is fully controlled by the player, giving them precise aim during combat and a close up view of the game's many puzzles and objectives. These were two firsts for the series which lead to a change of direction to more action based gameplay, especially in subsequent titles.</div>
<br />
<b>Metal Gear Solid 4</b><br />
<b><br /></b>
I can't write a blog about cameras and not mention the Metal Gear Solid series. Notorious for being more movie than game, the MGS titles have always had a cinematic quality about them. Metal Gear Solid 4 is no exception.<br />
<b><br /></b>
<br />
<div class="separator" style="clear: both; text-align: center;">
<iframe allowfullscreen='allowfullscreen' webkitallowfullscreen='webkitallowfullscreen' mozallowfullscreen='mozallowfullscreen' width='320' height='266' src='https://www.youtube.com/embed/H7GQslg679Q?feature=player_embedded' frameborder='0'></iframe></div>
<div class="separator" style="clear: both; text-align: center;">
<br /></div>
<div class="separator" style="clear: both; text-align: left;">
<br /></div>
As demonstrated in the video above, the game makes use of a variety of different cameras depending on the gameplay situation. The primary camera is a third person orbiting camera centered on Snake. It can be manipulated completely via the right analog stick. During combat, snake must aim in either first person view, or and over the shoulder view reminiscent of RE4. Gameplay aside, the MGS series has some of the best cutscenes in video games and much of this is thanks to the camera work. A typical MGS cutscene features many spline paths for cameras to interpolate along, as well as realistic camera shake and spring functions to make things feel lifelike.<br />
<br />
If there's any one game that's demonstrated pretty much every camera technique I've mentioned (and more) to a tee it's this one.<br />
<br />
<h4>
So what have we learned?</h4>
<div>
A good camera system doesn't just need to make a game look pretty, it also has to work! This may seem self explanatory, but it can be easy for a camera to ignore information that is vital to gameplay.</div>
<br />James Creavallehttp://www.blogger.com/profile/04510634852858564820noreply@blogger.com0tag:blogger.com,1999:blog-8234421622735547477.post-26880345416525566052013-12-03T03:26:00.002-08:002013-12-03T03:29:22.930-08:00Game Dev PvP Fight: A Portal 2 level Peer Review<div class="separator" style="clear: both; text-align: center;">
<a href="http://blog.anselmo.gd/wp-content/uploads/2012/07/steam-workshop-Portal-2.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="181" src="http://blog.anselmo.gd/wp-content/uploads/2012/07/steam-workshop-Portal-2.png" width="400" /></a></div>
<span style="font-family: inherit;"><br /></span>Today I will be taking a critical look at a Portal 2 level made by a good friend of mine, Cole Bonvarlez (<a href="http://colebonvarlezgd.blogspot.ca/">http://colebonvarlezgd.blogspot.ca/</a>). I've made two of these myself which can be found on my Steam Workshop page (<a href="http://tinyurl.com/le8hdwb">http://tinyurl.com/le8hdwb</a>). You can find Cole's level to try it for yourself at this link (<a href="http://tinyurl.com/nx7teoj">http://tinyurl.com/nx7teoj</a>). Now without further ado, let's talk about my impressions of this puzzle.<br />
<br />
<span style="background-color: white;"><span style="font-family: inherit;"><br /></span></span>
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj3wGjvJnOVJj_JnZXJ7GVmZVcFh2ieEL2k5oetz2d-_w_tCGJ3kl4V5u0qWuKLyx1PLvBr6YzS_k9JINzX5QEWn_aPJJrK5YltMZ2DqgI-z4DJZ-_ssivDvxKC0PBvVzLEwVsmZcwKhFs/s1600/13820699850000.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="180" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj3wGjvJnOVJj_JnZXJ7GVmZVcFh2ieEL2k5oetz2d-_w_tCGJ3kl4V5u0qWuKLyx1PLvBr6YzS_k9JINzX5QEWn_aPJJrK5YltMZ2DqgI-z4DJZ-_ssivDvxKC0PBvVzLEwVsmZcwKhFs/s320/13820699850000.jpg" width="320" /></a></div>
<div class="separator" style="clear: both; text-align: center;">
The first room serves as a hub to the level's two other small chambers. I found it to be somewhat confusing in the beginning, since my initial path lead me to a dead end with a large gap.</div>
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhV_aL2-IUAl0pJFHTZrt1W-Ul-ywcXcS80XS7LKoImVqYZvg16C3MsO7OL3hHBRYOQF0gZnhmT0HlQvK96f8_Kpojc6Sq6xAX5G4ghu1AT3UyG43LR0jmlvj7VHQiNVrpt9K9puR3U3EQ/s1600/13820699850002.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="180" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhV_aL2-IUAl0pJFHTZrt1W-Ul-ywcXcS80XS7LKoImVqYZvg16C3MsO7OL3hHBRYOQF0gZnhmT0HlQvK96f8_Kpojc6Sq6xAX5G4ghu1AT3UyG43LR0jmlvj7VHQiNVrpt9K9puR3U3EQ/s320/13820699850002.jpg" width="320" /></a></div>
<div class="separator" style="clear: both; text-align: center;">
This is where I ended up for following the most natural path (according to the player's starting trajectory. </div>
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh3aw-VeTniXmlUrmHoKq2dkfiVdmZ3oJq0xFJv6YX1274vOeeMDnNhhRuzQFJp-HAwheBtcVDk7hKGZGxZhYCyP4-kvIYhm2T6yh9LCI7wdrpFTgIg3PaJqE8LjVKQB24v01rOqXmxD_k/s1600/13820699850003.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="180" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh3aw-VeTniXmlUrmHoKq2dkfiVdmZ3oJq0xFJv6YX1274vOeeMDnNhhRuzQFJp-HAwheBtcVDk7hKGZGxZhYCyP4-kvIYhm2T6yh9LCI7wdrpFTgIg3PaJqE8LjVKQB24v01rOqXmxD_k/s320/13820699850003.jpg" width="320" /></a></div>
<div class="separator" style="clear: both; text-align: center;">
It's clear that I need to launch myself across the gap with the help of the angled platform which you'll need a cube to trigger.</div>
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiDfKJecS6O69FllA7vtwVmLZxkepsAiTXX3tffCAxCj73iNhjjuwduwyXGqthiJwF7aadIutG2MD4M1PzOyPvNzY_T1CQO9o0gXbb49q2qJkp4LIVidesj7I-TV4aQEL7bLJiME0iQJVY/s1600/13820699850004.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="180" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiDfKJecS6O69FllA7vtwVmLZxkepsAiTXX3tffCAxCj73iNhjjuwduwyXGqthiJwF7aadIutG2MD4M1PzOyPvNzY_T1CQO9o0gXbb49q2qJkp4LIVidesj7I-TV4aQEL7bLJiME0iQJVY/s320/13820699850004.jpg" width="320" /></a></div>
<div class="separator" style="clear: both; text-align: center;">
After seeing that a cube was necessary to progress, I began to backtrack and found another room beside the initial entrance. Although there is nothing "wrong" about this placement, I personally would have opted to switch these two rooms' locations. I say this because there seems to be a slight disconnect between where the player should be looking, and where they should be going. However, one could argue that this simply increases the puzzle's complexity and Cole may have done this intentionally.</div>
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiBvPmXsXDUghCR4LTfloMQTwkPdkn6yVpVUcvdt0TjPfN7XX5n74TRYbZeWPlVbA4muNC_8FmDzCQXx_qlkUXLf6tUGP04S6aKFe7BPK7XjIpLYSz2NLjfGH1d-DC8SyaVzS1GnelvV-Q/s1600/13820699850005.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="180" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiBvPmXsXDUghCR4LTfloMQTwkPdkn6yVpVUcvdt0TjPfN7XX5n74TRYbZeWPlVbA4muNC_8FmDzCQXx_qlkUXLf6tUGP04S6aKFe7BPK7XjIpLYSz2NLjfGH1d-DC8SyaVzS1GnelvV-Q/s320/13820699850005.jpg" width="320" /></a></div>
<div class="separator" style="clear: both; text-align: center;">
The cube chamber has multiple buttons that are supposed to be pressed, however only the one that drops the cube is necessary thanks to a poorly placed grating that allows for early access.</div>
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjs3AtJ3Q-wKCaFEr_sB9bei4Xm7SH4LJauaaeGmF3LW-8Cp8mPGb2WN4MDWAzgNfIp47Yl4-pThU6aldRyHoscAVzzvxhSap-35jyCeL6uFi3UWx9XwBKdR7T9nNTA3Ueit-v1U9IyOMY/s1600/13820699850006.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="180" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjs3AtJ3Q-wKCaFEr_sB9bei4Xm7SH4LJauaaeGmF3LW-8Cp8mPGb2WN4MDWAzgNfIp47Yl4-pThU6aldRyHoscAVzzvxhSap-35jyCeL6uFi3UWx9XwBKdR7T9nNTA3Ueit-v1U9IyOMY/s320/13820699850006.jpg" width="320" /></a></div>
<div class="separator" style="clear: both; text-align: center;">
So I've grabbed my cube through this grating, shimmied it over the wall and am ready to go back to the previous dead end.</div>
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjhNnk8mxaQUFtpYuk0R8BtjX1ZUKbBPmZPev9hCKPsY9ZnFJcrrIkn18f3TOcMDXrwyWiMiRn4jaK4FViz07S39Fd2sAjNsWBAiSkR8ToyaOcRE7psM4GXUN1spsTWUd-ywkKk3CAKnb4/s1600/13820699850007.jpg" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"><img border="0" height="179" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjhNnk8mxaQUFtpYuk0R8BtjX1ZUKbBPmZPev9hCKPsY9ZnFJcrrIkn18f3TOcMDXrwyWiMiRn4jaK4FViz07S39Fd2sAjNsWBAiSkR8ToyaOcRE7psM4GXUN1spsTWUd-ywkKk3CAKnb4/s320/13820699850007.jpg" width="320" /></a><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj48VBEMlMfFp2vi3F7KF8w-hoVc5dlBWZXkNzIt0nLci3weTttWz-C4jqfUF3E1wJFlxzQ7aol514v7d5JkaVB99CpJaCQeJSYAfhJInDbX8K5Wj7CmltTVhxW7W-iZhTIPgBAtkHnKTE/s1600/13820699850008.jpg" imageanchor="1" style="clear: right; float: right; margin-bottom: 1em; margin-left: 1em;"><img border="0" height="179" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj48VBEMlMfFp2vi3F7KF8w-hoVc5dlBWZXkNzIt0nLci3weTttWz-C4jqfUF3E1wJFlxzQ7aol514v7d5JkaVB99CpJaCQeJSYAfhJInDbX8K5Wj7CmltTVhxW7W-iZhTIPgBAtkHnKTE/s320/13820699850008.jpg" width="320" /></a></div>
<div class="" style="clear: both; text-align: center;">
Ok, the cube is in place and I see an angled platform with a very high, portal able ceiling. This is clearly a momentum based, falling launch type maneuver. Unfortunately, despite fully knowing what to do, the tile placement was a bit tricky for me to fall with the correct orientation to shoot the exit portal at the angled platform. The solution requires the players to orient themselves to face the away from the gap, such that when they fall through the portal they are facing the angled platform.</div>
<br />
<div class="separator" style="clear: both; text-align: center;">
</div>
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjv1a1rO7Vzhp441H9rbE566R7BynNqXYJRWjEp7_KIxZYOcDBOLxJYuyMZ8T7t2JymrGvDATDxfn5S_RHp7JLClmjZiHFmTLIYv4dtQU5gavdsqJmd8DcmyyJTW0auJ-v8xPp5qyXmtIw/s1600/13820699850010.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="180" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjv1a1rO7Vzhp441H9rbE566R7BynNqXYJRWjEp7_KIxZYOcDBOLxJYuyMZ8T7t2JymrGvDATDxfn5S_RHp7JLClmjZiHFmTLIYv4dtQU5gavdsqJmd8DcmyyJTW0auJ-v8xPp5qyXmtIw/s320/13820699850010.jpg" width="320" /></a></div>
<div class="separator" style="clear: both; text-align: center;">
Once I crossed the gap I was met with a companion cube, a switch, and a laser shooting at a blank, portalable wall.</div>
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjH2B-kt9TJJ13RtYjWtEn9zzQlkd6vLYmbJpzN-kjP4CVZILzDKGqvJmp8DAFnQgzxGsvgFbAQge-mrECW3UTwmM8I1w-epO62cogUcoPEJ0wWU3ZtMGhj7S2uuZlzjwz0E6LHlCbBrEc/s1600/13820699850011.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="180" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjH2B-kt9TJJ13RtYjWtEn9zzQlkd6vLYmbJpzN-kjP4CVZILzDKGqvJmp8DAFnQgzxGsvgFbAQge-mrECW3UTwmM8I1w-epO62cogUcoPEJ0wWU3ZtMGhj7S2uuZlzjwz0E6LHlCbBrEc/s320/13820699850011.jpg" width="320" /></a></div>
<div class="separator" style="clear: both; text-align: center;">
The necessity of the cube was questionable to me, as it was placed directly beside the switch it was designed to trigger. This cube is not useful for any other task so in my opinion a simple button switch would have been a better, less confusing choice. I do however like the use of a "bounce" here, as the switch enables a light bridge that brings you back across the gap. Cole sees that you've already earned your way across once, and allows players to forgo the deadly goo on the return trip.</div>
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh2FBEqXJf6uLhC4Lsdh9XzDO4F-NXFus7h3hXjObY9RTT_01M_z0wmTj1ncrDGS_Ue7tBMnXPgI1fF53oywV_vyT8kDQzy2psQUN0I8qS45P70X07Qc2OUiCCPADIczRgL7lcztlcav5o/s1600/13820699850012.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="180" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh2FBEqXJf6uLhC4Lsdh9XzDO4F-NXFus7h3hXjObY9RTT_01M_z0wmTj1ncrDGS_Ue7tBMnXPgI1fF53oywV_vyT8kDQzy2psQUN0I8qS45P70X07Qc2OUiCCPADIczRgL7lcztlcav5o/s320/13820699850012.jpg" width="320" /></a></div>
<div class="separator" style="clear: both; text-align: center;">
Before heading back to the main room, you'll want to leave a portal for the laser to shoot into. I'm telling you this because I didn't realize until going all the way back to the hub room. To be honest, this laser is placed a bit too far from it's trigger for my liking. Again this may have been a conscious choice on Cole's part. </div>
<br />
<div class="separator" style="clear: both; text-align: center;">
</div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgHIhQmWWMENdcLOumCUhgy6dT5_MvWroZzyqFlt_3GM-MfGG0kXZ9k6BcnSmmBPvjnpEVPczA9Pc6o0ipcga_w5dREg2HbhRmCY2S0PX6YMLC22UYxP7KSr3xglZsEUoCA5n7liSqDCBI/s1600/13820699850015.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="180" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgHIhQmWWMENdcLOumCUhgy6dT5_MvWroZzyqFlt_3GM-MfGG0kXZ9k6BcnSmmBPvjnpEVPczA9Pc6o0ipcga_w5dREg2HbhRmCY2S0PX6YMLC22UYxP7KSr3xglZsEUoCA5n7liSqDCBI/s320/13820699850015.jpg" width="320" /></a></div>
<span style="text-align: center;">After using the laser to trigger it's receiver, this button becomes accessible, initiating a somewhat time consuming sequence of a ball being launched across several bounce pads, until it finally lands inside a tractor beam in the hub room. When the ball reaches the top it triggers a switch that allows access to the final room.</span><br />
<span style="text-align: center;"><br /></span>
<span style="text-align: center;">The final room is a series of two momentum based jumps. The first uses an angled platform and is similar to the first large gap, the second is simpler and requires little to no finesse to cross. The entire floor is portalable and there is a significant drop. A portal is placed on either side of the floor and simply jumped into, giving the player more than enough height to clear the edge. </span><br />
<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
</div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhwbbtY0Qi7QCmY3aI8Tk19HWqo05N4zjgCNHbjZu6MJj96fdlJXa4V3ckSBJQtlZYWudJ4a-VTdfGKeUr-esSDm46UUvNOtZgnMnFL82Hsj1zk_BL1UldSsOVNugw3hU1ATP6WGYVD8XA/s1600/13820699850017.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em; text-align: center;"><img border="0" height="180" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhwbbtY0Qi7QCmY3aI8Tk19HWqo05N4zjgCNHbjZu6MJj96fdlJXa4V3ckSBJQtlZYWudJ4a-VTdfGKeUr-esSDm46UUvNOtZgnMnFL82Hsj1zk_BL1UldSsOVNugw3hU1ATP6WGYVD8XA/s320/13820699850017.jpg" width="320" /></a></div>
<div class="separator" style="clear: both; text-align: center;">
Unfortunately if you do manage to fail in crossing these gaps, the only way to get back is these elevator platforms. These would not be so bad if the trigger switches were placed in a more friendly manner. In order to trigger the switch and still ride the elevator, you must be standing right on the edge of the platform.</div>
<div class="separator" style="clear: both; text-align: center;">
<br /></div>
<div class="separator" style="clear: both; text-align: center;">
All in all I had fun with Cole's level despite a few moments of confusion. To be honest it took me a little longer than expected to beat, clocking in at at around 10 minutes. If I had to give any particular criticism it would be regarding Cole's switch selection and placement throughout the level. I feel some of the triggers could have been placed to be slightly more player friendly and less confusing. Also, I would recommend that next time, Cole evaluate where players tend to look and tailor the flow of the level with regards to this.</div>
<br />
Thanks for a fun level Cole, and I hope my feedback has been of use. Feel free to review one of my levels some time!<br />
<div class="separator" style="clear: both; text-align: center;">
</div>
<br />
<div class="separator" style="clear: both; text-align: center;">
</div>
<span style="background-color: white;"><span style="font-family: inherit;"><br /></span></span>James Creavallehttp://www.blogger.com/profile/04510634852858564820noreply@blogger.com0tag:blogger.com,1999:blog-8234421622735547477.post-91280698385629064422013-12-03T01:44:00.000-08:002013-12-07T15:09:57.092-08:00Benefits of Scripting and it's use in modern Game Engines<div class="separator" style="clear: both; text-align: center;">
</div>
<div class="separator" style="clear: both; text-align: center;">
<a href="http://www.pyzo.org/_images/python_logo.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="108" src="http://www.pyzo.org/_images/python_logo.png" width="320" /></a><a href="http://www.planet-source-code.com/vb/2010Redesign/images/LangugeHomePages/Javascript.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="164" src="http://www.planet-source-code.com/vb/2010Redesign/images/LangugeHomePages/Javascript.png" width="200" /></a></div>
<div class="separator" style="margin-left: 1em; margin-right: 1em; text-align: center;">
<img border="0" height="200" src="http://www.lua.org/images/lua.gif" width="200" /><a href="http://www.americanlayout.com/wp/wp-content/uploads/2012/08/C-To-Go-300x300.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="200" src="http://www.americanlayout.com/wp/wp-content/uploads/2012/08/C-To-Go-300x300.png" width="200" /></a></div>
<div class="separator" style="margin-left: 1em; margin-right: 1em; text-align: center;">
A few popular examples of General purpose scripting languages</div>
<div class="separator" style="margin-left: 1em; margin-right: 1em; text-align: center;">
<br /></div>
<div class="separator" style="margin-left: 1em; margin-right: 1em; text-align: left;">
Scripting is a powerful tool that allows a game engine to become dynamic and highly modifiable. This tool can drastically improve iteration time, and serves to empower content creationists among other benefits. In this blog I hope to explain what makes scripting so beneficial and give a brief rundown of how we'll be implementing scripts in my team's upcoming game.</div>
<div class="separator" style="margin-left: 1em; margin-right: 1em; text-align: left;">
<br /></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="http://image.slidesharecdn.com/gdc09-statescripting-uncharted2-110228142242-phpapp01/95/slide-6-728.jpg?cb=1298924895" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="231" src="http://image.slidesharecdn.com/gdc09-statescripting-uncharted2-110228142242-phpapp01/95/slide-6-728.jpg?cb=1298924895" width="400" /></a></div>
<div class="separator" style="clear: both; text-align: center;">
Naughty Dog's take on scripting at GDC '09</div>
<div class="separator" style="clear: both; text-align: center;">
<br /></div>
<div class="separator" style="clear: both; text-align: left;">
Having a scripting system in place means that core game-play features can be implemented in a much simpler environment (Editor tools such as UDK, Unity or Phyre) without touching any of the C++ code. This gives content creators the ability to script complex scenarios, and most importantly manipulate component based game objects. </div>
<div class="separator" style="clear: both; text-align: left;">
<br /></div>
<div class="separator" style="clear: both; text-align: left;">
That was a bit of a mouthful. </div>
<div class="separator" style="clear: both; text-align: left;">
<br /></div>
<h3>
What exactly does component based mean?</h3>
<div class="separator" style="clear: both; text-align: left;">
<br /></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="http://forrest.technicat.com/images/unity/unitycomponents.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="http://forrest.technicat.com/images/unity/unitycomponents.png" /></a></div>
<div class="" style="clear: both; text-align: center;">
Examples of components in Unity</div>
<div class="" style="clear: both; text-align: center;">
<br /></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="http://img37.imageshack.us/img37/9072/explanationthumb.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="264" src="http://img37.imageshack.us/img37/9072/explanationthumb.png" width="320" /></a></div>
<div class="separator" style="clear: both; text-align: center;">
<br /></div>
<div class="" style="clear: both; text-align: left;">
Using a component based model means that game objects are composed of an assortment of components, each with their own properties and scripts. This makes it possible to create highly complex objects with a variety of functionality, all within a simplified scripting interface. <br />
<br />
In example 1, the AIComponent is pre-built before being added to the entity. The content creator can only select an AIComponent based on what was specified by the programmer. In example 2, the AI states are created as separate components and are modifiable by a designer without interference from a programmer.</div>
<div class="" style="clear: both; text-align: left;">
<br /></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgryIX_UD5bY9nEYDLa8f7MgiQ3-xxR1DPU-YC6OchrhcBThOKKaFpxo3uOvnlhHXH2kJd0jtwedqFqX0FBESJ9ip6fLBRoCY3A1SdYGMroExYi3hU-UngYFPjqdVoshoU_5UrFyHLBvQ8/s1600/scriptGlue.PNG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="160" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgryIX_UD5bY9nEYDLa8f7MgiQ3-xxR1DPU-YC6OchrhcBThOKKaFpxo3uOvnlhHXH2kJd0jtwedqFqX0FBESJ9ip6fLBRoCY3A1SdYGMroExYi3hU-UngYFPjqdVoshoU_5UrFyHLBvQ8/s320/scriptGlue.PNG" width="320" /></a></div>
<div class="" style="clear: both; text-align: center;">
From Damien Isla's GDC '11 presentation on scripting</div>
<div class="" style="clear: both; text-align: left;">
<br /></div>
<div class="" style="clear: both; text-align: left;">
Script can be seen as the glue that binds an object's components together. It tells each component what to do and how to communicate with other components and other objects. </div>
<div class="" style="clear: both; text-align: left;">
<br /></div>
<div class="" style="clear: both; text-align: left;">
Component based, script heavy models have the benefits of being easy to use and very agile. They also help to easily separate the re-usable engine code from the game logic specific to any one project. This is extremely convenient for fast iteration and prototyping.</div>
<div class="" style="clear: both; text-align: left;">
<br /></div>
<h3>
Working with scripting and component models in Phyre Engine:</h3>
<div>
Sony's Phyre engine includes a level editor tool that uses lua script to provide a powerful environment for content creation. In Phyre it is possible to instantiate and manipulate components in both C++ and script. The scripting component to Phyre is heavily emphasized and has been the main basis of everything we've implemented in our game thus far.</div>
<div>
<br /></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhNHRU9omgIczfP6GWulAGFMGv2DdFT38jnsIdPdiQiywjKTrrKmHp9tdbD8yXoWq3YPn_Dy0wWS_aGPuqSWYXz2A8acm17g-GfDFSLXGQQ5-A9mQsVWfopvTSkkNdwLnEwYKlRMnv89UI/s1600/phyreComponents.PNG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="320" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhNHRU9omgIczfP6GWulAGFMGv2DdFT38jnsIdPdiQiywjKTrrKmHp9tdbD8yXoWq3YPn_Dy0wWS_aGPuqSWYXz2A8acm17g-GfDFSLXGQQ5-A9mQsVWfopvTSkkNdwLnEwYKlRMnv89UI/s320/phyreComponents.PNG" width="252" /></a></div>
<div>
<br /></div>
<div class="" style="clear: both; text-align: left;">
<br /></div>
<div class="" style="clear: both; text-align: left;">
Here is an example of our main character's game object. You can see he contains a small collection of components which handle various tasks.<br />
<br />
- Physics Character controller: Contains a script that handles physics based movement and collision detection.<br />
- Character controller: Contains a script that handles animation according to user input and the movement output from the physics character controller. Interfaces with all other components.<br />
- Animatable component: Contains the animation sets for the character exported from maya. Manipulated by the character controller component.<br />
<br />
How scenes are constructed in Phyre:<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhCmqJpyPvt7RR017DGA9DsvotUI9yFVvd9YBaWl8v8jhv_ovYitk7pUGdQzaZhnmVVyKx2jnLx2H4XY7etDw5A28kJ4wAGFrxjiV58wjwYs0n2JSIFXVh29ku5zaZeG3yauuysERHxCTA/s1600/phyrePallette.PNG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="400" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhCmqJpyPvt7RR017DGA9DsvotUI9yFVvd9YBaWl8v8jhv_ovYitk7pUGdQzaZhnmVVyKx2jnLx2H4XY7etDw5A28kJ4wAGFrxjiV58wjwYs0n2JSIFXVh29ku5zaZeG3yauuysERHxCTA/s400/phyrePallette.PNG" width="372" /></a></div>
<div class="separator" style="clear: both; text-align: center;">
Assets and Components are stored in the palette view where they can be customized.</div>
<div class="separator" style="clear: both; text-align: center;">
<br /></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEijGVyPFDcu9D7srhZd-ykRYLY3LeTMRAB67rWhSQJ0Xlyf0M7VApZkMe5cWWM01C_kP79pNn9M6o9KqH1TVXdJU0eg5f3I8bYhE3T4YRSRNLPVszxw48X_VsRwEnIOiVWfLC0lpqXbxwA/s1600/objectHeirarchy.PNG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="246" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEijGVyPFDcu9D7srhZd-ykRYLY3LeTMRAB67rWhSQJ0Xlyf0M7VApZkMe5cWWM01C_kP79pNn9M6o9KqH1TVXdJU0eg5f3I8bYhE3T4YRSRNLPVszxw48X_VsRwEnIOiVWfLC0lpqXbxwA/s400/objectHeirarchy.PNG" width="400" /></a></div>
<div class="separator" style="clear: both; text-align: center;">
Instances are created in the objects box, and are populated with components and assets by dragging them from the palette.</div>
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhxkDt4ajKxv8LFSlVSu28pgUhhtaP5JbBmhpXrZxC9XhgIXCYDt2OeicC9wX8Z4rWpu6loV68knVv-z4_bNTiwBjjAWIz7eNjS5u1Y8UH9qdIKVaCIrtHyU08kRscgoLhR7N3klXRuccw/s1600/gammaGearScreen.PNG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="277" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhxkDt4ajKxv8LFSlVSu28pgUhhtaP5JbBmhpXrZxC9XhgIXCYDt2OeicC9wX8Z4rWpu6loV68knVv-z4_bNTiwBjjAWIz7eNjS5u1Y8UH9qdIKVaCIrtHyU08kRscgoLhR7N3klXRuccw/s400/gammaGearScreen.PNG" width="400" /></a></div>
<div class="" style="clear: both; text-align: center;">
Here is a simple scene in our current work of progress game build. It's objects are displayed in the object hierarchy above.</div>
<div class="" style="clear: both; text-align: center;">
<br /></div>
<h3>
Why not make everything in script?!</h3>
<div class="" style="clear: both; text-align: center;">
<br /></div>
<div class="" style="clear: both; text-align: left;">
So far I've only said good things about the use of scripting. That's because it can be extremely useful and versatile as previously stated. However it does come at a cost to performance. Due to the nature of run-time scripting languages it may not be optimal to implement performance heavy tasks using script. Of course this is very dependent on the specific game engine/implementation and the strength of it's code/script relationship. Phyre engine in particular contains script access to complex code systems such as animation and collision detection. In fact, all of our animation, physics and locomotion code is currently being done in script.</div>
<div class="" style="clear: both; text-align: left;">
<br /></div>
<div class="" style="clear: both; text-align: left;">
That about wraps up my discussion of the power scripting languages add to game engines. If you have any questions or are looking for any specific information regarding Phyre engine feel free to leave a comment, it seems the documentation is sparse and the forums are non-existent.</div>
<br /></div>
<br />
<div class="" style="clear: both; text-align: center;">
<br /></div>
<div class="separator" style="clear: both; text-align: left;">
<br /></div>
<div class="separator" style="clear: both; text-align: center;">
<br /></div>
<br />James Creavallehttp://www.blogger.com/profile/04510634852858564820noreply@blogger.com0tag:blogger.com,1999:blog-8234421622735547477.post-77075647412189625842013-12-01T10:40:00.004-08:002013-12-04T02:27:56.675-08:00Dekonstruer #1: Game atoms of Street Fighter 4<div class="separator" style="clear: both; text-align: center;">
<a href="http://upload.wikimedia.org/wikipedia/fr/archive/1/15/20100422075103!Street_Fighter_IV_Logo.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="206" src="http://upload.wikimedia.org/wikipedia/fr/archive/1/15/20100422075103!Street_Fighter_IV_Logo.png" width="400" /></a></div>
<br />
Chances are if you know me personally, you're aware that I'm pretty obsessed with Street Fighter. I've been playing the series since before I can remember (Street Fighter 1) and ever since, fighting games have had a special place in my heart. Over the years I've played more fighters than I can keep track of, each with their own unique mechanics and nuances. Although every fighting game plays differently, every one of these games share common design elements which can be traced back to Street Fighter 2. Although this post will be talking specifically about Street Fighter 4, many of the design aspects I'll be covering are present in other fighting games and date back to the SF2 days.<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjcOzt3bxkV9A6dJ0vylAIaA_u13-88Bg9Jhom4ZIYNbVL4CbU_czTux4L0sILhpzeB6YktwkgoOGxRF7ArBrg-2bGhIR7DvKVYIvaB23E_yMKwdMmdXP-EqesVKAG-iQhw3k26JObXRR2u/s1600/gb01.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="186" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjcOzt3bxkV9A6dJ0vylAIaA_u13-88Bg9Jhom4ZIYNbVL4CbU_czTux4L0sILhpzeB6YktwkgoOGxRF7ArBrg-2bGhIR7DvKVYIvaB23E_yMKwdMmdXP-EqesVKAG-iQhw3k26JObXRR2u/s320/gb01.png" width="320" /></a></div>
<div class="separator" style="clear: both; text-align: center;">
Yes, this is Zangief's actual ending from Street Fighter 2</div>
<br />
To be clear, I won't be talking about any elements that are non-essential to game-play. That means the plot (terrible), music (fantastic), and AI (useless) will have to be discussed elsewhere. As a competitive player, I'll be focusing on the topics relevant to high level play. Many of these topics will not be encountered by novice players, but rest assured they are very real and very important to the game and how it was designed to be played. Alright enough chit chat, let's get started.<br />
<br />
For the purposes of this blog (and my grades), I will organize these topics into "Game Design Atoms".<br />
<br />
<br />
<h2>
Objectives/Goals:</h2>
<div class="separator" style="clear: both; text-align: center;">
<a href="http://www.ngohq.com/attachments/screenshots/2024d1248586690-street-fighter-iv-screenshots-street-fighter-iv-screenshot-6.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="200" src="http://www.ngohq.com/attachments/screenshots/2024d1248586690-street-fighter-iv-screenshots-street-fighter-iv-screenshot-6.jpg" width="320" /></a></div>
<div class="separator" style="clear: both; text-align: center;">
<br /></div>
The primary objective in Street Fighter is extremely simple. Deplete your opponent's life bar by landing as many blows as possible. Try to prevent the opponent from depleting your life bar by defending against or avoiding their attacks. When one player's life bar reaches 0 they are knocked out, and the other wins the round. If both players are knocked out simultaneously, they are both awarded a round. If this is the final round, a draw game occurs.<br />
<br />
There is a secondary objective in Street Fighter, and that is to <b>control space</b>. What this means, is using physical attacks and projectiles to dominate the space surrounding your character, forcing the opponent either move away or challenge you for this space. The importance of space control in high level play is extremely vital, as being walked into the corner can lead to nearly certain death against a strong player. Although it may not be immediately apparent to new players, good space control is directly related to how much control you have over your opponent.<br />
<br />
<h2>
Sequencing: </h2>
<div>
Street Fighter is a game that unfolds in real-time with both players making decisions simultaneously. It is regarded by some as a "double-blind guessing game", because when a player makes any given decision, they are unaware of the opponent's current decision. This is not to say that the game is all about guessing, there are certainly situations where one player reacts to the move of another, but when it comes to neutral situations the game does rely heavily on educated guessing.</div>
<div>
<br /></div>
<div class="separator" style="clear: both; text-align: center;">
<object class="BLOGGER-youtube-video" classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,40,0" data-thumbnail-src="http://img.youtube.com/vi/UnW_cy8VTAg/0.jpg" height="266" width="320"><param name="movie" value="http://youtube.googleapis.com/v/UnW_cy8VTAg&source=uds" /><param name="bgcolor" value="#FFFFFF" /><param name="allowFullScreen" value="true" /><embed width="320" height="266" src="http://youtube.googleapis.com/v/UnW_cy8VTAg&source=uds" type="application/x-shockwave-flash" allowfullscreen="true"></embed></object></div>
<div class="separator" style="clear: both; text-align: center;">
Accomplished game designer David Sirlin explains it best.</div>
<div>
<br /></div>
<h2>
Players/Interaction: </h2>
<div class="separator" style="clear: both; text-align: center;">
<a href="http://www.fightersgeneration.com/np6/gm2/ssf4ae-oni5.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="180" src="http://www.fightersgeneration.com/np6/gm2/ssf4ae-oni5.jpg" width="320" /></a></div>
<div>
<br /></div>
In Street Fighter or any other 1 on 1 fighting game, your experience and enjoyment of the game is heavily dependent on the opponent you're playing against. If both players are evenly matched, chances are the experience will be enjoyable for both as the win/loss ratio will be relatively even. If there is a significant skill gap between players, it will likely not be enjoyable for anyone involved. The weak player will be losing consistently to tactics they may not understand or know how to counter, and the strong player will receive no stimulation from such empty victories.<br />
<br />
Super Street Fighter 4: Arcade Edition currently features 39 playable characters, each with their own unique move-sets, mobility options, health/stun ratings, and throw ranges. These characters are all widely varied to cater to as many different playstyles as possible. I make no exaggeration in saying that players are allowed to express their individuality through these characters. Although these characters were created with certain tools in mind, thanks to the emergent nature of Street Fighter's gameplay (and fighting games in general) players are free to invent their own strategies, combos and advanced techniques within the game's set of rules.<br />
<br />
Player interaction is arguably the deepest aspect of Street Fighter. Two competent opponents who have full knowledge of their (and each other's) characters will play an intricate mental game of high speed chess. Both players know each other's options and the risk/reward associated with any given choice. Each player must attempt to read the mind of the opponent to achieve the upper hand.<br />
<br />
<h2>
Rules/Mechanics:</h2>
<div>
The rules of Street Fighter mostly pertain to what actions a player can or cannot perform when in a particular state. There are 4 main states a player can be in at any given time. They are as follows:</div>
<div>
<br /></div>
<div>
Neutral: The player has not committed to an attack, and is not being attacked. He is free to move, attack, or defend.<br />
<br />
Hitstun: When a player gets hit with an attack, they enter a state where they can do nothing. The hitstun state's length is completely dependent on the move that inflicted it. If the attacker recovers before the hitstun period ends they may be able to follow up with a successive attack, resulting in a combo. Players are not susceptible to throws while in this state.<br />
<br />
Blockstun: This is a state similar to hitstun in that the player is not allowed to act and cannot be thrown. The major difference is that blockstun happens when a player blocks an attack. If the attacker recovers from their attack before the defender recovers from blockstun, the attack is said to have <b>frame advantage</b>. Moves that grant <b>frame advantage</b> are said to be safe, whereas moves that cause the opposite (<b>frame disadvantage</b>) are unsafe. Unsafe moves that leave the attacker open long after the defender has finished blocking are said to be <b>punishable.</b><br />
<b><br /></b>
Attacking: When a player commits to an attack, they can do nothing but cancel it into another attack or action. The subsequent attack must be specifically allowed to cancel the previous attack, this is not a universal property. Although cancelability varies on a per attack basis, most attacks must connect with an opponent (hit or blocked) in order to be canceled. There are exceptions to this rule however. Some moves can be cancelled on whiff (not connecting with the opponent). Cancelability is only one of the many properties by which a moves' effectiveness can be measured. Here are the others.<br />
<br />
<h4 style="text-align: center;">
<div class="separator" style="clear: both; text-align: left;">
<span style="font-weight: normal;">Range: How far the move reaches.</span></div>
<div class="separator" style="clear: both; text-align: left;">
<span style="font-weight: normal;"><br /></span></div>
<div class="separator" style="clear: both; text-align: left;">
<span style="font-weight: normal;">Start-up Speed: How quickly the move becomes active.</span></div>
<div class="separator" style="clear: both; text-align: left;">
<span style="font-weight: normal;"><br /></span></div>
<div class="separator" style="clear: both; text-align: left;">
<span style="font-weight: normal;">Recovery: How quickly or slowly the move recovers. Subtract this from the hitstun/blockstun time a move inflicts, and you will know if it is safe, punishable, or can be combo'd from.</span></div>
<div class="separator" style="clear: both; text-align: left;">
<span style="font-weight: normal;"><br /></span></div>
<div class="separator" style="clear: both; text-align: left;">
<span style="font-weight: normal;">Priority: How likely the move is to beat or trade with other moves when performed at the same (or similar) time. This is not a numerical value and is very situational as priority is dictated by hitbox interactions on a per move basis.</span></div>
<div class="separator" style="clear: both; text-align: left;">
<span style="font-weight: normal;"><br /></span></div>
<div class="separator" style="clear: both; text-align: left;">
<span style="font-weight: normal;">Invincibility: Some moves cause the character to become invulnerable to certain attacks for a short period of time. These are usually very unsafe on block, and are designed to be punishable if the defender knows they're coming. Think of this as forgoing future safety in favor of invincibility right now.</span></div>
<div class="separator" style="clear: both; text-align: left;">
<span style="font-weight: normal;"><br /></span></div>
<div class="separator" style="clear: both; text-align: left;">
<span style="font-weight: normal;">Damage: Self explanatory</span></div>
<div class="separator" style="clear: both; text-align: left;">
<span style="font-weight: normal;"><br /></span></div>
</h4>
<h2 style="text-align: left;">
Information:</h2>
<div style="text-align: left;">
The majority of the information relevant to a match of Street Fighter is clearly displayed. The health and meter indicators are a good indicator of who is winning the match. One important piece of information that is not clearly displayed to the player is the stun meter. When a character falls dizzy, it is because they have taken too many successive attacks and their stun value has reached it's limit.</div>
<div style="text-align: left;">
<br /></div>
<div style="text-align: left;">
The most important information that is not clearly given to the player is the properties of each move. It is impossible for a player to make educated decisions without knowing the properties of each of their moves and those of their opponent. Traditionally these properties are discovered through play and experimented with over time. Lately Capcom has become more generous in providing detailed changelists with move properties for each balance update to the game.</div>
</div>
<h2>
Game States:</h2>
<div>
Some may say, in Street Fighter all you do is fight. That means there's one game state, right?<br />
Wrong. Over the course of the match, there are a few states that occur which are heavily responsible for the outcome.</div>
<h4 style="text-align: center;">
Neutral Game<br /><span style="font-weight: normal;">Succeeding in the neutral game means gaining some sort of advantage over one's opponent. This could be in the form of knocking the opponent down, scoring damage, or even having the opponent block an attack that leaves you at a </span><span style="font-weight: normal;">frame advantage (remember that word?)</span><span style="font-weight: normal;">.</span><br />
<div class="separator" style="clear: both; text-align: center;">
<a href="http://img.youtube.com/vi/CKrK-90htjg/0.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="300" src="http://img.youtube.com/vi/CKrK-90htjg/0.jpg" width="400" /></a></div>
<div class="separator" style="clear: both; text-align: center;">
<span style="font-weight: normal;">Two of the world's greatest getting ready to face off</span></div>
<div class="separator" style="clear: both; text-align: center;">
<span style="font-weight: normal;"><br /></span></div>
<div class="separator" style="clear: both; text-align: left;">
<span style="font-weight: normal;">The neutral game is the fundamental core of Street Fighter. When the match begins, both players start considerably far away from one-another. Once they are allowed to move, they shuffle back and forth, jockeying for position in an attempt to gain the upper hand. Each player understands which moves they can throw out safely, what moves their opponent will threaten with, and what tools (if applicable) they can use to counter their opponent's most likely offensive options. </span></div>
<div class="separator" style="clear: both; text-align: left;">
<span style="font-weight: normal;"><br /></span></div>
<div class="separator" style="clear: both; text-align: left;">
<br /></div>
</h4>
<h4>
Getting In</h4>
<div class="separator" style="clear: both; text-align: center;">
<a href="http://i.ytimg.com/vi/yGypXT7-Ovo/mqdefault.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="225" src="http://i.ytimg.com/vi/yGypXT7-Ovo/mqdefault.jpg" width="400" /></a></div>
<div class="separator" style="clear: both; text-align: left;">
<span style="font-weight: normal;"><br /></span></div>
<div class="separator" style="clear: both; text-align: left;">
<span style="font-weight: normal;">When the aggressor lands an attack, the real fun begins. It is up to the attacker to recognize the hit has connected, and follow it up with an optimal combo if possible. This is known as </span>hit-confirmation<span style="font-weight: normal;">. A strong player knows how to convert as much damage as possible off of a single opening. </span></div>
<div class="separator" style="clear: both; text-align: left;">
<span style="font-weight: normal;"><br /></span></div>
<div class="separator" style="clear: both; text-align: left;">
<span style="font-weight: normal;">As a combo increases in length, each successive hit does a decreasing amount of damage. This makes it unwise to keep a combo going for too long, especially if it requires the use of super meter. If a player knows extending his combo will not result in significant damage, they may attempt a </span>reset. <span style="font-weight: normal;">A reset is a simple mix-up in which the aggressor forgoes the guaranteed damage of the current combo, in favor of a new unscaled combo or throw.</span></div>
<h4>
Knockdown/Okizeme</h4>
<div class="separator" style="clear: both; text-align: center;">
<a href="http://img.youtube.com/vi/3dy1qr3jRj8/0.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="240" src="http://img.youtube.com/vi/3dy1qr3jRj8/0.jpg" width="320" /></a></div>
<div>
<br /></div>
<div style="text-align: left;">
<span style="font-weight: normal;">When a player scores a knockdown, they have a distinct advantage over the opponent. The downed player can not move, and can only act once they have risen completely. Since the timing of each characters rising animation is very predictable, the aggressor can exploit this with a well timed offense that is hard to block and safe to wake-up attacks. The word </span>Okizeme<span style="font-weight: normal;"> is japanese term for "Rousing Attack", meaning attacking a downed opponent.</span></div>
<div style="text-align: left;">
<span style="font-weight: normal;"><br /></span></div>
<h3 style="text-align: left;">
Resources:</h3>
<div style="text-align: left;">
<span style="font-weight: normal;">The resources in Street Fighter are displayed in the form of the game's meters. The super meter allows your character to access EX versions of their special moves, as well as their unique super move. EX moves cost 1/4 of your super meter and have increased utility (or damage). The super meter refills gradually as the player does damage, takes damage, blocks attacks, or has their attacks blocked.</span></div>
<div style="text-align: left;">
<span style="font-weight: normal;"><br /></span></div>
<div style="text-align: left;">
<span style="font-weight: normal;">The ultra meter gives your character access to their unique Ultra attack. Ultras usually do large amounts of damage and serve as a comeback mechanic. The ultra meter (also known as the revenge meter) refills as your character takes damage.</span></div>
<div style="text-align: left;">
<span style="font-weight: normal;"><br /></span></div>
<div style="text-align: left;">
<span style="font-weight: normal;">Finally, the health bar can be seen as a resource. Your character's health is directly related to how many mistakes you are allowed to make in a match, and ultimately how much damage you are allowed to take. Sometimes it is beneficial to take a risk that merits high reward, at the expense of a little health. This is demonstrated to a tee in the Guile vs Zangief matchup. Guile is a pure zoning character who dominates from a distance, while Zangief is a grappler who must get in to do his damage. Observe Zangief's careful approach, and the calculated risks he must take to win.</span></div>
<div style="text-align: left;">
<span style="font-weight: normal;"><br /></span></div>
<div class="separator" style="clear: both; text-align: center;">
<iframe allowfullscreen='allowfullscreen' webkitallowfullscreen='webkitallowfullscreen' mozallowfullscreen='mozallowfullscreen' width='320' height='266' src='https://www.youtube.com/embed/BH7vfTmL9LM?feature=player_embedded' frameborder='0'></iframe></div>
<div style="text-align: left;">
<br /></div>
<div style="text-align: left;">
<span style="font-weight: normal;">Well, that about wraps up my rundown of the basic design atoms present in Street Fighter 4. Hopefully this was relatively clear and I did not use too many complicated terms. If you were unaware of all this before, now when you watch a game of Street Fighter you should be able to appreciate at least some of what's going on.</span></div>
James Creavallehttp://www.blogger.com/profile/04510634852858564820noreply@blogger.com0tag:blogger.com,1999:blog-8234421622735547477.post-39059236663111108722013-11-27T00:34:00.000-08:002013-12-04T22:15:57.976-08:00NPC Navigation: The Insomniac WayNavigation is an extremely important aspect of creating engaging and interesting game AI. Anyone who's witnessed an NPC walk tirelessly into walls and obstacles knows it can break the immersion very quickly. In order to create visually pleasing NPC navigation, a delicate balance between goal based path-finding, obstacle avoidance, and animation must be established. This is demonstrated in excellent fashion by Insomniac studios (creators of Spyro The Dragon, Ratchet and Clank and Resistance) in their recent titles released on the PS3 console. I recently had the privilege of watching Reddy Sambavaram's GDC talk (<a href="http://www.insomniacgames.com/navigation-gdc11/">http://www.insomniacgames.com/navigation-gdc11/</a>) detailing the navigation systems of their recent games and some techniques from their upcoming titles. With this new-found knowledge, I will provide a brief rundown of how Insomniac achieved such fluid character navigation in their recent titles (Particularly the Resistance series).<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="http://images.pushsquare.com/news/2013/05/insomniac_games_could_have_made_resistance_4_for_the_ps4/attachment/0/original.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="225" src="http://images.pushsquare.com/news/2013/05/insomniac_games_could_have_made_resistance_4_for_the_ps4/attachment/0/original.jpg" width="400" /></a></div>
<div class="separator" style="clear: both; text-align: center;">
<br /></div>
<div class="separator" style="clear: both; text-align: center;">
Navigation can be seen as a step by step process, so I will try to explain it as such.</div>
<div class="separator" style="clear: both; text-align: center;">
<br /></div>
<div class="separator" style="clear: both; text-align: left;">
Step 1: Path-finding</div>
<div class="separator" style="clear: both; text-align: left;">
<br /></div>
<div class="separator" style="clear: both; text-align: left;">
Finding the shortest, or most cost effective path between a series of checkpoints (called nodes) is a fairly simple process. First, a cost value is assigned to each node. This cost is usually representative of the distance or time it takes to travel to the node, however this may not always be the case. If desired, the cost could literally be a monetary value required to travel from node A to node B.</div>
<br />
Once the cost of traveling from node to node has been assessed, the A* algorithm can be applied to determine the most cost effective path. This is without a doubt the easiest part of the path finding process. The hard part is selecting our nodes.<br />
<div class="separator" style="clear: both; text-align: left;">
<br /></div>
<div class="separator" style="clear: both; text-align: left;">
When you hear the word node, you may be tempted to think of a single coordinate in space. Most of the time this is not an incorrect assumption, however in a comprehensive 3D game engine, path nodes are usually represented as geometry. These bits of geometry are more commonly referred to as Navigation Meshes (Nav Meshes for short).</div>
<div class="separator" style="clear: both; text-align: left;">
<br /></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhLtgpYkBV6syCGNuPyIWpCcZ5Mhipdp3BLVOEXnC2r6mQi6hwctQQQ393imI4JiHELPG591ffhjJLZmoMSN50rpojZ-yVmQN0HUFKAT0GBgiHsqOniKc1ofp3TtlX1qVotfkVl-USJylo/s1600/navMesh.PNG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="252" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhLtgpYkBV6syCGNuPyIWpCcZ5Mhipdp3BLVOEXnC2r6mQi6hwctQQQ393imI4JiHELPG591ffhjJLZmoMSN50rpojZ-yVmQN0HUFKAT0GBgiHsqOniKc1ofp3TtlX1qVotfkVl-USJylo/s400/navMesh.PNG" width="400" /></a></div>
<div class="separator" style="clear: both; text-align: center;">
Image captured from Reddy Sambavaram's GDC presentation</div>
<div class="separator" style="clear: both; text-align: center;">
<br /></div>
<div class="separator" style="clear: both; text-align: left;">
Nav Meshes are convex 3D polygons which are used to represent the space that NPCs can traverse. In the path-finding algorithm, these are our nodes. Nav meshes can be (and have historically been) generated in different ways. In Resistance 1 and 2, the nav meshes were laid out by level designers in Maya. Eventually this system was overhauled in favor of an automated nav mesh generator in the team's world editor. Insomniac's process of automated nav mesh generation uses voxels (3D volumetric pixels) to approximate the traversable area of the game world. This is done in a step by step process as follows:</div>
<div class="separator" style="clear: both; text-align: left;">
<br /></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjSsFSoXP1-CH1Y-XM8o3TzwSZqdJPAYptmiSmt__W_z1jcYodu5MCLSDRSsSNqhOlG0v9XaUfWY1PoSIowoD5P8NLw9cA1T5byXcE4ApyoGVaktfrz4OHXYbOHKW22B4qUq9QYATzX-hU/s1600/voxels.PNG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="297" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjSsFSoXP1-CH1Y-XM8o3TzwSZqdJPAYptmiSmt__W_z1jcYodu5MCLSDRSsSNqhOlG0v9XaUfWY1PoSIowoD5P8NLw9cA1T5byXcE4ApyoGVaktfrz4OHXYbOHKW22B4qUq9QYATzX-hU/s400/voxels.PNG" width="400" /></a></div>
<div class="separator" style="clear: both; text-align: center;">
Image captured from Reddy Sambavaram's GDC presentation</div>
<div class="separator" style="clear: both; text-align: center;">
<br /></div>
<div class="separator" style="clear: both; text-align: left;">
Once the nav mesh has been generated, and the A* algorithm applied we can move on to:</div>
<div class="separator" style="clear: both; text-align: left;">
<br /></div>
<div class="separator" style="clear: both; text-align: left;">
Step 2: Steering</div>
<div class="separator" style="clear: both; text-align: left;">
<br /></div>
<div class="separator" style="clear: both; text-align: left;">
Steering NPCs in a realistic way is mostly a combination of obstacle avoidance, and spline interpolation. These techniques ensure that enemies do not walk into objects, or move in boring linear paths. For simple navigation around corners, Insomniac uses the "string pull" method to smooth the AI's turning.</div>
<div class="separator" style="clear: both; text-align: left;">
<br /></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhsSVaIR6oIVkzrnNiib-rmZBj-uzkxKP_JAvigN2j79maraVZe3IXaIuX7GT3GeqnCylDTIxQg1OzkNDWMaNZkOHokEedSmoAB-uKZWyfORWc4xssSkczj8v5RJg3E4H9Ev06pVg4jiEY/s1600/stringPull.PNG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="241" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhsSVaIR6oIVkzrnNiib-rmZBj-uzkxKP_JAvigN2j79maraVZe3IXaIuX7GT3GeqnCylDTIxQg1OzkNDWMaNZkOHokEedSmoAB-uKZWyfORWc4xssSkczj8v5RJg3E4H9Ev06pVg4jiEY/s320/stringPull.PNG" width="320" /></a></div>
<div class="separator" style="clear: both; text-align: center;">
Image captured from Reddy Sambavaram's GDC presentation</div>
<div class="separator" style="clear: both; text-align: center;">
<br /></div>
<div class="separator" style="clear: both; text-align: center;">
<span style="text-align: left;">For more complex sets of obstacles however, this technique is not enough</span></div>
<div class="separator" style="clear: both; text-align: center;">
<span style="text-align: left;"><br /></span></div>
<div class="separator" style="clear: both; text-align: left;">
In scenarios with multiple small obstacles, "escape tangents" are computed for each obstacle. These are simply possible vectors which allow the NPC to avoid contact with the obstacle.</div>
<div class="separator" style="clear: both; text-align: left;">
<br /></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgGCkCNj6s2JGtdaHcO0lvlQmjFxMq3279vhq_w2fSyeXfsCKago-tZRjwATDjfx33JaJLt_Wc4wSe3844HmnDAqXRYP-LjGwZC31VKlM8l4HuypTNNSGY7dhilVJHcO3oG1ECsFt3fyp8/s1600/escapeTan.PNG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="240" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgGCkCNj6s2JGtdaHcO0lvlQmjFxMq3279vhq_w2fSyeXfsCKago-tZRjwATDjfx33JaJLt_Wc4wSe3844HmnDAqXRYP-LjGwZC31VKlM8l4HuypTNNSGY7dhilVJHcO3oG1ECsFt3fyp8/s320/escapeTan.PNG" width="320" /></a></div>
<div class="separator" style="clear: both; text-align: center;">
Image captured from Reddy Sambavaram's GDC presentation</div>
<div class="separator" style="clear: both; text-align: center;">
<br /></div>
<div class="separator" style="clear: both; text-align: left;">
Simply having NPCs move in straight lines while avoiding obstacles is not enough. These escape tangents are used as the basis of bezier curves which will produce a fluid, more realistc path of motion.</div>
<div class="separator" style="clear: both; text-align: left;">
<br /></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhZUjFICdWindeBYdf0sV2sFs_LlRJgoEmB968-A6X7wV7oH5AklsXXdDcKoSszvIThk46D5A0age4eW5UyTHPe0sJ01RDFIfkZAvT3Rdx6zG8HtAonAHtvEYDoEIdeLnSFSensPcw-mBA/s1600/bezierCurve.PNG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="230" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhZUjFICdWindeBYdf0sV2sFs_LlRJgoEmB968-A6X7wV7oH5AklsXXdDcKoSszvIThk46D5A0age4eW5UyTHPe0sJ01RDFIfkZAvT3Rdx6zG8HtAonAHtvEYDoEIdeLnSFSensPcw-mBA/s320/bezierCurve.PNG" width="320" /></a></div>
<div class="separator" style="clear: both; text-align: left;">
<br /></div>
<div class="separator" style="clear: both; text-align: left;">
Ok, now we have NPC's that can avoid obstacles, and move along a spline. What else is left?</div>
<div class="separator" style="clear: both; text-align: left;">
<br /></div>
<div class="separator" style="clear: both; text-align: left;">
Step 3: Animation</div>
<div class="separator" style="clear: both; text-align: left;">
<br /></div>
<div class="separator" style="clear: both; text-align: left;">
In order for the AI to traverse a dynamic environment in a believable fashion, each NPC must animate differently according to obstacles/interactables in the game world. The most notable example is when the AI must traverse some sort of height difference, whether it be by climbing, jumping up, or jumping down. Insomniac solves this issue by using a system called "custom links". Custom links are like nodes, except they allow the designer to specify what animation the NPC will play upon traversal, and even allow the NPCs to modify the cost of individual nodes (for example if one NPC climbs through a window, the link's cost will increase while he does so). This technology allows for highly dynamic AI that can traverse the level in interesting ways.</div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhr9STIdxvY6k5VzC8G3cpR6HWkxqjanIaDekWnH8eAt2fsQupHs3uJ0vu16v4TtKnT-bCkLwsXpSpanzNvHU5yEVxT9YC-ZODsdnOIVldVAbipkubT5psu0IZa5rQQZasJsmf8yQFSSXk/s1600/climb.PNG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhr9STIdxvY6k5VzC8G3cpR6HWkxqjanIaDekWnH8eAt2fsQupHs3uJ0vu16v4TtKnT-bCkLwsXpSpanzNvHU5yEVxT9YC-ZODsdnOIVldVAbipkubT5psu0IZa5rQQZasJsmf8yQFSSXk/s1600/climb.PNG" /></a></div>
<div class="separator" style="clear: both; text-align: center;">
<br /></div>
<div class="separator" style="clear: both; text-align: left;">
These 3 main components when done right, come together to create very believable AI navigation in games. Insomniac does an exemplary job tying these components together, and with very impressive performance to boot. If you'd like to learn more about Insomniac's navigation ingenuity, check out Reddy Sambavaram's original GDC Talk (<a href="http://www.insomniacgames.com/navigation-gdc11/">http://www.insomniacgames.com/navigation-gdc11/</a>).</div>
James Creavallehttp://www.blogger.com/profile/04510634852858564820noreply@blogger.com0tag:blogger.com,1999:blog-8234421622735547477.post-23226166529171645852013-11-25T19:05:00.000-08:002013-11-26T15:04:38.649-08:00Blog Quest 1: Emotional Contagion (Round 2)<br />
Similarly to my previous entry (<a href="http://jamesmakesgames.blogspot.ca/2013/10/blog-quest-1-emotional-contagion.html">http://jamesmakesgames.blogspot.ca/2013/10/blog-quest-1-emotional-contagion.html</a>), this post is about a game that has impacted me emotionally and inspired me to become a game developer. This time, that game is the Metal Gear series. The franchise's genre-defining stealth gameplay, deep plot, and Hollywood cinematic production have made it into a household name and one of my favorite games of all time.<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="http://www.vgu.tv/wp-content/uploads/2013/06/Metal-Gear-Solid-1.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="240" src="http://www.vgu.tv/wp-content/uploads/2013/06/Metal-Gear-Solid-1.jpg" width="320" /></a></div>
<br />
<div style="text-align: center;">
First of all, let's talk gameplay.</div>
<div style="text-align: center;">
<br /></div>
<div style="text-align: left;">
Metal Gear Solid was the first game I played (and know of) with a cover system. Unlike this mechanic's use in most modern third person shooters, the cover system was only useful for stealth (as Snake was unable to attack from cover). This feature was later improved in Metal Gear Solid 2: Sons of Liberty, allowing Snake to peek around corners and fire weapons from cover. This cover system undoubtedly served as inspiration for the cover system in Gears of War, which would eventually be imitated by the majority of subsequent third person shooter titles.</div>
<div class="separator" style="clear: both; text-align: center;">
<a href="http://media-curse.cursecdn.com/attachments/88/218/mgs1-2.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="244" src="http://media-curse.cursecdn.com/attachments/88/218/mgs1-2.jpg" width="320" /></a></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="http://upload.wikimedia.org/wikipedia/en/9/91/MetalGearSolid2-Substance_screenshot1.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="240" src="http://upload.wikimedia.org/wikipedia/en/9/91/MetalGearSolid2-Substance_screenshot1.jpg" width="320" /></a></div>
<div class="separator" style="clear: both; text-align: center;">
Before Marcus Fenix, there was Solid Snake.</div>
<div class="separator" style="clear: both; text-align: center;">
<br /></div>
<div class="separator" style="clear: both; text-align: left;">
As one of the earliest pioneers in the stealth genre, Metal Gear Solid was the innovator of many mechanics which have become standard stealth game staples.</div>
<div class="separator" style="clear: both; text-align: left;">
<br /></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="http://upload.wikimedia.org/wikipedia/commons/f/fd/MGS_Solton_Radar_Shot.svg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="http://upload.wikimedia.org/wikipedia/commons/f/fd/MGS_Solton_Radar_Shot.svg" /></a></div>
<div class="separator" style="clear: both; text-align: left;">
<br /></div>
<div class="separator" style="clear: both; text-align: left;">
<br /></div>
<div class="separator" style="clear: both; text-align: left;">
One such mechanic was the radar system used in MGS1 and MGS2. This game (along with Eidos' Commandos: Behind Enemy Lines) was one of the first to use this type of GUI to display the field of view of enemy NPCs. This would later become very popular in other stealth titles.</div>
<div class="separator" style="clear: both; text-align: left;">
<br /></div>
<div class="separator" style="clear: both; text-align: left;">
<br /></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="http://mimg.ugo.com/201202/9/0/8/218809/snake1.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="180" src="http://mimg.ugo.com/201202/9/0/8/218809/snake1.jpg" width="320" /></a></div>
<div class="separator" style="clear: both; text-align: left;">
<br /></div>
<div class="separator" style="clear: both; text-align: left;">
My personal favorite mechanic to be popularized by the series is stealth take-downs. These close quarters surprise attacks have evolved with each game, giving Snake more options to dispose of his foes lethally or non-lethally.</div>
<div class="separator" style="clear: both; text-align: center;">
That's enough talk about mechanics, time to talk about the feels.</div>
<div class="separator" style="clear: both; text-align: center;">
<br /></div>
<div class="separator" style="clear: both; text-align: left;">
The series has featured a number of different protagonists, the primary one being Solid Snake. Over the years Snake has matured into a complex character with a deep inner conflict. In Metal Gear Solid 4, Snake is told he has less than a year to live due to an accelerated aging condition related to his mysterious origin. The theme of certain death is explored throughout the game as Snake embarks on a suicide mission to destroy yet another military super weapon.</div>
<div class="separator" style="clear: both; text-align: center;">
<a href="http://www.stageselect.com/images/elements/mgs4.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="http://www.stageselect.com/images/elements/mgs4.jpg" /></a></div>
<div class="separator" style="clear: both; text-align: center;">
<br /></div>
<div class="separator" style="clear: both; text-align: left;">
Aside from MGS4's particularly morbid tone, each game explores themes of patriotism, loyalty, compassion, and humanity. While the games do at times feel like movies, this is not a bad thing as the production quality of the in engine cut-scenes have always been top notch for the time. Below is one of MGS4's exceptionally choreographed fight sequences.</div>
<div class="separator" style="clear: both; text-align: left;">
<br /></div>
<div class="separator" style="clear: both; text-align: center;">
<iframe allowfullscreen='allowfullscreen' webkitallowfullscreen='webkitallowfullscreen' mozallowfullscreen='mozallowfullscreen' width='320' height='266' src='https://www.youtube.com/embed/YzLQMO0W9U8?feature=player_embedded' frameborder='0'></iframe></div>
<br />
<div class="separator" style="clear: both; text-align: left;">
Fortunately these cut-scenes are not just about flashy combat and explosions. They are often filled with emotion and presented in experimental/interactive ways. MGS4 in particular has scenarios where gameplay and cut-scenes happen simultaneously via split screen. This seems confusing at first, but the tension created by seeing multiple characters' points of view is truly exhilarating</div>
<div class="separator" style="clear: both; text-align: left;">
<br /></div>
<div class="separator" style="clear: both; text-align: center;">
. <object class="BLOGGER-youtube-video" classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,40,0" data-thumbnail-src="http://img.youtube.com/vi/yBP_o9V4oQM/0.jpg" height="266" width="320"><param name="movie" value="http://youtube.googleapis.com/v/yBP_o9V4oQM&source=uds" /><param name="bgcolor" value="#FFFFFF" /><param name="allowFullScreen" value="true" /><embed width="320" height="266" src="http://youtube.googleapis.com/v/yBP_o9V4oQM&source=uds" type="application/x-shockwave-flash" allowfullscreen="true"></embed></object></div>
<div class="separator" style="clear: both; text-align: center;">
<br /></div>
<div class="separator" style="clear: both; text-align: left;">
This type of scene exemplifies the innovation and high quality presentation the Metal Gear Solid Series has become known for. </div>
<div class="separator" style="clear: both; text-align: center;">
<br /></div>
<div class="separator" style="clear: both; text-align: left;">
Final Thought: If you haven't played this series before, I'm sorry for possibly spoiling it for you. That being said, you should still play it. If you're a long time fan of the series like me, I'm sure you can't wait to get your hands on Metal Gear Solid 5: Phantom Pain. So far the title looks to be even more innovative and well presented than the previous games.</div>
James Creavallehttp://www.blogger.com/profile/04510634852858564820noreply@blogger.com0tag:blogger.com,1999:blog-8234421622735547477.post-36410242474523234682013-11-16T12:21:00.000-08:002013-11-16T12:22:48.393-08:00Blog Quest 2: Design your game item<div style="text-align: center;">
Have you ever found yourself wishing for non-existent items in your favorite games?</div>
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="http://images2.wikia.nocookie.net/__cb20130911002914/outlast/images/1/13/Outlast_Trager.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="200" src="http://images2.wikia.nocookie.net/__cb20130911002914/outlast/images/1/13/Outlast_Trager.jpg" width="320" /></a></div>
<br />
<br />
I recently played and beat Outlast, a horror game that pits you in an asylum gone awry with nothing but a camcorder. There were many times when the scared little girl in me was practically praying for a weapon (hell even like, a shovel would have been okay). But this isn't about Outlast, maybe I'll do that one next blog.<br />
<br />
<div style="text-align: center;">
Allow me to introduce, Ryu's Bandana! The latest addition to Mario's arsenal. </div>
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="http://www.w3sh.com/wordpress/wp-content/uploads/2011/09/mario-ryu.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="320" src="http://www.w3sh.com/wordpress/wp-content/uploads/2011/09/mario-ryu.jpg" width="243" /></a></div>
<div class="separator" style="clear: both; text-align: center;">
Art by Michael Musco</div>
<div class="separator" style="clear: both; text-align: center;">
<br /></div>
<div class="separator" style="clear: both; text-align: left;">
What exactly does it do? (Besides turning mario into a total badass). Mario learns the power of Shotokan Karate, mastering 3 powerful moves:</div>
<div class="separator" style="clear: both; text-align: center;">
<br /></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="http://fc04.deviantart.net/fs70/f/2013/003/8/f/mario_shoryuken___color__by_coreygoodwin-d5qb9l0.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="320" src="http://fc04.deviantart.net/fs70/f/2013/003/8/f/mario_shoryuken___color__by_coreygoodwin-d5qb9l0.jpg" width="215" /></a></div>
<div class="separator" style="clear: both; text-align: center;">
Art by Cory Goodwin <a href="http://coreygoodwin.deviantart.com/">http://coreygoodwin.deviantart.com/</a></div>
<div class="separator" style="clear: both; text-align: left;">
<br /></div>
Shoryuken (Forward, Down, Down + Forward + Sprint): This rising dragon punch stays true to it's name, giving Mario the ability to soar upward with a fiery uppercut. The move does 3 points of damage (a classic headstomp does 1 point), and makes Mario invulnerable to attacks during it's 3 frames of animation startup. Any blocks Mario's fist makes contact with will explode, releasing any coins or power ups contained within.<br />
<br />
The only downside to this attack is it's recovery period. As Mario descends from his Shoryuken, he is left completely vulnerable to physical attacks and projectiles. That's right kids, just like in Street Fighter.<br />
<br />
This attack is particularly useful against bosses as the move's invincibility can be used to avoid their attacks, and normal enemies tend to die in one hit anyway.<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<br /></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="http://www.2nerds.com.br/wp-content/uploads/2010/08/mario-hadouken.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="220" src="http://www.2nerds.com.br/wp-content/uploads/2010/08/mario-hadouken.jpg" width="320" /></a></div>
<div class="separator" style="clear: both; text-align: center;">
Art by Leandro Nerd <a href="http://www.2nerds.com.br/humor/a-verdade-sobre-mario/">http://www.2nerds.com.br/humor/a-verdade-sobre-mario/</a></div>
<div class="separator" style="clear: both; text-align: center;">
<br /></div>
<div class="separator" style="clear: both; text-align: left;">
Hadouken (Quarter Circle Forward + Sprint): Using the power of the "wave motion fist" Mario channels his inner ki into a ball of red hot fire. Sure he can already eat a fire flower and toss puny little tennis balls of fire at unsuspecting goombas, but believe me when I say this attack is far more powerful. The fireball does not disappear when it makes contact with enemies. It also does not bounce on the ground like the fire flower shot, moving in a straight line until it reaches the end of the screen. The projectile does 1 point of damage.</div>
<div class="separator" style="clear: both; text-align: left;">
<br /></div>
<div class="separator" style="clear: both; text-align: left;">
The major disadvantage to this attack is it's long start up time of 25 frames. Mario needs to be relatively safe in order to fire a Hadouken, or he risks being hit out of the move entirely.</div>
<div class="separator" style="clear: both; text-align: left;">
<br /></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="http://images1.wikia.nocookie.net/__cb20100923032848/streetfighter/images/6/6c/Ryu-hurricane.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="305" src="http://images1.wikia.nocookie.net/__cb20100923032848/streetfighter/images/6/6c/Ryu-hurricane.jpg" width="320" /></a></div>
<div class="separator" style="clear: both; text-align: center;">
Just pretend it's Mario. I do not own this art.</div>
<div class="separator" style="clear: both; text-align: center;">
<br /></div>
<div class="separator" style="clear: both; text-align: left;">
Tatsumaki Senpuu Kyaku (Quarter Circle Back + Sprint): Mario unleashes a furious tornado kick, traveling forward about 1/4 screen distance. If this move is executed mid air, Mario's gravity value is decreased by half causing him to float. This means the move can be used to reach high places (executed before apex of jump) or to glide for long distances (executed after apex of jump). This is not to say the move has no merit as a physical attack...</div>
<div class="separator" style="clear: both; text-align: left;">
<br /></div>
The Tatsu (Street Fighter shorthand) allows Mario to travel through projectiles while advancing with an attack. The kick hits 3 times, each dealing 1 point of damage.<br />
<div class="separator" style="clear: both; text-align: left;">
<br /></div>
<div class="separator" style="clear: both; text-align: left;">
Unfortunately this move is not completely fail safe, Mario's raised leg becomes the attack hitbox, but his head and upper torso remain vulnerable to physical attacks. That being said, the move is great for enhancing Mario's mobility and gaining the upper hand on pesky ranged enemies.</div>
<div class="separator" style="clear: both; text-align: left;">
<br /></div>
<div class="separator" style="clear: both; text-align: left;">
<br /></div>
<div class="separator" style="clear: both; text-align: left;">
Final Thought:</div>
<div class="separator" style="clear: both; text-align: left;">
<br /></div>
<div class="separator" style="clear: both; text-align: left;">
Due to it's indisputable power, Ryu's bandana would have to be a relatively rare drop. A strong player may likely be able to hold onto it for the entire game.</div>
<div class="separator" style="clear: both; text-align: left;">
<br /></div>
<div class="separator" style="clear: both; text-align: left;">
<br /></div>
<div class="separator" style="clear: both; text-align: left;">
<br /></div>
<div class="separator" style="clear: both; text-align: center;">
<br /></div>
<div class="separator" style="clear: both; text-align: center;">
<br /></div>
James Creavallehttp://www.blogger.com/profile/04510634852858564820noreply@blogger.com0tag:blogger.com,1999:blog-8234421622735547477.post-59850388159028262722013-10-16T18:03:00.002-07:002013-10-16T18:03:54.626-07:00Blog Quest 1: Emotional ContagionFor the purposes of this blog, I have been asked to talk about a game that has impacted me emotionally and influenced me creatively. While hundreds of games have had these effects on me, few have had as significant an impact as Chrono Trigger and it's sequel Chrono Cross (let's forget about "Radical Dreamers"). Thanks to the series' strong character design, non-linear storytelling, and charming soundtrack it has become one of the most adored JRPGs of all time among fans of the genre. <br /><br />If you haven't played the game and wish to do so, I suggest you tread lightly. There may be SPOILERS ahead.<div class="separator" style="clear: both; text-align: center;">
<a href="http://images4.wikia.nocookie.net/__cb20090311222346/chrono/images/1/1e/Chrono_Trigger_Artwork1.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="292" src="http://images4.wikia.nocookie.net/__cb20090311222346/chrono/images/1/1e/Chrono_Trigger_Artwork1.jpg" width="320" /></a></div>
<div class="separator" style="clear: both; text-align: center;">
<br /></div>
<div class="separator" style="clear: both; text-align: center;">
So... what makes this game so great?</div>
<div class="separator" style="clear: both; text-align: center;">
<br /></div>
<div class="separator" style="clear: both; text-align: left;">
<br /></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgHcL4yzezQHcQzXQnUWQkG8P2Agvdci9Rm0uHGx2JCC7ZxTLoSNFDToQp_a4lFDuR1fLhgRR9NdiWM820EnCRlbfbwC2oSB7E2u6wTrOmEhutCQJq9ZWEEAdPQX1uU0JkTeKJEuXSLYtU/s1600/akiraToriyama.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="230" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgHcL4yzezQHcQzXQnUWQkG8P2Agvdci9Rm0uHGx2JCC7ZxTLoSNFDToQp_a4lFDuR1fLhgRR9NdiWM820EnCRlbfbwC2oSB7E2u6wTrOmEhutCQJq9ZWEEAdPQX1uU0JkTeKJEuXSLYtU/s320/akiraToriyama.jpg" width="320" /></a></div>
<div class="separator" style="clear: both; text-align: center;">
<span style="text-align: left;">Let's start with the characters, designed by none other than Akira Toriyama of Dragon Ball Z fame.</span></div>
<div class="separator" style="clear: both; text-align: center;">
<br /></div>
<div class="separator" style="clear: both; text-align: left;">
The main characters of these games are always silent, giving the player the freedom to impose their own personality. The game's many other protagonists/party members are colorful and extremely varied, each with their own instantly recognizable silhouette. Every one of these heroes has a comprehensive back-story that is revealed in a timely and dramatic fashion. In some cases these back stories can be gut wrenching, and often playable. Check out the video below to see exactly what I'm talking about.</div>
<div class="separator" style="clear: both; text-align: left;">
<br /></div>
<div style="text-align: center;">
<iframe allowfullscreen='allowfullscreen' webkitallowfullscreen='webkitallowfullscreen' mozallowfullscreen='mozallowfullscreen' width='320' height='266' src='https://www.youtube.com/embed/UcoATja9U6Q?feature=player_embedded' frameborder='0'></iframe></div>
<br />
<div class="separator" style="clear: both; text-align: center;">
<span style="text-align: left;"><br /></span></div>
<div class="separator" style="clear: both; text-align: left;">
In this particular scene, the player is confronted with a situation where they can save a character's mother from a tragic accident that occurred in the past. Not only does this scene serve as a powerful flashback to tell the story of the mother's injury, but it gives the player a chance to remedy the situation (thanks to the magic of time travel). These types of scenarios occur quite often of the course of the game, and give the player's own actions a tangible effect on the outcome of the story. </div>
<div class="separator" style="clear: both; text-align: left;">
<br /></div>
<div class="separator" style="clear: both; text-align: left;">
The game's plot contains multiple subplots and side-quests, the outcomes of which will dictate the game's ending. Not bad for a game originally released in 1995! This was certainly the first game I played that offered multiple endings, especially ones influenced by decisions made throughout the game as opposed to right at the end (I'm looking at you Deus Ex).</div>
<div class="separator" style="clear: both; text-align: left;">
<br /></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="http://i.qkme.me/3uu4wj.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="http://i.qkme.me/3uu4wj.jpg" /></a></div>
<div class="separator" style="clear: both; text-align: left;">
<br /></div>
<div class="separator" style="clear: both; text-align: left;">
When it comes to non-linear narrative, Chrono Trigger holds up better than many new games in my opinion. For starters, the game takes place in multiple different time periods, which can be traversed at will. It also boasts 13 different endings. Far too often in my experience, games will force an ending defining decision just before the end of the game. In the case of the aforementioned Deus Ex (a game I love equally as much as this one), the decision was as simple as choosing between 3 buttons to press (corresponding to each ending), 5 minutes before then game's conclusion. In Chrono Trigger this is not the case. The game can be ended in multiple ways at different points in the game, with different positive and negative outcomes. The minor decisions made throughout the game also have effects on minor aspects of the ending, providing resolutions to each of the characters' own personal struggles. The story is generally filled with emotion, giving rich character development to even the game's Robot character (simply named Robo).</div>
<div class="separator" style="clear: both; text-align: left;">
<br /></div>
<div class="separator" style="clear: both; text-align: left;">
Chrono Cross is a little different. The plot follows a young man named Serge, who is unknowingly sent to an alternate dimension in which he (yes Serge) drowned as a child. When he encounters his loved ones in this dimension, none of them seem to know him although they acknowledge his resemblance to the boy they once knew. Worst of all, when Serge attempts to claim his identity, no one will believe him since they all saw him die. The game does a great job making the player feel lost and alone in this strange alternate universe. </div>
<div class="separator" style="clear: both; text-align: left;">
<br /></div>
<div class="separator" style="clear: both; text-align: left;">
For me, these games are far more emotional than modern titles like Heavy Rain. One of the most important reasons for this is the masterful soundtrack composed by Yasunori Mitsuda and Nobuo Uematsu. Each piece is filled with emotion and perfectly describes the character or situation it is bound to. Just listen to this number and try not to shed a tear. </div>
<div class="separator" style="clear: both; text-align: left;">
<br /></div>
<div class="separator" style="clear: both; text-align: center;">
<iframe allowfullscreen='allowfullscreen' webkitallowfullscreen='webkitallowfullscreen' mozallowfullscreen='mozallowfullscreen' width='320' height='266' src='https://www.youtube.com/embed/YDH8izdv0Aw?feature=player_embedded' frameborder='0'></iframe></div>
<div class="separator" style="clear: both; text-align: left;">
<br /></div>
<div class="separator" style="clear: both; text-align: left;">
Okay, so maybe it didn't make you cry but it's hard not to hear beauty in this piece. Chrono Trigger had arguably some of the greatest music ever composed for the SNES. Likewise, Chrono Cross raised the musical bar with the increase in horsepower given by the Sony Playstation. The console's CD quality audio capabilities gave the composers the freedom to create an even more dynamic, organic sounding mix (thanks to the presence of real instruments). The difference is pretty drastic, as can be heard in the following clip.</div>
<div class="separator" style="clear: both; text-align: left;">
<br /></div>
<div class="separator" style="clear: both; text-align: left;">
<br /></div>
<div style="text-align: center;">
<iframe allowfullscreen='allowfullscreen' webkitallowfullscreen='webkitallowfullscreen' mozallowfullscreen='mozallowfullscreen' width='320' height='266' src='https://www.youtube.com/embed/Z8ILhJCr60A?feature=player_embedded' frameborder='0'></iframe></div>
<div style="text-align: center;">
<br /></div>
<div style="text-align: left;">
The soundtracks for both of these games contain some of the most beautiful songs composed in video games.</div>
<div style="text-align: left;">
<br /></div>
<div style="text-align: left;">
Overall the Chrono series is one that is very near to my heart. It has provided me with countless hours of enjoyment, but also inspired me in more ways than one. Akira Toriyama's unique and intricate character design is something I admire greatly and would love to learn to replicate one day. I can also say with confidence that the music from these games has had a very real impact on my musical taste and myself as a musician. Aside from this, the game's story and the overall experience is one I will cherish for years to come.</div>
<br />
<div class="separator" style="clear: both; text-align: left;">
<br /></div>
James Creavallehttp://www.blogger.com/profile/04510634852858564820noreply@blogger.com0tag:blogger.com,1999:blog-8234421622735547477.post-47184605568022905592013-10-06T14:32:00.004-07:002013-10-06T14:32:49.985-07:00Phyre Starter<div class="separator" style="clear: both; text-align: center;">
<a href="http://farm9.staticflickr.com/8508/8594837349_456d8253fd_z.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="80" src="http://farm9.staticflickr.com/8508/8594837349_456d8253fd_z.jpg" width="320" /></a></div>
<br />
For the past few weeks, I've been working extensively with Sony Computer Entertainment's Phyre Engine. This is the same engine that powers Namco Bandai's Dark Souls, as well as thatgamecompany's Journey among many others.<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="http://twomenandamarmot.files.wordpress.com/2012/11/ds1.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="177" src="http://twomenandamarmot.files.wordpress.com/2012/11/ds1.jpg" width="320" /></a></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="http://s.pro-gmedia.com/videogamer/media/images/ps3/journey/screens/journey_19_605x.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="177" src="http://s.pro-gmedia.com/videogamer/media/images/ps3/journey/screens/journey_19_605x.jpg" width="320" /></a></div>
<br />
So far, I can't complain. The engine is free to use, gives the developer source level access and supports multiple platforms (PS3, PS4, Vita, PC). To top it all off, it sports a very powerful editor tool with full scripting functionality. The editor is completely optional, and if you so choose you can ignore all additional features and use Phyre as a simple rendering engine.<br />
<div class="separator" style="clear: both; text-align: center;">
<br /></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh8o_1aiDIgFqgFAtjigSJaFH_VW0XqKdutquCZ6_8sCuORcn69p8pZTy9ZogzxefORpzaw9EPsdBPAi2ENFWdU-2ZDuFYH8Er6ErTVZAlF1T5RK9rFRz8Bevy2wG0DFBjdDXd8iywA-9I/s1600/phyreEdit.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="225" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh8o_1aiDIgFqgFAtjigSJaFH_VW0XqKdutquCZ6_8sCuORcn69p8pZTy9ZogzxefORpzaw9EPsdBPAi2ENFWdU-2ZDuFYH8Er6ErTVZAlF1T5RK9rFRz8Bevy2wG0DFBjdDXd8iywA-9I/s400/phyreEdit.png" width="400" /></a></div>
<br />
<br />
The editor is very easy to use, with the standard array of property sheets, script editors, and object hierarchies you would come to expect from a tool like Unity or UDK. Game logic can be written in scripts through the editor, or implemented through C++ code at the source level.<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhKqHGz3eVLi2rC6SKAMTcVXkwuyeOoge4EJUzhZT40ewljuAyP4y_gyuLSOAj1-PfujFC4uMzFiygPoQtXGm440giySml0am71FcxBZ-YXXf7zqajmuweuuPFtUsRHTOujsPLyakxeh3Q/s1600/phyreOverrides.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="207" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhKqHGz3eVLi2rC6SKAMTcVXkwuyeOoge4EJUzhZT40ewljuAyP4y_gyuLSOAj1-PfujFC4uMzFiygPoQtXGm440giySml0am71FcxBZ-YXXf7zqajmuweuuPFtUsRHTOujsPLyakxeh3Q/s400/phyreOverrides.png" width="400" /></a></div>
<br />
The code above is the heart of your typical Phyre application header. The virtual functions marked "Phyre Framework overrides" encapsulate all of the top level functions of your game application (namely things like initialization, input handling, updating and drawing). The functions below the "PIEditEventHandler Implementation" comment can be called directly by the scripts attached to game components constructed in the Phyre Level Editor.<br />
<br />
Speaking of which, Phyre follows a component-based model. This means that the game entities you construct in the editor are built up of multiple components. These components could be anything from your art assets (animations, textures etc) to character controllers, triggers etc. Below is a list of the components that make up the little girl shown in the screen shot above.<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgXRv0FFwCARI22PpLnbq_Ov-ehU0LpSinu97-kdUoalwLkreL1xSJ7PVLrHMe1okXO-eTZOYVyq2gZVSwFmeHyqCeyxfFwidGGMEzoIILH4NtvwJpA1LOMMNvP52U3NQcUMYwEbyjzt28/s1600/pComponent.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="320" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgXRv0FFwCARI22PpLnbq_Ov-ehU0LpSinu97-kdUoalwLkreL1xSJ7PVLrHMe1okXO-eTZOYVyq2gZVSwFmeHyqCeyxfFwidGGMEzoIILH4NtvwJpA1LOMMNvP52U3NQcUMYwEbyjzt28/s320/pComponent.png" width="167" /></a></div>
<br />
Not only is this an elegant way to organize data in our editor (good for us humans), but this is also very efficient for our game at run-time. By storing our data components in common sets, as opposed to an object oriented approach, we can reduce cache latency and thus lose fewer CPU cycles. That way we can use valuable time for things that matter (gameplay, graphics, gibs).<br />
<br />
With it's wide variety of features and tools, as well as easy portability to multiple platforms it's a wonder that more people are not using this engine. My team and I are very excited to make our next game using this tool, and are looking forward to seeing what we can produce.James Creavallehttp://www.blogger.com/profile/04510634852858564820noreply@blogger.com0tag:blogger.com,1999:blog-8234421622735547477.post-79297007831062609022013-04-12T21:28:00.001-07:002013-04-12T21:28:07.295-07:00Lighting and Shaders Episode 2: Implementation<h4 style="text-align: center;">
How we went from this:</h4>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgovSc2Fu4YQH1LJWFy6vN7u896hc31zGRWLv4LjoRsMUG8HqhQ60DC2jlvjRo032euVRLU2pCDi0FPKJzX3_5nfIdRZM_I0AV1SIG1ZYaWrrw4Ni4OCkIiyjCIZJ7b14rv9dq4Jr0ORoo/s1600/gtfoScreen.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgovSc2Fu4YQH1LJWFy6vN7u896hc31zGRWLv4LjoRsMUG8HqhQ60DC2jlvjRo032euVRLU2pCDi0FPKJzX3_5nfIdRZM_I0AV1SIG1ZYaWrrw4Ni4OCkIiyjCIZJ7b14rv9dq4Jr0ORoo/s1600/gtfoScreen.png" height="298" width="400" /></a></div>
<br />
<h4 style="text-align: center;">
To this:</h4>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj8dM9u2SMC4mrroUkoAJZdIB39YVcoBW-FPac7Jy-WYrEj5WUoHar-Ae1MdXSImeVdBHeGoHlxje42tqjld5ChJ7LZ4hqIw-Il05D2A4NOFS-TWIdzs7Rv0rmRLY4p_6JXvI77le_K1yY/s1600/GTFOscreen2.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj8dM9u2SMC4mrroUkoAJZdIB39YVcoBW-FPac7Jy-WYrEj5WUoHar-Ae1MdXSImeVdBHeGoHlxje42tqjld5ChJ7LZ4hqIw-Il05D2A4NOFS-TWIdzs7Rv0rmRLY4p_6JXvI77le_K1yY/s1600/GTFOscreen2.png" height="248" width="400" /></a></div>
<div style="text-align: start;">
<br /></div>
<div style="text-align: center;">
The short answer: By putting the task of making an awesome game above all others (including blogging).</div>
<div style="text-align: center;">
<br />The long answer: Shaders(!!!!!), new art assets, completely revamped game engine and systems, original soundtrack and sound effects</div>
<br />
<div style="text-align: center;">
<br /></div>
<h4>
Let's start with the shaders</h4>
<div>
<br /></div>
<div class="separator" style="clear: both; text-align: center;">
Cel Shading with Black Outlines + Rim Lighting</div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgIxeSz-o5vwJToY8LLDPlROB06yYs5U7YcXsR9753jT5fwv6YJ0IlNSYzfc6rUgddGV19V8N48SwawupPWZf_LiA9qzXjC8wT1aTYbjmFU9M3G342uU2-R8CXP5ISWBdaJKAfM6zz0AD8/s1600/theoLawl.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgIxeSz-o5vwJToY8LLDPlROB06yYs5U7YcXsR9753jT5fwv6YJ0IlNSYzfc6rUgddGV19V8N48SwawupPWZf_LiA9qzXjC8wT1aTYbjmFU9M3G342uU2-R8CXP5ISWBdaJKAfM6zz0AD8/s1600/theoLawl.png" height="254" width="320" /></a></div>
<div class="separator" style="clear: both; text-align: left;">
In my previous blog (Lighting and Shaders Episode 1), we talked about a few effects I planned to add to our game (GTFO: The Double Dungeon Debacle). One of these effects was cel shading. Here you can see my implementation of the effect on our old prototype character model as well as our new and improved model.</div>
<div class="separator" style="clear: both; text-align: left;">
<br /></div>
<div class="separator" style="clear: both; text-align: left;">
The trick to this algorithm is very simple. To achieve the cartoon shading effect, we calculate the intensity of the light by taking the dot product of the incident light and the normal at each vertex. We then use a piece-wise function to compute the final light color based on specific ranges of light intensity. To generate the black outlines, we simply draw the model again but this time we translate each vertex by its corresponding normal (normalized then multiplied by some scalar), and force the color to black in the fragment shader. We also invert OpenGL's back-face culling before drawing the black mesh.</div>
<div class="separator" style="clear: both; text-align: left;">
<br /></div>
<div class="separator" style="clear: both; text-align: left;">
<br /></div>
<div class="separator" style="clear: both; text-align: left;">
</div>
<div class="separator" style="clear: both; text-align: center;">
Tangent Space Normal Mapping</div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjxxK6z4NOb9qxScpYycMN-8hiMTn0KEua_AF53dkEaBQkHDHNfSFVs16r5QwazP1tq7uesFznBVGl3zT1XVIRFQUrH8FnMLRtkVqDq8KF-IDFbyGp9UWwAsTjwBm_N26R8Q3l3qQZ4k-4/s1600/fireWallEdgesHoriTSN.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjxxK6z4NOb9qxScpYycMN-8hiMTn0KEua_AF53dkEaBQkHDHNfSFVs16r5QwazP1tq7uesFznBVGl3zT1XVIRFQUrH8FnMLRtkVqDq8KF-IDFbyGp9UWwAsTjwBm_N26R8Q3l3qQZ4k-4/s1600/fireWallEdgesHoriTSN.png" height="320" width="320" /></a></div>
<br />
After looking at our prototype, we realized our environments look pretty flat. The walls and ground lacked depth and had no lighting applied to them whatsoever. To remedy this, we added normal maps to all of our environment assets. We placed our light source relative to the main character's position to create a sort of "halo" effect around the character. Since we use the same lighting model for the ground as well, the light appears consistent, and adds a ton of detail to the scene.<br />
<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<br /></div>
<div class="separator" style="clear: both; text-align: center;">
Particles</div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgQ0mrNx7GKiB6HiJdmfh26NL_NWzVvkykyJydA2TSi7-EXVLV7WEgHC2g-lv6Bwny1p2Lax0hz_T0J8ZDB-S43IrmIK-HmgTkuIdCBdswp5y0dW91vo_e41TupEDoAcvELbZdm7o10z7g/s1600/fire.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgQ0mrNx7GKiB6HiJdmfh26NL_NWzVvkykyJydA2TSi7-EXVLV7WEgHC2g-lv6Bwny1p2Lax0hz_T0J8ZDB-S43IrmIK-HmgTkuIdCBdswp5y0dW91vo_e41TupEDoAcvELbZdm7o10z7g/s1600/fire.png" /></a></div>
<br />
Our graphics programmer, Divakar Dev took on the task of completely revamping our game's particle system. In the prototype, we had basic 2D particle support, but no billboarding. We also had a few nasty memory problems, and game breaking glitches related to our half baked particle engine. Now, we use geometry shaders to render particles which takes care of billboarding automatically. Divakar also fixed most of the memory and performance issues related to the particles and added some really nice looking effects to make our game's visuals pop.<br />
<br />
Still to come: Shadows, FXAA, SSAO, Sexy new GUI<br />
<br />
<br />
<br />
<h4>
All new art assets</h4>
<div>
<br /></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj1mGDiF17YSFYKYE5U5u7KX6sD5LlZYs9cOAKUx_YMYBIzluqxH4cOz3NAmtL9aNdd7VRniHEyZ-w1Ft1XZUa-GGfJ_TWikyAA7bELyB3KhKechS_Ky5lw91W00M1-RqApVFiTDrD7v1s/s1600/GTFOscreen5.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj1mGDiF17YSFYKYE5U5u7KX6sD5LlZYs9cOAKUx_YMYBIzluqxH4cOz3NAmtL9aNdd7VRniHEyZ-w1Ft1XZUa-GGfJ_TWikyAA7bELyB3KhKechS_Ky5lw91W00M1-RqApVFiTDrD7v1s/s1600/GTFOscreen5.png" height="248" width="400" /></a></div>
<div>
<br /></div>
<div>
<br /></div>
<div>
Our art team (Bobby Muir and Vincent Marchesano) worked painstakingly to create brand new models, textures, and animations to show off our game's new graphical capabilities. Bobby and Vincent iterated constantly, often re-doing entire animations for the sake of gameplay functionality and polish. Most characters have an average of about 5 animations.</div>
<br />
<h4>
Revamped game engine and systems</h4>
<div class="separator" style="clear: both; text-align: center;">
New and improved Level Editor. Grids, navgraphs and triggers oh my!</div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh7OhF7g2wHonPCBYv9rMoXULXbA45_U4eY3TS8LsZTq4Exfsp3YiRogWUFs8xPGKMzOI05K_-J9goSQ3PfG6vMUHiVGT1Yb2f2npp9JdJA3hAgN4r9J7_WMrJ4wM6Ok394qFYK-YHr0Nw/s1600/EDITMODE.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh7OhF7g2wHonPCBYv9rMoXULXbA45_U4eY3TS8LsZTq4Exfsp3YiRogWUFs8xPGKMzOI05K_-J9goSQ3PfG6vMUHiVGT1Yb2f2npp9JdJA3hAgN4r9J7_WMrJ4wM6Ok394qFYK-YHr0Nw/s1600/EDITMODE.png" height="233" width="400" /></a></div>
<br />
As lead programmer, the largest chunk of my time was spent coding our game engine. I would say 60% of the time I spent coding was invested into our level editor. This was the tool that allowed us to bring all of our assets together into a unified experience. <br /><br />Our prototype editor contained only the basic functionality to place walls and monsters. After we ran our second pass on the game's code, much of the back end was scrapped. This was because of the transition to OpenGL's retained mode rendering. All of the basic building blocks of our prototype were using deprecated graphics code and strange proprietary math libraries. As a result I spent a large amount of time revising just about every aspect of the game's code, from the locomotion and animation systems, to collision detection and AI. The editor also received a plethora of upgrades including grids/gridsnap, dynamic navgraph creation, intelligent spawn point creation, and basic switch and gate triggers.<br /><br />I didn't spend all of my time working on tools however. The final stretch of development (of the current build) was mostly spent on gameplay improvements. I was finally able to implement melee combat (for our second lead protagonist, Shara), and I made countless changes and improvement to the game's controls and gameplay in general. My goal was to make movement feel as smooth as possible, and to create accessible yet deep combat.<br /><br />
<div style="text-align: center;">
My favorite new feature has to be see through walls (occlusion control)</div>
<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg1hIgI7WBl8HuRu0t-EyHyQm6fG_NR1drQkgiJC4IOHTvioPH5ZCLeb6QhPDOkBL425EdzGIY2OzYNkyIUO0imAZsyEceHNe7b8xec-LMu85gzuK0HM_LP5gZ0YRPNtBMf4jGbH-_ppiE/s1600/seeThroughWall.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg1hIgI7WBl8HuRu0t-EyHyQm6fG_NR1drQkgiJC4IOHTvioPH5ZCLeb6QhPDOkBL425EdzGIY2OzYNkyIUO0imAZsyEceHNe7b8xec-LMu85gzuK0HM_LP5gZ0YRPNtBMf4jGbH-_ppiE/s1600/seeThroughWall.png" height="188" width="320" /></a></div>
<br />
<br />
<br />
<h4>
Original soundtrack and effects</h4>
<div>
Not everyone knows this but, music is probably the only thing I love as much as video games (don't tell my girlfriend I said that). The current demo build of GTFO features an original track by yours truly. In this song (originally titled Halloween) I play guitar, bass, and keyboards (synth flute + drums).<br /><br />Our sound producer Gianluca Leal produced/recorded a gargantuan amount of sounds, not all of which managed to make it into the game. But those that did continue to make me feel warm inside almost daily.<br /><br /><h4>
Conclusion</h4>
</div>
<div>
To close this blog, I'd like to say that I'm extremely proud of the work that my group and I have been able to produce. It would not have been possible without the dedication and hard work of everyone who contributed. This game has been our top priority since it's conception, and we will continue to try to make it into something great. <br /><br />A final note to any professor's who may be reading/grading this submission *wink*<br /><br />Our team is first and foremost dedicated to making great games, no questions asked. Not all of us have been keeping up with blogs, but that's because we've instead chosen to make a stellar product as opposed to writing about one. Please take this into consideration when you grade us!<br /><br />Thanks for a great semester,</div>
<div>
<br /></div>
<div>
James Creavalle</div>
<br />
<br />
<div style="text-align: center;">
<br /></div>
James Creavallehttp://www.blogger.com/profile/04510634852858564820noreply@blogger.com0tag:blogger.com,1999:blog-8234421622735547477.post-76290096581044691982013-01-17T14:29:00.000-08:002013-01-17T20:53:43.298-08:00Lighting and Shaders Episode 1: Game MockupAnother year, another school semester. And with that comes some new knowledge. This week I started learning about shaders, and how I can use them to make my games look nice. Shaders are small programs that run on a computer's GPU which augment or enhance the visual assets of a game. They are responsible for displaying (drawing) the game and can be used to achieve effects such as lighting, shadows, ambient occlusion, bloom, HDR etc. Finally (and most importantly) they do all of this at lightning speed.<br />
<br />
Before I get down to the nitty gritty to start implementing this in my games, I've started with a few mockup designs for the effects I hope to achieve with shaders. The game I'll be working with is my team's current 3D prototype project "GTFO: The Double Dungeon Debacle". Below are some mockups I did in photoshop to simulate the look we're going for.<br />
<br />
First let's have a look at our source image:<br />
<br />
Nothing too exciting here... No lighting, flat shading, ugly particles, weak selection circle<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgovSc2Fu4YQH1LJWFy6vN7u896hc31zGRWLv4LjoRsMUG8HqhQ60DC2jlvjRo032euVRLU2pCDi0FPKJzX3_5nfIdRZM_I0AV1SIG1ZYaWrrw4Ni4OCkIiyjCIZJ7b14rv9dq4Jr0ORoo/s1600/gtfoScreen.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="479" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgovSc2Fu4YQH1LJWFy6vN7u896hc31zGRWLv4LjoRsMUG8HqhQ60DC2jlvjRo032euVRLU2pCDi0FPKJzX3_5nfIdRZM_I0AV1SIG1ZYaWrrw4Ni4OCkIiyjCIZJ7b14rv9dq4Jr0ORoo/s640/gtfoScreen.png" width="640" /></a></div>
<br />
Here's the first edit:<br />
<br />
Changes:<br />
<br />
- Added a radial light to the player<br />
- Added cartoon cel shaded effect to the characters (painted on manually)<br />
- Added a new fireball sprite with trailing particles, made a nicer selection circle<br />
- Added dynamic shadows to characters<br />
- UPDATE: Adjusted brightness and contrast<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
</div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgTfLKb-Xc-uGUow88iNqcKws7x7bmbxvQED7uSFTGvO_5HSLWxHuqVeU1TD03JpCWCR6MR0JAbvxEHD6cvShTz6SWrj3KICbl-bplMsPuoOuLVUpQh7QgFoEs54Jt18htaiYamWCHNpPw/s1600/gtfoShoopScreen.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="478" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgTfLKb-Xc-uGUow88iNqcKws7x7bmbxvQED7uSFTGvO_5HSLWxHuqVeU1TD03JpCWCR6MR0JAbvxEHD6cvShTz6SWrj3KICbl-bplMsPuoOuLVUpQh7QgFoEs54Jt18htaiYamWCHNpPw/s640/gtfoShoopScreen.png" width="640" /></a></div>
<br />
<br />
Second Edit: (My personal favourite)<br />
<br />
- Started with first edit<br />
- Added a bloom effect (using diffuse glow in photoshop)<br />
- Increased saturation slightly to compensate for diffuse glow effect<br />
- UPDATE: Adjusted brightness and contrast<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiwIYFWIum4mx3bBG6Wh5BhMaTMkY72z_axflnfgm6mjPZTuWRpyl0aqcuh0o1hxSVjpc-g_dqa9fune_fTopMTe6qMzODi0a95ic48U8ovhkgfBtqU0kOGYkcV9P-zdimuvMJuH_q-avs/s1600/gtfoShoopScreen1.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="478" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiwIYFWIum4mx3bBG6Wh5BhMaTMkY72z_axflnfgm6mjPZTuWRpyl0aqcuh0o1hxSVjpc-g_dqa9fune_fTopMTe6qMzODi0a95ic48U8ovhkgfBtqU0kOGYkcV9P-zdimuvMJuH_q-avs/s640/gtfoShoopScreen1.png" width="640" /></a></div>
<br />
<br />
Third Edit:<br />
<br />
- Started with second edit<br />
- Added a subtle film grain effect (would be optional or used in cutscenes)<br />
- UPDATE: Adjusted brightness and contrast<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
</div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhFzYCHkqj5i00YymsimQEz8DMUoS35i3WvLHRdG5l49g7wJCIJvNXRrVNdNInbssq2TkamS6ibCRWAgXRSlRUgnNDm8ZWjeiPv3SSMY3tG-Tyi-OJHBBsxfi-LwDOnJiNkX1iGLt19Y5g/s1600/gtfoShoopScreen2.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="478" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhFzYCHkqj5i00YymsimQEz8DMUoS35i3WvLHRdG5l49g7wJCIJvNXRrVNdNInbssq2TkamS6ibCRWAgXRSlRUgnNDm8ZWjeiPv3SSMY3tG-Tyi-OJHBBsxfi-LwDOnJiNkX1iGLt19Y5g/s640/gtfoShoopScreen2.png" width="640" /></a></div>
<br />
<br />
Overall I think these mock-ups are a significant improvement to the look of the game and will be going forward with these visual goals in mind. Feel free to comment with any feedback.James Creavallehttp://www.blogger.com/profile/04510634852858564820noreply@blogger.com0tag:blogger.com,1999:blog-8234421622735547477.post-15916539440618416472012-11-27T11:17:00.003-08:002012-11-27T11:17:51.621-08:00Farm Phresh: A Non-digital Edutainment Game<br /><div>
<br /></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="http://images.mudfooted.com/fruit-and-vegetables.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="213" src="http://images.mudfooted.com/fruit-and-vegetables.jpg" width="320" /></a></div>
<div class="separator" style="clear: both; text-align: center;">
Mmmm, antioxidants...<br /><span style="font-size: x-small;">Image URL: http://images.mudfooted.com/fruit-and-vegetables.jpg</span></div>
<div class="separator" style="clear: both; text-align: center;">
<span style="font-size: x-small;"><br /></span></div>
<div class="separator" style="clear: both; text-align: left;">
Where do you buy your fresh produce? Do you get it from the grocery store, or do you hit up the local farmer's market? How do you know what foods to choose for this week and the next? This week's non-digital game task was to create a fun experience which would teach local residents when specific fruits and vegetables are in season. How exactly does one make a game based on the availability of produce? For hours, we asked ourselves this very question. After intently studying <a href="http://www.foodland.gov.on.ca/english/availability.html">Ontario's food availability guide</a> we decided to divide the months up into their respective seasons, and distribute the produce accordingly. </div>
<div class="separator" style="clear: both; text-align: left;">
<br /></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjO681gHTMqEnGJmnZu5HrPyhzpP-bUsr6uxrHOsdCJV9DMj39pWE9CXPFVdhkCyHRXe53XTDF4Ses0z4d7e5uBfn2xJRAn6hU-Dj3afrbd8ulv9Wmpxs9qichnx82szmJ4NeZdIJP9wJOx/s1600/SeasonTree.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="295" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjO681gHTMqEnGJmnZu5HrPyhzpP-bUsr6uxrHOsdCJV9DMj39pWE9CXPFVdhkCyHRXe53XTDF4Ses0z4d7e5uBfn2xJRAn6hU-Dj3afrbd8ulv9Wmpxs9qichnx82szmJ4NeZdIJP9wJOx/s320/SeasonTree.png" width="320" /></a></div>
<div class="separator" style="clear: both; text-align: center;">
Our game board. The 4 seasons are represented by the quadrants of the image, and the years by the numbers.</div>
<div class="separator" style="clear: both; text-align: left;">
<br /></div>
<div class="separator" style="clear: both; text-align: left;">
We created 4 decks of produce cards corresponding to each season. It was then decided that the game would take place over the span of 5 "years", with players collecting seasonal, and all season produce (seasonal produce being worth more money than all season). In the interest of adding depth and player interaction, we added the ability to trade produce, and gave players the option of purchasing farms. When a player owns a farm that produces a certain fruit or vegetable, they are able to profit from the goods of other players. This and the rest of the game's quirks are explained in the rules section below.</div>
<div class="separator" style="clear: both; text-align: left;">
<br /></div>
<div class="separator" style="clear: both; text-align: left;">
</div>
<div class="separator" style="clear: both;">
RULES:</div>
<div class="separator" style="clear: both;">
------------------------------------------------------------------------------------------------------------</div>
<div class="separator" style="clear: both;">
Players: 4 or more</div>
<div class="separator" style="clear: both;">
<br /></div>
<div class="separator" style="clear: both;">
Dominate the market in this all-out battle for farm produce domination! Compete to win the most money by growing and selling a variety of fruits and vegetables - or even trading for what you think could be the produce that rockets you to the top!</div>
<div class="separator" style="clear: both;">
<br /></div>
<div class="separator" style="clear: both;">
Set-up:</div>
<div class="separator" style="clear: both;">
<br /></div>
<div class="separator" style="clear: both;">
- Each Season Deck must be shuffled separately and placed next to their respective Season on the board.</div>
<div class="separator" style="clear: both;">
- Each player receives $25 (each money piece is worth $5).</div>
<div class="separator" style="clear: both;">
- The spinner is then set to “Spring.”</div>
<div class="separator" style="clear: both;">
- Players can decide who goes first however they please.</div>
<div class="separator" style="clear: both;">
<br /></div>
<div class="separator" style="clear: both;">
Play:</div>
<div class="separator" style="clear: both;">
At the start of a players turn, the player has the option to purchase a Farm Card by flipping over a Farm Card – your first purchase costs $10 and each subsequent purchase costs $5 more (2nd is $15, 3rd is $20, etc.)</div>
<div class="separator" style="clear: both;">
Players may also trade any Farm or Produce cards with other players before beginning their turn.</div>
<div class="separator" style="clear: both;">
The player then flips over a card from the current Season.</div>
<div class="separator" style="clear: both;">
The player collects the money the card states – the rarer the card, the more money its worth. PLAYERS KEEP THE PRODUCE CARDS.</div>
<div class="separator" style="clear: both;">
If another player has a Farm that produces the turned over card, the player who flipped the card must pay the Farm owner half of what they would’ve received.</div>
<div class="separator" style="clear: both;">
After one whole round (e.g., when the first player begins their next turn), the Season changes to the next one in a clock-wise fashion.</div>
<div class="separator" style="clear: both;">
After all four seasons have been played through, a new year begins.</div>
<div class="separator" style="clear: both;">
Play ends after the end of the 5th year.</div>
<div class="separator" style="clear: both;">
Players tally up all their Produce Card values and whoever has the highest value wins.</div>
<div class="separator" style="clear: both;">
Players must also consider the End-Game Bonuses before confirming who wins:</div>
<div class="separator" style="clear: both;">
o Most Vegetables: $20</div>
<div class="separator" style="clear: both;">
o Most Fruit: $20</div>
<div class="separator" style="clear: both;">
o Rock a P (2 Peaches, Pears and Plums): $25</div>
<div class="separator" style="clear: both;">
o Garden Salad (1 Lettuce, 1 Carrot, 1 Cucumber, 1 Onion, 1 Mushroom and 1 Tomato): $35</div>
<div class="separator" style="clear: both;">
------------------------------------------------------------------------------------------------------------</div>
<br />
<div class="separator" style="clear: both; text-align: left;">
<br /></div>
<div class="separator" style="clear: both; text-align: left;">
Afterthoughts:</div>
<div class="separator" style="clear: both; text-align: left;">
<br /></div>
<div class="separator" style="clear: both; text-align: left;">
While a game about produce isn't exactly the most compelling thing I've ever played, the resource management and acquisition based game-play makes for an almost monopoly like experience. The best edutainment games are the ones that make you forget you're supposed to be learning something, and I think we've accomplished just that.</div>
James Creavallehttp://www.blogger.com/profile/04510634852858564820noreply@blogger.com0tag:blogger.com,1999:blog-8234421622735547477.post-34116557832676035982012-10-26T08:38:00.003-07:002012-10-26T08:39:04.369-07:00Starry Nightmare: A non-digital "Art Game"<div class="separator" style="clear: both; text-align: left;">
This week in game design class, we learned about a relatively new trend in the game industry known as "Art Games". At it's core, an art game is an interactive experience in which the player's main goal is not necessarily to win (or not to lose). Although this is a very broad description for a type of game which is not yet formally defined, I think the main point of an art game is to give each user a unique emotional experience which is often open to interpretation.</div>
<div class="separator" style="clear: both; text-align: left;">
<br /></div>
<div class="separator" style="clear: both; text-align: left;">
As you may have guessed, I was then tasked with creating a non-digital Art game. The constraint was that this game needed to be somehow based on Van Gogh's Starry Night painting.</div>
<div class="separator" style="clear: both; text-align: center;">
<br /></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="http://www.vggallery.com/painting/f_0612.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="256" src="http://www.vggallery.com/painting/f_0612.jpg" width="320" /></a></div>
<br />
<div>
<br /></div>
<div>
How do you go about turning a painting into a game?</div>
<div>
<br /></div>
<div>
First my group and I examined the painting, read analyses and critique's of the work, and formulated a list of feelings and emotions invoked by the image. The general consensus was that we felt cold, alone, and melancholy.</div>
<div>
<br /></div>
<div>
As a stepping stone to creating our non digital art game, we were also asked to each draw a parallel between this work of art (and the feelings associated with it) and a moment in a video game we had previously played. For me, this moment happened in Chrono Trigger (my favourite JRPG of all time). At about 3/4's of the way through the game, players are presented with Magus, a boss who's intentions are seemingly unknown. You can either kill Magus, or persuade him to join your party. If you do choose to kill him, the game immediately hits you right in the "feel bads". Maybe it's the dark surrounding atmosphere of the battle, or the cutscene that follows... One thing is for sure, this song gets me every time. <a href="http://www.youtube.com/watch?v=aQx9QaAxhk8">http://www.youtube.com/watch?v=aQx9QaAxhk8</a></div>
<div>
<br /></div>
<div>
Anyway, back to the game... The board turned out like this:</div>
<div>
<br /></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhaRO3SpuW-UeoaiX8kSXqGtQm-FR8MGN4OWGBru2RXtwr7u3wvoSr7LF0A50ZEerWVfBGw4xao9GNh-yCpm8GmZ6E_9XMU-NA0CP4-1OOzQeg9anjeYhC5-WAs0PVfr0wt5LcF5T4HzdU/s1600/Starry+Nightmare.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="320" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhaRO3SpuW-UeoaiX8kSXqGtQm-FR8MGN4OWGBru2RXtwr7u3wvoSr7LF0A50ZEerWVfBGw4xao9GNh-yCpm8GmZ6E_9XMU-NA0CP4-1OOzQeg9anjeYhC5-WAs0PVfr0wt5LcF5T4HzdU/s320/Starry+Nightmare.png" width="247" /></a></div>
<div class="separator" style="clear: both; text-align: left;">
The game's premise is a walk through one's own psyche in a nightmare. Players each are given a unique experience as they are asked to share key memories with the game, which will affect the outcome of the game. As you may have guessed, this is a single player game.</div>
<div class="separator" style="clear: both; text-align: left;">
<br /></div>
<div class="separator" style="clear: both; text-align: left;">
Here's a rundown of the rules:</div>
<div class="separator" style="clear: both; text-align: left;">
------------------------------------------------------------------------------------------------------------</div>
<div class="separator" style="clear: both; text-align: left;">
</div>
<div class="separator" style="clear: both;">
Materials required:-</div>
<div class="separator" style="clear: both;">
•<span class="Apple-tab-span" style="white-space: pre;"> </span>Dice</div>
<div class="separator" style="clear: both;">
•<span class="Apple-tab-span" style="white-space: pre;"> </span>20 tiled circular board</div>
<div class="separator" style="clear: both;">
•<span class="Apple-tab-span" style="white-space: pre;"> </span>16 “memory-fragment” cards</div>
<div class="separator" style="clear: both;">
•<span class="Apple-tab-span" style="white-space: pre;"> </span>4 blank “key-memory” cards</div>
<div class="separator" style="clear: both;">
•<span class="Apple-tab-span" style="white-space: pre;"> </span>Writing utensils for the “key-frame” cards</div>
<div class="separator" style="clear: both;">
<br /></div>
<div class="separator" style="clear: both;">
Rules:-</div>
<div class="separator" style="clear: both;">
•<span class="Apple-tab-span" style="white-space: pre;"> </span>The player must write down four personal “key-memories” on the empty cards and then shuffle the four cards with the rest of the “memory-fragment” cards.</div>
<div class="separator" style="clear: both;">
•<span class="Apple-tab-span" style="white-space: pre;"> </span>The cards are then placed face down individually on the tiles.</div>
<div class="separator" style="clear: both;">
•<span class="Apple-tab-span" style="white-space: pre;"> </span>The player then rolls the die and then moves the according number of tiles on the board</div>
<div class="separator" style="clear: both;">
•<span class="Apple-tab-span" style="white-space: pre;"> </span>Any memory cards on a tile that the player lands on are to be flipped and read. The player must then “relive” that memory in their heads. The respective card is then removed from the game and the tile it was on is considered “empty”</div>
<div class="separator" style="clear: both;">
•<span class="Apple-tab-span" style="white-space: pre;"> </span>If a player lands on an empty tile, he/she must advance to the next “non-empty” tile. </div>
<div class="separator" style="clear: both;">
•<span class="Apple-tab-span" style="white-space: pre;"> </span>The game ends either when there are no more “key-memory” cards on the board but there remains at least one “memory-fragment” card or when there are no more “memory-fragment” cards but at least one “key-memory” card. In the first case the player “loses” and slips into insanity and in the latter, the player gets to leave with his/her mind intact.</div>
<div>
------------------------------------------------------------------------------------------------------------</div>
<br />
<div>
<br /></div>
<div>
After thoughts:</div>
<div>
<br /></div>
<div>
This game didn't turn out to be particularly fun, per se. The aspect that I'm most happy with is that every player is given a personalized, unique experience.</div>
<div>
<br /></div>
James Creavallehttp://www.blogger.com/profile/04510634852858564820noreply@blogger.com0tag:blogger.com,1999:blog-8234421622735547477.post-23719245053132959132012-10-16T10:42:00.002-07:002012-10-16T10:42:51.856-07:00Breaking Liar's Dice: Positive Feedback loops and their Importance<div class="separator" style="clear: both; text-align: center;">
<a href="http://0.tqn.com/d/boardgames/1/0/P/y/pirates_dice.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="320" src="http://0.tqn.com/d/boardgames/1/0/P/y/pirates_dice.jpg" width="320" /></a></div>
<div class="separator" style="clear: both; text-align: center;">
Like this, but less fun.</div>
<div class="separator" style="clear: both; text-align: center;">
Image <a href="http://boardgames.about.com/od/dicegames/tp/dice-games.htm">http://boardgames.about.com/od/dicegames/tp/dice-games.htm</a></div>
<div style="text-align: center;">
<br /></div>
<div style="text-align: left;">
This week in game design class, the name of the game was Liar's dice. The task was to make modifications to the game such that it's positive feedback loop is removed. </div>
<div style="text-align: left;">
<br /></div>
<div style="text-align: left;">
What is a positive feedback loop?</div>
<div style="text-align: left;">
<br /></div>
<div style="text-align: left;">
A positive feedback loop is a continuous cycle of challenge and reward which allows a player to progress towards a goal, or win condition. In the case of Liar's dice, the positive feedback loop (or at least one of them) is the successful calling of someone's bluff. When this happens, the player who lied loses a die and is one step closer to losing. </div>
<div style="text-align: left;">
<br /></div>
<div style="text-align: left;">
What did this do to the game?<br /><br />To be perfectly honest, this made the game completely un-fun. Not only are positive feedback loops necessary to maintain good pacing in a game, but they are essential for rewarding players and providing dynamic game-play. With the modifications made by my group, the games took forever to finish and became uneventful, chores to complete.</div>
<div style="text-align: left;">
<br /></div>
<div style="text-align: left;">
Here's a rundown of the rules updated with our changes:</div>
<div style="text-align: left;">
<br /></div>
<div style="text-align: left;">
------------------------------------------------------------------------------------------------------------</div>
<div style="text-align: left;">
<div class="MsoNormal">
</div>
<div class="MsoNormal">
The game is made for 2 or more players. Suggested ages 12+</div>
<div class="MsoNormal">
Each player has a cup and 5 dice (the cup can easily be replaced by using your hands). Players will roll the dice in the cups and hide what they rolled from the other players. The first player will make a guess about how many of a die facing there are. i.e. 3 fours or 2 fives. </div>
<div class="MsoNormal">
The next player will have 3 decisions to make: </div>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
LYING: They can call their bluff by saying they are lying meaning there are less of the number that they guessed then there are between the players. i.e. if they say 4 twos and there are 3 or less between all the players then they are lying. If they are wrong and there are more or equal to the number they guessed they lose a die. i.e. if there are 6 twos.</div>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
CORRECT: The player can instead decide that the player is spot on meaning if there are exactly the number they guessed then every other player loses a die. i.e. if they said 4 twos and there are exactly 4 twos between all players they are correct. If there are not exactly as many as they guessed then they lose a die instead.</div>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
GUESS: The player can make their own guess if they think the player is correct but not exactly correct. When they make their guess their number of faces must be higher than the previous guess. i.e. if the player before them guessed 3 sixes then they must guess 4 or more of any facing such as 4 fives.</div>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
After one of the players choose lying or correct then the players reveal their rolls and determine if the player is right or wrong in their accusation. After that is decided the players roll again and the game continues with the next person starting the round off. After all but one player loses all of their dice then the game ends with the person with dice being the winner.</div>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
MODIFICATIONS</div>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
1.<span class="Apple-tab-span" style="white-space: pre;"> </span>Players start off with 5 life counters. When a player would normally lose a die they instead lose a life counter.</div>
<div class="MsoNormal">
2.<span class="Apple-tab-span" style="white-space: pre;"> </span>If a player improperly calls a bluff, they lose a life counter</div>
<div class="MsoNormal">
3.<span class="Apple-tab-span" style="white-space: pre;"> </span>If a player correctly calls a bluff he cannot look at his hand for the next turn.</div>
<div class="MsoNormal">
4.<span class="Apple-tab-span" style="white-space: pre;"> </span>Each player is given a penny. At any time when it is their turn, they can choose to trade in their penny to make the leading player show their dice to the rest of the table.</div>
<div class="MsoNormal">
5.<span class="Apple-tab-span" style="white-space: pre;"> </span>Once per game, you can make a winning player unable to look at their hand on the next turn. (trade in their penny)</div>
<div>
<br /></div>
<div>
<div class="MsoNormal">
<b>My Rule:</b> If
a player improperly calls a bluff, they lose a life counter<o:p></o:p></div>
<div class="MsoNormal">
<b>How this affects the
positive feedback loop: </b>This adds a bigger risk to attempting to call
someone’s bluff. This puts the risk/reward less in favour of impulsively
calling bluffs, and more in favour of playing safe.<o:p></o:p></div>
<div class="MsoNormal">
<b>Predictions: </b>Players
would play more patiently and safely, rather than choosing to call a liar every
turn.<o:p></o:p></div>
<div class="MsoNormal">
<b>Actual Outcome: </b>This
rule in combination with rule #3 made players rarely call bluffs unless they
were guaranteed. This made games take extremely long.<o:p></o:p></div>
</div>
<br />
<div class="MsoListParagraphCxSpLast" style="mso-list: l0 level1 lfo1; text-indent: -18.0pt;">
\---------------------------------------------------------------------------------------------------------------</div>
<div>
The lesson? Positive feedback loops are a good thing (We probably didn't need to ruin liar's dice to figure that out).</div>
</div>
James Creavallehttp://www.blogger.com/profile/04510634852858564820noreply@blogger.com0tag:blogger.com,1999:blog-8234421622735547477.post-56135913925204216962012-10-15T08:19:00.000-07:002012-10-15T08:20:12.759-07:00Fighting Game Psychology 101: Button Mashing<div class="separator" style="clear: both; text-align: center;">
<br /></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="http://0.media.dorkly.cvcdn.com/42/67/fcad01a101cde04012824f0c603890c2.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="314" src="http://0.media.dorkly.cvcdn.com/42/67/fcad01a101cde04012824f0c603890c2.jpg" width="320" /></a></div>
<div class="separator" style="clear: both; text-align: center;">
Because cats.</div>
<br />
Alright, let me start off with an important statement. Button mashing is not OK. Sure, it can be fun to sit back and watch your character flail around with varied degrees of success. Unfortunately, mindless button mashing results in random, mindless gameplay and an overall passive experience.<br />
<br />
Allow me to elaborate.<br />
<br />
In a fighting game, every attack a character possesses is a tool appropriate for a certain given situation. Let's look at Ryu (everyone's favourite protagonist) as an example.<br />
<br />
Ryu has 3 basic special moves in pretty much every version of Street Fighter. They are:<br />
<br />
Hadouken: A projectile attack used to threaten foes from a distance and pressure them to jump, leaving them open to an anti-air attack.<br />
<br />
Shoryuken: A very fast rising uppercut with invincible startup. This move is great for anti-air and cutting through an opponent's pressure. However this move has a long recovery time when blocked or dodged, leaving Ryu wide open for punishment after a poorly calculated shoryuken.<br />
<br />
Tatsumaki-Senpuu-Kyaku (Hurricane kick): A horizontal moving spin kick, which travels through certain projectiles. <br />
<br />
Ryu also has around 20 normal moves, each with their own appropriate uses, but for simplicity's sake I won't go into detail about these.<br />
<br />
A good Ryu player will always know <b>when</b> and <b>where</b> to execute each attack. They throw fireballs at safe ranges, anti-air accordingly, and use the correct normal moves at their ideal distances. A player who mashes will execute a random attack, at a random time, in a random place. Not only is this experience not fulfilling for the button masher, but it is equally useless for his opponent. In a fighting game, being able to read your opponents moves and tendencies is paramount. However, if your opponent's actions are unconscious, it becomes virtually impossible to read them. If you don't know what move you're going to do, how the hell should I?<br />
<br />
When players choose to mash instead of making conscious decisions, they are choosing to ignore all aspects (timing, spacing, risk/reward) of the meta game.<br />
<br />
And you know what, if that's fun for you then I guess that's ok. But against any half decent player, you're going to get bopped. That being said, fighting games are certainly not for everyone. The execution barrier can often be an obstacle that prevents new players from understanding and enjoying a game. But we'll talk about that at a later date.<br />
<br />
TLDR: If you want to be good at fighting games (or any games for that matter) stop mashing.<br />
<br />James Creavallehttp://www.blogger.com/profile/04510634852858564820noreply@blogger.com1tag:blogger.com,1999:blog-8234421622735547477.post-58807078030416744542012-10-09T11:26:00.002-07:002012-10-09T11:26:43.802-07:00From Atari to Cardstock: Lunar Lander<div>
<br /></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="http://ataricade.videoarcade.it/lunarlanderscr.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="253" src="http://ataricade.videoarcade.it/lunarlanderscr.jpg" width="320" /></a></div>
<div class="separator" style="clear: both; text-align: center;">
Image taken from <a href="http://ataricade.videoarcade.it/lunarlanderscr.jpg">http://ataricade.videoarcade.it/lunarlanderscr.jpg</a></div>
<div>
<br /></div>
This week's non-digital game task was to create a game based off an Atari classic. Being a child of the 90's, I had very little hands on time with the Atari, and neither had my team mates. After the group of us tested a handful of Atari games, we came to the conclusion that Lunar Lander would translate well to a turn based environment. Here's a quick description of what the game is all about in case you weren't already aware.<div>
<br /></div>
<div>
In Lunar Lander, the player's goal is the land their ship right-side up on the moon. Preferably on a spot containing a large score multiplier. In order to control the landing, the player must operate their 3 thrusters (left, right, centre) and guide the lander to the surface with the proper orientation and approach angle. If the player runs out of fuel, they lose control of the ship and must accept whatever fate awaits.<br /><div>
<br /></div>
<div>
Since the game is traditionally single player, we decided to keep player interaction to a minimum. In our version of the game, players compete to construct ships to collect ore from the moon (note: The ore is irrelevant to the game itself and serves solely as backstory). Once each player constructs their ship, the goal is to land it with the highest degree of difficulty allowed by their fuel cost (increased by upgrading your ship). Players can sacrifice their turn to trade ship parts with others. If this sounded confusing, good. It's supposed to. Have a look at the rules, that should clear things right up.<div>
<br /></div>
<div>
<div>
Rules:</div>
<div>
------------------------------------------------------------------------------------------------------------</div>
<div>
Players: 2-4 people</div>
<div>
<br /></div>
<div>
<br /></div>
<div>
Set-up: Place the cards in two separate piles: one for Ship Parts and one for Landing Difficulty. Shuffle the decks and deal out 5 Ship Parts to each player. Each player may play one part at the count of three (e.g. Player 1 counts to three and on three, each player shows their card). Players then decide who will play first in whichever fashion they wish.</div>
<div>
<br /></div>
<div>
Instructions: Players try to build ships to collect ore off of the Moon while using the least amount of fuel. This is done by completing a whole ship (Hull, Thruster, Left Wing, and Right Wing). Each part generates a different amount of fuel, with higher ranked cards generating more. Each player picks up a ship part card at the beginning of their turn OR starts a trade with another player. When trading, the trader (person initiating the trade) shows the card they wish to trade. Any player may then call for the trade, with who says they want it first getting it. Players may trade as many parts as they want for the offered part. The trade may also be cancelled at any point, provided the trader hasn’t already accepted the deal. If the trade is made, that player’s turn is done. If no one takes the trade, then play resumes as normal. They may then play one card from their hand towards their ship. There is no max to the number of cards a player may hold.</div>
<div>
<br /></div>
<div>
<br /></div>
<div>
<br /></div>
<div>
Once a ship is built, the ship goes into pre-launch mode, meaning that the ship can only launch on any turn after it is built. Players may continue to modify their ship at this point, but doing so delays launching the ship for another turn. When a player wishes to launch, they must pick up a Landing Difficulty card. The Landing Difficulty card multiplies your fuel into points, which are only tallied if the player lands successfully. Players land successfully if their total fuel amount for the ship is more than the amount on the Landing Difficulty card. Harder landings require more fuel, e.g. landing for a 4x costs 200 or more while landing for a 2x costs 100 or more. Players calculate their fuel cost by adding all the points on each of their ship parts. The different fuel gained by each ship part is as follows:</div>
<div>
<br /></div>
<div>
Rank A: 70 </div>
<div>
Rank B: 60</div>
<div>
Rank C: 50</div>
<div>
Rank D: 40 </div>
<div>
<br /></div>
<div>
If a player lands successfully, they then subtract the total for landing from their fuel cost. They then multiply that remainder by the respective multiplier on the Landing Difficulty card and tally their points, e.g. if Player 2 has a fuel cost of 300 and the landing costs 200 for a 4x multiplier, Player 2 gets 400 points (100 times 4). If a player does not have the necessary amount of fuel points, then the player only gets 10% of their fuel amount, e.g. if Player 3 has 200 points and his landing costs 300, Player 3 gets 20 points. After a landing (whether successful or a crash) the player returns all the cards used for the ship to the Ship Parts pile. The player then tallies their points. The first player to 2000 points wins.</div>
<div>
<br /></div>
<div>
<br /></div>
<div>
<br /></div>
<div>
------------------------------------------------------------------------------------------------------------</div>
</div>
<div>
<br /></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgioyiOWgjCbelrFhvz9GBeMdWxI32aEUSeLlm5kT7W_J4NicZ5PdbStmJUgKvBebsVgJJJQMAvHO6bV2aHM-h4iVgG-AeNY7i_p52oC0F7fWeTeH-9Me9otKLY8afGPW9OUIOQSkl7LjAR/s400/LunarLandarCards.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="247" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgioyiOWgjCbelrFhvz9GBeMdWxI32aEUSeLlm5kT7W_J4NicZ5PdbStmJUgKvBebsVgJJJQMAvHO6bV2aHM-h4iVgG-AeNY7i_p52oC0F7fWeTeH-9Me9otKLY8afGPW9OUIOQSkl7LjAR/s320/LunarLandarCards.jpg" width="320" /></a></div>
<div>
<br /></div>
<div>
<br /></div>
<div>
Things I liked:</div>
</div>
</div>
<div>
<br /></div>
<div>
Overall I'm pretty satisfied with how the game was translated. The game still feels competitive, while maintaining the isolated single player-esque experience you would expect from lunar lander. This is reminiscent of competing for high scores against other players back in the day.</div>
<div>
<br /></div>
<div>
Things I didn't:</div>
<div>
<br /></div>
<div>
I honestly wish we were not forced to choose from a finite list of Atari games. I had not played any of the options before making this game, and would have chosen Pitfall hands down if I were given the choice</div>
James Creavallehttp://www.blogger.com/profile/04510634852858564820noreply@blogger.com1tag:blogger.com,1999:blog-8234421622735547477.post-33796171896411501752012-10-02T11:42:00.000-07:002012-10-02T13:48:27.139-07:00Sons of Noah: A Biblical Collection GameThis week's mandatory non-digital game assignment was to create a collection game of some sort. This means the objective of the game must be to collect a certain amount of items in order to win. After spending many hours volunteering at a nearby cat shelter, my group mate Divakar Dev threw out the idea of rescuing animals. I then took this idea a step further and suggested we make the game about Noah's arc.<br />
<br />
The thought process behind this wonderful game:<br />
<div style="text-align: center;">
<br /></div>
<div style="text-align: center;">
Before</div>
<div class="separator" style="clear: both; text-align: center;">
<a href="http://www.allpetnews.com/wp-content/uploads/2011/06/Kittens.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="200" src="http://www.allpetnews.com/wp-content/uploads/2011/06/Kittens.jpg" width="320" /></a></div>
<div style="text-align: center;">
Image taken from www.allpetnews.com</div>
<div style="text-align: center;">
<br /></div>
<div style="text-align: center;">
After</div>
<div class="separator" style="clear: both; text-align: center;">
<a href="http://upload.wikimedia.org/wikipedia/en/4/40/Super_3D_Noah's_Ark.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="http://upload.wikimedia.org/wikipedia/en/4/40/Super_3D_Noah's_Ark.png" /></a></div>
<div style="text-align: center;">
Screencap from Super Noah's Arc 3D</div>
<div style="text-align: center;">
<br /></div>
<div style="text-align: left;">
Yeah, that's pretty much how it happened.</div>
<div style="text-align: left;">
<br /></div>
<div style="text-align: left;">
After realising that only one player could be Noah, we decided to have each of the players take the role of one of his sons (Shem, Ham, Japeth, and Bill (who is both fictional, and adopted for the sake of 4 player functionality)). Each son of Noah is in a race to round up 5 pairs of animals in order to win their father's love and respect. The first player to collect 5 pairs of animals is the victor.</div>
<div style="text-align: left;">
<br /></div>
<div style="text-align: left;">
Here's how the board came together:</div>
<div style="text-align: left;">
<br /></div>
<div style="text-align: left;">
<br /></div>
<div style="text-align: center;">
Each coloured square represents an ecosystem, each housing a specific group of animals. (These colours are not final and will match those of the cards below)</div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi1v2GsilH9jppDvCY8x-yJt7TQOllbrIVjPaSELNmGqIpZfPVNDEK7KFK1aDBGdEUQpRXin0cI5eyKWP1CzXoNtimjok6HHk8kuEGtV5brz7jqE4NR-28tLV4vjlsdZxK-O3XfsS8rkO5v/s1600/collection+game+paint.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="155" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi1v2GsilH9jppDvCY8x-yJt7TQOllbrIVjPaSELNmGqIpZfPVNDEK7KFK1aDBGdEUQpRXin0cI5eyKWP1CzXoNtimjok6HHk8kuEGtV5brz7jqE4NR-28tLV4vjlsdZxK-O3XfsS8rkO5v/s320/collection+game+paint.png" width="320" /></a></div>
<div class="separator" style="clear: both; text-align: center;">
Here's a close-up of one of the ecosystems. On the full-size board, these are all inter-twined as seen above.</div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgXAc1fgK3Wr9j-g6ViBLhq0Em-aYDj254Nd9ZqQd8vdkHWtUmv7C3kIwb6tZp203pgBijMB4Idpd4YlMmq0H_hZRL-39AB5YppOJo1CCe1jb_FYRWGLR3qgj5owABz2JHnUinFN0O4G8WP/s1600/Rain+Forest.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="320" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgXAc1fgK3Wr9j-g6ViBLhq0Em-aYDj254Nd9ZqQd8vdkHWtUmv7C3kIwb6tZp203pgBijMB4Idpd4YlMmq0H_hZRL-39AB5YppOJo1CCe1jb_FYRWGLR3qgj5owABz2JHnUinFN0O4G8WP/s320/Rain+Forest.png" width="240" /></a></div>
<div class="separator" style="clear: both; text-align: center;">
<br /></div>
<div class="separator" style="clear: both; text-align: left;">
The Animal Cards: (Fun fact: We almost had unique male and female animal cards, but we figured the game might take too long to win among other issues. As a result, animal cards contain no gender.)</div>
<div class="separator" style="clear: both; text-align: left;">
<br /></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjOoq-JwQPpq7vIEwp54ptzLfB-hXAo4rdpgV8nqhUu-rLTfiHlp6jy0RrHF_dBss6ja3WNAnUCIQvhh09JUY2CH_sDI860s2XxcoijtVqBSm3X7HJEYQfH1rzbS5CSO-t6aZeGWxS4T8ju/s1600/noahCards.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="247" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjOoq-JwQPpq7vIEwp54ptzLfB-hXAo4rdpgV8nqhUu-rLTfiHlp6jy0RrHF_dBss6ja3WNAnUCIQvhh09JUY2CH_sDI860s2XxcoijtVqBSm3X7HJEYQfH1rzbS5CSO-t6aZeGWxS4T8ju/s320/noahCards.png" width="320" /></a></div>
<div class="separator" style="clear: both; text-align: center;">
<br /></div>
<div class="separator" style="clear: both; text-align: left;">
<span style="background-color: black;"><span style="color: white;"><br /></span></span></div>
<div class="separator" style="clear: both; text-align: left;">
<span style="background-color: black; color: white;"><b style="font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif; font-size: 13px; line-height: 18px;">RULES:</b><br style="font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif; font-size: 13px; line-height: 18px;" /><span style="font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif; font-size: 13px; line-height: 18px;">----------------------------------------------------------------------------------------------------------------------------</span></span></div>
<div class="MsoNormal" style="font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif; font-size: 13px; line-height: 18px;">
<span style="background-color: black; color: white;">Players: 2-4</span></div>
<div class="MsoNormal" style="font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif; font-size: 13px; line-height: 18px;">
<span style="background-color: black; color: white;"><br /></span></div>
<div class="MsoNormal" style="font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif; font-size: 13px; line-height: 18px;">
<span style="background-color: black; color: white;">Set-up: Players shuffle the animal cards and put each pile into its respective zone. Players then roll for highest to see who goes first. </span></div>
<div class="MsoNormal" style="font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif; font-size: 13px; line-height: 18px;">
<span style="background-color: black; color: white;"><br /></span></div>
<div class="MsoNormal" style="font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif; font-size: 13px; line-height: 18px;">
<span style="background-color: black; color: white;">Play: Players take turns going around the board to the different zones while trying to collect matching pairs of animals. Movement is made by rolling the die. Players must collect 5 pairs of animals before they can take off in their ship and escape the end of the world. Players must land on an animal space in order to pick up a card from that zone’s pile. If a player lands on a space with words, players must follow whatever is written on the space.</span></div>
<div class="MsoNormal" style="font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif; font-size: 13px; line-height: 18px;">
<span style="background-color: black; color: white;"><br /></span></div>
<div class="MsoNormal" style="font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif; font-size: 13px; line-height: 18px;">
<span style="background-color: black; color: white;">Before a player takes a turn, they have the option to attempt to trade animals with another player. There is no ratio on trading animals, i.e. a player can attempt to trade 3 animals for only 1 from another player. A player can deny any trade without question. If a player’s trade is successful, that players turn ends. However, if the trade is denied, then the player may roll and continue their turn as normal.</span></div>
<div class="MsoNormal" style="font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif; font-size: 13px; line-height: 18px;">
<span style="background-color: black; color: white;">----------------------------------------------------------------------------------------------------------------------------</span></div>
<div class="MsoNormal" style="font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif; font-size: 13px; line-height: 18px;">
<span style="background-color: white;"><br /></span></div>
<div class="MsoNormal" style="font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif; font-size: 13px; line-height: 18px;">
<span style="background-color: black; color: white;">Things I like about the game:</span></div>
<div class="MsoNormal" style="font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif; font-size: 13px; line-height: 18px;">
<span style="background-color: black; color: white;"><br /></span></div>
<div class="MsoNormal" style="font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif; font-size: 13px; line-height: 18px;">
<span style="background-color: black; color: white;">Overall, the thing I like most about the game is it's premise. From the way it was conceptualized to the final product, there was no shortage of lulz.</span></div>
<div class="MsoNormal" style="font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif; font-size: 13px; line-height: 18px;">
<span style="background-color: black; color: white;"><br /></span></div>
<div class="MsoNormal" style="font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif; font-size: 13px; line-height: 18px;">
<span style="background-color: black; color: white;">Things that could have been better:</span></div>
<div class="MsoNormal" style="font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif; font-size: 13px; line-height: 18px;">
<span style="background-color: black; color: white;"><br /></span></div>
<div class="MsoNormal" style="font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif; font-size: 13px; line-height: 18px;">
<span style="background-color: black; color: white;">If I could, I would add a more competitive, head-to-head element to the game. I think the game would be significantly more entertaining, if Noah's sons could have ship battles, and maybe even kidnap each-other's animals. After all, Noah is a hard man to please, and these sons will do whatever it takes to be guaranteed safety from the great flood.</span></div>
<div class="MsoNormal" style="font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif; font-size: 13px; line-height: 18px;">
<span style="background-color: black; color: white;"><br /></span></div>
<div class="MsoNormal" style="font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif; font-size: 13px; line-height: 18px;">
<span style="background-color: black; color: white;">=)</span></div>
<div class="MsoNormal" style="font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif; font-size: 13px; line-height: 18px;">
<span style="background-color: white;"><br /></span></div>
James Creavallehttp://www.blogger.com/profile/04510634852858564820noreply@blogger.com0tag:blogger.com,1999:blog-8234421622735547477.post-59155624576127529252012-09-28T09:40:00.001-07:002012-10-02T13:47:40.578-07:00Sense and Sensibility: The card game (Hey at least it's not another board game)This week, I was once again tasked with making a non-digital game. This time the constraint was that the game had to be somehow based off of a Jane Austen novel. Now, I admit I have never read a Jane Austen novel (nor do I plan to). After staring at the wikipedia pages of several Jane Austen novels, my group and I decided Sense and Sensibility would be the least terrible to make a game out of. Here's what we came up with.<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgHZyG43r6yiyexmR7h8RMPmVsl2gfOsShmZ5i6Wd9kxqSUj82tcHKFYdnbR0sv71z5I9Wu8WHg6Z88VNUnyA04Dq9ZHewkDC9bxLbY0yglfIyshjR0-hTk-4fSJlXCGlhdJvmvc3Z4M9k/s1600/SScardGame.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="320" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgHZyG43r6yiyexmR7h8RMPmVsl2gfOsShmZ5i6Wd9kxqSUj82tcHKFYdnbR0sv71z5I9Wu8WHg6Z88VNUnyA04Dq9ZHewkDC9bxLbY0yglfIyshjR0-hTk-4fSJlXCGlhdJvmvc3Z4M9k/s320/SScardGame.png" width="224" /></a></div>
<br />
Sense and Sensibility: The Card Game is essentially a dating sim in which players compete to woo a significant other. Players accumulate traits (good and bad) and assets/liabilities to modify their love and money scores respectively. The player's goal is to accumulate enough love or money to woo their suitor. Players can also use action cards to influence the love and money scores of other players and themselves.<br />
<br />
Here's a run-down of the rules:<br />
<br />
<br />
<div class="MsoNormal">
</div>
<div class="MsoNormal">
Players: 2 – 5<o:p></o:p></div>
<div class="MsoNormal">
Setup:<o:p></o:p></div>
<div class="MsoListParagraphCxSpFirst" style="margin-left: 18.0pt; mso-add-space: auto; mso-list: l1 level1 lfo2; text-indent: -18.0pt;">
<!--[if !supportLists]--><span style="font-family: Symbol; mso-bidi-font-family: Symbol; mso-fareast-font-family: Symbol;">·<span style="font-family: 'Times New Roman'; font-size: 7pt;">
</span></span><!--[endif]-->Players shuffle the Greed, Love, Trait, Asset/Liabilities
and Action cards into their respective piles. <o:p></o:p></div>
<div class="MsoListParagraphCxSpMiddle" style="margin-left: 18.0pt; mso-add-space: auto; mso-list: l1 level1 lfo2; text-indent: -18.0pt;">
<!--[if !supportLists]--><span style="font-family: Symbol; mso-bidi-font-family: Symbol; mso-fareast-font-family: Symbol;">·<span style="font-family: 'Times New Roman'; font-size: 7pt;">
</span></span><!--[endif]-->The Action cards are split in half and each half
is put into the Greed and Love cards. <o:p></o:p></div>
<div class="MsoListParagraphCxSpMiddle" style="margin-left: 18.0pt; mso-add-space: auto; mso-list: l1 level1 lfo2; text-indent: -18.0pt;">
<!--[if !supportLists]--><span style="font-family: Symbol; mso-bidi-font-family: Symbol; mso-fareast-font-family: Symbol;">·<span style="font-family: 'Times New Roman'; font-size: 7pt;">
</span></span><!--[endif]-->Each player draws 3 trait and 2
Asset/Liabilities cards. They are then placed face-up in front of them. <o:p></o:p></div>
<div class="MsoListParagraphCxSpLast" style="margin-left: 18.0pt; mso-add-space: auto; mso-list: l1 level1 lfo2; text-indent: -18.0pt;">
<!--[if !supportLists]--><span style="font-family: Symbol; mso-bidi-font-family: Symbol; mso-fareast-font-family: Symbol;">·<span style="font-family: 'Times New Roman'; font-size: 7pt;">
</span></span><!--[endif]-->A die is then rolled to see who goes first.<o:p></o:p></div>
<div class="MsoNormal">
NOTE: Traits and Asset/Liabilities modify how many points
you get from either Greed or Love cards – be it an increase or decrease boost.
Read the card to see how your points are affected.<o:p></o:p></div>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
Play:<o:p></o:p></div>
<div class="MsoListParagraphCxSpFirst" style="margin-left: 18.0pt; mso-add-space: auto; mso-list: l0 level1 lfo1; text-indent: -18.0pt;">
<!--[if !supportLists]--><span style="font-family: Symbol; mso-bidi-font-family: Symbol; mso-fareast-font-family: Symbol;">·<span style="font-family: 'Times New Roman'; font-size: 7pt;">
</span></span><!--[endif]-->Players draw a card from the either the Greed or
Love pile and place it face-up in front of them at the beginning of the turn.<o:p></o:p></div>
<div class="MsoListParagraphCxSpMiddle" style="margin-left: 18.0pt; mso-add-space: auto; mso-list: l0 level1 lfo1; text-indent: -18.0pt;">
<!--[if !supportLists]--><span style="font-family: Symbol; mso-bidi-font-family: Symbol; mso-fareast-font-family: Symbol;">·<span style="font-family: 'Times New Roman'; font-size: 7pt;">
</span></span><!--[endif]--> There are
three kinds of possible cards: Love cards, Greed cards and Action cards. Action
cards are mixed into both piles. <o:p></o:p></div>
<div class="MsoListParagraphCxSpMiddle" style="margin-left: 18.0pt; mso-add-space: auto; mso-list: l0 level1 lfo1; text-indent: -18.0pt;">
<!--[if !supportLists]--><span style="font-family: Symbol; mso-bidi-font-family: Symbol; mso-fareast-font-family: Symbol;">·<span style="font-family: 'Times New Roman'; font-size: 7pt;">
</span></span><!--[endif]-->Players collect the points on the card they
draw, unless it’s an action card. Action cards are activated immediately on
drawing and are played towards another player.<o:p></o:p></div>
<div class="MsoListParagraphCxSpMiddle" style="margin-left: 18.0pt; mso-add-space: auto; mso-list: l0 level1 lfo1; text-indent: -18.0pt;">
<!--[if !supportLists]--><span style="font-family: Symbol; mso-bidi-font-family: Symbol; mso-fareast-font-family: Symbol;">·<span style="font-family: 'Times New Roman'; font-size: 7pt;">
</span></span><!--[endif]-->Once a player has accumulated enough Love points
(15) OR enough Greed points (10), they can go for a chance to woo their suitor.
<o:p></o:p></div>
<div class="MsoListParagraphCxSpMiddle" style="margin-left: 18.0pt; mso-add-space: auto; mso-list: l0 level1 lfo1; text-indent: -18.0pt;">
<!--[if !supportLists]--><span style="font-family: Symbol; mso-bidi-font-family: Symbol; mso-fareast-font-family: Symbol;">·<span style="font-family: 'Times New Roman'; font-size: 7pt;">
</span></span><!--[endif]-->The die is rolled to see if the woo is
successful. If a player is going for the Love win, they must roll a 3 or
higher. If the player is going for a
Greed win, they need to roll a 5 or higher. <o:p></o:p></div>
<div class="MsoListParagraphCxSpMiddle" style="margin-left: 18.0pt; mso-add-space: auto; mso-list: l0 level1 lfo1; text-indent: -18.0pt;">
<!--[if !supportLists]--><span style="font-family: Symbol; mso-bidi-font-family: Symbol; mso-fareast-font-family: Symbol;">·<span style="font-family: 'Times New Roman'; font-size: 7pt;">
</span></span><!--[endif]-->If a players woo is unsuccessful, that player
loses half the points in the mode they chose to woo with. <o:p></o:p></div>
<div class="MsoListParagraphCxSpLast" style="margin-left: 18.0pt; mso-add-space: auto; mso-list: l0 level1 lfo1; text-indent: -18.0pt;">
<!--[if !supportLists]--><span style="font-family: Symbol; mso-bidi-font-family: Symbol; mso-fareast-font-family: Symbol;">·<span style="font-family: 'Times New Roman'; font-size: 7pt;">
</span></span><!--[endif]-->Play continues until a player successfully woos
their suitor and wins their heart.<o:p></o:p><br />
<br />
A few card Examples:<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh05dynQyLw44T-v9x4YWkoVEy-m0iWxk-U8LUqMaIOSoBDMWdW-XYjab6HyGCsbjLqnV_JwjWOpiHmQCf5ZPP04JWNVflaR95IMiUTy3HPcOTnS0D1oP9DWO3_nP9_2Rp3zHICLna7Z4g/s1600/Action.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="158" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh05dynQyLw44T-v9x4YWkoVEy-m0iWxk-U8LUqMaIOSoBDMWdW-XYjab6HyGCsbjLqnV_JwjWOpiHmQCf5ZPP04JWNVflaR95IMiUTy3HPcOTnS0D1oP9DWO3_nP9_2Rp3zHICLna7Z4g/s320/Action.png" width="320" /></a></div>
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjN-joLnB8ZwfoKVqq1IJcUc9A8pwj66DsPO06m9hOEG4Bnt-5u4oDGuyrLTbDTPSkF7o9edR6BOo-pTaS1xbxp9MmgCSCnnOjmEQLeieG6mLvoNCZspz_KNgHEfHIkOWSECJmH7YSL4Vk/s1600/assets.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="158" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjN-joLnB8ZwfoKVqq1IJcUc9A8pwj66DsPO06m9hOEG4Bnt-5u4oDGuyrLTbDTPSkF7o9edR6BOo-pTaS1xbxp9MmgCSCnnOjmEQLeieG6mLvoNCZspz_KNgHEfHIkOWSECJmH7YSL4Vk/s200/assets.png" width="200" /></a></div>
<br /></div>
<div class="MsoListParagraphCxSpLast" style="margin-left: 18.0pt; mso-add-space: auto; mso-list: l0 level1 lfo1; text-indent: -18.0pt;">
<br /></div>
<div class="MsoListParagraphCxSpLast" style="margin-left: 18.0pt; mso-add-space: auto; mso-list: l0 level1 lfo1; text-indent: -18.0pt;">
What I would change:<br />
<br />
- Obviously, Jane Austen novels are not something I'm interested in or knowledgeable in. If I could base this game around an entirely different premise, I would. However I understand the reason for this constraint on the assignment and that this point may not be the most valid.<br />
<br />
- As it is right now, you can win the game with either love or money. If possible I would make a win condition which allows for combinations of both.<br />
<br />
- If I could do it again, I would make specific characters as love interests, each with their own preferences and criteria for affection. This would effectively solve the second issue I mentioned (mixed win condition).<br />
<br /></div>
James Creavallehttp://www.blogger.com/profile/04510634852858564820noreply@blogger.com1tag:blogger.com,1999:blog-8234421622735547477.post-11948893472657047072012-09-25T11:38:00.002-07:002012-10-02T13:47:56.263-07:00H.A.C.K.E.R.S: The Movie: The Game (Yet another board game, made in slightly more time.)<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjDIqbH5KZ35w709z9Ws_tKWkZo6Oy6hwj1zfwL3p2vuI5BrhzkV0sTg9A1b3ZiMrmy7gw9tKiQa4ATG0DyUtMRthphu3SeZM-yF1P-DlnT2Xwy501I3OQeU3FO-yk7wWGr2UIWsvu8Gek/s1600/hackers.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="307" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjDIqbH5KZ35w709z9Ws_tKWkZo6Oy6hwj1zfwL3p2vuI5BrhzkV0sTg9A1b3ZiMrmy7gw9tKiQa4ATG0DyUtMRthphu3SeZM-yF1P-DlnT2Xwy501I3OQeU3FO-yk7wWGr2UIWsvu8Gek/s400/hackers.png" width="400" /></a></div>
<div>
<br /></div>
<div>
<br /></div>
This week, I was tasked with making another board game. This time in a group setting, and instead of a race to the end game, the assignment was to make a territorial acquisition game. My group and I came up with H.A.C.K.E.R.S, which stands for: Having All Computer Kernels Every Real-time Second. The goal of the game is to acquire (by hacking) the largest number of computer nodes on the game board, after a set number of turns. The game plays similarly to risk, but with subtle differences in the flow of resources (bits).<br />
<div>
<br /></div>
<div>
Here are the game's rules:</div>
<div>
<br /></div>
<div>
<div align="center" class="MsoNormal" style="text-align: center;">
<b style="background-color: black; color: white; font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif; font-size: 13px; line-height: 18px; text-align: start;">RULEBOOK EXERPT</b><span style="background-color: black; color: white; font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif; font-size: 13px; line-height: 18px; text-align: start;">:</span><br />
<b style="background-color: black; color: white; font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif; font-size: 13px; line-height: 18px; text-align: start;">-----------------------------------------------------------------------------------------------------------------------------</b><br />
<br style="background-color: black; color: white; font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif; font-size: 13px; line-height: 18px; text-align: start;" />
<br />
<div class="MsoNormal" style="background-color: black; color: white; font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif; font-size: 13px; line-height: 18px; text-align: start;">
</div>
<br style="background-color: black; color: white; font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif; font-size: 13px; line-height: 18px; text-align: start;" />
<div class="MsoNormal" style="background-color: black; color: white; font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif; font-size: 13px; line-height: 18px; text-align: start;">
</div>
<br style="background-color: black; color: white; font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif; font-size: 13px; line-height: 18px; text-align: start;" />
<div align="center" class="MsoNormal" style="background-color: black; color: white; font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif; font-size: 13px; line-height: 18px;">
<b><u>H.A.C.K.E.R.S.: Having All Computer Kernels Every Realtime Second</u></b></div>
<div class="MsoNormal" style="background-color: black; color: white; font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif; font-size: 13px; line-height: 18px; text-align: start;">
Players: 2-4 players</div>
<div class="MsoNormal" style="background-color: black; color: white; font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif; font-size: 13px; line-height: 18px; text-align: start;">
<br /></div>
<div class="MsoNormal" style="background-color: black; color: white; font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif; font-size: 13px; line-height: 18px; text-align: start;">
H.A.C.K.E.R.S. is all about the war for the Cloud. Control the Cloud, control the internet. Join a Faction and out hack the enemies to control the Cloud and get one step closer to world domination! </div>
<div class="MsoNormal" style="background-color: black; color: white; font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif; font-size: 13px; line-height: 18px; text-align: start;">
<br /></div>
<div class="MsoNormal" style="background-color: black; color: white; font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif; font-size: 13px; line-height: 18px; text-align: start;">
Set-up: Each player chooses a Faction to represent in the war by choosing a colour of bead. Factions then roll to see who goes first or play Rock, Paper, Scissors. Players chose a starting node based on turn order. Each node is assigned 10 bits of power. Players then decide how many turns the game will run for. At the end of the last turn, the player with the most nodes wins.</div>
<div class="MsoNormal" style="background-color: black; color: white; font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif; font-size: 13px; line-height: 18px; text-align: start;">
<br /></div>
<div class="MsoNormal" style="background-color: black; color: white; font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif; font-size: 13px; line-height: 18px; text-align: start;">
Play: Each node runs on bits. Players accumulate bits at the beginning of each turn. Players amass bits based at a flat rate of 5 with a boost based on how many nodes they own, according to the following chart:</div>
<ul style="background-color: black; color: white; font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif; font-size: 13px; line-height: 18px; list-style-image: initial; list-style-position: initial; margin: 0.5em 0px; padding: 0px 2.5em; text-align: start;">
<li style="border: none; margin: 0px 0px 0.25em; padding: 0.25em 0px;"><span style="font-family: Symbol;">·<span style="font-family: 'Times New Roman'; font-size: 7pt; line-height: normal;"> </span></span>3 nodes = +2</li>
<li style="border: none; margin: 0px 0px 0.25em; padding: 0.25em 0px;"><span style="font-family: Symbol;">·<span style="font-family: 'Times New Roman'; font-size: 7pt; line-height: normal;"> </span></span>6 nodes = +4</li>
<li style="border: none; margin: 0px 0px 0.25em; padding: 0.25em 0px;"><span style="font-family: Symbol;">·<span style="font-family: 'Times New Roman'; font-size: 7pt; line-height: normal;"> </span></span>9 nodes = +5</li>
<li style="border: none; margin: 0px 0px 0.25em; padding: 0.25em 0px;"><span style="font-family: Symbol;">·<span style="font-family: 'Times New Roman'; font-size: 7pt; line-height: normal;"> </span></span>12 nodes = +7</li>
</ul>
<div class="MsoNormal" style="background-color: black; color: white; font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif; font-size: 13px; line-height: 18px; text-align: start;">
After capturing 12 nodes, you gain +1 for every 2 more captured nodes. The collected bits are then distributed to each node based on the players choosing. Nodes are indicated by placing the small blue beads on the node you control.</div>
<div class="MsoNormal" style="background-color: black; color: white; font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif; font-size: 13px; line-height: 18px; text-align: start;">
<br /></div>
<div class="MsoNormal" style="background-color: black; color: white; font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif; font-size: 13px; line-height: 18px; text-align: start;">
There are 3 phases per turn: Transfer, Boost and Hack. During the Transfer phase, players can transfer power to any nodes that they are connected to. When a bit is sent, it is subtracted from the current total as well, (e.g. if node A has 12 bits and sends 4, node A will have 8 bits after). <b>Players may only transfer bits once per turn. </b>Nodes can only hold 30 bits max. </div>
<div class="MsoNormal" style="background-color: black; color: white; font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif; font-size: 13px; line-height: 18px; text-align: start;">
<br /></div>
<div class="MsoNormal" style="background-color: black; color: white; font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif; font-size: 13px; line-height: 18px; text-align: start;">
In the Boost phase, players may sacrifice bits to set up <b>Firewalls</b>. Firewalls make you harder to hack during the Hacking phase and disappear on your next turn. To indicate a Firewall has been placed, select a bead colour for “Firewalls” and place it on your node. Firewalls are powered up based on the following:</div>
<ul style="background-color: black; color: white; font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif; font-size: 13px; line-height: 18px; list-style-image: initial; list-style-position: initial; margin: 0.5em 0px; padding: 0px 2.5em; text-align: start;">
<li style="border: none; margin: 0px 0px 0.25em; padding: 0.25em 0px;"><span style="font-family: Symbol;">·<span style="font-family: 'Times New Roman'; font-size: 7pt; line-height: normal;"> </span></span>Firewall Lvl 1 (costs 5 bits): protects you from 2 bits of damage</li>
<li style="border: none; margin: 0px 0px 0.25em; padding: 0.25em 0px;"><span style="font-family: Symbol;">·<span style="font-family: 'Times New Roman'; font-size: 7pt; line-height: normal;"> </span></span>Firewall Lvl 2 (costs 7 bits): protects you from 3 bits of damage</li>
<li style="border: none; margin: 0px 0px 0.25em; padding: 0.25em 0px;"><span style="font-family: Symbol;">·<span style="font-family: 'Times New Roman'; font-size: 7pt; line-height: normal;"> </span></span>Firewall Lvl 3 (costs 9 bits): protects you from 4 bits of damage</li>
<li style="border: none; margin: 0px 0px 0.25em; padding: 0.25em 0px;"><span style="font-family: Symbol;">·<span style="font-family: 'Times New Roman'; font-size: 7pt; line-height: normal;"> </span></span>Firewall Lvl 4 (costs 12 bits): protects you from 5 bits of damage</li>
</ul>
<div class="MsoNormal" style="background-color: black; color: white; font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif; font-size: 13px; line-height: 18px; text-align: start;">
During the Hacking phase, players may sacrifice bits to attack other players. When sacrificing, players must leave at least 10 bits in the node to sustain their capture of it. Players may only attack once. To attack, players select any node they are connected to. Players may then attack that node with any other nodes they own that are connected to it. The defender then decides how many bits to use to defend. If the defender uses more bits than the attacker, the difference is dealt in damage to the attacker; e.g. if the attacker sends out 10 and the defender defends with 15, the attacker loses 5 bits on their node(s).</div>
<div class="MsoNormal" style="background-color: black; color: white; font-family: Arial, Tahoma, Helvetica, FreeSans, sans-serif; font-size: 13px; line-height: 18px; text-align: start;">
<b>-----------------------------------------------------------------------------------------------------------------------------</b></div>
</div>
<div class="MsoNormal">
<br />
Things I liked about how the game turned out:<br />
<br />
Overall I am most pleased with how the game's premise ties in with the game-play. The concept of an cyberspace hacking war feels fresh and very appropriate for a territorial acquisition game. I also find the game's system to be very strategically sound and rich in the variety of plays.<br />
<br />
Things that I would change:<br />
<br />
Firewalls are currently useless as they result in a net loss of bits. In all scenarios, a player is better off keeping their bits and playing them in a standard offensive or defensive play. Also, the game board was printed with a lack of Yellow ink. The real version happens to be even uglier than the one shown above.<br />
<br /></div>
</div>
James Creavallehttp://www.blogger.com/profile/04510634852858564820noreply@blogger.com0tag:blogger.com,1999:blog-8234421622735547477.post-35934291199282620082012-09-21T12:41:00.001-07:002012-09-21T12:41:38.901-07:00Fight to the Finish: A board game made in 1 hour<div class="separator" style="clear: both; text-align: center;">
</div>
This week in game design class, I was tasked with making a prototype for a "race to the end" board game with a unique theme. Due to my fixation with fighting games, I made a board game themed around combat. Here's what I ended up with.<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiqrO-Qrqudpy1y8T4nR4rfPO2cWoGugOXf7RIWl6_SVKVIhKw9WmKOBCY5SST5K9ACd4HHq6DpVkVZX2-QcjyGm5o_XZfsA8m83oyfcxzWJTy1DQl6l4Hnb0WekFJYhhjNwd3_hdG-RrY/s1600/fightToTheFinish.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="247" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiqrO-Qrqudpy1y8T4nR4rfPO2cWoGugOXf7RIWl6_SVKVIhKw9WmKOBCY5SST5K9ACd4HHq6DpVkVZX2-QcjyGm5o_XZfsA8m83oyfcxzWJTy1DQl6l4Hnb0WekFJYhhjNwd3_hdG-RrY/s320/fightToTheFinish.png" width="320" /></a></div>
<br />
<br />
<div class="MsoNormal">
<span style="font-size: 12.0pt; line-height: 115%;">Rules:
Players must roll a (6 sided) die to advance on the game board. The number a
player rolls corresponds to the amount of squares they may move. If a player
lands on a red square, they are thrown into the ring where they must wait for
an opponent. Once there are two players in the ring, a battle will commence.<o:p></o:p></span></div>
<div class="MsoNormal">
<span style="font-size: 12.0pt; line-height: 115%;">Battle
Rules: Before the battle can begin, the players must both roll a die to
determine who is attacking and who is defending. The player who rolls the
highest number is the attacker. Once the battle has started, both players count
down (3, 2, 1, Fight!), then reveal their Actions at the same time. Each player
has 3 hit points, and the battle ends when either player’s hit points reach 0. <o:p></o:p></span></div>
<div class="MsoNormal">
<span style="font-size: 12.0pt; line-height: 115%;">Attacking
Actions:<o:p></o:p></span></div>
<div class="MsoListParagraphCxSpFirst" style="mso-list: l0 level1 lfo1; text-indent: -18.0pt;">
<!--[if !supportLists]--><span style="font-size: 12.0pt; line-height: 115%; mso-ascii-font-family: Calibri; mso-bidi-font-family: Calibri; mso-fareast-font-family: Calibri; mso-hansi-font-family: Calibri;">-<span style="font-size: 7pt; line-height: normal;">
</span></span><!--[endif]--><span style="font-size: 12.0pt; line-height: 115%;">Physical
Attack:<o:p></o:p></span></div>
<div class="MsoListParagraphCxSpMiddle" style="margin-left: 72.0pt; mso-add-space: auto; mso-list: l0 level2 lfo1; text-indent: -18.0pt;">
<!--[if !supportLists]--><span style="font-family: "Courier New"; font-size: 12.0pt; line-height: 115%; mso-fareast-font-family: "Courier New";">o<span style="font-family: 'Times New Roman'; font-size: 7pt; line-height: normal;">
</span></span><!--[endif]--><span style="font-size: 12.0pt; line-height: 115%;">Beats:
Throw Reversal (Scoring a hit)<o:p></o:p></span></div>
<div class="MsoListParagraphCxSpMiddle" style="margin-left: 72.0pt; mso-add-space: auto; mso-list: l0 level2 lfo1; text-indent: -18.0pt;">
<!--[if !supportLists]--><span style="font-family: "Courier New"; font-size: 12.0pt; line-height: 115%; mso-fareast-font-family: "Courier New";">o<span style="font-family: 'Times New Roman'; font-size: 7pt; line-height: normal;">
</span></span><!--[endif]--><span style="font-size: 12.0pt; line-height: 115%;">Loses
to: Guard (negates attack, no damage taken), Evade (avoids attack, defender
becomes attacker)<o:p></o:p></span></div>
<div class="MsoListParagraphCxSpMiddle" style="mso-list: l0 level1 lfo1; text-indent: -18.0pt;">
<!--[if !supportLists]--><span style="font-size: 12.0pt; line-height: 115%; mso-ascii-font-family: Calibri; mso-bidi-font-family: Calibri; mso-fareast-font-family: Calibri; mso-hansi-font-family: Calibri;">-<span style="font-size: 7pt; line-height: normal;">
</span></span><!--[endif]--><span style="font-size: 12.0pt; line-height: 115%;">Throw:<o:p></o:p></span></div>
<div class="MsoListParagraphCxSpMiddle" style="margin-left: 72.0pt; mso-add-space: auto; mso-list: l0 level2 lfo1; text-indent: -18.0pt;">
<!--[if !supportLists]--><span style="font-family: "Courier New"; font-size: 12.0pt; line-height: 115%; mso-fareast-font-family: "Courier New";">o<span style="font-family: 'Times New Roman'; font-size: 7pt; line-height: normal;">
</span></span><!--[endif]--><span style="font-size: 12.0pt; line-height: 115%;">Beats:
Guard (Scoring a hit), Evade (Scoring a hit)<o:p></o:p></span></div>
<div class="MsoListParagraphCxSpLast" style="margin-left: 72.0pt; mso-add-space: auto; mso-list: l0 level2 lfo1; text-indent: -18.0pt;">
<!--[if !supportLists]--><span style="font-family: "Courier New"; font-size: 12.0pt; line-height: 115%; mso-fareast-font-family: "Courier New";">o<span style="font-family: 'Times New Roman'; font-size: 7pt; line-height: normal;">
</span></span><!--[endif]--><span style="font-size: 12.0pt; line-height: 115%;">Loses
to: Throw Reversal (Defender Scores a hit)<o:p></o:p></span></div>
<div class="MsoNormal">
<span style="font-size: 12.0pt; line-height: 115%;">Defensive
Actions:<o:p></o:p></span></div>
<div class="MsoListParagraphCxSpFirst" style="mso-list: l0 level1 lfo1; text-indent: -18.0pt;">
<!--[if !supportLists]--><span style="font-size: 12.0pt; line-height: 115%; mso-ascii-font-family: Calibri; mso-bidi-font-family: Calibri; mso-fareast-font-family: Calibri; mso-hansi-font-family: Calibri;">-<span style="font-size: 7pt; line-height: normal;">
</span></span><!--[endif]--><span style="font-size: 12.0pt; line-height: 115%;">Throw
Reversal<o:p></o:p></span></div>
<div class="MsoListParagraphCxSpMiddle" style="margin-left: 72.0pt; mso-add-space: auto; mso-list: l0 level2 lfo1; text-indent: -18.0pt;">
<!--[if !supportLists]--><span style="font-family: "Courier New"; font-size: 12.0pt; line-height: 115%; mso-fareast-font-family: "Courier New";">o<span style="font-family: 'Times New Roman'; font-size: 7pt; line-height: normal;">
</span></span><!--[endif]--><span style="font-size: 12.0pt; line-height: 115%;">Beats:
Throw (Scoring a hit)<o:p></o:p></span></div>
<div class="MsoListParagraphCxSpMiddle" style="margin-left: 72.0pt; mso-add-space: auto; mso-list: l0 level2 lfo1; text-indent: -18.0pt;">
<!--[if !supportLists]--><span style="font-family: "Courier New"; font-size: 12.0pt; line-height: 115%; mso-fareast-font-family: "Courier New";">o<span style="font-family: 'Times New Roman'; font-size: 7pt; line-height: normal;">
</span></span><!--[endif]--><span style="font-size: 12.0pt; line-height: 115%;">Loses
to: Physical Attack (Attacker scores a hit)<o:p></o:p></span></div>
<div class="MsoListParagraphCxSpMiddle" style="mso-list: l0 level1 lfo1; text-indent: -18.0pt;">
<!--[if !supportLists]--><span style="font-size: 12.0pt; line-height: 115%; mso-ascii-font-family: Calibri; mso-bidi-font-family: Calibri; mso-fareast-font-family: Calibri; mso-hansi-font-family: Calibri;">-<span style="font-size: 7pt; line-height: normal;">
</span></span><!--[endif]--><span style="font-size: 12.0pt; line-height: 115%;">Guard<o:p></o:p></span></div>
<div class="MsoListParagraphCxSpMiddle" style="margin-left: 72.0pt; mso-add-space: auto; mso-list: l0 level2 lfo1; text-indent: -18.0pt;">
<!--[if !supportLists]--><span style="font-family: "Courier New"; font-size: 12.0pt; line-height: 115%; mso-fareast-font-family: "Courier New";">o<span style="font-family: 'Times New Roman'; font-size: 7pt; line-height: normal;">
</span></span><!--[endif]--><span style="font-size: 12.0pt; line-height: 115%;">Beats:
Physical Attack (Attack/Defense roles do not change)<o:p></o:p></span></div>
<div class="MsoListParagraphCxSpMiddle" style="margin-left: 72.0pt; mso-add-space: auto; mso-list: l0 level2 lfo1; text-indent: -18.0pt;">
<!--[if !supportLists]--><span style="font-family: "Courier New"; font-size: 12.0pt; line-height: 115%; mso-fareast-font-family: "Courier New";">o<span style="font-family: 'Times New Roman'; font-size: 7pt; line-height: normal;">
</span></span><!--[endif]--><span style="font-size: 12.0pt; line-height: 115%;">Loses
to: Throw (Attacker scores a hit)<o:p></o:p></span></div>
<div class="MsoListParagraphCxSpMiddle" style="mso-list: l0 level1 lfo1; text-indent: -18.0pt;">
<!--[if !supportLists]--><span style="font-size: 12.0pt; line-height: 115%; mso-ascii-font-family: Calibri; mso-bidi-font-family: Calibri; mso-fareast-font-family: Calibri; mso-hansi-font-family: Calibri;">-<span style="font-size: 7pt; line-height: normal;">
</span></span><!--[endif]--><span style="font-size: 12.0pt; line-height: 115%;">Evade<o:p></o:p></span></div>
<div class="MsoListParagraphCxSpMiddle" style="margin-left: 72.0pt; mso-add-space: auto; mso-list: l0 level2 lfo1; text-indent: -18.0pt;">
<!--[if !supportLists]--><span style="font-family: "Courier New"; font-size: 12.0pt; line-height: 115%; mso-fareast-font-family: "Courier New";">o<span style="font-family: 'Times New Roman'; font-size: 7pt; line-height: normal;">
</span></span><!--[endif]--><span style="font-size: 12.0pt; line-height: 115%;">Beats:
Physical Attack (Attack/Defense roles are switched)<o:p></o:p></span></div>
<div class="MsoListParagraphCxSpLast" style="margin-left: 72.0pt; mso-add-space: auto; mso-list: l0 level2 lfo1; text-indent: -18.0pt;">
<!--[if !supportLists]--><span style="font-family: "Courier New"; font-size: 12.0pt; line-height: 115%; mso-fareast-font-family: "Courier New";">o<span style="font-family: 'Times New Roman'; font-size: 7pt; line-height: normal;">
</span></span><!--[endif]--><span style="font-size: 12.0pt; line-height: 115%;">Loses
to: Throw (Attacker scores a hit)<o:p></o:p></span></div>
<div class="MsoNormal">
<span style="font-size: 12.0pt; line-height: 115%;">Once the
battle is over, the winner returns to their place on the game board, rolls the
die and continues to advance. If the winner scores a perfect (winning without
losing any hit points), they are awarded a buff card from the top of the pile. The
loser must stay in the ring and fight until they can defeat another player.<o:p></o:p></span></div>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
<span style="font-size: 12.0pt; line-height: 115%;">Buff Cards:<o:p></o:p></span></div>
<div class="MsoListParagraphCxSpFirst" style="mso-list: l0 level1 lfo1; text-indent: -18.0pt;">
<!--[if !supportLists]--><span style="font-size: 12.0pt; line-height: 115%; mso-ascii-font-family: Calibri; mso-bidi-font-family: Calibri; mso-fareast-font-family: Calibri; mso-hansi-font-family: Calibri;">-<span style="font-size: 7pt; line-height: normal;">
</span></span><!--[endif]--><span style="font-size: 12.0pt; line-height: 115%;">Spiked
Knuckle (Physical Attacks do 2 hits of damage), Physical Obstacles can be
broken immediately<o:p></o:p></span></div>
<div class="MsoListParagraphCxSpLast" style="mso-list: l0 level1 lfo1; text-indent: -18.0pt;">
<!--[if !supportLists]--><span style="font-size: 12.0pt; line-height: 115%; mso-ascii-font-family: Calibri; mso-bidi-font-family: Calibri; mso-fareast-font-family: Calibri; mso-hansi-font-family: Calibri;">-<span style="font-size: 7pt; line-height: normal;">
</span></span><!--[endif]--><span style="font-size: 12.0pt; line-height: 115%;">Kung
Fu Grip (Throws do 2 hits of damage), Throw Obstacles can be moved immediately<o:p></o:p></span></div>
<div class="MsoNormal">
<span style="font-size: 12.0pt; line-height: 115%;">Obstacles:<o:p></o:p></span></div>
<div class="MsoNormal">
<span style="font-size: 12.0pt; line-height: 115%;">If the
player lands on an obstacle, they must wait 3 turns before it is cleared
(assuming they have no buff cards). If the player has a buff card, they can
choose to use it to bypass the appropriate obstacle. If the player uses the
card on an obstacle, the card is forfeit and can no longer be used in battle.<o:p></o:p></span></div>
<div class="MsoNormal">
<span style="font-size: 12.0pt; line-height: 115%;"><br /></span></div>
<div class="MsoNormal">
<span style="line-height: 18px;">Things that suck and need fixing:</span></div>
<div class="MsoNormal">
<span style="line-height: 18px;"><br /></span></div>
<div class="MsoNormal">
<span style="line-height: 18px;">- Evade is always a better choice than Guard, making guard essentially useless. Originally I was going to limit the amount of times a player could use a certain attack or defensive action, however this was problematic as there are two options for attack and 3 for defense. If there were some other sort of limit to how often a move is used, guard could potentially become useful.</span></div>
<div class="MsoNormal">
<span style="line-height: 18px;"><br /></span></div>
<div class="MsoNormal">
<span style="line-height: 18px;">- The game can be very random. In one playtest, a friend of mine was able to traverse the whole game board without fighting. This was totally not cool.</span></div>
<div class="MsoNormal">
<span style="line-height: 18px;"><br /></span></div>
<div class="MsoNormal">
<span style="line-height: 18px;">- The prototype board is ugly, boring and way too small. That's probably because I made it in a half hour.</span></div>
James Creavallehttp://www.blogger.com/profile/04510634852858564820noreply@blogger.com0tag:blogger.com,1999:blog-8234421622735547477.post-20228882566016959182012-09-18T22:25:00.000-07:002012-09-28T16:34:09.886-07:00A Brief Analysis of animation in Persona 4 Arena<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhZIAc-Z1TggTu5ebET2Ced89yvS4Pa9ekQ62oPtUmPOAn-HLEUtcwtO7c3NgIl_qQe5B0WuISuSFpkq3ts1Jw2sYFYktfvNO7T0QLj5tRygWeMUeNAjTA_AO179ynRbmLzHuAsTLZOxMQ/s1600/p4a.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="180" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhZIAc-Z1TggTu5ebET2Ced89yvS4Pa9ekQ62oPtUmPOAn-HLEUtcwtO7c3NgIl_qQe5B0WuISuSFpkq3ts1Jw2sYFYktfvNO7T0QLj5tRygWeMUeNAjTA_AO179ynRbmLzHuAsTLZOxMQ/s320/p4a.jpg" width="320" /></a></div>
<div class="separator" style="clear: both; text-align: center;">
image http://bulk2.destructoid.com/ul/230750-a.jpg</div>
<br />
Arc System Works' Persona 4 Arena is a 2D Fighting game based off of the cult classic JRPG, Persona 4. The game has a gorgeous Anime art style and happens to be my latest gaming addiction. Here are some of my observations about the animation techniques used by the developers to make the game such a treat to watch.<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhhNc70XKDEUopIrqjUTYvnmyKzfvMz9qsPUnVO4WFxp0o-c7llfTTvNQTTd8OO8Pcdnnfm8tiLcV9KHT9EatYgH7G8gPHwNT72e7CK0j8fPuD_UXBWzqd8zMibf7x9ZCCgJRVprbSyuUU/s1600/p4Overview.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="225" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhhNc70XKDEUopIrqjUTYvnmyKzfvMz9qsPUnVO4WFxp0o-c7llfTTvNQTTd8OO8Pcdnnfm8tiLcV9KHT9EatYgH7G8gPHwNT72e7CK0j8fPuD_UXBWzqd8zMibf7x9ZCCgJRVprbSyuUU/s400/p4Overview.png" width="400" /></a></div>
<br />
<br />
- Overview:<br />
<br />
The game uses 2D sprites for the characters, which are placed on top of layered, 3D Rendered backgrounds. When the camera pans around the stages, objects in the foreground move more dramatically than those in the back. This gives the visuals a nice sense of parallax. The game also makes use of particle systems for dust clouds on running characters, and hit sparks during combat.<br />
<br />
- The Arcsys Sprite Process:<br />
<br />
Arc System Works is known for creating fighting games with some of the most detailed, fluid, high resolution 2D sprite work in business. In order to achieve this, the developer uses a unique process to ensure quality and timely completion.<br />
<br />
Each character is made up of around 1000 unique frames of animation. In a game with 13 characters, creating this much art is no easy task. For this reason, Arcsys uses Toshimichi Mori's trademark 3D Rotoscoping method.<br />
<br />
Step 1: Characters start as 2D concepts and each pose is drawn by hand.<br />
<br />
Step 2: A 3D model of the character is made and posed according to the concept drawings.<br />
<br />
Step 3: 2D Line-art is generated based on the 3D model. This is used as a guideline for the final sprite.<br />
<br />
Step 4: Colour, light, shadow and additional details are applied to each frame.<br />
<br />
Step 5: Each frame is converted into a dot image (the sprite itself).<br />
<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgU8Y7oL4qVhcE1thL0KW7wAUD-Xefk4Vd1rJpeQc5ZlWbs5t3e5hHYDERWpoOPq1aZbnAKYyfgNToNEo98jopRaHeVj4p3ZWnuHw2EM9EZxmGWESEhuZeocfpnQPCcIzAqDMxqLH2m2dM/s1600/tsubaki.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="185" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgU8Y7oL4qVhcE1thL0KW7wAUD-Xefk4Vd1rJpeQc5ZlWbs5t3e5hHYDERWpoOPq1aZbnAKYyfgNToNEo98jopRaHeVj4p3ZWnuHw2EM9EZxmGWESEhuZeocfpnQPCcIzAqDMxqLH2m2dM/s640/tsubaki.jpg" width="640" /></a></div>
<div class="separator" style="clear: both; text-align: center;">
<br /></div>
image: http://cdn.siliconera.com/wordpress/wp-content/uploads/2012/02/image4.jpg<br />
<br />
- Animation Style (With Respect to the 12 Principles of Animation):<br />
<br />
Persona 4 Arena's visuals exemplify all aspects of the 12 basic animation principles. The characters all have unique <b>appeal</b>, and their designs are very much rooted in <b>solid drawing </b>thanks to the use of 3D models. <b>Anticipation</b> can be seen in the characters as they prepare to jump, and their bodies <b>stretch</b> as they reach the height of their jump (this helps portray a sense of height). All attacks are very <b>exaggerated</b> and most of them follow very blatant <b>arcs. </b>Every animation contains some sort of subtle <b>secondary action</b>, for example: clothing/hair movement or changes in facial expression. Finally, heavy attacks feel weighty due to their long <b>follow-through</b>.<br />
<b><br /></b>
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg3acxXlAr6DHzPY04rQA0THqsSoQMS1xeUL8yFBMJYO8xPTuYUXaXJEMRWR0So6CtTgHZGhggu6ePcyTgUq_pUyqunQACgoN_rQBkqZ2PD4oVdylLAGfrIsQGp9uPuQY4Adlbe49t_qvg/s1600/p4arc.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="225" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg3acxXlAr6DHzPY04rQA0THqsSoQMS1xeUL8yFBMJYO8xPTuYUXaXJEMRWR0So6CtTgHZGhggu6ePcyTgUq_pUyqunQACgoN_rQBkqZ2PD4oVdylLAGfrIsQGp9uPuQY4Adlbe49t_qvg/s400/p4arc.png" width="400" /></a></div>
<b><br /></b>
<br />
-The importance and influence of good animation in a fighting game:<br />
<br />
In a fighting game, any move performed by a character can be broken up into 3 phases.<br />
<br />
- Startup: The time it takes for the move to become active.<br />
<br />
- Active Frames: The duration of the attack that is harmful to opponents.<br />
<br />
- Recovery: The time it takes the character to return to neutral after the move's active frames end.<br />
<br />
When a character is touched by an attack they enter one of two phases:<br />
<br />
- Blockstun: If the attack is blocked, the defending character is stuck in a blocking animation for a set number of frames, then returns to neutral<br />
<br />
- Hitstun: If the attack connects, the player getting hit is stuck in a recoiling animation for a set number of frames.<br />
<br />
Why is this important?<br />
<br />
Let's say character A hits character B with a heavy attack and character B blocks. If the blockstun caused by said heavy attack lasts less time than the attack's recovery, character B can punish character A for doing the unsafe attack as long as his attack is fast enough. Conversely, if character A's heavy attack causes blockstun that lasts longer than his attack's recovery, he can follow it up safely with another attack.<br />
<br />
Similarly, If character A's attack connects with character B (and is not blocked) and it causes hitstun lasting longer than the attack's recovery, character A can follow up the attack and produce a combo. A combo is a series of attacks which if performed consecutively after the first hit lands, cannot be blocked. This is a cornerstone of almost every modern fighting game and is 100% dependant on numbers of animation frames. In high level fighting game competition, this is referred to as the study of Frame Data.<br />
<br />
In competitive play, it is often best to opt for the safest (least punishable) attack unless a hit is guaranteed. A move's frame data is responsible for determining how safe or unsafe it is. In addition to damage, hitbox size, and unique properties, frame data is directly responsible for how strong any given move is and is instrumental in balancing a fighting game.<br />
<br />
All un-labeled images were captured by myself. If you'd like to see Persona 4 Arena in motion, check out one of my match videos. Warning: May contain a bit of NSFW language. This tends to happen during heated fighting game sessions.<br />
<br />
<a href="http://www.youtube.com/watch?v=DWSbwv1uFao&feature=relmfu">http://www.youtube.com/watch?v=DWSbwv1uFao&feature=relmfu</a><br />
<br />
PS: I'm the guy with the Katana.James Creavallehttp://www.blogger.com/profile/04510634852858564820noreply@blogger.com0tag:blogger.com,1999:blog-8234421622735547477.post-87426349193459426622012-09-17T10:40:00.002-07:002012-09-17T11:01:12.253-07:0030 Minute Play Report #1: Tichu<div class="separator" style="clear: both; text-align: center;">
<a href="http://russcon.org/RussCon/2004/0901tichu.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="270" src="http://russcon.org/RussCon/2004/0901tichu.png" width="320" /></a></div>
<br />
<br />
Above Image taken from: <a href="http://russcon.org/RussCon/2004/0901.html">http://russcon.org/RussCon/2004/0901.html</a><br />
<br />
Game Name: Tichu<br />
<div>
<br /></div>
<div>
Number of Players: 3,4,6, 5-12 (for Grand Seigneur)</div>
<div>
<br /></div>
<div>
Time it took to play: Tichu is a very complex game with many (sometimes convoluted) rules. The process of learning the rules took so long, that it's hard to say I even got to play. In the half hour I spent with Tichu, my friends and I were only able to play about three or four tricks.</div>
<div>
<br /></div>
<div>
Observations:</div>
<div>
<br /></div>
<div>
Likes:</div>
<div>
<br /></div>
<div>
- Tichu appears to be a very strategic game with a variety of options for the player. The sheer amount of card combinations that can be played, along with the existence of special cards (dog, dragon, phoenix), and the "bomb" mechanic give each of the player's choices a sense of risk/reward.</div>
<div>
<br /></div>
<div>
- The fact that the game can be played by anywhere from 3 to 12 players is a definite plus and makes it great for parties/social gatherings. Good luck teaching everyone how to play though.</div>
<div>
<br /></div>
<div>
- The exotic nature of the game makes it feel fresh and unique.</div>
<div>
<br /></div>
<div>
Dislikes:</div>
<div>
<br /></div>
<div>
- Unfortunately in my opinion, Tichu's greatest asset is also it's biggest downfall. While the game's depth is what makes it unique and keeps it interesting for veterans, the steep learning curve makes it very difficult for newcomers to pick up and play. Of the 30 minutes I spent with the game, I would say 15-20 were spent learning enough just to get things started.<br />
<br />
What I would do differently:<br />
<br />
- If I were in charge of making Tichu, I would have simplified the game's rules. The main ways in which I would do so, would be to decrease the number of playable card combinations, and not allow bombs to be played out of turn.<br />
<br />
Rules: (Some of these rules may only apply to 4 player Tichu, which is the only version I played)<br />
<br />
- Tichu is played with a special deck containing 56 cards. There are four suits (Jade, Sword, Pagoda, Star) which account for the 52 standard cards, and there are 4 special cards which do not belong to any particular suit (Mah Jong, Dog, Phoenix, Dragon).<br />
<br />
- The cards are divided evenly amongst the 4 players. The player with the Mah Jong card begins the first trick.<br />
<br />
- The card combinations that a player may play during a trick are similar to poker hands; Two of a kind, three of a kind, Any number of consecutive pairs (ex: 334455), Straights of at least five cards in length regardless of suit, and full houses. Finally, bombs can be used to beat any hand, and bombs can be beaten by bombs of greater value. A bomb can consist of either four of a kind or a straight flush of at least five cards. Straight flushes beat four of a kind.<br />
<br />
- When a player plays a card combination, the next player must beat it with cards of the same combination but greater value. If a player cannot play or does not wish to, he may pass. The trick ends when no one can (or chooses) to play a greater combination than the last hand played. The player of the last hand wins the trick and collects all of the cards played and converts them into points before returning them to the deck to be re-distributed.<br />
<br />
- The game is won when a team reaches a total of 1000 points. A player can call "Grand Tichu" or "Tichu" to bet that he will finish his cards first. Grand Tichu must be called before the player's final card is dealt and is a bet of 200 points. Tichu must be called before the player plays their first hand and is a bet of 100 points.</div>
<div>
<br /></div>
James Creavallehttp://www.blogger.com/profile/04510634852858564820noreply@blogger.com0tag:blogger.com,1999:blog-8234421622735547477.post-55550660884621661802012-09-07T13:04:00.002-07:002012-09-17T11:01:36.675-07:00Enter: "Vaporizer" (Current Work in Progress)<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhTstPXB6LrYD28ddD-hrANsBOy9vzpdRhhJQ0EpGgnV-Z1drwNfWv9767hhyTcwHmkAiSiJwOzcgNiaAE8ozKXwRUCFsO7ToMJ6uU_1s5T7PF6tR2lWm5nZORojlJoK1vCp3S1OWSfO7I/s1600/coolVapoScreen.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="199" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhTstPXB6LrYD28ddD-hrANsBOy9vzpdRhhJQ0EpGgnV-Z1drwNfWv9767hhyTcwHmkAiSiJwOzcgNiaAE8ozKXwRUCFsO7ToMJ6uU_1s5T7PF6tR2lWm5nZORojlJoK1vCp3S1OWSfO7I/s320/coolVapoScreen.png" width="320" /></a></div>
<br />
<div style="text-align: center;">
This is the first attempt at a game made by "Team Bropacity" and myself. The game is a side-scrolling shooter in the vein of games like Megaman and Metal Slug.</div>
<div style="text-align: center;">
<br /></div>
<div style="text-align: center;">
Feel free to try the test build below. Warning: It's probably less than 10% done and riddled with glitches. Proper death animation and game over screen coming soon (along with the rest of the game).</div>
<div style="text-align: center;">
<br /></div>
<div style="text-align: center;">
<a href="http://www.mediafire.com/?5id2xcc3f2gvmbk">http://www.mediafire.com/?5id2xcc3f2gvmbk</a></div>
James Creavallehttp://www.blogger.com/profile/04510634852858564820noreply@blogger.com0