<?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' xmlns:gd='http://schemas.google.com/g/2005' xmlns:thr='http://purl.org/syndication/thread/1.0'><id>tag:blogger.com,1999:blog-8769746087018799732</id><updated>2011-08-17T02:03:21.565+02:00</updated><category term='pixelart'/><category term='steering'/><category term='realm'/><category term='formations'/><category term='roguelike'/><category term='ai'/><category term='python'/><category term='c++'/><category term='3d'/><category term='2d'/><title type='text'>Orchaldir's Dev Blog</title><subtitle type='html'></subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://orchaldir.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8769746087018799732/posts/default?max-results=100'/><link rel='alternate' type='text/html' href='http://orchaldir.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>Orchaldir</name><uri>http://www.blogger.com/profile/08351184341832587508</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/_LsNFm6r1F_M/ScNDtYLCRSI/AAAAAAAAAAM/n8opaD2MgnQ/s1600-R/003ce1d0e21054fd66a70faf5dab90b8%3Fs%3D80'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>6</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>100</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-8769746087018799732.post-6635617233010974333</id><published>2010-11-18T18:30:00.004+01:00</published><updated>2010-11-18T18:45:48.373+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='python'/><category scheme='http://www.blogger.com/atom/ns#' term='2d'/><category scheme='http://www.blogger.com/atom/ns#' term='roguelike'/><title type='text'>Pyro Update</title><content type='html'>&lt;p&gt;Some days ago I found working code of Pyro! Today I uploaded it to GitHub. Here is the link to the source code:&lt;/p&gt;&lt;p&gt;&lt;a href="https://github.com/Orchaldir/Pyro"&gt;https://github.com/Orchaldir/Pyro&lt;/a&gt;&lt;/p&gt;&lt;p&gt;And a screenshoot :&lt;/p&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_LsNFm6r1F_M/TOVlVH7KLEI/AAAAAAAAAFY/KAGUvO26EGM/s1600/new%2Bpyro.png"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 400px; height: 331px;" src="http://2.bp.blogspot.com/_LsNFm6r1F_M/TOVlVH7KLEI/AAAAAAAAAFY/KAGUvO26EGM/s400/new%2Bpyro.png" border="0" alt="" id="BLOGGER_PHOTO_ID_5540946330128100418" /&gt;&lt;/a&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8769746087018799732-6635617233010974333?l=orchaldir.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://orchaldir.blogspot.com/feeds/6635617233010974333/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://orchaldir.blogspot.com/2010/11/pyro-update.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8769746087018799732/posts/default/6635617233010974333'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8769746087018799732/posts/default/6635617233010974333'/><link rel='alternate' type='text/html' href='http://orchaldir.blogspot.com/2010/11/pyro-update.html' title='Pyro Update'/><author><name>Orchaldir</name><uri>http://www.blogger.com/profile/08351184341832587508</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/_LsNFm6r1F_M/ScNDtYLCRSI/AAAAAAAAAAM/n8opaD2MgnQ/s1600-R/003ce1d0e21054fd66a70faf5dab90b8%3Fs%3D80'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_LsNFm6r1F_M/TOVlVH7KLEI/AAAAAAAAAFY/KAGUvO26EGM/s72-c/new%2Bpyro.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8769746087018799732.post-6743758313993677932</id><published>2009-06-15T22:18:00.012+02:00</published><updated>2009-06-15T23:09:01.970+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='c++'/><category scheme='http://www.blogger.com/atom/ns#' term='2d'/><category scheme='http://www.blogger.com/atom/ns#' term='realm'/><title type='text'>Realm Building Prototype</title><content type='html'>Another project is a prototype of a realm building game like Civilization or Total War. The prototype concentrates on the map editor.&lt;p&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_LsNFm6r1F_M/Sjas6VLg9RI/AAAAAAAAAD8/hfaueKEGfdw/s1600-h/07.png"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 400px; height: 300px;" src="http://2.bp.blogspot.com/_LsNFm6r1F_M/Sjas6VLg9RI/AAAAAAAAAD8/hfaueKEGfdw/s400/07.png" border="0" alt="" id="BLOGGER_PHOTO_ID_5347651725666874642" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;I choose hexmaps, because I like the way they look and I already used square maps with the roguelikes.&lt;/p&gt;&lt;p&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_LsNFm6r1F_M/Sjas6ICPTiI/AAAAAAAAAD0/BKcvcmpdekg/s1600-h/4.png"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 400px; height: 300px;" src="http://4.bp.blogspot.com/_LsNFm6r1F_M/Sjas6ICPTiI/AAAAAAAAAD0/BKcvcmpdekg/s400/4.png" border="0" alt="" id="BLOGGER_PHOTO_ID_5347651722138308130" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;Features of the prototype:&lt;/p&gt;&lt;ul&gt;&lt;li&gt;paint terrain types&lt;/li&gt;&lt;li&gt;place roads and cities&lt;/li&gt;&lt;li&gt;define realms(red border)&lt;/li&gt;&lt;li&gt;rotat- and zoomable 3d camera&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;Lessons learned:&lt;/p&gt;&lt;ul&gt;&lt;li&gt;don't use 3d cameras for 2d maps&lt;/li&gt;&lt;li&gt;hexmaps are great for realm maps&lt;/li&gt;&lt;/ul&gt;&lt;p align="center"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 400px; height: 300px;" src="http://1.bp.blogspot.com/_LsNFm6r1F_M/Sja14VnnfEI/AAAAAAAAAEM/wDnCR1m98DY/s400/08.png" border="0" alt="" id="BLOGGER_PHOTO_ID_5347661587029654594" /&gt;Another map style.&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8769746087018799732-6743758313993677932?l=orchaldir.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://orchaldir.blogspot.com/feeds/6743758313993677932/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://orchaldir.blogspot.com/2009/06/realm-building-prototype.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8769746087018799732/posts/default/6743758313993677932'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8769746087018799732/posts/default/6743758313993677932'/><link rel='alternate' type='text/html' href='http://orchaldir.blogspot.com/2009/06/realm-building-prototype.html' title='Realm Building Prototype'/><author><name>Orchaldir</name><uri>http://www.blogger.com/profile/08351184341832587508</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/_LsNFm6r1F_M/ScNDtYLCRSI/AAAAAAAAAAM/n8opaD2MgnQ/s1600-R/003ce1d0e21054fd66a70faf5dab90b8%3Fs%3D80'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_LsNFm6r1F_M/Sjas6VLg9RI/AAAAAAAAAD8/hfaueKEGfdw/s72-c/07.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8769746087018799732.post-3729014734535667716</id><published>2009-03-31T10:55:00.004+02:00</published><updated>2009-03-31T11:20:19.892+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='c++'/><category scheme='http://www.blogger.com/atom/ns#' term='3d'/><category scheme='http://www.blogger.com/atom/ns#' term='formations'/><title type='text'>More on Formations!</title><content type='html'>I rewrote the Circle pattern to make more sense as a battle formation. One line of soldiers isn't very effective. I also added orientation so that all soldiers face outwards:&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_LsNFm6r1F_M/SdHcIO9KYyI/AAAAAAAAADU/gDYbspLDvG0/s1600-h/sphere_orientation.png"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 400px; height: 300px;" src="http://2.bp.blogspot.com/_LsNFm6r1F_M/SdHcIO9KYyI/AAAAAAAAADU/gDYbspLDvG0/s400/sphere_orientation.png" alt="" id="BLOGGER_PHOTO_ID_5319274668912960290" border="0" /&gt;&lt;/a&gt;New feature: Every soldier can die and leave an empty slot.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_LsNFm6r1F_M/SdHcInhqNBI/AAAAAAAAADc/aQEOCjKN7KQ/s1600-h/free_slots0.png"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 400px; height: 300px;" src="http://4.bp.blogspot.com/_LsNFm6r1F_M/SdHcInhqNBI/AAAAAAAAADc/aQEOCjKN7KQ/s400/free_slots0.png" alt="" id="BLOGGER_PHOTO_ID_5319274675508491282" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;The next step was the ability to move forward and fill the hole.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_LsNFm6r1F_M/SdHcI2l6uMI/AAAAAAAAADk/hRfW9mrNPpU/s1600-h/free_slots1.png"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 400px; height: 300px;" src="http://1.bp.blogspot.com/_LsNFm6r1F_M/SdHcI2l6uMI/AAAAAAAAADk/hRfW9mrNPpU/s400/free_slots1.png" alt="" id="BLOGGER_PHOTO_ID_5319274679552882882" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_LsNFm6r1F_M/SdHcJY03aSI/AAAAAAAAADs/qlo6fIIKB6M/s1600-h/free_slots2.png"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 400px; height: 300px;" src="http://4.bp.blogspot.com/_LsNFm6r1F_M/SdHcJY03aSI/AAAAAAAAADs/qlo6fIIKB6M/s400/free_slots2.png" alt="" id="BLOGGER_PHOTO_ID_5319274688742385954" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;At the moment I am playing with different patterns and which slots can replace which slots and in what order.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8769746087018799732-3729014734535667716?l=orchaldir.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://orchaldir.blogspot.com/feeds/3729014734535667716/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://orchaldir.blogspot.com/2009/03/more-on-formations.html#comment-form' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8769746087018799732/posts/default/3729014734535667716'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8769746087018799732/posts/default/3729014734535667716'/><link rel='alternate' type='text/html' href='http://orchaldir.blogspot.com/2009/03/more-on-formations.html' title='More on Formations!'/><author><name>Orchaldir</name><uri>http://www.blogger.com/profile/08351184341832587508</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/_LsNFm6r1F_M/ScNDtYLCRSI/AAAAAAAAAAM/n8opaD2MgnQ/s1600-R/003ce1d0e21054fd66a70faf5dab90b8%3Fs%3D80'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_LsNFm6r1F_M/SdHcIO9KYyI/AAAAAAAAADU/gDYbspLDvG0/s72-c/sphere_orientation.png' height='72' width='72'/><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8769746087018799732.post-4157614422418856774</id><published>2009-03-28T11:00:00.002+01:00</published><updated>2009-03-28T15:44:20.118+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='steering'/><category scheme='http://www.blogger.com/atom/ns#' term='c++'/><category scheme='http://www.blogger.com/atom/ns#' term='ai'/><category scheme='http://www.blogger.com/atom/ns#' term='3d'/><category scheme='http://www.blogger.com/atom/ns#' term='formations'/><title type='text'>Formations</title><content type='html'>One of my current projects is a prototype about steering, formations and pathfinding. Well, at the moment it is a prototype about steering and formations.&lt;br /&gt;&lt;br /&gt;The goal is to have realtime battles like Total War, but thats the far future.&lt;br /&gt;&lt;br /&gt;The current features are:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;change type of formation&lt;/li&gt;&lt;li&gt;move formation&lt;/li&gt;&lt;li&gt;rotate formation&lt;/li&gt;&lt;li&gt;dynamically add and remove characters&lt;/li&gt;&lt;/ul&gt;&lt;span style="font-weight: bold;"&gt;How does it work:&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;The formation calculates the target position and orientation for each character and the characters try to reach it with their steering behaviors.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Patterns:&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;They define the shape of the formation. I currently have:&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_LsNFm6r1F_M/Sc38gVu8xsI/AAAAAAAAACs/CYUpq_snB_I/s1600-h/1.png"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 400px; height: 300px;" src="http://1.bp.blogspot.com/_LsNFm6r1F_M/Sc38gVu8xsI/AAAAAAAAACs/CYUpq_snB_I/s400/1.png" alt="" id="BLOGGER_PHOTO_ID_5318184367514502850" border="0" /&gt;&lt;/a&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_LsNFm6r1F_M/Sc39-VrR9hI/AAAAAAAAAC0/dERcqXjv5lc/s1600-h/formation_triangle.png"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 400px; height: 300px;" src="http://2.bp.blogspot.com/_LsNFm6r1F_M/Sc39-VrR9hI/AAAAAAAAAC0/dERcqXjv5lc/s400/formation_triangle.png" alt="" id="BLOGGER_PHOTO_ID_5318185982406817298" border="0" /&gt;&lt;/a&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_LsNFm6r1F_M/Sc3_Q-RB3OI/AAAAAAAAAC8/L4HbzFWTDC4/s1600-h/formation_box.png"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 400px; height: 300px;" src="http://4.bp.blogspot.com/_LsNFm6r1F_M/Sc3_Q-RB3OI/AAAAAAAAAC8/L4HbzFWTDC4/s400/formation_box.png" alt="" id="BLOGGER_PHOTO_ID_5318187402051837154" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Steering behaviors:&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;If you want to know more about them, look &lt;a href="http://www.red3d.com/cwr/steer"&gt;here&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;At the moment I only use &lt;a href="http://www.red3d.com/cwr/steer/Arrival.html"&gt;Arrival&lt;/a&gt;, but I will soon implement &lt;a href="http://www.red3d.com/cwr/steer/Obstacle.html"&gt;Obstacle Avoidance&lt;/a&gt; and others.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Results:&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;In the first image I changed the pattern from a box to a circle and in the second I rotated a box.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_LsNFm6r1F_M/Sc4EfLDgnQI/AAAAAAAAADM/grQuELqqnRg/s1600-h/change_formation.png"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 400px; height: 300px;" src="http://1.bp.blogspot.com/_LsNFm6r1F_M/Sc4EfLDgnQI/AAAAAAAAADM/grQuELqqnRg/s400/change_formation.png" alt="" id="BLOGGER_PHOTO_ID_5318193143561100546" border="0" /&gt;&lt;/a&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_LsNFm6r1F_M/Sc4Eew_F4vI/AAAAAAAAADE/kK2rppMgspY/s1600-h/rotate_box.png"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 400px; height: 300px;" src="http://1.bp.blogspot.com/_LsNFm6r1F_M/Sc4Eew_F4vI/AAAAAAAAADE/kK2rppMgspY/s400/rotate_box.png" alt="" id="BLOGGER_PHOTO_ID_5318193136563249906" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;The white dots are the target positions.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.red3d.com/cwr/steer/Obstacle.html"&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8769746087018799732-4157614422418856774?l=orchaldir.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://orchaldir.blogspot.com/feeds/4157614422418856774/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://orchaldir.blogspot.com/2009/03/formations.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8769746087018799732/posts/default/4157614422418856774'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8769746087018799732/posts/default/4157614422418856774'/><link rel='alternate' type='text/html' href='http://orchaldir.blogspot.com/2009/03/formations.html' title='Formations'/><author><name>Orchaldir</name><uri>http://www.blogger.com/profile/08351184341832587508</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/_LsNFm6r1F_M/ScNDtYLCRSI/AAAAAAAAAAM/n8opaD2MgnQ/s1600-R/003ce1d0e21054fd66a70faf5dab90b8%3Fs%3D80'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_LsNFm6r1F_M/Sc38gVu8xsI/AAAAAAAAACs/CYUpq_snB_I/s72-c/1.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8769746087018799732.post-7197477172631730240</id><published>2009-03-21T10:51:00.001+01:00</published><updated>2009-06-15T23:11:17.337+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='ai'/><category scheme='http://www.blogger.com/atom/ns#' term='pixelart'/><category scheme='http://www.blogger.com/atom/ns#' term='python'/><category scheme='http://www.blogger.com/atom/ns#' term='2d'/><category scheme='http://www.blogger.com/atom/ns#' term='roguelike'/><title type='text'>Pyro(Python Roguelike)</title><content type='html'>This time I will talk about one of my old projects. It was a roguelike written in Python.&lt;br /&gt;&lt;br /&gt;&lt;div style="text-align: center;"&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_LsNFm6r1F_M/ScNTDgWstPI/AAAAAAAAAA4/2VXFh8XDcRs/s400/03.png"&gt;&lt;img style="cursor: pointer; width: 400px; height: 400px;" src="http://4.bp.blogspot.com/_LsNFm6r1F_M/ScNTDgWstPI/AAAAAAAAAA4/2VXFh8XDcRs/s400/03.png" alt="" border="0" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;Here are some of the features:&lt;br /&gt;&lt;br /&gt;&lt;div style="text-align: left;"&gt;&lt;span style="font-weight: bold;font-size:100%;"&gt;2D pixelart&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;I always wanted to make a roguelike with images instead of characters, but where to take the art from? Buy? A friend?&lt;br /&gt;&lt;br /&gt;In the end I decided to make it myself. I really liked the art style of &lt;a href="http://www.squidi.net/three/"&gt;Three Hundred Mechanics&lt;/a&gt; and started copying it. It was great fun and soon I started drawing completely new creatures.&lt;br /&gt;&lt;br /&gt;Here are some examples:&lt;br /&gt;&lt;span style="font-weight: bold;font-size:100%;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;div style="text-align: left;"&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_LsNFm6r1F_M/ScS9x_hUW1I/AAAAAAAAABc/2a7lqHx7xlg/s1600-h/minotaur.png"&gt;&lt;img style="cursor: pointer; width: 75px; height: 75px;" src="http://2.bp.blogspot.com/_LsNFm6r1F_M/ScS9x_hUW1I/AAAAAAAAABc/2a7lqHx7xlg/s400/minotaur.png" alt="" id="BLOGGER_PHOTO_ID_5315582126766447442" border="0" /&gt;&lt;/a&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_LsNFm6r1F_M/ScS93fh3EmI/AAAAAAAAABk/rIoEx83gvlo/s1600-h/demon.png"&gt;&lt;img style="cursor: pointer; width: 75px; height: 75px;" src="http://3.bp.blogspot.com/_LsNFm6r1F_M/ScS93fh3EmI/AAAAAAAAABk/rIoEx83gvlo/s400/demon.png" alt="" id="BLOGGER_PHOTO_ID_5315582221258003042" border="0" /&gt;&lt;/a&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_LsNFm6r1F_M/ScS986HEeaI/AAAAAAAAABs/hQML4hsBhI8/s1600-h/skeleton.png"&gt;&lt;img style="cursor: pointer; width: 75px; height: 75px;" src="http://2.bp.blogspot.com/_LsNFm6r1F_M/ScS986HEeaI/AAAAAAAAABs/hQML4hsBhI8/s400/skeleton.png" alt="" id="BLOGGER_PHOTO_ID_5315582314292738466" border="0" /&gt;&lt;/a&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_LsNFm6r1F_M/ScS-FUriY7I/AAAAAAAAAB0/iZ_TRWwIsrY/s1600-h/fey.png"&gt;&lt;img style="cursor: pointer; width: 75px; height: 75px;" src="http://2.bp.blogspot.com/_LsNFm6r1F_M/ScS-FUriY7I/AAAAAAAAAB0/iZ_TRWwIsrY/s400/fey.png" alt="" id="BLOGGER_PHOTO_ID_5315582458863969202" border="0" /&gt;&lt;/a&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_LsNFm6r1F_M/ScS-exnZlaI/AAAAAAAAAB8/GJm95eTk0fk/s1600-h/bones.png"&gt;&lt;img style="cursor: pointer; width: 75px; height: 75px;" src="http://3.bp.blogspot.com/_LsNFm6r1F_M/ScS-exnZlaI/AAAAAAAAAB8/GJm95eTk0fk/s400/bones.png" alt="" id="BLOGGER_PHOTO_ID_5315582896127972770" border="0" /&gt;&lt;/a&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_LsNFm6r1F_M/ScS-nFtkdSI/AAAAAAAAACE/wVOafjoqyQ8/s1600-h/hero.png"&gt;&lt;img style="cursor: pointer; width: 75px; height: 75px;" src="http://3.bp.blogspot.com/_LsNFm6r1F_M/ScS-nFtkdSI/AAAAAAAAACE/wVOafjoqyQ8/s400/hero.png" alt="" id="BLOGGER_PHOTO_ID_5315583038961513762" border="0" /&gt;&lt;/a&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_LsNFm6r1F_M/ScS-rFnZNCI/AAAAAAAAACM/r7XQC1ivKJE/s1600-h/paladin.png"&gt;&lt;img style="cursor: pointer; width: 75px; height: 75px;" src="http://4.bp.blogspot.com/_LsNFm6r1F_M/ScS-rFnZNCI/AAAAAAAAACM/r7XQC1ivKJE/s400/paladin.png" alt="" id="BLOGGER_PHOTO_ID_5315583107655087138" border="0" /&gt;&lt;/a&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_LsNFm6r1F_M/ScS-zvZQCHI/AAAAAAAAACU/uoUvMsFganY/s1600-h/lich.png"&gt;&lt;img style="cursor: pointer; width: 75px; height: 75px;" src="http://1.bp.blogspot.com/_LsNFm6r1F_M/ScS-zvZQCHI/AAAAAAAAACU/uoUvMsFganY/s400/lich.png" alt="" id="BLOGGER_PHOTO_ID_5315583256309008498" border="0" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;/div&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;single tile, multiple tiles and snake bodies&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;It was possible to have huge creatures(giants, dragons, ...) with a body of 2*2, 3*3 or even bigger bodies.&lt;br /&gt;&lt;ul&gt;&lt;li&gt;They couldn't use smaller corridors.&lt;/li&gt;&lt;li&gt;They had more adjacent cells.&lt;/li&gt;&lt;/ul&gt;&lt;div style="text-align: center;"&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_LsNFm6r1F_M/ScTHlyHQrbI/AAAAAAAAACk/U3DZueAmMso/s1600-h/02.png"&gt;&lt;img style="cursor: pointer; width: 400px; height: 399px;" src="http://2.bp.blogspot.com/_LsNFm6r1F_M/ScTHlyHQrbI/AAAAAAAAACk/U3DZueAmMso/s400/02.png" alt="" id="BLOGGER_PHOTO_ID_5315592912125341106" border="0" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;Snakes had one head tile and many body tiles. Think of the old snake games.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;behavior trees&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Behavior trees are a great way of building your ai out of reusable building blocks.&lt;br /&gt;&lt;br /&gt;I had behaviors for attack, flee, patrol, wander and investigate.&lt;br /&gt;&lt;br /&gt;Villager: wander or flee&lt;br /&gt;Skeleton: attack&lt;br /&gt;Guard: patrol, investigate or attack&lt;br /&gt;&lt;br /&gt;They always pick the behavior with the highest priority: Villagers normally wander around, but if skeletons are near they flee.&lt;br /&gt;&lt;br /&gt;If you want to know more about behavior trees, go to &lt;a href="http://aigamedev.com/"&gt;http://aigamedev.com&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;sensory system&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Different creatures had different ways of sensing the world.&lt;br /&gt;&lt;br /&gt;Seeing: distance, occlusion&lt;br /&gt;Hearing: distance&lt;br /&gt;Sense Life: distance&lt;br /&gt;&lt;br /&gt;Villager and guard: Seeing and Hearing&lt;br /&gt;Skeleton: Sense Life&lt;br /&gt;&lt;br /&gt;I even had a wall type, where you could see through, but nor move through(the yellow wall):&lt;br /&gt;&lt;br /&gt;&lt;div style="text-align: center;"&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_LsNFm6r1F_M/ScTG1b2-qAI/AAAAAAAAACc/5bdM0hGuZ3w/s1600-h/01.png"&gt;&lt;img style="cursor: pointer; width: 400px; height: 309px;" src="http://2.bp.blogspot.com/_LsNFm6r1F_M/ScTG1b2-qAI/AAAAAAAAACc/5bdM0hGuZ3w/s400/01.png" alt="" id="BLOGGER_PHOTO_ID_5315592081517750274" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;I am really sorry that, I can't give more or newer screenshoots or even a playable game, but I don't have a functioning version anymore. I lost the newest version and now even my backups don't work. I don't know why, but hopefully it will run someday again!&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;&lt;br /&gt;Lesson Learned:&lt;/span&gt; I now use git, a version control system.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8769746087018799732-7197477172631730240?l=orchaldir.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://orchaldir.blogspot.com/feeds/7197477172631730240/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://orchaldir.blogspot.com/2009/03/pyropython-roguelike.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8769746087018799732/posts/default/7197477172631730240'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8769746087018799732/posts/default/7197477172631730240'/><link rel='alternate' type='text/html' href='http://orchaldir.blogspot.com/2009/03/pyropython-roguelike.html' title='Pyro(Python Roguelike)'/><author><name>Orchaldir</name><uri>http://www.blogger.com/profile/08351184341832587508</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/_LsNFm6r1F_M/ScNDtYLCRSI/AAAAAAAAAAM/n8opaD2MgnQ/s1600-R/003ce1d0e21054fd66a70faf5dab90b8%3Fs%3D80'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_LsNFm6r1F_M/ScNTDgWstPI/AAAAAAAAAA4/2VXFh8XDcRs/s72-c/03.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8769746087018799732.post-2789971691891621764</id><published>2009-03-20T09:04:00.000+01:00</published><updated>2009-03-20T09:32:34.779+01:00</updated><title type='text'>Welcome!</title><content type='html'>In this blog I will talk about my past, current and future projects. Here is a list of topics I am interested in:&lt;br /&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;3d graphic&lt;/li&gt;&lt;li&gt;AI(A*, planner, behavior trees, ...)&lt;/li&gt;&lt;li&gt;procedural generation(plants, buildings, cities, terrain, ...)&lt;/li&gt;&lt;li&gt;rpgs and roguelikes&lt;/li&gt;&lt;li&gt;turn-based strategy games&lt;/li&gt;&lt;li&gt;many more &lt;/li&gt;&lt;/ul&gt;Time for some screenshots:&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_LsNFm6r1F_M/ScNTDgWstPI/AAAAAAAAAA4/2VXFh8XDcRs/s1600-h/03.png"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 400px; height: 400px;" src="http://4.bp.blogspot.com/_LsNFm6r1F_M/ScNTDgWstPI/AAAAAAAAAA4/2VXFh8XDcRs/s400/03.png" alt="" id="BLOGGER_PHOTO_ID_5315183304917169394" border="0" /&gt;&lt;/a&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_LsNFm6r1F_M/ScNUC0FB1DI/AAAAAAAAABE/gjUBGLu9UWo/s1600-h/10.png"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 400px; height: 300px;" src="http://2.bp.blogspot.com/_LsNFm6r1F_M/ScNUC0FB1DI/AAAAAAAAABE/gjUBGLu9UWo/s400/10.png" alt="" id="BLOGGER_PHOTO_ID_5315184392543523890" border="0" /&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8769746087018799732-2789971691891621764?l=orchaldir.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://orchaldir.blogspot.com/feeds/2789971691891621764/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://orchaldir.blogspot.com/2009/03/welcome_20.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8769746087018799732/posts/default/2789971691891621764'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8769746087018799732/posts/default/2789971691891621764'/><link rel='alternate' type='text/html' href='http://orchaldir.blogspot.com/2009/03/welcome_20.html' title='Welcome!'/><author><name>Orchaldir</name><uri>http://www.blogger.com/profile/08351184341832587508</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/_LsNFm6r1F_M/ScNDtYLCRSI/AAAAAAAAAAM/n8opaD2MgnQ/s1600-R/003ce1d0e21054fd66a70faf5dab90b8%3Fs%3D80'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_LsNFm6r1F_M/ScNTDgWstPI/AAAAAAAAAA4/2VXFh8XDcRs/s72-c/03.png' height='72' width='72'/><thr:total>0</thr:total></entry></feed>
