<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:georss='http://www.georss.org/georss'><id>tag:blogger.com,1999:blog-1489808082378105556</id><updated>2009-10-12T23:43:38.863-07:00</updated><title type='text'>Yujiao Guo's Blog - Welcome</title><subtitle type='html'></subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://yujiaoguo.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1489808082378105556/posts/default'/><link rel='alternate' type='text/html' href='http://yujiaoguo.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>Yujiao Guo</name><uri>http://www.blogger.com/profile/13419467639201463313</uri><email>yujiao_guo@hotmail.com</email></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>9</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>25</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-1489808082378105556.post-7813073174769269076</id><published>2009-02-02T16:06:00.001-08:00</published><updated>2009-02-02T16:14:39.430-08:00</updated><title type='text'>Plan for future school terms</title><content type='html'>&lt;div&gt;&lt;span class="Apple-style-span" style="font-family: Arial; font-size: 13px; white-space: pre; "&gt;&lt;a href="http://docs.google.com/Doc?docid=ddhhc6dh_16c3mzv8c6&amp;amp;hl=en"&gt;Plan for future school terms&lt;/a&gt;&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1489808082378105556-7813073174769269076?l=yujiaoguo.blogspot.com'/&gt;&lt;/div&gt;</content><link rel='related' href='http://docs.google.com/Doc?docid=ddhhc6dh_16c3mzv8c6&amp;hl=en' title='Plan for future school terms'/><link rel='replies' type='application/atom+xml' href='http://yujiaoguo.blogspot.com/feeds/7813073174769269076/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=1489808082378105556&amp;postID=7813073174769269076' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1489808082378105556/posts/default/7813073174769269076'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1489808082378105556/posts/default/7813073174769269076'/><link rel='alternate' type='text/html' href='http://yujiaoguo.blogspot.com/2009/02/plan-for-future-school-terms.html' title='Plan for future school terms'/><author><name>Yujiao Guo</name><uri>http://www.blogger.com/profile/13419467639201463313</uri><email>yujiao_guo@hotmail.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='01687087448865148486'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1489808082378105556.post-7772330625268450534</id><published>2009-01-20T16:04:00.000-08:00</published><updated>2009-01-20T16:05:33.066-08:00</updated><title type='text'>Major books and references studied and used</title><content type='html'>&lt;a href="http://docs.google.com/Doc?id=ddhhc6dh_7dmm8crcg"&gt;Major books and references studied and used&lt;/a&gt;&lt;br /&gt;&lt;a href="http://docs.google.com/Doc?id=ddhhc6dh_7dmm8crcg"&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1489808082378105556-7772330625268450534?l=yujiaoguo.blogspot.com'/&gt;&lt;/div&gt;</content><link rel='related' href='http://docs.google.com/Doc?id=ddhhc6dh_7dmm8crcg' title='Major books and references studied and used'/><link rel='replies' type='application/atom+xml' href='http://yujiaoguo.blogspot.com/feeds/7772330625268450534/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=1489808082378105556&amp;postID=7772330625268450534' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1489808082378105556/posts/default/7772330625268450534'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1489808082378105556/posts/default/7772330625268450534'/><link rel='alternate' type='text/html' href='http://yujiaoguo.blogspot.com/2009/01/major-books-and-references-studied-and_20.html' title='Major books and references studied and used'/><author><name>Yujiao Guo</name><uri>http://www.blogger.com/profile/13419467639201463313</uri><email>yujiao_guo@hotmail.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='01687087448865148486'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1489808082378105556.post-1354914144571038600</id><published>2009-01-20T10:51:00.000-08:00</published><updated>2009-01-23T14:42:39.438-08:00</updated><title type='text'>Reverse engineered the commercial game Hinterland.</title><content type='html'>&lt;a href="http://1.bp.blogspot.com/_dJkGq6KV-3Q/SXYeiY2_PVI/AAAAAAAAALc/iVu2Tu2-vGQ/s1600-h/hin.jpg"&gt;&lt;img id="BLOGGER_PHOTO_ID_5293451988158070098" style="DISPLAY: block; MARGIN: 0px auto 10px; WIDTH: 400px; CURSOR: hand; HEIGHT: 321px; TEXT-ALIGN: center" alt="" src="http://1.bp.blogspot.com/_dJkGq6KV-3Q/SXYeiY2_PVI/AAAAAAAAALc/iVu2Tu2-vGQ/s400/hin.jpg" border="0" /&gt;&lt;/a&gt; Reverse engineered the commercial game Hinterland by debugging compiled script files inside the game engine virtual machine. Duplicated 20% of the game using the original game assets.&lt;br /&gt;&lt;ul&gt;&lt;li&gt;The game installation contains all the art assets in forms of native Torque game engine format. The assets can be viewed by tools that comes with the engine and loaded and used inside the engine for your own games. The game also has all the compiled script available in the installation.&lt;/li&gt;&lt;li&gt;All the game script code are compiled by a virtual machine inside the game engine into C++ function calls and variables. Consequently, it was possible to debug the script directly inside the engine. In addition, a big portion of the compiled script contains meaningful symbols and texts that helped interpreting the original script content. &lt;/li&gt;&lt;li&gt;For example, in the Torque Game Engine, controls that contain texts are not able to resize the texts. The game Hinterland does resize the text. In order to find out how they resize text (either in the engine or in script), I debugged and guessed the contents of the script. After finding that it can not be done in script, I wrote code to transform texts correctly. The seemingly easy task turned out to be a hard problem. To support fonts on multiple platforms, the engine has very complicated text rendering system (at least 10 nested funciton calls to get to the root rendering code). &lt;/li&gt;&lt;/ul&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1489808082378105556-1354914144571038600?l=yujiaoguo.blogspot.com'/&gt;&lt;/div&gt;</content><link rel='related' href='http://www.tiltedmill.com/hinterland/' title='Reverse engineered the commercial game Hinterland.'/><link rel='replies' type='application/atom+xml' href='http://yujiaoguo.blogspot.com/feeds/1354914144571038600/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=1489808082378105556&amp;postID=1354914144571038600' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1489808082378105556/posts/default/1354914144571038600'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1489808082378105556/posts/default/1354914144571038600'/><link rel='alternate' type='text/html' href='http://yujiaoguo.blogspot.com/2009/01/reverse-engineered-commercial-game.html' title='Reverse engineered the commercial game Hinterland.'/><author><name>Yujiao Guo</name><uri>http://www.blogger.com/profile/13419467639201463313</uri><email>yujiao_guo@hotmail.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='01687087448865148486'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_dJkGq6KV-3Q/SXYeiY2_PVI/AAAAAAAAALc/iVu2Tu2-vGQ/s72-c/hin.jpg' height='72' width='72'/><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1489808082378105556.post-7272592628935058158</id><published>2009-01-10T17:39:00.000-08:00</published><updated>2009-02-13T13:11:40.855-08:00</updated><title type='text'>My Enhanced CAD Program (from Stephan Zerbst)</title><content type='html'>&lt;a href="http://4.bp.blogspot.com/_dJkGq6KV-3Q/SW07qxjN4hI/AAAAAAAAALU/tUM0uquhNvo/s1600-h/cad.jpg"&gt;&lt;img id="BLOGGER_PHOTO_ID_5290950743271793170" style="DISPLAY: block; MARGIN: 0px auto 10px; WIDTH: 400px; CURSOR: hand; HEIGHT: 320px; TEXT-ALIGN: center" alt="" src="http://4.bp.blogspot.com/_dJkGq6KV-3Q/SW07qxjN4hI/AAAAAAAAALU/tUM0uquhNvo/s400/cad.jpg" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;div&gt;&lt;ul&gt;&lt;li&gt;Converted the project from VC6 to VC2008. Fixed variable initialization errors and several memory leaks inside the graphics dynamic link library ZFXD3D.dll and rebuilt the dll. Fixed Libc.lib, Libcd.lib not found linker error.&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Fixed exception from saving and loading levels.&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Modified code that renders backfaces correctly.&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Added geometry rotation UI option in addition to the existing translation options.&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Added menu option to create more stock geometry such as sphere, ellipse, Bspline, raster images.&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Added option to create cell group element that represents a collection of geometries.&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Added a geometry element attribute called "Level". Basically a level has its own color, line width, and texture. A geometry element such as an ellipse that belongs to a particular level inherits all the attributes from the level and overrides its previous attribute. For example, if a triangle is green and it belongs to "level 32" which has a color of red, then triangle has the "level 32" color red instead of its own color.&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Enhanced view navigation. Modified translation and rotation factors so that the scene can be navigated more comfortably.&lt;/li&gt;&lt;li&gt;Added the ability for a file to recursively reference and import transformed contents from an external file. For example, file 'A' can reference and contain all the contents of file 'B', and file 'B' can in turn contain all the contents of file 'C'.&lt;/li&gt;&lt;li&gt;Added tooltip text display.&lt;/li&gt;&lt;/ul&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1489808082378105556-7272592628935058158?l=yujiaoguo.blogspot.com'/&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://yujiaoguo.blogspot.com/feeds/7272592628935058158/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=1489808082378105556&amp;postID=7272592628935058158' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1489808082378105556/posts/default/7272592628935058158'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1489808082378105556/posts/default/7272592628935058158'/><link rel='alternate' type='text/html' href='http://yujiaoguo.blogspot.com/2009/01/my-enhanced-cad-program.html' title='My Enhanced CAD Program (from Stephan Zerbst)'/><author><name>Yujiao Guo</name><uri>http://www.blogger.com/profile/13419467639201463313</uri><email>yujiao_guo@hotmail.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='01687087448865148486'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_dJkGq6KV-3Q/SW07qxjN4hI/AAAAAAAAALU/tUM0uquhNvo/s72-c/cad.jpg' height='72' width='72'/><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1489808082378105556.post-6035954325171485275</id><published>2008-05-04T12:48:00.000-07:00</published><updated>2009-01-28T19:52:51.955-08:00</updated><title type='text'>Maze Runner</title><content type='html'>&lt;div align="center"&gt;&lt;a href="http://2.bp.blogspot.com/_dJkGq6KV-3Q/SB4TRHQVwDI/AAAAAAAAAHY/QCzpq9J3umw/s1600-h/maze+runner.jpg"&gt;&lt;img id="BLOGGER_PHOTO_ID_5196612204758417458" style="DISPLAY: block; MARGIN: 0px auto 10px; CURSOR: hand; TEXT-ALIGN: center" alt="" src="http://2.bp.blogspot.com/_dJkGq6KV-3Q/SB4TRHQVwDI/AAAAAAAAAHY/QCzpq9J3umw/s400/maze+runner.jpg" border="0" /&gt;&lt;/a&gt; demo from Game Programmers Guide To Torque&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;div align="left"&gt;Added an additional level to the game&lt;/div&gt;&lt;/li&gt;&lt;li&gt;&lt;div align="left"&gt;Modified behaviours of level structures such as canon, &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_0"&gt;teleporter&lt;/span&gt;, &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_1"&gt;fadeblock&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;&lt;li&gt;&lt;div align="left"&gt;Added thunders and other similar &lt;span class="blsp-spelling-corrected" id="SPELLING_ERROR_2"&gt;features&lt;/span&gt; offered by the Torque Game Engine&lt;/div&gt;&lt;/li&gt;&lt;li&gt;&lt;div align="left"&gt;Fixed incorrectly rendered &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_3"&gt;UI&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1489808082378105556-6035954325171485275?l=yujiaoguo.blogspot.com'/&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://yujiaoguo.blogspot.com/feeds/6035954325171485275/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=1489808082378105556&amp;postID=6035954325171485275' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1489808082378105556/posts/default/6035954325171485275'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1489808082378105556/posts/default/6035954325171485275'/><link rel='alternate' type='text/html' href='http://yujiaoguo.blogspot.com/2008/05/maze-runner.html' title='Maze Runner'/><author><name>Yujiao Guo</name><uri>http://www.blogger.com/profile/13419467639201463313</uri><email>yujiao_guo@hotmail.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='01687087448865148486'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_dJkGq6KV-3Q/SB4TRHQVwDI/AAAAAAAAAHY/QCzpq9J3umw/s72-c/maze+runner.jpg' height='72' width='72'/><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1489808082378105556.post-3719256715326113537</id><published>2008-05-03T12:26:00.000-07:00</published><updated>2009-02-02T16:01:43.337-08:00</updated><title type='text'>Jackal Born Inc - Zombie Party Project</title><content type='html'>&lt;p align="center"&gt;&lt;a href="http://docs.google.com/Doc?id=ddhhc6dh_6drgjbg7b"&gt;Link to part of my modification of the source code.&lt;/a&gt;&lt;/p&gt;&lt;p align="center"&gt;&lt;a href="http://4.bp.blogspot.com/_dJkGq6KV-3Q/SBy8xHQVwCI/AAAAAAAAAHQ/8pKyIf6y_2g/s1600-h/MMO.jpg"&gt;&lt;img id="BLOGGER_PHOTO_ID_5196235622025904162" style="DISPLAY: block; MARGIN: 0px auto 10px; CURSOR: hand; TEXT-ALIGN: center" alt="" src="http://4.bp.blogspot.com/_dJkGq6KV-3Q/SBy8xHQVwCI/AAAAAAAAAHQ/8pKyIf6y_2g/s400/MMO.jpg" border="0" /&gt;&lt;/a&gt;a MMO addon of the Torque Game Engine provided at MMOworkshop&lt;/p&gt;&lt;ul&gt;&lt;li&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;The "Massive Multiplayer &lt;/span&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;Online (MMO&lt;/span&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;)" game add-on &lt;/span&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;is a Python &lt;/span&gt;&lt;span class="blsp-spelling-corrected" id="SPELLING_ERROR_7"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;extension&lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt; to the C++ Torque Game Engine. It was used to make the popular MMO g&lt;/span&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;ame "Minions of Mirth", and the source code was released later for public benefit.&lt;/span&gt;&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Added Python code that enables automatic addition of spells depending on type of weapon equipped &lt;a:skillpowerwield&gt;&lt;a:spell%s&gt;&lt;/a:spell%s&gt;&lt;/a:skillpowerwield&gt;&lt;/li&gt;&lt;li&gt;Implemented a battle event system. There can be several opposing factions, each guided by a mob leader. First you have to kill random roaming wolfs around the land and obtain some wolf meat. After you hand in the meat to a NPC, you will be able to activate a battle event. Once the battle starts, several factions will meet each other and start fighting. You, the avatar, belongs to a faction (You gain reward points for a faction by killing the enemy of that faction). If your faction wins in the battle, you will be able to talk to the &lt;span class="Apple-style-span"  style="font-size:small;"&gt;battle leader and obtain prizes.&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt; I scripted, in Python, the above battle system, and added C++ code to the Engine and glue-code in Python in cases where more functionality on the scripting side was desired.&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;Before starting to work on the project. &lt;/span&gt;&lt;span class="Apple-style-span" style="line-height: 19px; "&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;I devoted 3 month of time on learning the source code of the mod-kit, which includes Apache for server, &lt;/span&gt;&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_7"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;SVN for patch update&lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;, and python packages such as &lt;/span&gt;&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_8"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;Sqlobject (Python implementation of SQLight)&lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt; for database, &lt;/span&gt;&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_9"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;WXPython&lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt; for Windows user interface, Twisted Python for networking. Other packages involved are Win32&lt;/span&gt;&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_10" style=""&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;OpenSSL&lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt; for security and &lt;/span&gt;&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_11" style=""&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;Pycrpto&lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt; for cryptography.&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;/ul&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1489808082378105556-3719256715326113537?l=yujiaoguo.blogspot.com'/&gt;&lt;/div&gt;</content><link rel='related' href='http://docs.google.com/Doc?id=ddhhc6dh_6drgjbg7b' title='Jackal Born Inc - Zombie Party Project'/><link rel='replies' type='application/atom+xml' href='http://yujiaoguo.blogspot.com/feeds/3719256715326113537/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=1489808082378105556&amp;postID=3719256715326113537' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1489808082378105556/posts/default/3719256715326113537'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1489808082378105556/posts/default/3719256715326113537'/><link rel='alternate' type='text/html' href='http://yujiaoguo.blogspot.com/2008/05/jackal-born-inc-zombie-party-project.html' title='Jackal Born Inc - Zombie Party Project'/><author><name>Yujiao Guo</name><uri>http://www.blogger.com/profile/13419467639201463313</uri><email>yujiao_guo@hotmail.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='01687087448865148486'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_dJkGq6KV-3Q/SBy8xHQVwCI/AAAAAAAAAHQ/8pKyIf6y_2g/s72-c/MMO.jpg' height='72' width='72'/><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1489808082378105556.post-40073232501917851</id><published>2008-05-03T11:20:00.000-07:00</published><updated>2009-01-23T14:30:55.564-08:00</updated><title type='text'>Beafjack Inc - Halo project</title><content type='html'>&lt;div align="center"&gt;&lt;a href="http://3.bp.blogspot.com/_dJkGq6KV-3Q/SByu53QVv2I/AAAAAAAAAFw/CIaojVWUiHg/s1600-h/I+got+nailed.jpg"&gt;&lt;img id="BLOGGER_PHOTO_ID_5196220379186970466" style="DISPLAY: block; MARGIN: 0px auto 10px; CURSOR: hand; TEXT-ALIGN: center" alt="" src="http://3.bp.blogspot.com/_dJkGq6KV-3Q/SByu53QVv2I/AAAAAAAAAFw/CIaojVWUiHg/s400/I+got+nailed.jpg" border="0" /&gt;&lt;/a&gt; "I got nailed!" &lt;/div&gt;&lt;ul&gt;&lt;li&gt;&lt;div align="left"&gt;Added AI: The bots chase the avatar at certain distance, then start shooting when closer. When the avatar is out of sight, the bots stop and go back to patrolling and scanning for enemies. This was implemented by a simple finite state machine. In addition, I added markers that are connected into a network. Then I implemented Dijkstra's algorithm to find the shortest path from one marker to another. &lt;/div&gt;&lt;/li&gt;&lt;li&gt;&lt;div align="left"&gt;&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_0"&gt;Added &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_0"&gt;UI&lt;/span&gt;&lt;/span&gt;: Added timers, and counters indicating enemy and &lt;span class="blsp-spelling-corrected" id="SPELLING_ERROR_1"&gt;teammate&lt;/span&gt; numbers. Also added a progress bar similar to the teabag bar found in the game Halo.&lt;/div&gt;&lt;/li&gt;&lt;li&gt;&lt;div align="left"&gt;Added advancing of levels.&lt;/div&gt;&lt;/li&gt;&lt;/ul&gt;&lt;div align="left"&gt;&lt;/div&gt;&lt;div align="left"&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1489808082378105556-40073232501917851?l=yujiaoguo.blogspot.com'/&gt;&lt;/div&gt;</content><link rel='related' href='http://cid-dfdc608937c4e998.spaces.live.com/blog/cns!DFDC608937C4E998!245.entry' title='Beafjack Inc - Halo project'/><link rel='replies' type='application/atom+xml' href='http://yujiaoguo.blogspot.com/feeds/40073232501917851/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=1489808082378105556&amp;postID=40073232501917851' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1489808082378105556/posts/default/40073232501917851'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1489808082378105556/posts/default/40073232501917851'/><link rel='alternate' type='text/html' href='http://yujiaoguo.blogspot.com/2008/05/my-resume-please-click-and-visit.html' title='Beafjack Inc - Halo project'/><author><name>Yujiao Guo</name><uri>http://www.blogger.com/profile/13419467639201463313</uri><email>yujiao_guo@hotmail.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='01687087448865148486'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_dJkGq6KV-3Q/SByu53QVv2I/AAAAAAAAAFw/CIaojVWUiHg/s72-c/I+got+nailed.jpg' height='72' width='72'/><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1489808082378105556.post-1920463372104307754</id><published>2008-02-08T12:07:00.001-08:00</published><updated>2009-01-28T18:42:23.785-08:00</updated><title type='text'>My 3D game Project using Torque Engine</title><content type='html'>&lt;div align="center"&gt;&lt;a href="http://1.bp.blogspot.com/_dJkGq6KV-3Q/SBywvXQVv4I/AAAAAAAAAGA/LCAxc70ruNk/s1600-h/loot.jpg"&gt;&lt;img id="BLOGGER_PHOTO_ID_5196222397821599618" style="DISPLAY: block; MARGIN: 0px auto 10px; CURSOR: hand; TEXT-ALIGN: center" alt="" src="http://1.bp.blogspot.com/_dJkGq6KV-3Q/SBywvXQVv4I/AAAAAAAAAGA/LCAxc70ruNk/s400/loot.jpg" border="0" /&gt;&lt;/a&gt; "Dam! I can't wait to try my new gear out!" &lt;/div&gt;&lt;ul&gt;&lt;li&gt;&lt;div align="left"&gt;Added weapon mounting system, loot distribution system, damage system and several modes of camera.&lt;/div&gt;&lt;/li&gt;&lt;li&gt;&lt;div align="left"&gt;Modified the engine C++ code and added features, which added more flexibility on the scripting side. &lt;/div&gt;&lt;/li&gt;&lt;li&gt;&lt;div align="left"&gt;For example, I inherited some object base class in the engine, and then &lt;span class="blsp-spelling-corrected" id="SPELLING_ERROR_0"&gt;overrode&lt;/span&gt; virtual functions on networking in order for the client to communicate to the server about camera movement updates. &lt;/div&gt;&lt;/li&gt;&lt;li&gt;&lt;div align="left"&gt;To get the damage system work well, I added a Weapon class that contains information about combo attacks. Each part of a combo attack has different damage and effective range.  Every weapon is represented by a vector. To know that your weapon hit an object, I did an intersection query with the scene graph containment system on the vecter.&lt;/div&gt;&lt;/li&gt;&lt;/ul&gt;&lt;p align="left"&gt; &lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1489808082378105556-1920463372104307754?l=yujiaoguo.blogspot.com'/&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://yujiaoguo.blogspot.com/feeds/1920463372104307754/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=1489808082378105556&amp;postID=1920463372104307754' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1489808082378105556/posts/default/1920463372104307754'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1489808082378105556/posts/default/1920463372104307754'/><link rel='alternate' type='text/html' href='http://yujiaoguo.blogspot.com/2008/02/my-3d-game-project-using-torque-engine.html' title='My 3D game Project using Torque Engine'/><author><name>Yujiao Guo</name><uri>http://www.blogger.com/profile/13419467639201463313</uri><email>yujiao_guo@hotmail.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='01687087448865148486'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_dJkGq6KV-3Q/SBywvXQVv4I/AAAAAAAAAGA/LCAxc70ruNk/s72-c/loot.jpg' height='72' width='72'/><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1489808082378105556.post-3433769538035018407</id><published>2007-11-03T12:18:00.001-07:00</published><updated>2009-01-11T15:55:32.377-08:00</updated><title type='text'>My 2d game Project</title><content type='html'>&lt;div align="left"&gt;&lt;strong&gt;&lt;a href="http://cid-dfdc608937c4e998.skydrive.live.com/self.aspx/Public/SpriteDemoSuperMod.rar"&gt;&lt;span style="color:#cc33cc;"&gt;Download the source code&lt;/span&gt;&lt;/a&gt;&lt;/strong&gt;&lt;/div&gt;&lt;div align="center"&gt;&lt;/div&gt;&lt;div align="center"&gt;&lt;a href="http://3.bp.blogspot.com/_dJkGq6KV-3Q/SBy5H3QVwBI/AAAAAAAAAHI/3lsU1qeEvVA/s1600-h/Map+Editor+II.jpg"&gt;&lt;img id="BLOGGER_PHOTO_ID_5196231614821416978" style="DISPLAY: block; MARGIN: 0px auto 10px; CURSOR: hand; TEXT-ALIGN: center" alt="" src="http://3.bp.blogspot.com/_dJkGq6KV-3Q/SBy5H3QVwBI/AAAAAAAAAHI/3lsU1qeEvVA/s400/Map+Editor+II.jpg" border="0" /&gt;&lt;/a&gt; Map Editor I&lt;/div&gt;&lt;div align="center"&gt;&lt;br /&gt;&lt;a href="http://1.bp.blogspot.com/_dJkGq6KV-3Q/SBy44XQVwAI/AAAAAAAAAHA/DipaLAz3eJI/s1600-h/Map+Editor+I.jpg"&gt;&lt;img id="BLOGGER_PHOTO_ID_5196231348533444610" style="DISPLAY: block; MARGIN: 0px auto 10px; CURSOR: hand; TEXT-ALIGN: center" alt="" src="http://1.bp.blogspot.com/_dJkGq6KV-3Q/SBy44XQVwAI/AAAAAAAAAHA/DipaLAz3eJI/s400/Map+Editor+I.jpg" border="0" /&gt;&lt;/a&gt; Map Editor II&lt;br /&gt;&lt;br /&gt;&lt;div align="center"&gt;&lt;a href="http://3.bp.blogspot.com/_dJkGq6KV-3Q/SBy4u3QVv_I/AAAAAAAAAG4/slxwxOL36GM/s1600-h/Map+Tiling.jpg"&gt;&lt;img id="BLOGGER_PHOTO_ID_5196231185324687346" style="DISPLAY: block; MARGIN: 0px auto 10px; CURSOR: hand; TEXT-ALIGN: center" alt="" src="http://3.bp.blogspot.com/_dJkGq6KV-3Q/SBy4u3QVv_I/AAAAAAAAAG4/slxwxOL36GM/s400/Map+Tiling.jpg" border="0" /&gt;&lt;/a&gt; Map Tiling&lt;br /&gt;&lt;br /&gt;&lt;div align="center"&gt;&lt;a href="http://2.bp.blogspot.com/_dJkGq6KV-3Q/SBy4hnQVv-I/AAAAAAAAAGw/pFlRyKPt1BE/s1600-h/Radar+Enemy+Detected.jpg"&gt;&lt;img id="BLOGGER_PHOTO_ID_5196230957691420642" style="DISPLAY: block; MARGIN: 0px auto 10px; CURSOR: hand; TEXT-ALIGN: center" alt="" src="http://2.bp.blogspot.com/_dJkGq6KV-3Q/SBy4hnQVv-I/AAAAAAAAAGw/pFlRyKPt1BE/s400/Radar+Enemy+Detected.jpg" border="0" /&gt;&lt;/a&gt; Radar Detected Enemies&lt;br /&gt;&lt;br /&gt;&lt;div align="center"&gt;&lt;a href="http://4.bp.blogspot.com/_dJkGq6KV-3Q/SBy3eHQVv9I/AAAAAAAAAGo/hvFrromBlo8/s1600-h/Game+Over.jpg"&gt;&lt;img id="BLOGGER_PHOTO_ID_5196229798050250706" style="DISPLAY: block; MARGIN: 0px auto 10px; CURSOR: hand; TEXT-ALIGN: center" alt="" src="http://4.bp.blogspot.com/_dJkGq6KV-3Q/SBy3eHQVv9I/AAAAAAAAAGo/hvFrromBlo8/s400/Game+Over.jpg" border="0" /&gt;&lt;/a&gt;Game Over&lt;br /&gt;&lt;br /&gt;&lt;a href="http://3.bp.blogspot.com/_dJkGq6KV-3Q/SBy3T3QVv8I/AAAAAAAAAGg/qM-PyhyIgnA/s1600-h/Battle+in+Progress.jpg"&gt;&lt;img id="BLOGGER_PHOTO_ID_5196229621956591554" style="DISPLAY: block; MARGIN: 0px auto 10px; CURSOR: hand; TEXT-ALIGN: center" alt="" src="http://3.bp.blogspot.com/_dJkGq6KV-3Q/SBy3T3QVv8I/AAAAAAAAAGg/qM-PyhyIgnA/s400/Battle+in+Progress.jpg" border="0" /&gt;&lt;/a&gt;Battle in Progress&lt;br /&gt;&lt;/div&gt;&lt;div align="left"&gt;&lt;/div&gt;&lt;div align="left"&gt;&lt;/div&gt;&lt;div align="left"&gt;Features:&lt;/div&gt;&lt;div align="center"&gt;&lt;div align="left"&gt;&lt;ul&gt;&lt;li&gt;&lt;div align="left"&gt;2D Map Editor. Click Edit Map option in the main &lt;span class="blsp-spelling-corrected" id="SPELLING_ERROR_0"&gt;menu&lt;/span&gt;, make a custom map using preloaded or your own images of &lt;span class="blsp-spelling-corrected" id="SPELLING_ERROR_1"&gt;dimensions&lt;/span&gt;: 128*128 and 256*256, and go back to the main &lt;span class="blsp-spelling-corrected" id="SPELLING_ERROR_2"&gt;menu&lt;/span&gt;, press Start and you can play your own custom made map!&lt;/div&gt;&lt;/li&gt;&lt;li&gt;&lt;div align="left"&gt;Animation - explosion&lt;/div&gt;&lt;/li&gt;&lt;li&gt;&lt;div align="left"&gt;Elastic and &lt;span class="blsp-spelling-corrected" id="SPELLING_ERROR_3"&gt;inelastic&lt;/span&gt; collision&lt;/div&gt;&lt;/li&gt;&lt;li&gt;&lt;div align="left"&gt;Music and Sound using Microsoft Cross-Platform Audio Creation Tool &lt;/div&gt;&lt;/li&gt;&lt;li&gt;&lt;div align="left"&gt;Debugging console&lt;/div&gt;&lt;/li&gt;&lt;li&gt;&lt;div align="left"&gt;Built in support for both Unicode and &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_4"&gt;Multibyte&lt;/span&gt; format&lt;/div&gt;&lt;/li&gt;&lt;li&gt;&lt;div align="left"&gt;In game radar that detects and reports enemy location and number visually.&lt;/div&gt;&lt;/li&gt;&lt;li&gt;&lt;div align="left"&gt;On-demand display of tiles to support large world map.&lt;/div&gt;&lt;/li&gt;&lt;li&gt;&lt;div align="left"&gt;Simple shadows for enemies and the avatar to increase realism.&lt;/div&gt;&lt;/li&gt;&lt;li&gt;&lt;div align="left"&gt;Using the map editor to add collision with the terrain. &lt;/div&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/div&gt;&lt;p align="left"&gt;To do list:&lt;br /&gt;&lt;/p&gt;&lt;div align="left"&gt;&lt;ul&gt;&lt;li&gt;&lt;div align="left"&gt;Option to render the game with either &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_5"&gt;DirectX&lt;/span&gt; or &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_6"&gt;OpenGL&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;&lt;li&gt;&lt;div align="left"&gt;Advanced AI. &lt;/div&gt;&lt;/li&gt;&lt;li&gt;&lt;div align="left"&gt;Ability to save and load using object serialization. &lt;/div&gt;&lt;/li&gt;&lt;li&gt;&lt;div align="left"&gt;Add music and sound in the map editor interface using a timeline indicator. &lt;/div&gt;&lt;/li&gt;&lt;li&gt;&lt;div align="left"&gt;Add in game enemies using the map editor.&lt;/div&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1489808082378105556-3433769538035018407?l=yujiaoguo.blogspot.com'/&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://yujiaoguo.blogspot.com/feeds/3433769538035018407/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=1489808082378105556&amp;postID=3433769538035018407' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1489808082378105556/posts/default/3433769538035018407'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1489808082378105556/posts/default/3433769538035018407'/><link rel='alternate' type='text/html' href='http://yujiaoguo.blogspot.com/2007/11/my-2d-game-project.html' title='My 2d game Project'/><author><name>Yujiao Guo</name><uri>http://www.blogger.com/profile/13419467639201463313</uri><email>yujiao_guo@hotmail.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='01687087448865148486'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_dJkGq6KV-3Q/SBy5H3QVwBI/AAAAAAAAAHI/3lsU1qeEvVA/s72-c/Map+Editor+II.jpg' height='72' width='72'/><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>3</thr:total></entry></feed>