Sunday, December 8, 2013

Infinite diversity in infinite combinations? Not so great after all.

Suppose there were, as some scientists have proposed, an infinite multitude of parallel universes, each differing from the next in only the minutest detail. For instance, in one universe, my favorite color is red, while in another, my favorite color is blue, and in a third, I still can't make up my mind.

This might sound like a wonderful thing - it means that anything truly is possible. But is it really all that great? I think that if such a thing were true, it would mean that we actually have no free will. Because all the choices we make would be preordained at the creation of our universe, our actions would have no meaning - for every choice I make, my counterpart in another universe would make a different choice. For every time I say "yes" when my sister asks if I want to play a game, there's a universe where I say "no". There's also a universe where I walk off silently, a universe where I punch her in the face, and a universe where I spontaneously combust, then teleport to Mars. What kind of freedom is that if I'm constrained to do only what's within the parameters of our particular universe?

Now it could be that there are so many universes that there's room for more than one identical copy of each. That would allow for free will, and it would be the ultimate expression of God's creative power. But is that actually a good thing? A simple look at history would say: almost certainly not. You thought the Holocaust was bad? Multiply that by infinity! Of course, there would also be universes where the world was at peace all along, and unicorns frolicked among the verdant truffula trees. But would God actually allow an infinite amount of human suffering? Somehow I doubt this; it seems beyond cruel, even if he can make it up in the end.

So, I'd have to say that if there are multiple universes (whatever exactly that means*), there are only a finite number of them, because if there were an infinite number, either life would be utterly meaningless or God would be infinitely cruel.

*What's "multiple universes" mean? Well, I suppose that a "universe" can be defined as a self-contained region of spacetime to which there is no entry or exit. So, obviously, the universe we live in is one, as there's no way to enter or escape it. Also, any alternate dimension is a universe, as we can't get there, and whoever lives there can't get here. A black hole, though, while it might appear to be a universe, is not, because it has a connection (albeit one-way) with the outside world. Likewise, a warp bubble as envisaged by Star Trek is not a universe, because even if it is isolated spatially from the outside world, it is still connected via time at the moment the ship enters or drops out of warp.

Tuesday, November 19, 2013

Why I love Mega Man (and Rogue Legacy, and Zelda, and Metroid)

This morning I was playing the excellent indie platformer Rogue Legacy, and something occurred to me - there's one way in that Rogue Legacy is like one of my favorite series, Mega Man. It's that both have steep difficulty curves early on, which level off as you progress, with occasional spikes throughout the game.

See, in Mega Man, you start off with pretty much nothing. All you have is your wimpy (except in Mega Man 5) mega buster, and maybe a few special moves like a slide or a Rush Coil. You have to claw your way to the top of the robot pack, defeating robot master after robot master, growing stronger all the while, until you're finally ready to take on Dr. Wily. It can be insanely difficult early on, especially for someone new to the series, and I'd have to say that the game actually gets easier as you progress - at least until the final stages when you confront Wily!

