Thursday, August 2, 2012

Ighalsk - release 0.1.16

I released v0.1.16 of Ighalsk last night. It can be downloaded from its SourceForge project page here. These are the changes since v0.1.15:

* Attack Powers can now have a radius: that is, they can explode (with a circular area).
* Heroes now gain Powers as they gain levels (currently this process is automatic: a Hero gains every possible new Power as e gains a level).
* Added new Powers: Terrifying Roar and Hurl Rock for Mighty Heroes, Willpower and Divine Light for Blessed Heroes, and Argumentum and Profunde Cogitare for Philosophical Heroes.  These are gained at higher levels.
* Can now enter the final level of the Tunnels of Lost Dreams quest.  (However, there will be more monsters added later.)
* Can now see the damages and damage types of weapons, and the main resistances of armour, while shopping.
* Can now browse ('consider') the definition of a Power.

It's been more than 2 years since the last release, in which time I've been working on From Bear to Phoenix. Something I have to think about going forward is which game to focus on, or somehow try to develop both.

For the next release of Ighalsk, I'd like to add in final levels for the other two (current) quests.  It may or may not also include a major new feature.

Friday, September 16, 2011

From Bear to Phoenix - release 0.0.2

I released v0.0.2 of From Bear to Phoenix about a week ago. It can be downloaded from its SourceForge project page here. These are the changes since v0.0.1:
  • Added Augmenter, who can cast the following Augment spells:
  • Heart of Buffalo,
  • Skin of Bear,
  • Strength of Bear,
  • Strength of Mouse (intended for use on opponents).
  • Can now have multiple allies, fighting against common opponents.
  • Added an initial screen to choose which allies and opponents for a battle.  There are currently no restrictions on how many allies or opponents to choose (OK, actually there's a limit of 9 for each type of being, and starting with 0 allies may crash the game); if your first choice of combatants makes for a battle that's too easy, try again with more opponents and/or less allies.
  • Added Firebugs and Polar Bears, both available as opponents.
  • Shapeshifters can now change into Wolves and Trees as well as Bears.  Wolves are faster and can be sustained longer; Trees regenerate MP quickly.
  • Added summary of current ally (HP and MP) to the map screen.  (This can help clarify which ally is currently active.)
  • Added a character viewer which shows spells available, cast by and cast on, that mage, if the player clicks on the summary of the current ally on the map screen.
  • Added A* pathfinding algorithm, used by opponents to find the shortest path to the allies.  (This algorithm follows the Wikipedia definition closely.)
 Screenshots of this release:

Choosing sides at the start of the game.

Just before first contact with the enemy - Augmenter hanging back, Shapeshifter (in the form of a Bear) braced.

Augmenter character sheet showing available spells, spells cast so far, and spells cast on this mage.  Note that an Augmenter can cast one spell multiple times on different beings.  Augment spells cost MP to maintain as well as cast.

Again, see the original From Bear to Phoenix post for image credits.

It was 5 months from v0.0.1 to v0.0.2, which felt like too long.  I was too ambitious in what I wanted to fit in before releasing; for the next version, I'm scaling back the list of features to include.  I definitely want to include saving and loading games and new monster types (naturally).  And of course a new type of mage, but I haven't yet decided between Lifegiver (healer) or Architect (stone mage).  Anything after that is a bonus.

From Bear to Phoenix is beginning to feel more like a game now.  It's possible to easily experiment with the number and type of good guys and bad guys, which is necessary for balancing, and the potential of the magic system and the variety of spells and mages is starting to become clear.  With the next release, even more pieces will be added to the puzzle.

Sunday, June 12, 2011

From Bear to Phoenix - On cooperation (part 1)

I want "From Bear to Phoenix" to be not just a game about mages, but a game about mages cooperating. Yes, even about synergy - if we can reclaim that word from management-speak.

It occurred to me that one way to do this would be to introduce more character traits for mages, each of which has a positive effect on nearby allies.

Leadership would improve their (the nearby allies') accuracy, and perhaps their rate of magic point recovery. Companionship would add to their strength, and hence damage dealt. Nurturing (or compassion) would improve their regeneration of hit points.

Some mages would have these traits, though not all. Shapeshifters would have high leadership and medium companionship when in human form. Their other forms would have different traits: Wolf would have high companionship, Bear medium nurturing, Tree perhaps high nurturing. Proximas would also have high companionship, Lifegivers would of course have high nurturing, and Augmenters might have medium levels of all three of these traits.

But there's more. There could also be spells to affect these traits: Augmenters could cast spells to improve them, such as "Heart of Wolf" to increase companionship or "Leaves of Tree" to increase nurturing (as well as the hit point and magic point regeneration of the recipient). And Illusions could cast spells to decrease them, or indeed reverse them entirely: despair as the negative of leadership, mistrust or paranoia as the negative of companionship, hostility or hatred as the opposite of nurturing.

This makes the following scenario possible. An Illusion casts "Hostility" on a mage - perhaps a Shapeshifter or a Proxima in hand-to-hand combat with allies of the Illusion. Illusions are invisible, so perhaps the player of the mage doesn't realise at first that any spell has been cast on the mage.

Damaged from combat, the mage retreats to huddle near a Lifegiver: she's currently too busy healing others to attend to him, but he can still benefit from being near her. Which he does, until suddenly the player realises that the Lifegiver has been losing hit points from the poisonous Hostility of the Illusion's spell.

The tradeoff then becomes, sacrifice the Lifegiver's hit points for the other mage's? And during and after the battle, the (magically) Hostile mage is shunned by allied mages until they can find a way to dispel the Hostility ...

Saturday, April 16, 2011

From Bear to Phoenix - release 0.0.1 (Windows extras)

I recently realised that if you downloaded the Windows executable of From Bear To Phoenix, you may also need to download and run another file. That is, you may need to download and run vcredist_x86.exe from here if MSVCR90.dll is missing: note that the SP1 version should not be used.

See the py2exe tutorial section 5.2.2 for full details.

Yes, I used py2exe to create the Windows executable. I've used pyinstaller for creating Windows executable for Ighalsk, but pyinstaller just could not bundle pygame correctly (I'm sure it's possible, but after wasting 2 or 3 calendar days trying, I gave up). There's a great sample script for using py2exe with pygame here, which I customised slightly but largely worked out of the box. I'm deliberately not bundling the data files inside the executable, since I want it to be possible to edit them and then run From Bear to Phoenix using the new data files. All of which will become more interesting when there are multiple allies :)

EDIT: Forgot to mention that From Bear to Phoenix release 0.0.1 is available here. If the Windows executable still doesn't work or is too large and you have Python installed, the source code is also available from here.

Monday, April 4, 2011

From Bear to Phoenix - release 0.0.1

I've just released From Bear to Phoenix v0.0.1! You can download it from here. As the initial release, this version contains a prototype GUI and basic gameplay. Specifically:


  • You can play as a Shapeshifter, who can change into a Bear. Naturally the plan is to add other forms, including Wolf, Tree and of course Phoenix; see my earlier post for more.

  • Shapeshifters have MP as well as HP. (Do I need to explain HP and MP? Doesn't every CRPG have at least HP and most fantasy RPGs have MP?)

  • Spells (including changing to a different form) cost MP each turn to maintain; when the caster's MP is exhausted, all spells are dispelled.

  • The opponents are GULBs (Giant Undead Lady Bug). Again, there will be more added soon.

  • The screen includes a map, a mini-map (showing all allies and opponents) and a status line (showing messages).

  • You can recentre the map.

  • You can left-click for actions (including casting spells, moving and attacking) and right-click for information (current HP and MP).

  • The map has obstacles which block squares and tiles which don't. (Tiles are there to add atmosphere.)

  • Opponents move around obstacles. (So far, the path-finding algorithm is quite primitive; it will need beefing up to cope with lines of obstacles and dead ends.)



Here's a couple of screenshots:

Screenshot of Star Mage Girl
Shapeshifter at the start of the game.

Screenshot of Bear
Bear form, also showing an information window with current HP and MP.

Again, see the original From Bear to Phoenix post for image credits. (I drew the grass/weeds and rocks.)

Where next? The plan is to add the following features for v0.0.2 (unless there's an intermediate release):

  • Augmenter, who can cast spells that enhance or degrade bodies (maybe not minds just yet);

  • Multiple allies fighting together (defending and helping each other);

  • Being able to choose both the allies and the opponents for a battle;

  • Polar Bears and Firebugs available as opponents;

  • Possibly a character viewer that can show some or all of spells available, spells cast by this character, and spells cast on this character;

  • Hopefully more Forms for Shapeshifters, at least Wolf and Tree.



You have not seen anything yet!

Wednesday, January 12, 2011

From Bear to Phoenix - on being a Rock

Balance is vitally important for making "From Bear to Phoenix" tactically challenging. So the cool ideas that I have for spells, or classes of mage, or whatever, ideally would be carefully reviewed and play-tested in case they would unbalance the game. (I guess there's an alternative - "throw them all in together and see what people think" :)

For example, I would like to give a Shapeshifter one or more "emergency" Forms that they could shift into if a battle was going badly. I thought of two such: Tree and Rock. Of these, a Tree would offer rapid regeneration of HP and MP (due to sap and photosynthesis), but would be vulnerable to most attacks, in particular blade and fire. A Rock would also regenerate HP and MP, both somewhat slower (I claim that a Rock is naturally slower than a Tree), and would be highly resistant to most attacks except blunt attacks (possibly also lightning and a few others). Both would probably cost 0 MP to change to; this is part of the nature of emergency Forms, that they can be selected if the Shapeshifter has low MP. Both would not be able to move or attack. Both might also have some Stealth: for example, opponents would still see a Tree, but might not be able to tell that it is a Shapeshifter in the Form of a Tree rather than a natural tree.

The question is, what if the opponents don't have any blunt weapons or attacks? The Shapeshifter could be unbeatable in such a battle: it could attack, change into a Rock when damaged, regenerate while ignoring attacks, change back into an offensive Form when it has regained HP and MP, and repeat as necessary. Trees don't offer the same problem, since they are vulnerable to most attacks (in fact, it might still be risky to turn into a Tree if you don't have allies nearby to cover for you).

There are a few possible solutions that I've come up with so far: having a non-zero MP cost to becoming or remaining a Rock (a cost per turn would make Rocks much less attractive as emergency Forms), or limited or no (MP?) regeneration while in Rock Form (in which case they'd only be useful for prolonging battles, or perhaps stalling while allies regroup).

Maybe the best approach is just to try out possible solutions: to implement Rocks on an "experimental" branch and play-test them to see how unbalancing they really are before integrating them into the trunk. It would be a shame if a Shapeshifter couldn't turn into a Rock at all ...

From Bear to Phoenix - yo

It's been a long time since the last post, I know. Part of that was due to a 7-week holiday with my family around Europe (Germany was great), and part is due to still working on From Bear to Phoenix and not being ready to release yet.

I can say that the game now has a Shapeshifter, who can swap between Human and Bear forms; that she can attack Greater Undead Ladybugs, though they can't yet attack back; and that it has menus.

I can also say that I'm using Pygame, which I've found easy to learn and use (easier than Tkinter, which I used for Ighalsk), as well as YAML which again is much easier than writing my own code to read in data files, and Nose to run unit tests. Oh, and I am reusing Ighalsk, though more the design than the actual code itself (I think only one module has made it across in the entirety).

More to follow.

Saturday, July 31, 2010

From Bear to Phoenix - introduction to a planned new open-source CRPG

'From Bear To Phoenix', the new project I have begun working on, will be an open-source fantasy turn-based RPG, with two key features:

a) tactical combat centered on magic and co-operation between mages;
b) strategic planning and interacting with a dynamic world.

Magic

In particular, all the PCs in the party will be mages. This means that there's no need to balance mages with warriors or other classes, and end up handicapping the mages; the game can unapologetically be designed so that mages are awesome from the start. There will also be a wide range of possible types of mage, and hence a large number of possible combinations; indeed, experimenting with different ways to build a team, play off strengths and compensate for weaknesses will be an important part of the game (and should be fun :).

Here are the types of mage I'm currently planning to include:

  • Shapeshifter: can shift into Bear, Wolf or Phoenix forms for combat, but only for a short time; Cat, Mouse or possibly Hawk for stalking, hiding and searching; Tree or Rock for regeneration and defence.
  • Lifegiver: can provide physical and magical healing.
  • Proxima: skilled at martial arts and short-range elemental attacks (such as ice touch).
  • Scout: stealthy, quick, can turn invisible - possibly can teleport short distances.
  • Augmenter: Enhances magical power, improves (or degrades!) bodies and minds.
  • Enchanter: Improves equipment for limited periods or more permanently.
  • Elementalist: Long-range, area elemental attacks and shields.
  • Heartguard: Specialises in shields, counterspells and dispelling.
  • Seer: Counter to a Scout; provides intelligence on the enemy's location and movement.
Other possibilities are Disruptor; Weathermaker; Harpist; Balancer; Sleepweaver.

Typically a party would consist of 6 mages, and possibly some (mundane, non-magical) mercenaries.

Sample PC and monster icons

From Bear To Phoenix icons

Here the icons represent, clockwise from the top left, a Lifegiver (healer); an Elementalist; an Augmenter; the Bear form of a Shapeshifter; the Wolf form of a Shapeshifter; a Firebug; and a Giant Undead LadyBird (GULB).

Image credits: The Bear is taken from a photo by Alan Vernon, available at http://www.flickr.com/photos/alanvernon/3200782322/; the Wolf is taken from a photo by Drew Avery, available at http://www.flickr.com/photos/33590535@N06/3520737474/. Both are licensed under the CC Attribution 2.0 Generic license http://creativecommons.org/licenses/by/2.0/deed.en. All other images are originally from Danc's PlanetCute set at http://www.lostgarden.com/2007/05/dancs-miraculously-flexible-game.html, under the CC Attribution 3.0 License (see http://www.lostgarden.com/2007/03/lost-garden-license.html).

Multiplayer Battles

It will be possible to play out a one-off battle, selecting a group of mages and their opponents and fighting on a chosen battlefield, either playing against a human opponent or an AI; if you've played multiplayer Battle of Wesnoth, you know what I mean. These battles will provide input on balancing the mage types (and indeed calculating relative strengths of mages versus various monsters).

Dynamic World, Non-linear Storyline

As mentioned, the world will be dynamic; enemies will be modeled independently and will indeed capture villages and towns unless they are stopped. They may also capture and hold to ransom friends or family of the party. Events will happen whether the PCs get there in time or not; so resting enough to fully heal the party and replenish their spells will be a strategic choice, not a free lunch. All this implies a highly nonlinear storyline.

Another planned feature is splitting the party. The player should be able to hire mercenaries and send them off on quests, with as many mages as desired. This would again be a matter of judgement; any understrength party would have a greater chance of failing at a quest.

Setting
The world would probably include standard fantasy features such as elves, dwarves, goblins, trolls and undead, with a few twists. Dragons will be very rare and powerful. There may also be Titans and their allies, very powerful and magical survivors of an ancient war with the elves.

Influences

Influences of this game include Pool of Radiance (my favourite of the SSI D&D games I played), Wizardry games, in particular Bane of the Cosmic Forge and Crusaders of the Dark Savant, Final Fantasy X, Kingdom Hearts, and Battle of Wesnoth (as previously mentioned).

For More Details

If you're interested in helping design this game, or just in knowing when releases come out, contact me by leaving a comment on this blog or send me a message via my Twitter account. I'll post details of a forum and/or mailing list on this blog when I set them up.

Closing Thoughts
This all sounds ambitious, and it will be a slow process developing this game, but the end result will be awesome.

Monday, May 24, 2010

Ighalsk - release 0.1.15

I released v0.1.15 of Ighalsk some 2 weeks ago. It can be downloaded from its SourceForge project page here. These are the changes since v0.1.14:

* Fixed bug in Monster Editor where the resists weren't updated after changing the monster's family. (The new values were present, but the recalculation wasn't occurring in the correct place.)
* Switched to black background and white text, which is a more traditional roguelike design (and has more of an underground feel). Black monsters are now a dark grey colour.
* Can now add monsters to a level using the Level Editor (and delete them if they're in the wrong place!).
* Can now add circular rooms in the Level Editor. (This was something I wanted for the Tunnels of Lost Dreams in particular.)
* Now need to specify a width and height when creating a new level in the Level Editor. (Now tests can use small levels for speed.)
* Added initial (incomplete) version of the final level of the Tunnels of Lost Dreams - can't yet be entered in the game. A screenshot is here.

There was almost 3 months between v0.1.14 and v0.1.15, and there may well be a similar time until the next release, if not longer. I'd like to work on a game that inspires me more and that I'm more passionate about; I feel with Ighalsk like there's a lot of work to do before it achieves even close to the functionality that other roguelikes have. The next game will be an RPG, and will reuse a lot of Ighalsk's code, but will have a much more graphical interface. It will also be written in Python, and be open-source (GPL-licensed). If you'd like to know any more, there will be sneak previews and further discussion on this blog and/or on my Twitter feed.

Thursday, April 15, 2010

Ighalsk - sneak peak of Tunnels of Lost Dreams final level

So the Ighalsk Level Editor is coming along nicely - recently added options to add circular rooms and monsters. I've posted a screenshot of the final level of the Tunnels of Lost Dreams here. The level is incomplete as yet - though since Lord Apathy is the architect, the final version will be incomplete as well.

Tuesday, March 16, 2010

Ighalsk - release 0.1.14

I released Ighalsk v0.1.14 a couple weeks ago; it can be downloaded from its SourceForge project page here.

Here are the changes since v0.1.13:
* Simplified controller/viewer swapping for different screens to make it easier (in fact, possible) to generate a Windows executable. I haven't figured out the best way to host this exe yet, since it seems to be too large to upload using the SourceForge File Manager (and SFTP isn't working for me). If you'd like a copy, please email me.
* Added Stealth for Monsters; stealthy monsters will now only be noticed when they are closer to the Hero. There are a couple stealthy monsters to look out for.
* Refactored Monster Editor to simplify it further (separate classes for separate states). This made the next change a whole lot easier.
* Monsters can now have multiple attacks (weapons) instead of just one; this is also supported by the Monster Editor. This is most important right now for the uniques at the end of the first set of quests ...
* Fixed a bug where the keys to move through pages in the Monster Editor (left and right) were the wrong way around. (For a long time, I've been using the buttons instead, and had to look in the code to work out the keys again, only to find that they were wrong.)
* Can now add rectangular rooms in the Level Editor. I plan to also have an option of adding circular rooms, and maybe octagonal, and then there's adding a rectangle and circle of solid walls ...

The next release may be in 6 weeks from now and/or may have a small number of extra features, since I've starting working on a new game ...

Friday, February 12, 2010

Ighalsk - Thanks for the Downloads

This short post is mostly to say, thanks for the downloads. I've said before how I struggle with motivation when working on my own projects, and knowing that there are people out there downloading Ighalsk releases every month does make a difference.

Thanks even more to everyone who's given feedback, both on this blog and in email. It all helps make Ighalsk better one way or another.

Onwards to version 1.0!

Sunday, February 7, 2010

Ighalsk - The Nature of a Hero

I claimed recently in an online conversation that I was taking a slightly different slant on the Hero in Ighalsk. I was asked for more details, and gave the following response (slightly edited for blog format and where I felt the need for improvement):

I'm imagining the Hero as someone more than mortal, with extraordinary gifts and abilities. They are called to fight evil and complete quests. So far this is just expressed in the game as a series of speeches by the Queen who needs the Hero's help, by the replacement of "the dungeon" with a choice of quest dungeons, and by the extra powers that a Hero has that normal warriors (for example) don't have. (As opposed to say Angband, where my Priest might meet a Novice Priest in the dungeon and think hmmm, that priest is almost the same as me ...)

The end of this post has got my take on the different types of Hero, though this text isn't in the game yet.

At some stage I'd like to link in the history of other Heroes who tried and failed to complete all the quests: to have the Queen refer to them, to have their entries in the high score table, to be able to find the weapons or armour they owned and maybe even their journals.

I'd also like the game to show the reactions of townsfolk to the Hero, and to have these reactions change as the Hero grows in power ...

This is something that I'm still struggling with and would like to express more clearly in the game. A roguelike in its usual form doesn't offer a lot of opportunities for roleplaying, but there is all the freedom of text (as seen in interactive fiction games) - so I aim to take advantage of that.

Tuesday, January 26, 2010

Ighalsk - Doom Merchants

Where there has been a concentration of undead for several years, a strange, inky black substance can sometimes be found, pooled in hollows in the ground. If you picked it up, you would find that it pours and moves like a dark, viscous liquid - but it doesn't feel wet. At first it feels cold, then your hands become numb, then strength begins to ebb from your limbs. The solitary adventurer may be overcome at this point, but if you have friends (or at least companions) with you, a healing potion or power will restore you to health.

The unscrupulous soon discovered that this substance, when suitably processed, makes an effective and deadly poison. They called it "raw doom" and set up Workshops of Doom, sometimes even Factories of Doom, to refine and mould it into a more convenient form. A drop or two in a cup of wine induces death while the drinker is sleeping that night. A weapon coated with it strikes through armour and is only stopped by certain white fabrics which have been blessed by sacred rites.

The gathering, processing, selling, buying and owning of both raw and processed doom is illegal in all human, elvish, dwarven and goblin dominions. Nonetheless, there are some desperate souls who traffic in it. They call themselves Doom Merchants, or sometimes Merchants of Doom. The Doom Merchants venture deep into necropoleis, cemeteries and ghost towns, wherever they can find undead, and gather large quantities of raw doom. This they carry in large black bags - Bags of Doom. Their customary costume includes thick white gloves and masks for protection, though the black and white vests they also wear are thought to be ornamental.

By all accounts they make substantial sums of money plying their trade, but slowly lose all colour in their skin and hair, then within a few years become weaker and weaker until they collapse. Rumour also says that after death, they themselves turn into undead, with a shadowed, striped, spotted form that breathes out thick clouds of doom.

Saturday, January 23, 2010

Ighalsk - release 0.1.13

I released Ighalsk v0.1.13 last night; it can be downloaded from its SourceForge project page here.

Here are the changes since v0.1.12:
* Can now add up stairs and corridors in the Level Editor. Corridors in particular were tricky since the editor (or some other class) needed to store the start point until the end point had been selected. In fact you can add corridors between any 2 points; the editor will add two corridors (one vertical and one horizontal) between those points.
* Walls are now only shown if seen nearby or remembered (if they have been seen before). In the previous release, monsters were only shown if they were nearby; this release is now more consistent between monsters and walls, though all treasures and stairs in a level are visible at all times ...
* Visibility (the Hero's map) is saved to file, so that a loaded game will have the same memory of walls as when it was saved.
* Refactored Monster Editor and Monster to simplify both by removing duplication - Monster Editor now uses the underlying dict that holds monster definitions more directly. Editing a monster's attack and resists are still special cases.
* Started moving methods from LevelViewer to LevelFormatter so that they can be tested.
* Added 15 new monsters, including Doom Merchant, Gloomhound, Lesser Mook, Huntsman Professor and Wool Golem. Renamed Zombie to Zythar Feeder; added Zythar Axeman and Zythar Deathbringer. I picture Zythar as semi-undead, crazed beings with gleaming green eyes; the Axemen wear black ribbons attached to their helmets.
* Added Monsters for level 4 of each quest. There are some monsters in this new batch of 15 that can't be encountered yet - I'm saving them for level 5 of the quests.

I've got a few features that I'd still like to add in before v0.2.0, as follows:
* Add functionality to the Level Editor to add rectangular rooms, circular rooms and their inverses (filled-in rectangles and circles of walls), zig-zag corridors and a shortcut out of the quest dungeon;
* Refactor the Monster Editor further to simplify the code, and extract editing attacks and resists to a new screen; then adding multiple attacks and possibly descriptions to a Monster;
* Add new damage types, in particular cold, lightning and poison - at this stage, poison wouldn't have the slow draining of health effect, but would be like any other damage type;
* Add Awareness and Stealth attributes and interaction, as a friend of mine suggested, so that some monsters can creep up on you if they've got high enough Stealth and you've got low enough Awareness ...

The Awareness and Stealth functionality would also allow invisible monsters, though I'd prefer to wait to introduce them until I've also added some kind of Detect Invisible power, which would have the effect of increasing Awareness for a time - it's only fair to the Heroes.

Wednesday, January 13, 2010

Ighalsk - Three User Stories

I've been trying to write a decent introduction to user stories, and it hasn't been working. Instead I'll just summarise them as follows:
* User stories describe what the software should do.
* User stories are written from a user's point of view.
* User stories are often used in agile software development (see e.g. here or here).

Here are 3 user stories for Ighalsk.

User Story A.

Tom feels the need for more, bigger and better monsters. He fires up the Ighalsk Monster Editor and creates a Plaid Dragon and a Blue Orc (starting from existing monsters and modifying stats appropriately). He tries them out and decides that yes, they add something to the game. Maybe Melissa would like them? He knows that she's already got the other monsters that he's created, so he just exports these two using the Monster Editor to a separate text file and emails it to her.

Melissa (a friend of Tom's and a fellow Ighalsk player) reads the email, saves the file, and imports the monsters - again using the Monster Editor. Next time she plays Ighalsk, Plaid Dragons and Blue Orcs might be lurking in one of the dungeons ...

User Story B

The Ighalsk website includes a page for uploading and downloading monsters. Each monster has a summary, a description written by its creator, and reviews posted by others. The Ighalsk community votes regularly on which monsters should be included in the next release, or the next bonus pack of monsters (downloadable separately).

User Story C

Cass stares blankly at the screen. YASD - those stupid Plaid Dragons of Tom's! Ah well, they're not official - she'll remove them before she plays again. Now, what sort of Hero to play this time? How about a Mighty Hero for a change? The good thing about starting a new game, she thinks, is that all Heroes have plenty of powers right from the start, which gives them lots of options in dealing with monsters. Though they can still die if they make the wrong choices ... And each sort of Hero calls for a completely different playing style, and a different choice of quests.

Saturday, January 2, 2010

Ighalsk - release 0.1.12 (and 0.1.11)

So I released Ighalsk v0.1.12 a few weeks ago (mid-December) but have only just got around to writing a blog post about it. And yes, I messed up again and needed to jump from release 0.1.11 to 0.1.12 almost instantly. (So 0.1.11 appears in the Subversion repository, but there's no separate download - the Level Editor doesn't work for that release.)

Here are the changes since release 0.1.10:

v0.1.12:
* Added an empty file in data/quests so that this directory will be included in a zip file. :/

v0.1.11:
* Updated the Monster Editor to allow deleting when entering names of Monsters, filenames for Monster Dictionaries, Monster comments and weapon damages (dice descriptions). There are different characters allowed for each type of data, with the loosest constraints for comments (where punctuation is allowed) and strictest for dice descriptions (where 0-9, d, and + are the only characters allowed).
* Monsters are now only visible when they are near the Hero, though with no line-of-sight; I'm assuming that the Hero has limited telepathy. Line-of-sight looks hard :/ so will come later. (Need to do more background reading on RogueBasin ...)
* Added lit squares - this shows the limits of the Hero's sight (telepathy), hence the areas of uncertainty (where the Monsters could be hiding). Needs tweaking a little ... Currently all walls on a level are visible - this will change as well.
* Added 9 new, more powerful and more expensive items of Armour - all are available in the Armour Shop. My current favourite is probably the "Hat of Serenity", which increases resistance to fear.
* Removed the dungeon not associated with any quest; this meant that Habitat is no longer used, so removed it as well. Hooray for simpler code!
* Added a basic Level Editor: currently this allows removing and adding walls, saving and loading levels.
* Characters saved with release v0.1.9 *can* be loaded using this release. (Yes, I have tested this.)

EDIT: The latest version can be downloaded from here.

Sunday, December 13, 2009

Ighalsk - The Nature of Illusions

Lord Apathy has a number of different types of illusions serving him - some on loan from other Lords of Illusion. These include "Embarrassment" illusions, so called not because they embody embarrassment themselves (and somehow infect those they encounter), but because they induce embarrassment in others. With disparaging comments, a haughty stare, and eye-rolling, such an illusion conveys a strong impression that your appearance, actions and indeed thoughts and plans are ridiculous, inappropriate and just plain wrong. It is an illusion, but the feelings of embarrassment that it causes are real.

Another type of illusion at Lord Apathy's command is "Paranoia". Again, it is not itself paranoid, though it may pretend to be. Instead, it induces paranoia in others. With whispered words, raised eyebrows and significant pauses, it insinuates that you have been betrayed and everyone is plotting against you, waiting for your slightest mistake to pounce.

These illusions can be destroyed (unraveled) in several ways; they are resistant to physical weapons, but most vulnerable to a Philosopher's use of reason.

Monday, November 30, 2009

Ighalsk - Tests and Time

At a recent checkin, there were 486 tests defined for Ighalsk, which took 31.8 seconds to run (on my old laptop: 500 MHz, Win98). I'm happy with the number of tests, but would like to decrease the time somewhat (still too many file accesses).

A Google spreadsheet showing some numbers and times for different revisions is available here. I don't know why the time went down to 9 seconds and back up again almost immediately, but I think the dip from 23.3 seconds to 20.9 seconds was just after some test refactoring to speed up tests - probably replacing file I/O with StringIO (see previous post).

Also, I now have a Twitter account here - any updates to these numbers/this spreadsheet will probably be posted on Twitter first (and possibly only). I'm working on increasing the popularity of #roguelike ...

Thursday, November 26, 2009

Ighalsk and Motivation

Ighalsk is not the first software project that I've worked on at home, or even the first game. But it is easily the most mature and furthest along. With earlier projects, I've had a great idea, started working on it, got a few things done, and then my enthusiasm has slowly worn off and I've given up.

With all my projects, I've only had an hour or two to spend on them in a night, and some nights that dropped to zero. Often in this time I'd get started on a task, but wouldn't have time to finish it - I might find a bug, or the task might be more complex than I'd planned for. Then I'd need to wait a day or more before I could work on it again. This was frustrating, and it made me feel like I was going very slowly.

With Ighalsk, I've generally been able to get something finished each night. Part of the reason is that I'm using Test-Driven Development (TDD) almost all the time. This means that my work cycle is usually: write a new test, run it to check that it fails, write just enough code for it to pass, check the changes in. A lot of the comments that I make when I check in changes start with "Added test + implementation of ..." Similarly when I refactor, each refactoring is small and I test it before I go further, so that when I do make a mistake, I can go back and fix it easily. It helps that the full set of tests runs in less than a minute (though I still want to speed them up further over time).

TDD has meant less bugs - or more to the point, that it's quicker and easier to fix bugs - and frequent refactoring (not to mention using Python!) has meant simpler code. Both of these factors have also helped me finish tasks more quickly and feel like I'm making progress.

Motivation has been less of a problem lately; I've got to the point that I have a playable game, where it's easy to see how any new functionality can fit in and will be usable immediately.

Doubtless it's also helped that I don't have any new games that I want to play at the moment - though often ProgressQuest is running in the background while I work on Ighalsk, and I've started playing FreeCol years and years after I last played Colonization ...