<?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-20475392</id><updated>2011-04-21T22:37:51.202+02:00</updated><title type='text'>Quest, the roguelike game</title><subtitle type='html'>This is the development diary of the roguelike game Quest: a quite simple game written in Python, mainly for learning purposes.</subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://questrl.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/20475392/posts/default?max-results=100'/><link rel='alternate' type='text/html' href='http://questrl.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>Pedro</name><uri>http://www.blogger.com/profile/09275011261609169623</uri><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-20475392.post-113795805038952374</id><published>2006-01-22T20:26:00.000+01:00</published><updated>2006-01-22T20:27:30.400+01:00</updated><title type='text'>Still here...</title><content type='html'>I haven't posted for a couple of days, because I've been totally unable to work on the game. Real life can be absorbing! I &lt;span style="font-style: italic;"&gt;hope&lt;/span&gt; that this week will be less frantic, and I'll be able to report some progress soon...&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/20475392-113795805038952374?l=questrl.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://questrl.blogspot.com/feeds/113795805038952374/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=20475392&amp;postID=113795805038952374' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/20475392/posts/default/113795805038952374'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/20475392/posts/default/113795805038952374'/><link rel='alternate' type='text/html' href='http://questrl.blogspot.com/2006/01/still-here.html' title='Still here...'/><author><name>Pedro</name><uri>http://www.blogger.com/profile/09275011261609169623</uri><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>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-20475392.post-113760955457192743</id><published>2006-01-18T19:35:00.000+01:00</published><updated>2006-01-18T19:39:14.586+01:00</updated><title type='text'>Weapons</title><content type='html'>Ok, I haven't had much time to do anything this week - crazy week at work. Still, a couple of features have gone in these last few days:&lt;br /&gt;&lt;br /&gt;&lt;ul&gt;   &lt;li&gt;&lt;span style="font-weight: bold;"&gt;Melee weapons&lt;/span&gt; are in. Now, when you wield one (held in one hand) it adds to the combat value. Watch out for monsters finding them around next version!&lt;/li&gt;   &lt;li&gt;&lt;span style="font-weight: bold;"&gt;Module information&lt;/span&gt;: when choosing a module, the screen shows information about the highlighted module, so the player can decide better wether to try it or not.&lt;/li&gt;   &lt;li&gt;&lt;span style="font-weight: bold;"&gt;Health/Mana regeneration&lt;/span&gt; now happens sometimes. Before, they never increased, but now a player can heal and rest with enough time.&lt;/li&gt; &lt;/ul&gt; If I have time, this week I'd like to also add a new ability - &lt;span style="font-style: italic;"&gt;Lockpicking&lt;/span&gt;, so it's possible to lock/unlock doors without the key, and also make monsters able to use &lt;span style="font-style: italic;"&gt;Minor Healing, Tracking &lt;/span&gt;and&lt;span style="font-style: italic;"&gt; Lockpicking &lt;/span&gt;like players do. This will probably entail heavy rewriting of the AI module.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/20475392-113760955457192743?l=questrl.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://questrl.blogspot.com/feeds/113760955457192743/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=20475392&amp;postID=113760955457192743' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/20475392/posts/default/113760955457192743'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/20475392/posts/default/113760955457192743'/><link rel='alternate' type='text/html' href='http://questrl.blogspot.com/2006/01/weapons.html' title='Weapons'/><author><name>Pedro</name><uri>http://www.blogger.com/profile/09275011261609169623</uri><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-20475392.post-113734781633092057</id><published>2006-01-15T18:49:00.000+01:00</published><updated>2006-01-15T19:02:00.126+01:00</updated><title type='text'>Version 0.1.2 released</title><content type='html'>Well, in the end I &lt;span style="font-style: italic;"&gt;did&lt;/span&gt; have time to polish it out before the weekend was over. The bugs have been solved, and I'm very happy I made it in time, since next week will be crazy and I doubt I'll be able to work on Quest at all.&lt;br /&gt;&lt;br /&gt;The changelog for this version:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Interface:&lt;/span&gt;&lt;ul&gt; &lt;li&gt;The message window now makes messages dim as they get pushed back.&lt;/li&gt;&lt;li&gt;The message window now holds seven messages instead of five.&lt;/li&gt;&lt;li&gt;It is now possible to quit during the game by closing the main window (if necesary, the game will be saved).&lt;/li&gt;&lt;li&gt;When the user enters a string, it is highlighted yellow and stored in the message buffer after it's entered.&lt;/li&gt;&lt;li&gt;Whenever possible (with items/beings), choice lists now show the symbol and color of each element, next to the choice (i.e, "+ ~ a torch" instead of "+ a torch").&lt;/li&gt;&lt;li&gt;The information window (which shows long text such as descriptions) now has word-wrapping.&lt;/li&gt;&lt;li&gt;The key to save and quit in the main game is now "s", to avoid hitting it by accident when using ESC to get out of menus&lt;/li&gt; &lt;/ul&gt; &lt;span style="font-weight: bold;"&gt;Engine:&lt;/span&gt; &lt;div class="section"&gt;&lt;ul&gt;&lt;li&gt;The requisites to load a module are now handled by a special file, modulename.req. This way, to check the requirements only this file has to be loaded instead of the whole module, making startup time much faster.&lt;/li&gt;&lt;li&gt;Since getting Field-Of-View (FOV) is processor intensive, now the game uses caching. It will cache the FOVs of the level for later use.&lt;/li&gt;&lt;li&gt;Monsters now have a primitive memory: if they remember something very interesting, they will try to reach the place where they saw it last, instead of going for something they can see that is less interesting. This makes them able to chase the player quite well.&lt;/li&gt;&lt;li&gt;Each tile now has a "track" reference, to the last being that passed through it, the direction they left, and the "strength" of the track, which fades with time. This track can be checked with a new ability (see Content changes), and will eventually allow monsters to track the player.&lt;/li&gt;&lt;/ul&gt;&lt;/div&gt; &lt;div class="section"&gt;&lt;h4&gt;Content:&lt;/h4&gt;&lt;ul&gt;&lt;li&gt;There are now two kinds of maps: Underground maps (dark everywhere) and Overground maps (lit everywhere).&lt;/li&gt;&lt;li&gt;Modules now have requirements of minimum/maximum fame to join, which are set in the editor.&lt;/li&gt;&lt;/ul&gt;&lt;/div&gt; &lt;div class="section"&gt;&lt;h4 style="font-weight: bold;"&gt;Bugfixes&lt;/h4&gt;&lt;ul&gt;&lt;li&gt;When the display gets a string, it now accepts backspace to delete characters (duh!).&lt;/li&gt;&lt;li&gt;Portals now check that a being is standing on them before they let the being cross the Portal.&lt;/li&gt;&lt;li&gt;Light sources now behave properly when doors are open/shut.&lt;/li&gt;&lt;li&gt;Walls can now only be seen when you're on the right side of them, if they're lit by a light source.&lt;/li&gt;&lt;/ul&gt;&lt;/div&gt; Unfortunately, there are not many screenshots that could show the changes properly, since they aren't really visible, but here is a main game screenshot:&lt;br /&gt;&lt;h4&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://photos1.blogger.com/blogger/7870/2051/1600/scr_quests.0.jpg"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://photos1.blogger.com/blogger/7870/2051/400/scr_quests.0.jpg" alt="" border="0" /&gt;&lt;/a&gt;&lt;/h4&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/20475392-113734781633092057?l=questrl.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://questrl.blogspot.com/feeds/113734781633092057/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=20475392&amp;postID=113734781633092057' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/20475392/posts/default/113734781633092057'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/20475392/posts/default/113734781633092057'/><link rel='alternate' type='text/html' href='http://questrl.blogspot.com/2006/01/version-012-released.html' title='Version 0.1.2 released'/><author><name>Pedro</name><uri>http://www.blogger.com/profile/09275011261609169623</uri><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-20475392.post-113727512888440620</id><published>2006-01-14T22:40:00.000+01:00</published><updated>2006-01-14T22:45:28.886+01:00</updated><title type='text'>Evil bugs</title><content type='html'>Even though I did finally decide to make a 0.1.2 release this weekend, I doubt it will happen. I have a couple of nasty bugs I can't allow in the release, and trying to fix them has made it impossible to work on the other two necessary things for a release: re-writing the documentation, and making a Mac port.&lt;br /&gt;&lt;br /&gt;So, tomorrow I'll try to fix the remaining bugs (which have to do with the AI acting quirky and the caching FOV making light sources not work any more when there's more than one level, if you're wondering), but that still makes it very unlikely I can get it all done. And of course, next week I have a lot of meetings and busy time at work...so 0.1.2 is likely to come out next weekend, with a small chance of happenning before that. I doubt very much it will be later than that though, or I'd be &lt;span style="font-style: italic;"&gt;really&lt;/span&gt; upset!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/20475392-113727512888440620?l=questrl.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://questrl.blogspot.com/feeds/113727512888440620/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=20475392&amp;postID=113727512888440620' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/20475392/posts/default/113727512888440620'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/20475392/posts/default/113727512888440620'/><link rel='alternate' type='text/html' href='http://questrl.blogspot.com/2006/01/evil-bugs.html' title='Evil bugs'/><author><name>Pedro</name><uri>http://www.blogger.com/profile/09275011261609169623</uri><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-20475392.post-113710043719204020</id><published>2006-01-12T22:03:00.000+01:00</published><updated>2006-01-12T22:13:57.200+01:00</updated><title type='text'>Smarter AI, module requirements</title><content type='html'>So, besides some more bug-fixing, two little new features put in today:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Monsters are smarter. &lt;/span&gt;Not &lt;span style="font-style: italic;"&gt;very&lt;/span&gt; smart, mind you, but at least they react to more than just what they see. I'll explain with an example. Before, if an ogre saw a yummy player (interest rating: 5) and a torch (interest rating: 1), it would obviously start going for the yummy player. But if the player goes around a corner and disappears - the ogre would look around, see the torch, and go for it. Now, though, the ogre &lt;span style="font-style: italic;"&gt;remembers&lt;/span&gt; the player. He thinks he was indeed much, much nicer than the crappy torch. And then, the ogre walks up to the last place where he saw the player - and many times, from that position he will be able to see the player running along a corridor...which means he will keep going for his @-snack. On the other hand, if the ogre reaches the place where he saw the player and he can't see anything, he will forget about the player, focus on what he can see, and go back for the torch.&lt;br /&gt;&lt;br /&gt;You might make some smartass comment like &lt;span style="font-style: italic;"&gt;"Ok, but the ogre forgets about the player once he gets to the last place where he saw him. Not very good at following, is he?"&lt;/span&gt;. You know, you're right. But I'm adding a system that will make the ogre be able to follow (if you're not very stealthy, and/or the ogre is very good at tracking you). And that system might actually make the &lt;span style="font-style: italic;"&gt;Stealth&lt;/span&gt; attribute useful too! Yay! You'll be able to "cover your tracks" and also to follow monster's tracks (if one is fleeing from you). Hobbits might be a little beefier then - but still underbalanced. On the other hand, the next step will be to make Stealth lock/unlock doors without the key - which will make hobbitses very hard to catch indeed (they will be able to run, cover their tracks, leave locked doors behind them...)&lt;br /&gt;&lt;br /&gt;The second change: &lt;span style="font-weight: bold;"&gt;modules now have requirements to join&lt;/span&gt;. Before, all you needed to play a module is to not have played it before with that character. But now, modules can have minimum/maximum fame requirements. This way, I can make a "tutorial" module that requires that you have fame 0 (that is, you suck), or an "advanced" module that requires that you're a kickass adventurer (say, fame 20). I plan to add more requirements, but not for this version - like having completed specific modules before, being of a specific race, having certain attributes to a certain level, etc.&lt;br /&gt;&lt;br /&gt;Even though I've added quite a few things lately, I'm hesitant to make a release. On one hand, I've fixed bugs that made the previous nasty, but on the other I'd like each release to have enough meat that you can notice the difference pretty fast. 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/20475392-113710043719204020?l=questrl.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://questrl.blogspot.com/feeds/113710043719204020/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=20475392&amp;postID=113710043719204020' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/20475392/posts/default/113710043719204020'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/20475392/posts/default/113710043719204020'/><link rel='alternate' type='text/html' href='http://questrl.blogspot.com/2006/01/smarter-ai-module-requirements.html' title='Smarter AI, module requirements'/><author><name>Pedro</name><uri>http://www.blogger.com/profile/09275011261609169623</uri><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-20475392.post-113701205957439431</id><published>2006-01-11T21:27:00.000+01:00</published><updated>2006-01-11T21:40:59.580+01:00</updated><title type='text'>LOS (probably) solved</title><content type='html'>Well, the answer to my problem seems to come from an unexpected place: threading! I'll try to explain briefly:&lt;br /&gt;&lt;br /&gt;The profiling seems to show that my bottleneck is Line Of Sight calculation - it's called a &lt;span style="font-style: italic;"&gt;lot&lt;/span&gt;, specially if there's a lot of monsters/lightsources on the level, and it made the game quite slow.&lt;br /&gt;&lt;br /&gt;My first attempt was try other algorithms instead of my custom-made one: but they were either not accurate enough, or slower. I just couldn't get it done! Yesterday, I implemented a variation of Bresenham's algorithm, to have a ray-casting system -- too slow.&lt;br /&gt;&lt;br /&gt;Fortunately, the start of a solution came from &lt;span style="font-style: italic;"&gt;Guild&lt;/span&gt; and &lt;span style="font-style: italic;"&gt;PGuild&lt;/span&gt; author Antoine, in a rec.games.roguelike.development discussion: when he generates a field of view (FOV) in his game, he caches it. Then, if another FOV has to be generated at the same place (if a monster walks into it, for example) it's retrieved from the dictionary instead of recalculated. If anything that can change FOV happens - like a door opening or closing - he clears the cache of the level. A brilliant idea, methinks!&lt;br /&gt;&lt;br /&gt;So, doing just that improved the game slightly - not enough, but nice, specially when (for example) a monster carried a light source around. The first change I made to it was make it so when a door opens/closes it doesn't clear the &lt;span style="font-style: italic;"&gt;whole&lt;/span&gt; cache - only those tiles that the door can "see". Overall, and very specially on big levels, this made an improvement. But I wanted more caching.&lt;br /&gt;&lt;br /&gt;But I still thought - hell, many times you just sit there looking at the screen, and that pause of one or two seconds could be used for &lt;span style="font-style: italic;"&gt;so much&lt;/span&gt; calculating, instead of doing it all between player turns! So I decided to try threading, and so far it seems like another nice boost to game responsiveness.&lt;br /&gt;&lt;br /&gt;Basically, when the player enters a level, a new daemon thread is created, a "cacher". This little thread starts generating FOVs of every single freakin' tile of the level map, and caching them all. I haven't noticed slowdown while it's running, and the effect is &lt;span style="font-style: italic;"&gt;quite &lt;/span&gt;noticeable, specially in monster-packed levels. I don't know if memory usage might be an issue, but so far - and with reasonably large maps - it hasn't at all.&lt;br /&gt;&lt;br /&gt;So, for now, and with a grain of salt, since problems might still arise, I'm happy. The game is still a little slower than I'd like when there's 20+ monsters active at the same time, but it's definitely faster than it was before. I will leave LOS for a while and see how it goes, then come back if it still seems slow or this solution has obvious flaws that I haven't seen yet. Next step - slightly smarter monsters.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/20475392-113701205957439431?l=questrl.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://questrl.blogspot.com/feeds/113701205957439431/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=20475392&amp;postID=113701205957439431' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/20475392/posts/default/113701205957439431'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/20475392/posts/default/113701205957439431'/><link rel='alternate' type='text/html' href='http://questrl.blogspot.com/2006/01/los-probably-solved.html' title='LOS (probably) solved'/><author><name>Pedro</name><uri>http://www.blogger.com/profile/09275011261609169623</uri><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>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-20475392.post-113692876430698585</id><published>2006-01-10T22:27:00.000+01:00</published><updated>2006-01-10T22:32:44.316+01:00</updated><title type='text'>Slow, steady progress</title><content type='html'>Some of the improvements I mentioned yesterday are fixed for the next version : portals now behave properly, and light sources don't light up walls when you're on the other side of the wall.&lt;br /&gt;&lt;br /&gt;I still am working on faster LOS calculation, and will probably cache as many calculations as I can to speed things up, since I don't think I can make it really fast and accurate at the same time -- we'll see.&lt;br /&gt;&lt;br /&gt;And I see no easy fix for Dvorak keyboard issues until I make a proper keyboard-mapping tool that lets the user customize command keys, but I'll keep looking into it.&lt;br /&gt;&lt;br /&gt;Next on the list is the LOS, that's &lt;span style="font-style: italic;"&gt;very&lt;/span&gt; important. After that, probably making monsters a little bit smarter by giving them a memory, and adding some sort of "scent" so that they can find the player (or another monster) if they stumble on their previous path. And combined with that, stealth - which should make hobbits a little less underpowered. There are still more things I have planned before a release - modules with actual fame requirements (both min and max fame), and modules that require a previous module to have been won...and more things, but I'll list them as they get added or at least worked on!&lt;br /&gt;&lt;br /&gt;All in all, slow but steady - the only things that still nag at me are LOS and also the constant fear of the game becoming too slow.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/20475392-113692876430698585?l=questrl.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://questrl.blogspot.com/feeds/113692876430698585/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=20475392&amp;postID=113692876430698585' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/20475392/posts/default/113692876430698585'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/20475392/posts/default/113692876430698585'/><link rel='alternate' type='text/html' href='http://questrl.blogspot.com/2006/01/slow-steady-progress.html' title='Slow, steady progress'/><author><name>Pedro</name><uri>http://www.blogger.com/profile/09275011261609169623</uri><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-20475392.post-113684146257317137</id><published>2006-01-09T22:08:00.000+01:00</published><updated>2006-01-09T22:17:42.583+01:00</updated><title type='text'>Various bugfixes, little improvements</title><content type='html'>Although I haven't had much time to work on the game for the past few days, I have fixed several ugly things that shouldn't have been there, so the next release is nicer: allowing Backspace to delete characters when entering strings (this was working with curses, but the port to SDL broke it), and more importantly (I'm &lt;span style="font-style: italic;"&gt;very&lt;/span&gt; glad this works now): light sources now update correctly when a door opens or closes.&lt;br /&gt;&lt;br /&gt;Another change done today, when choosing a module, all the modules aren't loaded anymore. Before, to check requirements to join a module, the whole module had to be loaded from disk, which (if there were several big modules) amounted to lots of work. Now, requisites are held in a separate, little file. Much faster startup.&lt;br /&gt;&lt;br /&gt;There are a few nifty improvements that take use of pygame's features: the message window now has messages dim until very dark as they get older (the last message is white, the next a little dimmer, etc.), which makes for a nice experience. Also, controlling the font size has let me add more messages to the buffer, so seven can be seen at the same time now. I will add a couple more similar things to the next release.&lt;br /&gt;&lt;br /&gt;For other things I want to work on this week -&lt;br /&gt;&lt;ul&gt;   &lt;li&gt;Light sources not lighting a wall when you're on the other side of it (if you don't understand it, it doesn't matter, but right now if a light is lighting a wall and you're on the other side, you see the wall as lit). &lt;/li&gt;   &lt;li&gt;Dvorak keyboard. Apparently, pygame doesn't handle this very well. I don't know if there will be an easy fix, but I will research it, probably tomorrow.&lt;/li&gt;   &lt;li&gt;Optimization of the LOS algorithm. I have a custom-made one that is very accurate and nice (shadow-casting calculating arc-tangents and angle intervals), but slow. And the ray-casting one I wrote to be faster isn't as accurate. If I can pre-calculate things for my own one, or cache calculations so they're only done once, maybe it would be acceptably fast. I'm not sure, but have to look into it.&lt;/li&gt;   &lt;li&gt;Make portals behave properly. They should only be used when standing on them, and there should be a key to use them that's easier than "+". In fact, I might make "return" the default key and pressing it on a portal would use it.&lt;/li&gt; &lt;/ul&gt; On the good news side, there's been quite a few people who've tried the game, even though it's in a pretty bad state yet - encouraging! The more bug reports and feedback, the more drive to keep working on it and make it playable. Thank you, if you're reading this!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/20475392-113684146257317137?l=questrl.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://questrl.blogspot.com/feeds/113684146257317137/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=20475392&amp;postID=113684146257317137' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/20475392/posts/default/113684146257317137'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/20475392/posts/default/113684146257317137'/><link rel='alternate' type='text/html' href='http://questrl.blogspot.com/2006/01/various-bugfixes-little-improvements.html' title='Various bugfixes, little improvements'/><author><name>Pedro</name><uri>http://www.blogger.com/profile/09275011261609169623</uri><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-20475392.post-113672456076134498</id><published>2006-01-08T13:39:00.000+01:00</published><updated>2006-01-08T13:54:03.620+01:00</updated><title type='text'>Version 0.1.1 released</title><content type='html'>Well, I managed to get the windows binary working, yay! There is absolutely nothing new in this version except the fact that now the game is a graphical window (with ascii graphics, of course), and that there is a separate, binary windows port so windows users don't need python to play the game.&lt;br /&gt;&lt;br /&gt;You can get the source &lt;a href="http://personales.ya.com/eldomir/QuestRL0.1.1_src.zip"&gt;here&lt;/a&gt;, and the Windows self-contained binary &lt;a href="http://personales.ya.com/eldomir/QuestRL0.1.1_win.zip"&gt;here&lt;/a&gt; (the Windows binary has lots of needed .dlls, so it's quite big).&lt;br /&gt;&lt;br /&gt;A couple of screenshot goodies! For some reason, they have funny colors when seen on this page, so click on them to see them for real. First, the editor:&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://photos1.blogger.com/blogger/7870/2051/1600/editor.png"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://photos1.blogger.com/blogger/7870/2051/400/editor.jpg" alt="" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;The black window in the middle is the stupid screenshot interface, ignore it.Now, the main game:&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://photos1.blogger.com/blogger/7870/2051/1600/main.png"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://photos1.blogger.com/blogger/7870/2051/400/main.jpg" alt="" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;As you can see, they look pretty much the same they did before - except now the colors are different, since I can choose them (or my wife can *cough*), and the font is nicer. On the next version, I'll try to take more advantage of pygame's features, but I wanted to have this done first to make sure I could make the game run in windows.&lt;br /&gt;&lt;br /&gt;Next step, which I'll attempt during the week, will be to port it to Mac OSX so it can be run without any requirements as far as python/pygame/etc, like the windows version.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/20475392-113672456076134498?l=questrl.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://questrl.blogspot.com/feeds/113672456076134498/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=20475392&amp;postID=113672456076134498' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/20475392/posts/default/113672456076134498'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/20475392/posts/default/113672456076134498'/><link rel='alternate' type='text/html' href='http://questrl.blogspot.com/2006/01/version-011-released.html' title='Version 0.1.1 released'/><author><name>Pedro</name><uri>http://www.blogger.com/profile/09275011261609169623</uri><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-20475392.post-113666035901286062</id><published>2006-01-07T19:54:00.000+01:00</published><updated>2006-01-07T19:59:19.020+01:00</updated><title type='text'>Finally, good news</title><content type='html'>Well, a few pieces of good news this time:&lt;br /&gt;&lt;br /&gt;First, I have an almost working version of the game with pygame. There are a couple of minor things to fix, and it will be running fine. It looks even better than it did on the console (I can control where to put things exactly, so a square room now looks square, and I have millions of colors to display text), &lt;span style="font-style: italic;"&gt;and&lt;/span&gt; it is quite faster, for some reason. Kudos for pygame!&lt;br /&gt;&lt;br /&gt;Second, I have been looking into packaging the game as a windows executable using &lt;a href="http://py2exe.org"&gt;py2exe&lt;/a&gt;, as was suggested in r.g.r.d, and it works! Instead of having people get python + pygame, I can package everything and make it run as a stand-alone application in windows. I might be able to have this running before monday, and if so I have to post at r.g.r.d so people can check it out if they want to.&lt;br /&gt;&lt;br /&gt;I have to look more closely at &lt;a href="http://undefined.org/python/py2app.html"&gt;py2app&lt;/a&gt;, which I think will work similarly so it shouldn't be too hard, so people with osx can play without getting additional packages.&lt;br /&gt;&lt;br /&gt;Anyway, most of the setbacks are solved and I should have a really working 0.1.0 in a day or so. Yay!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/20475392-113666035901286062?l=questrl.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://questrl.blogspot.com/feeds/113666035901286062/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=20475392&amp;postID=113666035901286062' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/20475392/posts/default/113666035901286062'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/20475392/posts/default/113666035901286062'/><link rel='alternate' type='text/html' href='http://questrl.blogspot.com/2006/01/finally-good-news.html' title='Finally, good news'/><author><name>Pedro</name><uri>http://www.blogger.com/profile/09275011261609169623</uri><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-20475392.post-113662186850752671</id><published>2006-01-07T09:14:00.000+01:00</published><updated>2006-01-07T09:17:48.513+01:00</updated><title type='text'>Pygame</title><content type='html'>Well, I am making an attempt at using pygame instead of curses. So far, it's being very easy (as I would expect from python). I have a working main window, and the three sub-windows reasonably set up, the intro is working, and the choice-list system is working as well.&lt;br /&gt;&lt;br /&gt;In fact, there's so many new things that would be better than before and are easy to implement, it's hard to keep from changing stuff - but I'm going to first try to have the game running, see how performance is, and then think about changing things. And before &lt;span style="font-style: italic;"&gt;anything&lt;/span&gt; else I want to try it in windows, see if it works, then use py2exe and py2app to have it as an executable in windows and mac.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/20475392-113662186850752671?l=questrl.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://questrl.blogspot.com/feeds/113662186850752671/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=20475392&amp;postID=113662186850752671' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/20475392/posts/default/113662186850752671'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/20475392/posts/default/113662186850752671'/><link rel='alternate' type='text/html' href='http://questrl.blogspot.com/2006/01/pygame.html' title='Pygame'/><author><name>Pedro</name><uri>http://www.blogger.com/profile/09275011261609169623</uri><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-20475392.post-113654330664169620</id><published>2006-01-06T11:20:00.000+01:00</published><updated>2006-01-06T11:28:26.650+01:00</updated><title type='text'>Mostly setbacks</title><content type='html'>I'm a little frustrated today. It turns out QuestRL will never run in Windows as it is - because of the lack of curses. I have several options right now:&lt;br /&gt;&lt;br /&gt;&lt;ul&gt;   &lt;li&gt;Move over to Java, make my own console, emulate curses there. The pros of this are that my wife (with whom I plan to someday write a proper roguelike game) is a java developer, and doesn't like python much, and the fact that java is most certainly faster than python for a game like this. The cons are that I &lt;span style="font-style: italic;"&gt;really&lt;/span&gt; like python, and that I'd have to recode the game - it's not that large, but it'd be long, boring, frustrating work.&lt;/li&gt;   &lt;li&gt;Use a different curses library, like &lt;a href="http://pdcurses.sourceforge.net"&gt;pdcurses&lt;/a&gt;. This is probably the fastest option, although I have to see how to make it work with python. The main pro of this is that it's probably very fast to do, if the methods are the same in pdcurses as in ncurses.&lt;/li&gt;   &lt;li&gt;Go the &lt;a href="http://www.pygame.org"&gt;pygame&lt;/a&gt; way, and emulate a curses interface. This is the equivalent of the java emulated console, only done in python. It seems a bit silly to use a graphics environment to do ascii characters, but I guess if I do this it will be easier to expand the graphics options of the game later on, if I feel like it. The main con of this is that I have to redo the display module, and learn how pygame works...but this is the option that appeals to me the most.&lt;/li&gt; &lt;/ul&gt; Apart from this, the only good news is that while browsing miscellaneous information about optimizing python programs, I came across the map() function (yes, I suck, but I didn't even know any python a month ago, so bear with me). I have &lt;span style="font-style: italic;"&gt;gazillions&lt;/span&gt; of for loops in the game, and since map is supposed to be faster, changing that might actually make the game playable speed-wise. It will be some work to convert them all, but I will try just in case it makes a difference - otherwise, as the game get more complicated, the speed issue might make me give up and switch to a different language.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/20475392-113654330664169620?l=questrl.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://questrl.blogspot.com/feeds/113654330664169620/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=20475392&amp;postID=113654330664169620' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/20475392/posts/default/113654330664169620'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/20475392/posts/default/113654330664169620'/><link rel='alternate' type='text/html' href='http://questrl.blogspot.com/2006/01/mostly-setbacks.html' title='Mostly setbacks'/><author><name>Pedro</name><uri>http://www.blogger.com/profile/09275011261609169623</uri><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-20475392.post-113647689771105091</id><published>2006-01-05T16:56:00.000+01:00</published><updated>2006-01-05T17:20:04.616+01:00</updated><title type='text'>Version 0.1.0 released</title><content type='html'>Well, it's finally here: the first public release of Quest. Not that there's much to show! The help files are done, and the game is as polished as I think is necessary for such an early release. If you want to try it, you can grab it &lt;a href="http://personales.ya.com/eldomir/QuestRL0.1.0.zip"&gt;here&lt;/a&gt;. Remember that it's not very playable right now, but you might have fun playing with the module editor and make some adventures!&lt;br /&gt;&lt;br /&gt;Here's a couple of screenshots of the new features in 0.1.0. To begin with, the help files:&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://photos1.blogger.com/blogger/7870/2051/1600/help.2.png"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://photos1.blogger.com/blogger/7870/2051/400/help.1.jpg" alt="" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;I enjoyed working with Maven a lot. It was easy, and the output is very easy on the eyes, and very consistent. I'll probably keep using it for the rest of the project.&lt;br /&gt;&lt;br /&gt;The next screenshot...quests galore!&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://photos1.blogger.com/blogger/7870/2051/1600/quests.png"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://photos1.blogger.com/blogger/7870/2051/400/quests.jpg" alt="" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;You can see the description of a quest (a victory quest, even!). Here you can see another quest screenshot, this time of the player completing a quest:&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://photos1.blogger.com/blogger/7870/2051/1600/quests2.0.png"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://photos1.blogger.com/blogger/7870/2051/400/quests2.0.jpg" alt="" border="0" /&gt;&lt;/a&gt;That darn helm was pretty easy to find, actually. The starting module is very silly and doesn't properly show the features of the game, but oh well. Too tired to write a better one.&lt;br /&gt;&lt;br /&gt;And, for the last screenshot, keys:&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://photos1.blogger.com/blogger/7870/2051/1600/keys.0.png"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://photos1.blogger.com/blogger/7870/2051/400/keys.0.jpg" alt="" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;I am so stupid that I designed the starting module with a gate that had a lock, and a matching key that is in a different level of the dungeon....only to forget to lock that stupid gate, to force the player to find the key. Well, you can find the key and &lt;span style="font-style: italic;"&gt;lock&lt;/span&gt; the freaking gate if you want to, at least. *sigh*&lt;br /&gt;&lt;br /&gt;If you do try it, write to tell me what you think of it -- but only if you don't hate it, and no calling names.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/20475392-113647689771105091?l=questrl.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://questrl.blogspot.com/feeds/113647689771105091/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=20475392&amp;postID=113647689771105091' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/20475392/posts/default/113647689771105091'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/20475392/posts/default/113647689771105091'/><link rel='alternate' type='text/html' href='http://questrl.blogspot.com/2006/01/version-010-released.html' title='Version 0.1.0 released'/><author><name>Pedro</name><uri>http://www.blogger.com/profile/09275011261609169623</uri><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-20475392.post-113645508447624092</id><published>2006-01-05T10:54:00.000+01:00</published><updated>2006-01-05T10:58:04.496+01:00</updated><title type='text'>Almost there!</title><content type='html'>I've cleaned up the code, documented stuff, fixed bugs, and changed a couple of little details so the game is neater. I've also done everything I &lt;span style="font-style: italic;"&gt;think&lt;/span&gt; is needed for the GPL license stuff (adding tags to all source files, including a COPYING.txt file, and a disclaimer when the programs start).&lt;br /&gt;&lt;br /&gt;So, the only thing needed before releasing 0.1.0 is writing a little help document to show people how to play the game. I'm going to do this using &lt;a href="http://maven.apache.org"&gt;Maven&lt;/a&gt;, which was pointed to me most wisely by Geli. It should be easy to read and work anywhere there is a web browser. I don't know when it will be done, but probably today or tomorrow.&lt;span class="" style="display: block;" id="formatbar_CreateLink" title="Link" onmouseover="ButtonHoverOn(this);" onmouseout="ButtonHoverOff(this);" onmouseup="" onmousedown="CheckFormatting(event);FormatbarButton('richeditorframe', this, 8);ButtonMouseDown(this);"&gt;&lt;/span&gt;&lt;span class="down" style="display: block;" id="formatbar_CreateLink" title="Link" onmouseover="ButtonHoverOn(this);" onmouseout="ButtonHoverOff(this);" onmouseup="" onmousedown="CheckFormatting(event);FormatbarButton('richeditorframe', this, 8);ButtonMouseDown(this);"&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/20475392-113645508447624092?l=questrl.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://questrl.blogspot.com/feeds/113645508447624092/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=20475392&amp;postID=113645508447624092' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/20475392/posts/default/113645508447624092'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/20475392/posts/default/113645508447624092'/><link rel='alternate' type='text/html' href='http://questrl.blogspot.com/2006/01/almost-there.html' title='Almost there!'/><author><name>Pedro</name><uri>http://www.blogger.com/profile/09275011261609169623</uri><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-20475392.post-113639087175664345</id><published>2006-01-04T16:58:00.000+01:00</published><updated>2006-01-04T17:09:19.856+01:00</updated><title type='text'>Decision time -- GPL it is</title><content type='html'>So after consulting with Geli (my wife, who has read quite a bit about software licenses) I've reached a decision: when I release Quest 0.1.0, it will be under the GPL.&lt;br /&gt;&lt;br /&gt;The only reason I was considering  not to release the source was because having the source lowers the &lt;span style="font-style: italic;"&gt;mystery factor&lt;/span&gt; of the game (i.e., compare ADOM to Angband). There are three reasons why I will make it open source:&lt;br /&gt;&lt;br /&gt;1. Providing an editor makes the "mystery factor" silly, since the game is &lt;span style="font-style: italic;"&gt;meant&lt;/span&gt; to be designed by a "dungeon master" who creates the adventures anyway, and hopefully the editor will allow pretty much anything to be seen and defined without looking at the code. No mystery that way.&lt;br /&gt;&lt;br /&gt;2. One nice thing about Python is that, if the user has the interpreter installed, the game should &lt;span style="font-style: italic;"&gt;hopefully&lt;/span&gt; be multi-platform. No worries about porting it to foobar! But if I don't release the source, I have to figure out how to make binaries (which I know of only for Windows), and then compile it for several architectures, which I don't have the knowledge or the energy to do.&lt;br /&gt;&lt;br /&gt;3. I am fickle. Right now I work on this game a lot, but I've done this before and then abandoned it. Although right now &lt;span style="font-style: italic;"&gt;Quest&lt;/span&gt; is a sorry excuse for a roguelike, maybe one day it will grow and be of use to others...and it would be a pity to let it die because I forgot about it.&lt;br /&gt;&lt;br /&gt;After reading the &lt;a href="http://www.gnu.org/licenses/gpl-howto.html"&gt;GPL howto&lt;/a&gt;, it seems I have to put a tag on every source file, and then a separate file with the license on the root directory of the game. I will set to that tomorrow, because there aren't that many bugs to polish out anymore and the release could be soon.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/20475392-113639087175664345?l=questrl.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://questrl.blogspot.com/feeds/113639087175664345/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=20475392&amp;postID=113639087175664345' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/20475392/posts/default/113639087175664345'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/20475392/posts/default/113639087175664345'/><link rel='alternate' type='text/html' href='http://questrl.blogspot.com/2006/01/decision-time-gpl-it-is.html' title='Decision time -- GPL it is'/><author><name>Pedro</name><uri>http://www.blogger.com/profile/09275011261609169623</uri><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-20475392.post-113637181483438967</id><published>2006-01-04T11:42:00.000+01:00</published><updated>2006-01-04T11:52:04.876+01:00</updated><title type='text'>Quests added -- and freeze!</title><content type='html'>Ok, so once again showing how freaking &lt;span style="font-style: italic;"&gt;fast&lt;/span&gt; it is coding in Python, quests are in (which is good, since that's the name of the game!)...yay!&lt;br /&gt;&lt;br /&gt;There are two ways of completing quests right now: acquiring a specific item, or killing a specific monster. I think that's enough for now. And there is also a way of failing a quest (besides dying): you can set a monster to be the "bane" of the quest, so if the monster dies, the quest is failed. This could, in the future, mimick the "protect X" school of questing.&lt;br /&gt;&lt;br /&gt;In the editor, when editing an item or a monster, you can set them as the goal of a new quest - the details of the quest are requested (no pun intended), and the new quest is added to the module. For monsters, you can also set the monster as the bane of a quest, so that if it dies the quest has failed.&lt;br /&gt;&lt;br /&gt;Of course, there is now a way of seeing all quests (completed or otherwise) on the main game via a "quest menu". It keeps a record of &lt;span style="font-style: italic;"&gt;all&lt;/span&gt; quests, so that you can finish a module, play another one and check all the quests you completed in previous ones, along with how much fame they gave you, etc.&lt;br /&gt;&lt;br /&gt;Reasonably complex modules can be created now: with keys and quests, combinations are pretty large. And, a module can be failed without dying now, too - if the victory quest required a specific monster to live and it dies. I am happy enough I'm calling it a freeze, and won't implement any major features for this release. It's bug-hunting time, and also time to make the code neat, document things left undocumented, etc.&lt;br /&gt;&lt;br /&gt;Hopefully, 0.1.0 (and releasing the code with it) is not far away now. It all depends on how many new bugs I find, and how neat I want it to be before others see it - although the rec.games.roguelike.development group advices to release often and early, so I won't refine it too much before releasing it.&lt;span style="font-style: italic;"&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/20475392-113637181483438967?l=questrl.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://questrl.blogspot.com/feeds/113637181483438967/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=20475392&amp;postID=113637181483438967' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/20475392/posts/default/113637181483438967'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/20475392/posts/default/113637181483438967'/><link rel='alternate' type='text/html' href='http://questrl.blogspot.com/2006/01/quests-added-and-freeze.html' title='Quests added -- and freeze!'/><author><name>Pedro</name><uri>http://www.blogger.com/profile/09275011261609169623</uri><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-20475392.post-113636015040177436</id><published>2006-01-04T08:29:00.000+01:00</published><updated>2006-01-04T08:35:50.406+01:00</updated><title type='text'>Unlock it, baby!</title><content type='html'>Keys and locks are in: having the right key, a door can be locked and unlocked. Eventually, there could be more than one key that unlocks a door, or a key that unlocks more than one door, but for now I'm keeping it 1:1.&lt;br /&gt;&lt;br /&gt;In the editor, when you add a key object to the game you are informed that the next door you add to the module will be linked to that key, to simplify the process of choosing which door it's associated to. Naturally, the key and the door need not be in the same map.&lt;br /&gt;&lt;br /&gt;This actually means a simple module with a &lt;span style="font-style: italic;"&gt;little&lt;/span&gt; &lt;span style="font-style: italic;"&gt;bit&lt;/span&gt; of a challenge that is not just bashing monsters can be created with the editor now. You can have several maps, and have to go through the trouble of finding out where the key to unlock some final area is, instead of just strolling there.&lt;br /&gt;&lt;br /&gt;Overall, I'm very happy. My two strong feelings about Python remain - it noticeably slower in running than most languages I know, but it is such a &lt;span style="font-style: italic;"&gt;pleasure &lt;/span&gt;to work with it!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/20475392-113636015040177436?l=questrl.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://questrl.blogspot.com/feeds/113636015040177436/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=20475392&amp;postID=113636015040177436' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/20475392/posts/default/113636015040177436'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/20475392/posts/default/113636015040177436'/><link rel='alternate' type='text/html' href='http://questrl.blogspot.com/2006/01/unlock-it-baby.html' title='Unlock it, baby!'/><author><name>Pedro</name><uri>http://www.blogger.com/profile/09275011261609169623</uri><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-20475392.post-113629511896719199</id><published>2006-01-03T14:17:00.000+01:00</published><updated>2006-01-04T11:53:49.850+01:00</updated><title type='text'>v 0.0.9 screenshots</title><content type='html'>Click on a screenshot to see it full-size, of course. Here goes:&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://photos1.blogger.com/blogger/7870/2051/1600/screenshot_editor1.4.png"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://photos1.blogger.com/blogger/7870/2051/400/screenshot_editor1.3.jpg" alt="" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;The editor program, showing a view of the current map. There is a torch on the floor, and a monster on the lower left corner (the @ is the "dungeon master" creating the map).&lt;br /&gt;&lt;br /&gt;Even though the stupid message says v 0.0.8, it's the new version. I *cough* forgot to change it.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://photos1.blogger.com/blogger/7870/2051/1600/screenshot_editor2.1.png"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://photos1.blogger.com/blogger/7870/2051/400/screenshot_editor2.1.jpg" alt="" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;The editor program again. This time, you can see the properties of a torch being edited. The program uses little menus where the user chooses with the cursors and keys, and the program does different things depending on the key used to choose. Both "item templates" and individual item objects in the adventure can be edited this way.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://photos1.blogger.com/blogger/7870/2051/1600/screenshot_editor3.2.png"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://photos1.blogger.com/blogger/7870/2051/400/screenshot_editor3.2.jpg" alt="" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;This is a screenshot of the main game (looks similar to the editor, huh?). You can see the description of the one and only ability that exists right now, Minor Healing.&lt;br /&gt;&lt;br /&gt;On the map, you can see the player, the torch and the monster that were shown in the editor view before. Yes, all monsters except the boss monster are white M's. *thbpppt*&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://photos1.blogger.com/blogger/7870/2051/1600/Picture%207.1.png"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://photos1.blogger.com/blogger/7870/2051/400/Picture%207.1.jpg" alt="" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;To finish, here is a view of some butt-kicking game action! As you can see in the message buffer, the kobold has walked up to the torch and picked it up (greedy bugger), the player has cornered it against the wall, and the kobold has realized there is no way out and is turning against the player.&lt;br /&gt;&lt;br /&gt;Oh, the character sheet shows how very, very simple the game system is currently (only three "stats" besides health, and only two of those do anything right now).&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/20475392-113629511896719199?l=questrl.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://questrl.blogspot.com/feeds/113629511896719199/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=20475392&amp;postID=113629511896719199' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/20475392/posts/default/113629511896719199'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/20475392/posts/default/113629511896719199'/><link rel='alternate' type='text/html' href='http://questrl.blogspot.com/2006/01/v-009-screenshots.html' title='v 0.0.9 screenshots'/><author><name>Pedro</name><uri>http://www.blogger.com/profile/09275011261609169623</uri><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-20475392.post-113629416562128266</id><published>2006-01-03T13:48:00.000+01:00</published><updated>2006-01-03T14:36:06.903+01:00</updated><title type='text'>First post and version 0.0.9</title><content type='html'>So, here it is. I've decided to keep a development diary for &lt;span style="font-style: italic;"&gt;Quest&lt;/span&gt;, probably for no good purpose. I didn't post anything before now because there was little to show (not that it's &lt;span style="font-style: italic;"&gt;very&lt;/span&gt; exciting now!)&lt;br /&gt;&lt;br /&gt;Anyway - what is &lt;span style="font-style: italic;"&gt;Quest&lt;/span&gt;? It's a little roguelike written in Python, currently in its early stages of development (like &lt;span style="font-style: italic;"&gt;lots&lt;/span&gt; of others out there). Most of the coding is done by me, but my wife makes life-saving contributions all the time, some in the form of design tips, and others as actual code (half the current AI code has been written by her). To describe the game very briefly, it uses curses and is composed of two programs: the main program where the game is played, and the editor where the adventures are created. Both are slowly growing in parallel, so that new features added to the game can be used to design adventures through the editor, rather than being hard-coded.&lt;br /&gt;&lt;br /&gt;Of course, it's all just for testing the first attempt at the engine right now, and there's practically no items or monsters or anything of the sort. Items, monsters, terrain types and abilities (currently a spell) &lt;span style="font-style: italic;"&gt;do&lt;/span&gt; exist though: depth hasn't been added yet because I'd rather get the basics set before committing myself to anything in detail.&lt;br /&gt;&lt;br /&gt;One of the next things I have to look at, if I'm to "release early and often" is licenses. I have absolutely no idea of how those go, and I don't want to let anything out on the web before I look into that. More on this after some research.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/20475392-113629416562128266?l=questrl.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://questrl.blogspot.com/feeds/113629416562128266/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=20475392&amp;postID=113629416562128266' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/20475392/posts/default/113629416562128266'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/20475392/posts/default/113629416562128266'/><link rel='alternate' type='text/html' href='http://questrl.blogspot.com/2006/01/first-post-and-version-009.html' title='First post and version 0.0.9'/><author><name>Pedro</name><uri>http://www.blogger.com/profile/09275011261609169623</uri><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></feed>