In Rogue Legacy, you again start off with pretty much nothing. 100 HP, 100 mana, only a few classes to play as, and no special equipment. Throughout the game, you can find and buy upgrades, which you get to keep even after your character dies and you start a new one (hence the "Legacy" in the title). The game, like Mega Man, is brutally difficult at first, but once you get used to the controls, and upgrade your HP, mana, classes, and equipment, it becomes... well, only moderately difficult. (There's actually an item you can equip that depowers enemies at the cost of reduced gold drops!)

So why do I enjoy these games so much? Is it because I'm a masochist? Well, no, I'm not a masochist. (At least, I don't think I am!) I think it's actually because there's a sense of accomplishment that comes from pressing on and finally defeating the initial challenge of the game, making my character powerful enough to tackle the rest of the game. Then when I get to the grand finale, and the difficulty ramps up again, I can really appreciate how much I've progressed.

To take an example from one of Jirard "The Completionist" Khalil's favorite games (and one of mine as well), in Mega Man X (which he does an excellent review of in his first episode of his YouTube series), at the beginning you as X are pretty wimpy, and have no hope to defeat Vile (though to be fair, he was riding in a mech...); you're saved by Zero, who says that someday you may be as strong as him. Well, sure enough, at the end of the game, Zero gives you his weapon (which lets you charge up any weapon you have captured from a boss, which is totally awesome)... but then Zero gets into another fight with Vile, and blows himself up to destroy Vile's mech so you can take out Vile himself. And sure enough, the fight with Vile is challenging, but not impossible. It's awesome to be able to fight for Zero, just like he fought for X in the beginning of the game, using all the new powers you've acquired throughout the course of the game!

Another series which has this sort of inverted difficulty curve is the Zelda series. In some of the games (such as the original Legend of Zelda, Ocarina of Time, and Wind Waker), you don't even start with a sword! Of course, there's not much actual danger at that point (except in the original Zelda), so that doesn't really count. But once you start exploring, you'll find yourself confronted with seemingly insurmountable obstacles, such as those annoying centaurs that shoot deadly sword beams at you and take way too many hits to kill in the original game. Eventually, though, you'll find some item that makes you start to wonder if you've somehow become God incarnate, because it makes dealing with the lesser challenges a complete cakewalk. Master sword that does 4x normal damage? Check. Blue ring that halves all damage taken? Check. Double hookshot that lets you zip around the sky level like Spider-Man? Check. Once you have these items in hand, you realize that maybe it's time to take on some of those obstacles that previously seemed impossible - and what do you know, they're not so hard after all!

And then there's Metroid. You start with 99 max health, a wimpy blaster that (in the original at least) doesn't even shoot all the way across the screen, and no advanced weaponry like missiles or bombs. But when you get to the end of the game, you can have over 1000 health, a wave spazer plasma ice beam that freezes and/or obliterates multiple enemies at once, 100 missiles, bombs, a dozen or so each of super missiles and super bombs, and the screw attack. Yeah, the screw attack. Seriously the most overpowered item in all of gaming. (Except in Metroid Prime 3; there it kinda sucked.) It lets you literally jump through enemies to kill them, as if they were balloons waiting to be popped. And you still get health and missile pickups! Oh, and did I mention you can use it repeatedly in midair, allowing you to kill lots of enemies at once, or just air-climb up to high platforms? And yet still, all these weapons aren't quite enough to defeat Mother Brain (at least in Super Metroid) - you still need the hyper beam!

Come to think of it, the inverted difficulty curve isn't all that uncommon. It's especially prevalent in roguelikes such as Angband, where progress is measured not just in terms of character stats and equipment, but also in terms of player skill, as characters are expected (as in Rogue Legacy, which draws inspiration from roguelikes) to die like Chicagoans vote - early and often! Permadeath games in general, such as The Binding of Isaac and FTL, don't necessarily qualify, though, as they usually get much harder as the player progresses to compensate for the lack of length. I included Rogue Legacy because your accomplishments carry over from one game to the next, making future playthroughs easier, and Angband because the difficulty curve, while sloping upward, does so gently, what with the game's ridiculously long length; the real difficulty comes from mastering the game's mechanics and strategies. Not that games with upward-sloping difficulty curves are less enjoyable than games with downward-sloping curves with the occasional spike; each style has its own unique charm!

Friday, May 31, 2013

The 4 X's of game enjoyment, or "Hi, my name is Ed, and I'm an explorer." ("Hi, Ed!")

In 4X games, such as Space Empires and Master of Orion, my favorite part of the game is researching new technologies for my empire. I especially like when the tech tree is randomized from game to game, as in Sword of the Stars and Master of Orion (if you're playing an Uncreative race).

On a (seemingly) unrelated note, I don't like to play roguelikes that are not under active development. Somehow they seem "stale", even if the game mechanics and UI are perfectly polished. I'd play Dungeon Crawl Stone Soup over Nethack any day! (Well, that's not the only reason, but you get the point. I'd use ADOM in place of Nethack since it's more polished, but, well, ADOM is kind of under active development again...)

It never occurred to me until now, though, that these two concepts could be related. I guess you could divide people into 4 categories (named after the 4 X's) based on how they get enjoyment out of games.

Explorers (that's me) enjoy playing games to discover new things - new game mechanics, new unlockable features/characters/weapons/whatever. They tend to be completionists, although explorers may also complete a game 99%, then decide that that last 1% is too hard to bother with.

Expanders are also completionists, but unlike explorers, 100% completion is their primary objective. An expander will not stop until every last bit of unlockable content is unlocked. They don't really enjoy actually playing the game as much as explorers do - instead they get a huge adrenaline rush at the end when they finally complete everything.

Exploiters are minmaxers. Not content to have a +10 sword of awesomeness, they will find loopholes in the rules to get a +11 uber miracle sword of awesomeness and slay everything. They draw enjoyment from the process of devising these schemes, and also somewhat from laying the smackdown on opponents with their cool toys.

Exterminators, of course, are in it to win it. An exterminator is not happy unless he eradicates every last one of his opponents. Exterminators might also like to taunt their opponents and kick them when they're down. They absolutely hate losing, obviously.

Actually, I guess you could pretty much equate these categories to the "classic" 4 categories of gamers:

Explorers = Real Roleplayers
Expanders = Loonies (the weakest correlation of the bunch - hey, someone had to be Loonies!)
Exploiters = Munchkins (obviously)
Exterminators = Real Men

Maybe I should get into some D&D sometime, if I'm that kind of player...

Friday, March 15, 2013

Miracles vs. Magic: What's the diff?

Years ago, I remember being annoyed at the depiction of religion in the computer game Space Empires IV. Even though I was an atheist at the time, I somehow saw it as almost offensive that you could just build religious buildings and get some sort of supernatural benefits from them. So when I went to make my own mod for Space Empires IV, I wound up explaining this away by treating the effects of the buildings as, well, basically magic in the descriptive text. "It's so because we believe it to be so", in other words - the placebo effect in action! That was probably even more offensive to people who were actually religious, though...

But then if religion isn't magic, how do we explain miracles? I think the answer is clear - it's divine intervention with the laws of nature. What about actual magic, though? Is it real? And if so, where does it come from?

If it is real, I'd have to say it's probably Satan's attempt to mimic God's miracles. We see this in Exodus, where God, through Moses, sends the ten plagues upon Egypt; the Egyptian magicians in turn try to duplicate them (why they would want more plagues, I don't know, maybe they just wanted to show that they were powerful magicians?) but their attempts are nowhere near as impressive as God's. We also have Elijah's competition with the priests of Ba'al; Elijah is so confident that God will set his offering ablaze that he douses it with water first to prove that it really was God and not some parlor trick! The priests of Ba'al of course are unable to duplicate this marvel.

So what does this say about portrayals of magic in games and media? Do we need to stop playing D&D and reading Harry Potter because they're "satanic"? I don't think so. People are capable of telling fantasy from reality, and there's nothing wrong with a little escapism so long as it doesn't consume one's life. Does playing Grand Theft Auto turn people into criminals? Does watching Jackass turn them into idiots? No, it's just entertainment. Mostly harmless, as Douglas Adams would say.

Back to Space Empires IV, then. What's up with the religious buildings providing wide-ranging effects such as bonuses to ship combat effectiveness (War and Death Shrines) and renewal of planets' natural resources (Nature Shrines)? I'd have to say that it's simple - Space Empires IV is set in a polytheistic universe, so there are actual gods answering the prayers of the worshipers at these shrines. But the gods are unnamed, for whatever reason. Maybe someone will make a mod which expands on the religion system, naming the gods. Maybe someone will even make a mod for Space Empires V which has scripted "religion spreading" events, sort of like Civilization IV and V. (You couldn't do that for Space Empires IV because it didn't support scripting.) Who knows? But again, it's just escapist entertainment.

7DRL 2013 day 7: ITS OV4R!!!

Well, I finally completed my 7DRL for this year You can go and download it here:

http://edkolis.exofire.net/triquest.php

Things that are new since yesterday:

  • Added a user manual
  • Added victory conditions (as yet untested, the game's kinda hard!)
  • Added "memory sight" (you can see terrain that you've already explored on the minimap)
And as always, you can check out the source code here:


Enjoy!

Thursday, March 14, 2013

7DRL 2013 day 6: Itemized Deductions

Today I implemented items for TriQuest. Since this is a 7DRL and I wanted to get things done quickly, though, I took a slightly unconventional approach to the inventory. Instead of being able to carry around duplicates of all your items, each item type just has a flag to say if the party has found it or not. If it's been found, you can equip it; otherwise, you can't until you find one. Also, consumables (health and mana potions) can't be stored; they're used immediately as soon as you step onto the tile containing them. If you want to save them, you'll have to avoid stepping on that tile until you need them!

That said, there are a few interesting inventory mechanics. For instance, there are two kinds of health and mana potions you can find. The "pack of small potions" restores the health or mana of all party members by 20 points, while the "large potion" restores the health or mana of the most injured or depleted party member by 60 points. Also, no item is designed to be superior to any other item; they all have their strengths and weaknesses. (Though I might want to increase the defense penalty on the warrior's heavy weapons since I bumped up the positive stats of just about everything during testing to make the midgame more survivable! And I still haven't found the final boss yet - I hope he's at least theoretically beatable, not to mention extant!)

Again, no screenshot today, because not much has changed visually - all you'd see different is maybe a blue % sign indicating a pack of small mana potions lying somewhere on the map!

Wednesday, March 13, 2013

7DRL 2013 day 5: Skilled Labor

Today I added skills to TriQuest. Skills are basically special abilities that a hero can use that affect a whole formation. Most of them are used against enemies, although the Priest's Heal Wounds skill is used on the heroes, naturally enough.

To use a skill, first you need to maneuver your party so that it is directly adjacent to and facing whatever enemy formation you want to use it against. Then you press the "s" key to bring up the skill menu. Next you choose which hero is going to use his skill - only one skill can be used per turn, even though there are three heroes. Finally you choose which skill the hero is going to use - each hero has two to choose from.

No screenshots today, since the game hasn't really changed much - OK, I did add a display of how much mana your heroes have next to their health (mana is used to perform skills), but that's nothing to write home about! Instead, I'll describe each of the skills, though a short description is also available in-game in the skill menus.

Warrior skill 1: Omnislash - This attack hits all targeted enemies with a physical attack which never misses, regardless of range.

Warrior skill 2: Berserk - This skill temporarily increases the Warrior's Attack and Body stats, at the expense of his Defense and Mind stats. Using it again while it is still in effect will extend the duration.

Mage skill 1: Fireball - This attack hits all targeted enemies with a magical attack which never misses, regardless of range.

Mage skill 2: Slow - This skill permanently reduces the speed of all targeted enemies by half. Note however that it only works once on each target; casting it twice on the same target will not slow it any further. It would be wise to save some mana to use this on the final boss...

Priest skill 1: Heal Wounds - This skill heals some HP to all of the heroes. Heroes with more Body stat will be healed more, though, so it will be hard to heal the Mage and easy to heal the Warrior.

Priest skill 2: Banish - This skill teleports the targeted enemies to a random location. Handy for when you're surrounded!

Tuesday, March 12, 2013

7DRL 2013 day 4: The wombat of combat

Day 4, and I've got basically a fully functional game! Sure, a few pieces are missing, but they're not essential to having a working roguelike. (Though it would be nice to have some sort of victory message when you defeat the final boss... not that I've actually found him yet! Probably some sort of healing potions would be nice, too, so you can survive long enough to find him...)

So, combat. Formation definitely matters now. Place the heroes you want to do the damage dealing (and the damage receiving) near the enemy; place the others (or the ones with the longer ranged attacks) in the back. You can attack someone who's out of range, by the way - you just take a rather large accuracy penalty: you have a 1 in 3 chance to miss for each subtile out of range that the target is! But the same penalties apply to monsters, too... except that for some reason the monsters sometimes like to target heroes in the back instead of in the front! Not sure what's causing this, but it seems to be related to the way you're facing, or maybe they way they're facing...

Since now you have hitpoints to keep track of, I also added a stats box, which shows the stats of each hero in your party. Later I plan to let you look at enemy formations to see their stats, too.

Here's a screenshot of the game - not much has changed, but if you're actually playing it (which you totally can, in case you forgot - just check out the code at https://bitbucket.org/ekolis/triquest) you'd notice lots more messages in the log pertaining to combat!


Oh, and one bug that I think I'll leave in as an interesting game mechanic - monsters will literally kill each other to get to you! If you're fighting one group of monsters, and another group of monsters that's farther away sees you, they will begin fighting the monsters you're fighting, from the rear!

Monday, March 11, 2013

7DRL 2013 day 3: Monsters! Raar!

Now TriQuest has monsters! Unfortunately, they just appear as ASCII symbols, and since there's no combat besides moving onto the monsters to kill them (or being moved onto yourself and dying), you can't really tell what is what. They do have names and stats, I swear!

I also added the formation change mechanic I'd alluded to yesterday. You can press F to change formation; then you're prompted to place each of the characters in turn using the numpad. Doing so consumes a turn (don't do it on rough terrain or it will cost more time), but if you change your mind you can press F again to cancel without wasting a turn.

Here's a screenshot of the game with some monsters:


The blank area up top is the message log. I couldn't capture any messages because it seems that pressing a key (such as to take a screenshot) clears the log, even if the key is not an actual game command. Oh well.

Tomorrow, combat! I've got some interesting ideas for how I'll do that - I've already got some stats set up for the heroes and monsters, and basically fighting will involve rolling dice based on a pair of stats, one for the attack type (physical or magical), and one for the role one is playing in combat (attacker or defender). Attackers will use the attack type that is likely to inflict more damage, so (for instance) the mage will only attempt a physical attack if the target has a high magic stat. And then there's range - attacks will be degraded based on the range to the target (in subtiles), so that's where the formations come in! Just like in Final Fantasy, your characters will be able to rush to the front lines to inflict more damage, or retreat to the back to lessen the damage they take - except that enemies will come from all four sides, so the lines of battle constantly shift!

Sunday, March 10, 2013

7DRL 2013 day 2: Heroes on the move

Well, now I've got some heroes in the game, and you can move them around on the map. Since this is a tactical game, and it would be a pain to have to adjust your formation every time you want to fight monsters coming from a different direction, the game has two movement modes: normal and strafe. In normal mode (just pressing the arrows), the formation will automatically rotate to face the direction you pressed if you are not already facing that direction; if you are facing that direction it will just move there. (Note that rotation costs a turn - don't get flanked!) In strafe mode (shift-arrows), on the other hand, your formation does not try to rotate when it moves.

Here's what the game looks like thus far:


I also wanted to add the ability to rearrange your formation today, but I'm getting a bit sick of programming for now. Maybe I'll do that later this afternoon. I ran into a lot of issues with slow rendering; it turned out that just rendering a 100x100 map with each tile being a 3x3 grid of characters is actually pretty slow! So for now I'm just rendering stuff in line of sight. Eventually I'll have to add a proper fog of war, and find some other way to clip stuff that you've seen before but that's currently offscreen. Or I could just show the fogged-but-previously-seen tiles on the minimap, and not on the tactical map...

Saturday, March 9, 2013

7DRL 2013 day 1: I'm the map, I'm the map, I'm the MAP!

Well, I got map generation working today! It wasn't all that hard, since I'm doing a natural overworld style map instead of a dungeon, so if things aren't lined up perfectly - hey, it's nature!

Here's a screenshot of what I've accomplished so far. It looks better than I'd anticipated!


Tomorrorow I'll implement heroes, so that will require subtiles, since the heroes will be traveling together. I'm not sure if I'll do the subtiles today or tomorrow - just have to see if I feel like working on this some more later on today! Should be pretty simple, since I'm not planning on doing anything like allowing different subtiles within the same tile to have different terrain. Just a 3x3 array or something!

Friday, March 8, 2013

7DRL 2031 day 0 redux: Bitbucket!

I've created a Bitbucket repository for TriQeust:

https://bitbucket.org/ekolis/triquest

Check back tomorrow and onward to follow my progress!

Thursday, March 7, 2013

7DRL 2013 day 0: Intro to TriQuest!

So I'm going to be participating in the 7DRL challenge again. If you don't know what 7DRL is, it's 7 Day Roguelike, where "roguelike" is a genre of single player adventure/roleplaying game with minimal graphics and intricate gameplay mechanics. The goal of the 7DRL challenge is to write a roguelike in 7 days. No prizes or anything (apart from some neat logos you can put on your blog or whatever), but it's fun to build a game and play the games that other folks build. I've participated four times before, and succeeded twice; you can see my completed games on my website:

http://edkolis.exofire.net/decimation.php - Decimation, my 2009 entry, a very simple game where you're the number zero and you use math to eliminate the other numbers.

http://edkolis.exofire.net/smasharena.php - Smash Arena, my 2010 entry, an arena battle game where you try to knock enemies out of the arena; the more you damage them, the further they fly when you hit them, sort of like in Super Smash Bros.

I also participated in 2008 (tried to make a game called Rogue Battalion that had driveable vehicles, but got in over my head since it was my first time) and 2011 (tried to make a game called Into the Darkness that was a metaphor for spreading the Gospel, but was too busy with work). I didn't participate in 2012 because I didn't have any good ideas for games that year.

But this year I've got an idea! A bit ambitious, but if I plan it out, I think I can accomplish it. My idea is called TriQuest, and basically it's a hybrid roguelike and turn based tactics game. Instead of controlling one character, you control three - a Warrior, a Mage, and a Priest. Now there have been other roguelikes where you control multiple characters, but these have always either had you controlling one character directly, with an AI controlling the others, or required you to move each character in turn. My idea simplifies the mechanics a bit, while adding a new level of tactics to the genre.

You know how in roguelikes, it's one character or monster per tile? Well, in TriQuest, this rule no longer holds. Each tile will be split up into nine subtiles arranged in a 3x3 grid (hmm, like the numpad? how convenient!), and you can arrange your three heroes in a formation in any way you like (using the numpad of course). Monsters, too, will appear in formation. You might run up against a squad of up to nine goblins!

I haven't got all the mechanics worked out quite yet, but I do have a few ideas on how they will work. For instance, I think that weapons will have a "length" or "range" attribute. This range will be measured in subtiles, and attacking a monster outside of your weapon's range (say, from the back of the formation) will reduce your accuracy and/or damage. Of course, hanging out at the back of the formation will protect you from monsters' attacks in the same way (assuming they don't have long-range weapons), so it's sort of like Final Fantasy with the front and back rows. Except that monsters can attack you from all four sides, so you'll have to adjust your formation on the fly to deal with threats from every direction! I'm thinking there might also be an additional penalty (or maybe even inability to attack, but also inability to be attacked except by area of effect spells) for hiding directly behind another character.

Also, I was thinking of having not the traditional "dungeon levels", but instead a sprawling Zelda-style overworld with a gradient noise mapped "threat level", with the final boss lurking at the maximal point on the noise map. You might be fleeing from some level 3 monsters, and unwittingly stumble into a level 4 zone... eek!

So, what's the plan? Well, here it is:


  1. Saturday: Map generation
  2. Sunday: Heroes and movement
  3. Monday: Monsters
  4. Tuesday: Combat
  5. Wednesday: Magic and skills
  6. Thursday: Items and weapons
  7. Friday: Polish, testing, and bugfixes
Oh, and technically I guess this post should be titled "day -1", since today's Thursday, but whatever... :)

Monday, February 11, 2013

On Error Don't Explode

Everyone in the programming world mocks VB's old On Error Resume Next feature, saying it led to "cowboy coding". But you know what? The old horse had its merits!

The next time you're frustrated by Java's checked exceptions, think what fun it would be if you could write some code and not have to catch every single eventuality that whoever designed your API could think of... seriously, do I really need to catch a MalformedUriException when I'm just passing the constant string "www.wikipedia.org" to the Uri class constructor?

.NET, while it doesn't have checked exceptions like Java, has problems of its own. It's like a crotchety old uncle who is hard of hearing, so if you don't say what you want exactly right, it spews a stream of profanity in your face. It's almost worse than Java, since (although it's easier to code), you live in constant fear of runtime exceptions crashing your production code, so you are forced to spend all your time writing unit tests (not that those are unnecessary in Java, but they're more needed, in my opinion, in .NET).

And then there are the dynamic languages. These are the most flexible of all, so naturally they need tons of unit tests. You can't even assume that a variable you reference actually exists in some of these languages! However they are quite a bit more flexible when it comes to data structures. While Java and .NET will scream at you if you try to add a key to a map/dictionary and the key is already present, or conversely if you try to change the value of one that's not actually there, Perl (for instance) will happily overwrite the existing key when you add, and is glad to insert the one that's not there for you. (This is primarily because there is no distinction between "add" and "change value" for Perl hashes, since both are simply assignments, but that's beside the point.)

So where can we find a happy medium? On Error Resume Next is too lenient, but Java's anal-retentiveness is too strict. .NET and Perl take various stances in the middle, but I don't think either is optimal. What we need, I'd have to say, is actually a rethinking of the whole exception handling mechanic.

Instead of specifying in our code every time we want to handle an exception, why not assume that exceptions are meant to be handled? It's the best practice, so why shouldn't our programming languages adapt to it? The only thing left is to specify how the exceptions are to be handled.

There are several ways to handle an exception:

  • ignore it
  • log it and continue
  • log it and terminate
There are of course more than these, but these are the main ones that are "sane" - sure you could terminate without logging it, but that's not very helpful!

So, the idea is, in each source code file you would specify a default exception handling behavior, which could then be overridden in individual block scopes. For instance (in pseudo-C#):

// This class is very important to the global economy! If it produces incorrect results the world is doomed! We must stop it at once if it errs even slightly!
@Catch(typeof(Exception), CatchMode.LogAndTerminate)
class ImportantBusinessLogic
{
    public static void Main()
    {
        DoImportantBusinessStuff();
        // OK, we can be a little more lenient here; sometimes the web service we are using returns nulls instead of actual data; in that case we just use the cache.
        @Catch(typeof(NullReferenceException), CatchMode.LogAndContinue)
        {
            ComputeSomeInterestRates();
        }
        SaveTheGlobalEconomyFromRuin();
    }
}

Good idea? Bad idea? Anyone care?

Repurposing this blog

I haven't written anything here in a while, but that doesn't mean that God hasn't been working in my life. I just haven't taken the time to write about it here. Maybe because I don't think anyone is actually reading? If you're out there, say something!

Anyway, I'd like to start writing again, but I'd like to make this more of a general purpose blog, so I can post whatever I want here that's too long for a Facebook status.