<?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-681711956043905766</id><updated>2011-07-08T04:58:00.395-07:00</updated><title type='text'>Dreamhack Devblog</title><subtitle type='html'>http://code.google.com/p/dreamhack/</subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://dhackblog.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/681711956043905766/posts/default?max-results=100'/><link rel='alternate' type='text/html' href='http://dhackblog.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>x</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>19</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>100</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-681711956043905766.post-5332944081577830614</id><published>2010-07-05T21:43:00.001-07:00</published><updated>2010-07-05T21:43:53.542-07:00</updated><title type='text'>Please use new website.</title><content type='html'>This page is no longer updated, please refer to the following website for all future updates:&lt;br /&gt;&lt;a href="http://nosoftware.blogspot.com/"&gt;http://nosoftware.blogspot.com/&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/681711956043905766-5332944081577830614?l=dhackblog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://dhackblog.blogspot.com/feeds/5332944081577830614/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=681711956043905766&amp;postID=5332944081577830614' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/681711956043905766/posts/default/5332944081577830614'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/681711956043905766/posts/default/5332944081577830614'/><link rel='alternate' type='text/html' href='http://dhackblog.blogspot.com/2010/07/please-use-new-website.html' title='Please use new website.'/><author><name>x</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-681711956043905766.post-8936231332156425464</id><published>2009-09-23T00:19:00.000-07:00</published><updated>2009-09-23T00:22:34.495-07:00</updated><title type='text'>Insomnia</title><content type='html'>I shouldn't be up this late, but since I am, I thought I might post about the new release coming this weekend. There's a number of major improvements planned. Namely, a new user interface, and much more color. The floor is now a variety of different colors, and the walls occasionally are different colors as well. It makes the dungeons much more memorable and generally enjoyable, I think. Also, if the Windows or Linux version runs slow for you, don't worry! In the next version, that's fixed. It should run as fast as Angband. Or pretty decent, anyway. &lt;br /&gt;&lt;br /&gt;Anyway, the next release is a good one, so check back this weekend! I'm going to sleep.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/681711956043905766-8936231332156425464?l=dhackblog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/681711956043905766/posts/default/8936231332156425464'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/681711956043905766/posts/default/8936231332156425464'/><link rel='alternate' type='text/html' href='http://dhackblog.blogspot.com/2009/09/insomnia.html' title='Insomnia'/><author><name>x</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author></entry><entry><id>tag:blogger.com,1999:blog-681711956043905766.post-1967705960840586464</id><published>2009-09-21T00:12:00.000-07:00</published><updated>2009-09-21T00:13:29.107-07:00</updated><title type='text'>Dreamhack major bug fix.</title><content type='html'>I've just fixed a major speed issue in the windows port, among a number of other things. I've implemented more colors, all sorts of stuff. Will be available in the next release, due out next weekend.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/681711956043905766-1967705960840586464?l=dhackblog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/681711956043905766/posts/default/1967705960840586464'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/681711956043905766/posts/default/1967705960840586464'/><link rel='alternate' type='text/html' href='http://dhackblog.blogspot.com/2009/09/dreamhack-major-bug-fix.html' title='Dreamhack major bug fix.'/><author><name>x</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author></entry><entry><id>tag:blogger.com,1999:blog-681711956043905766.post-4457316737245618545</id><published>2009-09-19T17:04:00.000-07:00</published><updated>2009-09-19T17:07:57.290-07:00</updated><title type='text'>New Dreamhack version released!</title><content type='html'>This version is nicknamed "Pretty" because it contains a lot of visual and interface changed.&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://sites.google.com/site/nosoftwares/Screenshot2.jpg"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 640px; height: 300px;" src="http://sites.google.com/site/nosoftwares/Screenshot2.jpg" border="0" alt="" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://sites.google.com/site/nosoftwares/Screenshot1.jpg"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 640px; height: 300px;" src="http://sites.google.com/site/nosoftwares/Screenshot1.jpg" border="0" alt="" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://sites.google.com/site/nosoftwares/Screenshot3.jpg"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 640px; height: 300px;" src="http://sites.google.com/site/nosoftwares/Screenshot3.jpg" border="0" alt="" /&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/681711956043905766-4457316737245618545?l=dhackblog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/681711956043905766/posts/default/4457316737245618545'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/681711956043905766/posts/default/4457316737245618545'/><link rel='alternate' type='text/html' href='http://dhackblog.blogspot.com/2009/09/new-dreamhack-version-released.html' title='New Dreamhack version released!'/><author><name>x</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author></entry><entry><id>tag:blogger.com,1999:blog-681711956043905766.post-3638493086527906719</id><published>2009-09-15T00:44:00.001-07:00</published><updated>2009-09-16T13:34:27.354-07:00</updated><title type='text'>Screenshot.</title><content type='html'>Screenshots have been demanded:&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_RQFG6XEpBIM/Sq9GBFv1xzI/AAAAAAAAAF4/L2_pniIyNJ4/s1600-h/screenshot.jpg"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 400px; height: 248px;" src="http://3.bp.blogspot.com/_RQFG6XEpBIM/Sq9GBFv1xzI/AAAAAAAAAF4/L2_pniIyNJ4/s400/screenshot.jpg" border="0" alt=""id="BLOGGER_PHOTO_ID_5381597064267679538" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_RQFG6XEpBIM/SrFLgmXbOFI/AAAAAAAAAGA/Gor8uJm7TSY/s1600-h/screenshot1.jpg"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 400px; height: 257px;" src="http://1.bp.blogspot.com/_RQFG6XEpBIM/SrFLgmXbOFI/AAAAAAAAAGA/Gor8uJm7TSY/s400/screenshot1.jpg" border="0" alt=""id="BLOGGER_PHOTO_ID_5382166053111150674" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_RQFG6XEpBIM/SrFLljdMjUI/AAAAAAAAAGI/H2fR9EaxU2E/s1600-h/screenshot2.jpg"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 400px; height: 257px;" src="http://2.bp.blogspot.com/_RQFG6XEpBIM/SrFLljdMjUI/AAAAAAAAAGI/H2fR9EaxU2E/s400/screenshot2.jpg" border="0" alt=""id="BLOGGER_PHOTO_ID_5382166138229394754" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_RQFG6XEpBIM/SrFLqbEoh2I/AAAAAAAAAGQ/jUd1T1aLz2M/s1600-h/screenshot3.jpg"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 400px; height: 257px;" src="http://1.bp.blogspot.com/_RQFG6XEpBIM/SrFLqbEoh2I/AAAAAAAAAGQ/jUd1T1aLz2M/s400/screenshot3.jpg" border="0" alt=""id="BLOGGER_PHOTO_ID_5382166221878232930" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_RQFG6XEpBIM/SrFLxB-1uqI/AAAAAAAAAGY/dpphRRsZQhE/s1600-h/screenshot4.jpg"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 400px; height: 257px;" src="http://1.bp.blogspot.com/_RQFG6XEpBIM/SrFLxB-1uqI/AAAAAAAAAGY/dpphRRsZQhE/s400/screenshot4.jpg" border="0" alt=""id="BLOGGER_PHOTO_ID_5382166335402130082" /&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/681711956043905766-3638493086527906719?l=dhackblog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/681711956043905766/posts/default/3638493086527906719'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/681711956043905766/posts/default/3638493086527906719'/><link rel='alternate' type='text/html' href='http://dhackblog.blogspot.com/2009/09/screenshot.html' title='Screenshot.'/><author><name>x</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_RQFG6XEpBIM/Sq9GBFv1xzI/AAAAAAAAAF4/L2_pniIyNJ4/s72-c/screenshot.jpg' height='72' width='72'/></entry><entry><id>tag:blogger.com,1999:blog-681711956043905766.post-7541693649077938875</id><published>2009-09-13T20:43:00.000-07:00</published><updated>2009-09-13T20:44:25.042-07:00</updated><title type='text'>Windows binary.</title><content type='html'>I just released a windows binary and fixed some bugs. I'm now using Google's issue management system, and it is quite nice.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/681711956043905766-7541693649077938875?l=dhackblog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/681711956043905766/posts/default/7541693649077938875'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/681711956043905766/posts/default/7541693649077938875'/><link rel='alternate' type='text/html' href='http://dhackblog.blogspot.com/2009/09/windows-binary.html' title='Windows binary.'/><author><name>x</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author></entry><entry><id>tag:blogger.com,1999:blog-681711956043905766.post-9089032479253973626</id><published>2009-09-10T18:18:00.000-07:00</published><updated>2009-09-10T18:19:46.767-07:00</updated><title type='text'>New Dreamhack source version.</title><content type='html'>I just released a new version of Dreamhack in source form. It turns out you can move directories in SVN, which is much better than deleting the whole SVN and starting over. So, now there's a new version up there, and I should be releasing a windows binary sometime in the semi-near future.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/681711956043905766-9089032479253973626?l=dhackblog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/681711956043905766/posts/default/9089032479253973626'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/681711956043905766/posts/default/9089032479253973626'/><link rel='alternate' type='text/html' href='http://dhackblog.blogspot.com/2009/09/new-dreamhack-source-version.html' title='New Dreamhack source version.'/><author><name>x</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author></entry><entry><id>tag:blogger.com,1999:blog-681711956043905766.post-846088722685745306</id><published>2009-08-20T01:18:00.000-07:00</published><updated>2009-08-20T01:19:34.709-07:00</updated><title type='text'>Dreamhack progress</title><content type='html'>I've been working on Dreamhack. I completely overhauled essentially the entire engine to use C++'s amazing STL. I will never go back, I can't believe I didn't do it this way sooner. Everything is so much better now. I might have to wipe CVS, because the changes are so signifigant. But I'd like to avoid that if possible. Still, everything is different. I'm using a makefile and emacs now, and the code is incredibly simplified. More monsters and items are being added, too.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/681711956043905766-846088722685745306?l=dhackblog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/681711956043905766/posts/default/846088722685745306'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/681711956043905766/posts/default/846088722685745306'/><link rel='alternate' type='text/html' href='http://dhackblog.blogspot.com/2009/08/dreamhack-progress.html' title='Dreamhack progress'/><author><name>x</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author></entry><entry><id>tag:blogger.com,1999:blog-681711956043905766.post-2088495746338549443</id><published>2009-04-03T22:07:00.000-07:00</published><updated>2009-04-03T22:08:24.006-07:00</updated><title type='text'>No Software?</title><content type='html'>I've started a blog for all the programming I do as a whole. It's located here:&lt;br /&gt;&lt;a href="http://nosoftware.blogspot.com/"&gt;http://nosoftware.blogspot.com/&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/681711956043905766-2088495746338549443?l=dhackblog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/681711956043905766/posts/default/2088495746338549443'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/681711956043905766/posts/default/2088495746338549443'/><link rel='alternate' type='text/html' href='http://dhackblog.blogspot.com/2009/04/no-software.html' title='No Software?'/><author><name>x</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author></entry><entry><id>tag:blogger.com,1999:blog-681711956043905766.post-8929766212564223131</id><published>2009-03-20T18:50:00.001-07:00</published><updated>2009-03-20T18:51:35.335-07:00</updated><title type='text'>Backwards Gravity?</title><content type='html'>I competed in the 7DRL competition this year. Backwards Gravity was my entry, though it's quite buggy and incomplete. Get it here: &lt;a href="http://backwardsgravity.blogspot.com/"&gt;http://backwardsgravity.blogspot.com/&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/681711956043905766-8929766212564223131?l=dhackblog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/681711956043905766/posts/default/8929766212564223131'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/681711956043905766/posts/default/8929766212564223131'/><link rel='alternate' type='text/html' href='http://dhackblog.blogspot.com/2009/03/backwards-gravity.html' title='Backwards Gravity?'/><author><name>x</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author></entry><entry><id>tag:blogger.com,1999:blog-681711956043905766.post-4796780621413523256</id><published>2009-02-15T00:42:00.001-08:00</published><updated>2009-02-15T00:47:58.701-08:00</updated><title type='text'>Not much recently.</title><content type='html'>There's no new release, but vague work continues. I added a few new enemies to my own version, but very little has happened beyond that. I got pretty tired of Dreamhack's development for a while, but now I find myself a little more interested, recently.&lt;br /&gt;&lt;br /&gt;I don't like how many files Dreamhack takes up. For such a simple engine, I feel like I should be able to write the whole thing in two files. I wrote an incredibly small engine to see how small I could get something like Dreamhack. I could probably make Dreamhack that small, but there's no pressing need to rewrite Dreamhack, anyway. Except that I may start using more C++ features, like vectors.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/681711956043905766-4796780621413523256?l=dhackblog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/681711956043905766/posts/default/4796780621413523256'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/681711956043905766/posts/default/4796780621413523256'/><link rel='alternate' type='text/html' href='http://dhackblog.blogspot.com/2009/02/not-much-recently.html' title='Not much recently.'/><author><name>x</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author></entry><entry><id>tag:blogger.com,1999:blog-681711956043905766.post-8583125780229232054</id><published>2008-12-20T21:58:00.001-08:00</published><updated>2008-12-20T21:58:49.342-08:00</updated><title type='text'>Nothing new.</title><content type='html'>I could be putting in new enemies and items, but I've been stalling. I've been working on my other project, ZGCS.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/681711956043905766-8583125780229232054?l=dhackblog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/681711956043905766/posts/default/8583125780229232054'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/681711956043905766/posts/default/8583125780229232054'/><link rel='alternate' type='text/html' href='http://dhackblog.blogspot.com/2008/12/nothing-new.html' title='Nothing new.'/><author><name>x</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author></entry><entry><id>tag:blogger.com,1999:blog-681711956043905766.post-2156657812171601894</id><published>2008-11-08T13:14:00.001-08:00</published><updated>2008-11-08T13:27:39.128-08:00</updated><title type='text'>New SVN upload</title><content type='html'>This one is actually playable, but just barely. I've been working vaguely on this for a while now. I've changed enemies, weapons and armor to spawn more sanely now, and work can begin again on including new enemies and items, etc. The new functions that spawn enemies, weapons and armor require a level number, and have percentages for the various stats of the enemy or armor, etc. This means that when I create an enemy, for instance, I tell it what level the enemy is, and how it should spend it's points for that level on it's stats. So, rather than saying that a level 3 flying chair has exactly 3 points of attack, instead the level decides a base pool of points that can be spent on any ability, and I tell it what percentages should be spent where. So I would say, 50% of points get spent on attack, and 30% get spent on defense, etc.&lt;br /&gt;&lt;br /&gt;The advantage to doing this is that it allows me to scale the enemies to any level while maintaining balance. A level 1 flying chair is the same as a level 10 flying chair, except that the level 10 flying chair has more base points to spend. But it spends those points in the same percentages as the level 1 flying chair does, so the flying chairs are essentially the same except that one is considerably stronger. This allows me to easily see how enemies compare to each other, across different levels and enemies. Also, I can move one enemy into a different level by simply lowering it's level number. And I can create a high level version of any enemy simply by coping it and increasing it's level number. I've done the same with armor and weapons.&lt;br /&gt;&lt;br /&gt;Currently, it's mostly balanced. The game is a little weird right now. If taken slowly, it's incredibly easy. But it's also somewhat easy to go too fast and end up surrounded by entirely too many enemies. Some of the stats aren't balanced correctly against each other right now, either. Attack is a god stat right now, it's simply worth more than any other skill. A monster with 100% attack will beat a monster with 100% of anything else every time, except maybe max damage. That's another god stat. The weaker stats seem to be minimum damage, health and defense. It's interesting that there's any difference between the strength of attack and the strength of defense, because I designed it such that there would be none. More testing is needed, and more balance.&lt;br /&gt;&lt;br /&gt;But the game works right now, and it scales fairly well. Enemies of arbitrarily higher level seem to be about as difficult as they should be, and as the player gains strength, these enemies scale correctly to weaker enemies and so on. So, that's a major breakthrough in and of itself. I've got a basic sort of balance now, and that's the important thing. Even if it's a little broken, it's still there at all, which is awesome.&lt;br /&gt;&lt;br /&gt;Lots more work to do. I need to implement saving and loading eventually. I'm putting that off until last, so that I don't have to update the save file format a lot. I also need to put in more weapons, armor, food, etc. Not to even mention more enemies. And I need to balance the game a bit more, but still, progress is being made. Slowly.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/681711956043905766-2156657812171601894?l=dhackblog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/681711956043905766/posts/default/2156657812171601894'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/681711956043905766/posts/default/2156657812171601894'/><link rel='alternate' type='text/html' href='http://dhackblog.blogspot.com/2008/11/new-svn-upload.html' title='New SVN upload'/><author><name>x</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author></entry><entry><id>tag:blogger.com,1999:blog-681711956043905766.post-6312242454138104623</id><published>2008-10-31T02:01:00.001-07:00</published><updated>2008-10-31T02:25:21.355-07:00</updated><title type='text'>Levels, resource pools and new AI?</title><content type='html'>So, instead of having a lot of categories of enemies, I've now created an equation that describes how many "points" in their "skills" enemies will have at a certain level. This allows me to know exactly how many base "points" an enemy will have at any level. These points can be spent on things like health, attack, defense, etc. This way, at every level, I know exactly how strong all enemies of that level will be, and how strong they are compared to the player. Plus, all enemies of a certain level are automatically balanced against each other, since none of them get any more points to spend. They can be spent in different ways, but I can balance each thing they can spend their points on against the other things they can spend their points on.&lt;br /&gt;&lt;br /&gt;The end result is that for every level of monster that I make, I know have a pool of X points to spend. Some monsters, I might want to have a lot of health. So, I might spend all ten points on health. That would make the monster incredibly weak defense wise, and mostly unable to hit the player with any amount of damage. The beautiful thing is that I can create monsters of ANY level with ANY combination of "skills", and they're automatically balanced with the game because of the way the pool of points works. I'm not sure that I'm describing this well, it's late, and school was tiring today. &lt;br /&gt;&lt;br /&gt;My brother had another excellent idea yesterday. Monsters that attempt to keep a minimum or maximum distance between other monsters around them, AND the player. So, say there are three dogs and the player. Each dog tries to maintain a minimum and maximum distance with other dogs, while maintaining a certain distance from the player. This might cause the dogs to fan out around the player in a sort of circle.&lt;br /&gt;&lt;br /&gt;But there are some other fun variants, too. Dogs that usually want to move towards the most dogs near them, but occasionally move toward the player. If done right, this might cause the dogs to stick together like a blob. Normally, all dogs near each other would form into groups, and stick close to each other. But randomly, one dog would lurch toward the player. And the other dogs, wanting to maintain a closeness to that dog, might move toward the player themselves in this way. &lt;br /&gt;&lt;br /&gt;There could be dogs that maintain a distance from each other and from the player, like described before. But these dogs might also check to see how far away from the player ANY dog is. If a dog is very close to the player, it is assumed to be attacking, and the dog doesn't move toward the player. If no dog is moving toward the player, the current dog might decide to "attack" and move in on the player. The other dogs would see that this dog is closer to the player, and thus "attacking" and would not "attack" themselves. This would cause one dog to attack the player, then retreat as another dog comes in. Maybe.&lt;br /&gt;&lt;br /&gt;I say maybe each time because AI and particularly AI with random elements is a very, very tricky thing. The AI just never does quite what you want it to. Sometimes it doesn't do anything you want it to. And it's never as smart, or as good as you've imagined. It's a hard thing to get right. My current system is nice because the enemies seem so much smarter than they really are.&lt;br /&gt;&lt;br /&gt;I plan to implement this new system though, just to try it if for nothing else. It's implementation won't be trivial, but I have an idea of how to start. I'll have four variables, one for each direction the enemy might move in. The enemy loops over other things within a certain distance. The enemy has a minimum and maximum distance to other similar enemies and the player. If the player is in view, we try to maintain our distances by choosing a direction in which to move. We then add one to the variable which corresponds to the direction. We do the same for all the other similar enemies in view. That'll decide how likely the enemy is to travel in those directions. Then we randomly select which direction to go, using this likelyhood data. &lt;br /&gt;&lt;br /&gt;Of course, that's the simple version, the base implementation. It needs modification for striking the player in a pack, and for having a bias toward sticking together over moving toward the player to form a small blob-like group. It might be better to record the closest similar enemy, and to base our movement decision purely on the closest similar enemy and the player. And the likelyhood data thing could be replaced with something more specifically useful.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/681711956043905766-6312242454138104623?l=dhackblog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/681711956043905766/posts/default/6312242454138104623'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/681711956043905766/posts/default/6312242454138104623'/><link rel='alternate' type='text/html' href='http://dhackblog.blogspot.com/2008/10/levels-resource-pools-and-new-ai.html' title='Levels, resource pools and new AI?'/><author><name>x</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author></entry><entry><id>tag:blogger.com,1999:blog-681711956043905766.post-7903945903757939194</id><published>2008-10-27T13:30:00.000-07:00</published><updated>2008-10-27T13:45:49.227-07:00</updated><title type='text'>New equation for damage.</title><content type='html'>So, I had an incredibly long talk with my brother on the math of video games, which he's pretty good at to say the least. Now, I think I've fixed and balanced pretty much my whole combat system, thanks to a beautiful new equation. My combat system first rolls 1-30, if that number is over a certain amount, you hit. Otherwise, you miss. The number to roll over is defined like this:&lt;br /&gt;&lt;br /&gt;NeededToHit = 15.0 * ( 1.0 - (AttackPercent - DefensePercent) )&lt;br /&gt;&lt;br /&gt;Pretty cool, huh? Attack and defense are directly linearly balanced against each other. As attack increases, 15 approaches 0, and as defense increases, 15 approaches 30, which is essentially infinity in this case.  The really cool part is, it even works if attack and defense are above 1.0! Now, the really hard part to balance is how much attack and defense are actually worth. For instance, even if we hit only one time in four, that single hit might do enough damage to make a higher defense worthless. Each time the player hits slightly more often, he might do a lot more damage, but I'm not sure there's anything I can do about that in this equation.&lt;br /&gt;&lt;br /&gt;Anyway, it still needs some work, but I'm onto something at least.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/681711956043905766-7903945903757939194?l=dhackblog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/681711956043905766/posts/default/7903945903757939194'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/681711956043905766/posts/default/7903945903757939194'/><link rel='alternate' type='text/html' href='http://dhackblog.blogspot.com/2008/10/new-equation-for-damage.html' title='New equation for damage.'/><author><name>x</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author></entry><entry><id>tag:blogger.com,1999:blog-681711956043905766.post-4762977181161186911</id><published>2008-10-22T22:32:00.001-07:00</published><updated>2008-10-22T22:51:17.100-07:00</updated><title type='text'>Problems with enemy balance.</title><content type='html'>So, I've implemented essentially almost everything, such that the next thing I need to do is to put in different levels and categories of enemies and so on. I started by commenting out all the old enemies, and putting in ten enemies named "Enemy (1-10)". Each enemy was supposed to represent a different level of enemy, and they'd be the only things that would spawn. I even implemented it so that depending on the floor of the house you were on, harder enemies would spawn. So, on floor 1, only "Enemy 1" spawns. Except that there's a one in five chance that an "Enemy 2" will spawn.&lt;br /&gt;&lt;br /&gt;Anyway, I found out it's impressively impressively hard trying to balance a game. I don't want the player to die too quickly, but I don't want him to be invincible. And each increase in enemy strength, such as from "Enemy 1" to "Enemy 2" can't be too hard or too easy. &lt;br /&gt;&lt;br /&gt;It's almost totally impossible to balance it correctly. I alter the smallest thing, and suddenly "Enemy 1" is totally unbeatable. So then I alter it to be easier, and "Enemy 2" becomes too hard. So then I alter "Enemy 2" to be easier, but then everything is too easy. I've been playing around with the variables for over a day, and I'm still not any closer to any sort of balance. It's even harder because the player gains levels. The enemies that the player can take on at level 1 are quite different from the enemies the player can take at level 5. And then it's a skill based system. So if you dump all your points into "defense" instead of into "attack", it can make things too easy or too hard, depending on the enemies.&lt;br /&gt;&lt;br /&gt;I had no idea that balance was going to be this hard. And this isn't the hardest part. After I balance out an initial run of ten or so levels of enemies, I have to use them as a template for all the other enemies. And the other enemies all have to be individual and unique, some with more hit points, some with less.&lt;br /&gt;&lt;br /&gt;And then there's an even worse part. The dungeon is currently only thirty levels. Eventually, it's going to be much, much larger than that. There will be over 100 levels eventually. So, if I only have ten levels of enemies, that means you only encounter a new class of enemy every TEN LEVELS. Which is totally outrageous. And if I increase to twenty, that's double the balancing I'll have to do, which I'm not even done with for ten.&lt;br /&gt;&lt;br /&gt;This balance problem is incredibly frustrating. I have no idea how to proceed. As such, I'm uploading the most recent version to SVN. It isn't very playable, it should actually be pretty impossible to win. Even the food and water is a little low for survival. I updated the debugging mode to not die when the player's hit points go below 0, though. There are no enemies except "Enemy 1-10", no weapons except "Weapon 1-10" and so on.&lt;br /&gt;&lt;br /&gt;It's disappointing because before this, I was actually quite happy with how development was going. Now I'm fairly stuck. I'm not sure if I can proceed until I implement all 100+ levels of the dungeon. And I don't want to implement that many floors yet. It's too large of an area to easily debug and test. How did Nethack handle this? How did Hack? How did Rogue? Maybe I need to play them more.&lt;br /&gt;&lt;br /&gt;I have no idea how to practically playtest such a large game. I'm supposed to balance all these items, and weapons and monsters, but it's nearly impossible. I'm not sure what to do.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/681711956043905766-4762977181161186911?l=dhackblog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/681711956043905766/posts/default/4762977181161186911'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/681711956043905766/posts/default/4762977181161186911'/><link rel='alternate' type='text/html' href='http://dhackblog.blogspot.com/2008/10/problems-with-enemy-balance.html' title='Problems with enemy balance.'/><author><name>x</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author></entry><entry><id>tag:blogger.com,1999:blog-681711956043905766.post-548159356693759325</id><published>2008-10-17T21:05:00.000-07:00</published><updated>2008-10-17T21:06:46.855-07:00</updated><title type='text'>Another SVN</title><content type='html'>This one adds resting by pressing the r key, as well as leveling and experience. They're all fairly simple implementations, but they work for right now.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/681711956043905766-548159356693759325?l=dhackblog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/681711956043905766/posts/default/548159356693759325'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/681711956043905766/posts/default/548159356693759325'/><link rel='alternate' type='text/html' href='http://dhackblog.blogspot.com/2008/10/another-svn.html' title='Another SVN'/><author><name>x</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author></entry><entry><id>tag:blogger.com,1999:blog-681711956043905766.post-6957039014563067983</id><published>2008-10-17T15:02:00.001-07:00</published><updated>2008-10-17T15:17:10.384-07:00</updated><title type='text'>New SVN upload.</title><content type='html'>I've been pretty busy with school, so I haven't changed a whole lot. I added proper grouping of items, so that all the weapons are under a weapon group, and all the enemies are under an enemy group. Then I added a bit to the random dungeon generator to place specific amounts of enemies and food etc. on each level. I really love my named grouping system, actually. Except it's a little bulky, but it's really nice. &lt;br /&gt;&lt;br /&gt;Also, I changed the random dungeon generator to always start the player out in a room, alone. No more having monsters right next to the player as soon as the game begins. Then, because of my magnificent named grouping system, I spawned specific amounts of items in the player's starting room. Currently, the player starts with a random weapon, armor, four food and two water. Of course, currently the weapon and armor are selected randomly from the entire list of every weapon and armor in the game. This means the player could start with a shotgun, and a jacket, which makes getting to level 30 ridiculously easy.&lt;br /&gt;&lt;br /&gt;I love SVN for a lot of reasons, and among the top of them is that it keeps a copy of every revision I ever make. This means, even hundreds of revisions from now I can still go back and play old versions. Every version I upload to SVN is essentially permanent. But this isn't the best part. The best part is that Dreamhack relies on no data outside it's executable. And every time I upload Dreamhack to SVN, a copy of it's incredibly small executable binary is included. This means all I ever have to do to play old versions of Dreamhack is to download an old revision of this one file.&lt;br /&gt;&lt;br /&gt;Sourceforge also approved hosting for Dreamhack, and I plan on using both Source Forge's stuff and Google Code's stuff. I'm not sure which is better. Honestly, I like Google Code a lot so far. It's very clean and simple, and doesn't provide a lot of useless features or ads. But Source Forge has a lot of really awesome stuff. I can SSH into Source Forge, which I can't do with Google. And Source Forge is much more known and respected among programmers.&lt;br /&gt;&lt;br /&gt;I need to download and set up mingw under my windows emulator so that I can compile Dreamhack for Windows. I don't really WANT to, but Windows owns too much Operating System market share for me not to.&lt;br /&gt;&lt;br /&gt;For Linux, I need to come up with some kind of nice format to release everything in. I might package everything as an Ubuntu .deb, but I believe that takes absolutely forever. KDevelop has some functionality for packaging things, so I might look into whether or not I can do everything through KDevelop.&lt;br /&gt;&lt;br /&gt;I'm not sure I even need to go this far, though. Dreamhack only relies on some version of curses, and some version of the standard C libraries. I'm fairly certain that almost every linux/unix variant ever has both. So, my binary might be compatible with most installs of linux, already. If that's the case, I just need to put it in a zip file and put it up for download.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/681711956043905766-6957039014563067983?l=dhackblog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/681711956043905766/posts/default/6957039014563067983'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/681711956043905766/posts/default/6957039014563067983'/><link rel='alternate' type='text/html' href='http://dhackblog.blogspot.com/2008/10/new-svn-upload.html' title='New SVN upload.'/><author><name>x</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author></entry><entry><id>tag:blogger.com,1999:blog-681711956043905766.post-6855102874185258886</id><published>2008-10-15T22:46:00.001-07:00</published><updated>2008-10-15T23:15:36.054-07:00</updated><title type='text'>First upload to SVN... (Beta 0.1)</title><content type='html'>I've been working on Dreamhack for a while, off and on. Taken together, I've probably worked on it for about twelve days total so far. It's now getting close enough to a first release that I decided to get an actual Google Code account for it. My main motivation for getting this taken care of now instead of when I'm ready for a first release is SVN. I switch back and forth between working on Dreamhack on my laptop, and working on Dreamhack on my main computer. It's pretty annoying to have to use a flash drive every time I switch, so a version control system seemed only natural.&lt;br /&gt;&lt;br /&gt;Dreamhack is a roguelike in the style of Nethack, or at least inspired by Nethack. The whole theme of the game is that it's a dream. The player starts out in a very dreamlike house and must go up a certain number of floors to win the game. Unlike other roguelikes, Dreamhack uses abstract concepts as enemies, items and weapons. "Romanticism", "lies" and "influenza" are all enemies, among other abstract theme. The whole idea is that the game is a dream.&lt;br /&gt;&lt;br /&gt;The game is an attempt at something approaching more realistic subject matter in video games. I'm trying for a game with a bit more realism. As such, everything in the game is vaguely realistic, at least as far as dreams are concerned. So, there are all sorts of dreamlike enemies and items: birthday cakes, siblings, basic shapes, etc. But no outright fantasy or science fiction such as dragons or dwarves.&lt;br /&gt;&lt;br /&gt;I still need to implement saving and loading, as well as death. Currently the player can't die. I just got done implementing named object groups so that I can spawn things from categories. The game is actually playable and winable right now, but there's a lot that needs to be done, to say the least.&lt;br /&gt;&lt;br /&gt;To do before first release:&lt;br /&gt;- Implement player death&lt;br /&gt;- Implement leveling and confidences&lt;br /&gt;- Add leveling screen.&lt;br /&gt;- Add more objects and make existing objects unique&lt;br /&gt;- Create different categories of objects (enemies/weapons/items/etc.) and make different ranges of levels spawn different objects&lt;br /&gt;- Saving and loading by player name&lt;br /&gt;- Saving and loading by F2 and F4&lt;br /&gt;- Ask player whether or not to automatically load last save on death&lt;br /&gt;- Add the town! (I'm looking forward to this one, actually)&lt;br /&gt;- Add shop owners (I'm not looking forward to this one)&lt;br /&gt;&lt;br /&gt;And that's just the first release! I haven't even mentioned implementing proper time and speed yet, which is going to be a big one. You'll notice that there's this save by F2/F4 thing listed up there. Dreamhack isn't going to be like other roguelikes; there's no permanent death. Further, the player can save and load at any time for any reason. It's essentially like an emulator's Save State, that's what I want to implement.&lt;br /&gt;&lt;br /&gt;Confidences are skills, Dreamhack is skill based. There are no classes, nothing like that. Every time the player gains a level, he can distribute points into different confidences. Later on, some objects might give the player new confidences.&lt;br /&gt;&lt;br /&gt;Here's what in Dreamhack now:&lt;br /&gt;- 30 whole levels! 30!&lt;br /&gt;- Don't try playing it from the source, I just added groups and stacking items and nothing spawns right now except for three items. And none of them are food.&lt;br /&gt;- Speaking of which, stackable items.&lt;br /&gt;- And food, and water (You get both hungry and thirsty in Dreamhack)&lt;br /&gt;- Weapons and armor&lt;br /&gt;- Enemies, including simple AI&lt;br /&gt;- The garden and backyard&lt;br /&gt;- The basement&lt;br /&gt;- Getting, dropping, eating, using and wearing items.&lt;br /&gt;- Killing monsters, combat&lt;br /&gt;- Fairly decent random dungeon generator (Thank you Hunt and Kill!)&lt;br /&gt;- Different slots for different equipment&lt;br /&gt;- Title and player name input&lt;br /&gt;- Winning&lt;br /&gt;- Other stuff I can't remember.&lt;br /&gt;&lt;br /&gt;So, don't download it, don't play it yet, but in a while, it'll be ready.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/681711956043905766-6855102874185258886?l=dhackblog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/681711956043905766/posts/default/6855102874185258886'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/681711956043905766/posts/default/6855102874185258886'/><link rel='alternate' type='text/html' href='http://dhackblog.blogspot.com/2008/10/first-upload-to-svn-beta-01.html' title='First upload to SVN... (Beta 0.1)'/><author><name>x</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author></entry></feed>
