I’m just not cool enough

Well, I was told I need a “cool sites” section or something there. Fair enough. I’ll work on that. This coming from the same man who used the term “blog” correctly in a sentance today mind you, so it bears some weight. The jury is still out on the Honky Tonk Geese though. I did manage to struggle through my disshelved existance of stuff today and found a good pair of warm bear slippers (Pooh style of course). No, they don’t “RRRROAR” when I walk. That’s just wrong on so many levels. They do keep my feet happy so paired with my brand new $14.95 Merckley toque, life is just grand. I think they’re coming to work with me tommorow. I can be so much more productive in a comfortable pair of slippers.

I have discovered some nice PHP stuffy to put on the site here and not only make updates more easy for those that have no time to play building websites (me) and those that want to get content out to the masses that care (again, me). Actually looking at the web logs, either some spammer is hitting my site with a denial of service attack (yeah, that would be useful as I have 0 content here) or people are actually coming here. For whatever reason for, I know not, but they say if you build it they will come. They came. I’m still building it. Something not quite right with that logic.

Walked home tonight (20 minutes, -30 degrees, you do the math) after what seemed like a pretty tame cab ride this morning. The driver however was a bit whacked. As we raced toward the office at 4am this morning, I had to suffer through a blaring rendition of Mandy from Barry Manilow, on AM radio no less. If that’s isn’t pain I don’t want is (well, listening to Honky Tonk Geese over and over right now comes a close second). I still think the walk in this morning would have been less hardening to my inner body parts.

Posted in CDX

Brrr…. it’s cold in here

I don’t know about you, but my cold tolerance is non-existant when the temperature outside reaches below what it is on Mars right now. Yup, good ol’ Calgary clocked in at -35 this morning at 3 when I got up (don’t even ask why I was up at that hour, my sleep patterns are akin to those of a lemur). With the wind chill it bumps it up (or rather down) to -44. That’s just unfit for humans to wade through, no matter what coverings they have on their bodies. No wonder it took so long to discover this country!

I have been slightly distracted by various things so unable to get my Sims work completed. It’s the butterfly effect for me. The butterfly flaps past (in this case, gobs of source code I had kicking around that was just begging to be looked at) and off I go with a crusade in mind. Anyways, it’s a diversion for me from the boring stuff writing Sims tools. Yes, programming can get boring so I have to have some time to play. I am updating my personal site, bilsimser.org, on a regular basis just because I can’t hold peoples attention here for more than a few nano-seconds and there really isn’t even going on in the Sims world (well, outside my realm of it) to keep you entertained every day. So over there I blather on about whatever rocks my boat because I don’t intend to have a captive audience. Anyways, feel free to drop by and see what’s happening in my gray matter if you choose. NOTE: As I don’t cater to anyone on my personal site, it’s not fit for kiddies. There’s no porn there (I wish) but I don’t constrain myself like I do on other sites where age may be a factor. Caveat emptor.

I’ve been asked a few times if in the updates to the tools, will there be a .NET version. My reply is pretty basic and universal. No. Don’t get me wrong. It took me awhile, but I’m hooked on the .NET thing. When you peel back the covers, there’s a nice framework there and it’s been put together with some smarts (some, Microsoft still has to learn that one ring does not rule them all, especially when it comes to user controls). I use it daily at work building .NET web apps but I really don’t see any benefit for the desktop user. There’s no real improvement on a fat app that would justify anyone installing the .NET framework and I really haven’t seen any .NET apps that are worth it. Some day when there’s some kind of object hosting service out there, maybe it’s value added to have .NET and expose Sims functions through web services, but until then you’re stuck with a bunch of big fat clunkers that work pretty good.

I haven’t got the commenting system working 100% correctly here, but it is updated and running now (instead of producing nasty JavaScript errors). The service (formerly known as BlogSpeak) has been moved/migrated over to another one now. There’s some adjustments to make but it’s pretty much working. Thanks for the feedback as that does keep the creative juices flowing here.

Posted in CDX

Brrr… it’s cold out there

I don’t know about you, but my cold tolerance is non-existant when the temperature outside reaches below what it is on Mars right now. Yup, good ol’ Calgary clocked in at -35 this morning at 3 when I got up (don’t even ask why I was up at that hour, my sleep patterns are akin to those of a lemur). With the wind chill it bumps it up (or rather down) to -44. That’s just unfit for humans to wade through, no matter what coverings they have on their bodies. The forcast courtesy of Yahoo. Today: Bitterly cold. When the weather guys use the term “bitterly” they’re not just cashing on those 25 cent words for showmanship. No wonder it took so long to discover this country!

I’m still wallowing in the BBS stuff. Now of course I’m stuck coming up with ideas. Gobs and gobs of source code, so many options and too many decisions and can I make just one? Without an active community out there it’s hard to gauge what people are doing. Let me rephrase that. There’s no active voice for what seems to be an active community of users. There are hundreds of BBS systems out there, some with thousands of users and dozens online at once (for example, x-bit.org). While that may sound pathetic compared to the thousands of hits a website gets, these people are those that will stay around for more than a nano-second and actually contribute content. Trouble is that while there’s plenty of activity, there’s barely a peep being said on any BBS oriented newsgroups that are out there so all you have on places like alt.bbs.sysop is spam (and we all know how great that is). With nobody talking about what’s hot, what’s not, and all that jazz it’s hard to figure out what is in the public eye and thus, what you shift your efforts to. Oh well, it’ll come to me eventually.

At least the geeks at work look like they’re still alive and kicking. John got his proverbial ass kicked in a Warcraft III tourney. Of course now I just have to pull out my copy of the game and hook up to see how much of a wuss he really is (although I’m no expert when it comes to the game). He’s the only one that’s updated his site since I joined the geekring at work, so at least there’s hope for that boy yet.

Posted in CDX

Too much source code… like that’s a bad thing?

I spent most of the day inside going through about 15,000 files (500mb) of source files for old stuff that I’ve had for years. This is either old BBS doors I wrote, MBBS/WorldGroup modules I created, comp.source.games files I’ve collected and a ton of old MUDs in various stages of disrepair. The exercise was to weed out stuff that I could take and write new BBS doors or new WorldGroup modules out of. Yes, I’m still ranting on the BBS scene and still think it’s a viable platform. I’m just looking to breath some new life into what some may consider a dead art.

One of the neat things that came out of this excerise was trying to put together an ANSI version of curses. Curses is an old UNIX library that would allow you to define windows and draw text all over the screen (terminal mode only, no fancy graphical stuff). It was ported to the PC as PDC (Public Domain Curses) a few years back so you can take any curses program and recompile it to run under Windows now (natively). There’s some work to do if the original program uses other UNIX calls like pipes and forks or something, but most stuff ports pretty cleanly. The problem is that it uses direct screen writes to interface to the Windows console API so there’s a lot of rewrites to do if you want to output the stuff to an online user via a BBS which uses ANSI escape commands. I think I almost have a stripped down ANSI curses ready that will do the same thing as it does in a console window, but now you can write BBS games with it. I’ll put some games together on my test system for trying this out shortly.

Of course everyone just calls me crazy for liking these old text based games. I like blowing up guys in Unreal Tournament as much as the next guy but text games are great to just escape for a few minutes and go off rummaging around in a level of Rogue or NetHack.

Posted in CDX

Gaining momentum

I must say that I’m spending more time with my computer, and not in the biblical sense. I had this burst of energy at the beginning of the year, made some promises to myself to complete what I start, blah, blah, blah and thought for a moment that things were going to flame out like they had. Maybe it’s lack of sleep, maybe it’s too many reruns of Twilight Zone, maybe it’s someone someone slipped in my Sprite but I am somewhat refreshed and revigorated now and going like a madman on this thing we call the Internet.

Project updates are underway. I talked to Don Barr at WorldGroupware so he’s sending off a new version of WorldGroup to me to get back to working on modules. I’ve been on-again, off-again with the whole BBS thing but Worldgroup is a good product. Sure, the marketing guys are assholes and have no idea what they’re doing and from a cost perspective, a hobbyist running the system really can’t afford the software and should look to something like Synchronet instead (free vs. $1000, hmmm… let me think about this). All in all, it’s still great to write text based games for Worldgroup and I’m going to keep doing, whether people download/use/buy/whatever them or not. Never let it be known that I would make any kind of sound business decision.

In any case, once I get the new system I’ll get my demo site back up and running with the modules that I have squirreled away in the source code vault. Don is getting whatever modules they have available to me and I’ll be GPL’ing them and either releasing them here, on SourceForge, on the WGW site, any of the above or all three. I’ve already done this with Galactic Empire (well, Mike Murdock did it and I just took over the maintenance so kudos to him for starting the ball rolling and his most excellent game). So if you have old BBS modules you want to contribute to the open source cause, feel free to send them my way! I’ll be more than happy to get them out there. As well, if you’re interested in developing BBS doors or WorldGroup modules get in touch with me and I’ll hook you up with everything you need.

I got in touch with John Pritchett again and tried to pick up where we left off last year or so with Tradewars and next generation stuff. That’s progressing so we’ll be seeing various things come out of that. Not sure what just yet, but give it time. John and I (well me more than him) move at glacial speed with these things but we’ve been talking about next generation Tradewars for years now.

So lots going on (as usual). Be sure to check out my SimsTools updates as there’s some good info there on Transmogrifier 2.0 and what Don Hopkins is up to. Until next time…

Posted in CDX

Missing out on opportunities

It’s my own fault, I’ll admit it. I get wrapped up in too many things at once and stuff just passes me by.

I stumbled across Don Hopkins blog site here. Bookmark this kids as your favorite place to go as Don updates it quite often (more often than I do). Of course I haven’t spoken to him in eons now and here I find out about his Rug-o-Matic proggie, which basically nulifies my Rug Weaver idea. Oh well, Don will probably do a better job than I will. I’m looking forward to Transmogrifier 2.0 and I’m sure you will too so keep an eye peeled for that and let me know when it shows up.

In any case, it’s all good. Oh well, back to the drawing board…

Posted in CDX

These poor bastards never knew what hit ’em

You think you know people and hang in the right circles but then mother nature comes up and whacks you upside your head. Anyways, spending some time with some “other” folks here at work after our big, ugly re-org (yeah, those are so productive to the work environment, not to mention the bodies it leaves in its wake) and lo and behold I discover other real live geeks in the same company. Yup, true honest geeks with websites and people that know about more technology than what they do at work every day (and willing to admit to). So hopefully I’ll be accepted into their geekly ranks and join up in their regular web content wars. The guys I hang around directly in my group haven’t grasped the concept of a blog yet and say “Bless you” when I mention it. Oh woe is me.

We had a good chuckle at lunch today after doing some ego searching with the geek squad. I have to say that I can now safely critisize some of these pals websites (although I probably need to be inducted into the official hall of shame after a few beers before I really qualify). I mean, we’re all IT professionals here and yet here we are with some pretty shoddy webmanship. I now know the extent of the web wars incidents we talked about and I’m certainly no prize winner when it comes to content or design as I change out the look of things as much as I change my underwear. Here’s the roundup so far of their websites, but I’ll let you be the judge of each.

John Paddington

John is a great guy but suffers from Matrixitis. I guess we need to smack him around a bit and tell him to stop trying to make his website look like a VMS terminal from 1968. His site does prod me to get my DVD collection online though (although I’m still not sure why anyone would care what I’m watching, unless you’re talking about the porn collection in which case Table Dances with Wolves and Catcher in the Rear come highly recommended). John is probably the only guy who’s got the architecture of his site posted and it’s slick (and data driven, 15 points to Griffindor). He has some other neat stuff and has discovered the wonderful world of .NET to create flair and excitement on his page backgrounds. And hey, you can learn some Japanese while you’re at it!

Tom Jones

No, not the infamous singer (whom I still think blows Frank Sinatra out of the water anyday) but good ol’ Tom is a developer (and I’ll use that term lightly) who worked at CP. He’s left CP now and off on his own to find out what he wants to be when he grows up. Unfortunately, Tom enjoys dancing around in his undies and posing for us and hasn’t really grasped the concept of the web just yet. His bastardization of dotNetNuke would have Linux Torvalds rolling in his grave but I do enjoy checking out his accident counter. At least he’s gone 73 days without injuring himself, which for Tom is quite a feat.

Rob Pearson

What can I say about Rob except he’s a straight shooter and doesn’t smash you in the face with his site (I do wonder why we have to call him “big” though?). Nice and simple site so not much to complain about. Looks like Rob is applying the Jakob Neilson school of web design but does need to learn how to page out his old info so we’re not scrolling through years of messages. There are some rules of content and maybe Rob voilates most of them, but I guess I should contact A&E; to get that episode done so he can get some content happening.

Kevin Ritchot

Kevin does what most of us Shaw residents did, string a series of free sites together to cash in the 10mb limit and create a mega site of stuff. He’s got cool pics (and pretty much that’s all, pictures but no text but he’s learning to type so give him time) of everything from baby in the outfield to renovating his house. Watch for his Bob Villa special coming soon to an overtaxed bandwidth site near you. I couldn’t get his hit counter to come up but then I could never figure out what those were for except to gloat about how popular you think you are. Maybe I’ll install one here because lord knows I need to know how many people I’ve suckered into consuming precious hard drive space in their browser cache with my dribble.

Posted in CDX

Test first strategy and iterative development

I´ve spent the better part of the last year soaking up all the Torque knowledge I can. Needless to say, while I don´t have the vast knowledge that other veterans do (and the GG guys) I´m comfortable with the engine, the scripting model and pretty much everything in between so I´m ready to move forward. For me, a few months with a tool is weeks in Bil years. I´m a silicon sponge that just consumes knowledge. Somehow it all stays there in that gray matter of mine. I´m sure someone will make a game about it someday.

When I do development, I generally use two principals in creating them. Test first and iterative development.

Test First

A test first strategy is that every part of a game is first written as a test. This might be something to test opening a door or leveling up a character (or the very basic, show a character on the screen). The test is written to fail. This way we know it can be broken. So a piece of code might look like:


class CharacterTestCase : public CppUnit::TestCase
{
CPPUNIT_TEST_SUITE( CharacterTestCase );
CPPUNIT_TEST( levelUp );
CPPUNIT_TEST_SUITE_END();
long m_level;
void levelUp();
public:
void setUp();
};

This sets up a simple character test case with a method called levelUp(). To setup my test case I use:


void CharacterTestCase::setUp()
{
m_level = 0;
}

So now my character starts at level 1. When I call my level up function I first code it to fail like this:


void CharacterTestCase::levelUp()
{
CPPUNIT_ASSERT_EQUAL(m_level, 0);
}

This will produce a failure because I know the level gets initialized to 0. This is my test first development. Now I can go in and write code to support the level up function (and do a test to boot) by refactoring the levelUp() function like this:


void CharacterTestCase::levelUp()
{
long oldLevel = m_level;
m_level++;
CPPUNIT_ASSERT_EQUAL(m_level, oldLevel);
}

So now not only am I doing my levelUp() function, increasing the level of the character but I´m also testing that when I level the character up it doesn´t equal what the old level was (which would fail if the code was broken).

This is just a simple example but the idea here is to write the test (based on your game design document) to fail, fix it then move onto another test. Soon enough you´ll find you have hundreds of tests, some dependant on others. This is where a test first strategy pays off. Let´s say that somewhere I decide that I want to start the character off at level 1 instead of 0. So I change the constructor of my character class to do this. Now by running my tests I might notice that my levelUp() function fails because the character isn´t starting where I thought it was. Even though I haven´t touched the code here in my levelUp() function it still broke and I´ll know why. So I have the option to either change my character class or alter my test (although we generally don´t want to break tests just to suit changes in the code elsewhere, there was a reason why we wrote the test that way in the first place).

You might find the benefits of a test first driven development to be useful. For more information please check out the following sites:

cppunit.sourceforge.net

www.xprogramming.com/software.htm

www.xprogramming.com/testfram.htm

Iterative Development

The second main principal I use when developing software (game or otherwise) is to use an iterative development approach. Iterative development is basically working in small, incremental steps to achieve a bigger goal. Okay, so you´re thinking “wait a minute, we always do that”. Some do, some don´t. Iterative development is not “let´s keep doing it until it´s finished”. With each *planned* iteration, software is created as a fully functional unit, up to the point of that iteration. Let´s say you have a spell system you need to develop for your game. Okay, so you need the ability to cast spells, learn new ones, spells for magic users and clerics, spell casting for non-spell casting users, etc. All of these are iterative pieces of the big “spell casting” puzzle. Each can be delivered on it´s own (some are dependant on others) so you can work on them in pieces. It might go something like this:

First iteration: cast a single hard coded spell.

Second iteration: cast a single text file based spell.

Third iteration: cast a series of different types of spells.

You get the idea. The benefit is that you always a working system. It may not be complete (i.e. only mage spells are in this iteration) but it is functional. Something you can test, improve and build on.

These are all working titles and subject to change at a hats drop. At some point I´ll have websites up with the initial design docs and first iterations.

Lost Tales

Description: Hundreds of fairy tales come to life through the eyes of the player as they wander through the various fairy tale worlds solving puzzles.

Type: Single player and co-op

RPG Game (no title yet)

Description: Players take on various classes (Fighter, Mage, Thief, Cleric) and complete objective based missions competing against other races.

Type: Multiplayer

Mythical Fantasies

Description: Cyclops, dragons and magicians form the basis of this worlds challenges. This is my *pet* project, a tribute to the great Ray Harryhausen and his creations.

Type: Single and co-op

Artifact Adventures

Description: Travel through time collecting artifacts that aid you in your quest and help you return to your time, all being controlled by an unknown group of individuals.

Type: Single and co-op.

No Boundaries

Description: Fast action team based hoverboard play in various arenas competing for a single goal.

Type: Multiplayer

Posted in CDX

So many ideas, so much time. no wait, scratch that. Reverse it…

I have to say that there´s just a flurry of activity in the Garage Games forums and resource areas for Torque. Maybe this is the norm, but I have to say that the Torque community is probably the most dedicated and live bunch that I´ve seen in a long time.

Anyways, I have a million ideas, thoughts, designs and plans using the engine to see how far I could push the engine. It´s a powerful little bugger and there´s just so much to do (including knock out a game somewhere). So here´s some topics that I´m going to be looking into on Torque and try to get some things going in the community.

Newsletter

I found Matt Websters contribution to the Newsletter effort to be spectacular, spectacular. I also found it disheartening that there were only 3 issues and the last one was back in 2002. There´s a thread by Jay Moore over in the forums where he´s asking for input. I´m hoping to revitalize the newsletter effort with the help of other (more seasoned) players in the community.

Project Portal

There´s been discussions about hosting a projects portal, possibly at GG, for a complete home to Torque based projects for SDK owners. I´ve spoken to Jeff Tunnel about it and he seems pretty keen on the idea. I know there´s a project resource here, but I´m talking about a more full blown SourceForge type system where you can post design documents, task lists, bugs, forums, mailing lists, etc. all centered on your project. SourceForge is a great side (I have a few projects there) but it can only host Open Source projects so for commercial games that´s not an option. Having it hosted at GG would mean that project teams would have secured access to their project information as well as a collaborative area to work in. Hopefully we can make that a reality.

Torque Documentation Project

Most of the major players in the Torque space have some form of documentation going on with the engine. Either a tutorial on a subject or a complete newbie walkthrough. I find the information to be very useful, but there are so many threads of it out there. It´s taken me about a week just to piece some of them together and there´s multiple versions of the documentation efforts underway. I´m looking to consolidate that in a community based Wiki style site where you can go to get a single unified source for TGE documentation.

Tools Focus

As I’ve said before, my main focus in community based efforts have been around tools. I write them at my job, I write them for the users, I write them for fun. I´m looking to do some work on the Torque tools, namely to both update and upgrade the existing tools with either fixes or new functionality as well as creating new tools where needed. Watch for new resources in this area from me.

Bots

A big thing with me is AI and bots are a way to get this into the Torque engine. Yes, there are several (great) resources for bots in the community now but the more the merrier. I´m looking to introduce some real AI to the system with bots that learn and hopefully become somewhat sentient (well, as much as they can be in a game engine). The goal is to have the best set of bots available as a plugin to the base engine that people can either use as-is or even build on.

Other engine mods

There are a few areas where I´d like to contribute new features or enhancing existing ones in the engine. Things like a complete, automated weather system; multiplayer enhancements like fireteams (mini teams within teams that are in direct contact with each other); plugin support for other popular game formats and sub-systems (with little or no code changes). Stuff like that.

Yes, all lofty ideas and we´ll see what becomes reality this time next year, but I´ll be around.

Posted in CDX

Bots, tools, bots and more bots (and more tools!)

So here I am posting about an enciting 3D engine I picked up. I purchased the Torque Game Engine from Garage Games sometime ago and have been consuming the code and scripts as much as possible, trying out things and generally acting like a newb. I think I´m comfortable now and it´s time to dive into the system.

I have a couple of interests that I´m going to pursue with Torque.

First and foremost, I´m a tool guy. I´ve written tools for games like MageSlayer, Doom, Half-Life, Quake and others. My current venture is about 30 tools written for The Sims which has consumed my life for the past few years. So now it´s time to turn some focus to Torque (and Torque 2). The tools are nice but could use some work. Some new features, documentation and GUI refab. I´m looking at doing some damage in this space so hopefully watch for contributions soon.

Secondly I love bots. I wrote a thesis, so many years ago, on Human AI systems so bots are just the next best thing (well, there´s Eliza but we won´t get into that here). Over the years I´ve studied the various bot code from games like Quake and Unreal Tournament and basically bots are getting better and better. The Torque bots can only improve from here.

There have been several contributions to the bot base here and I´m glad it´s alive and thriving. I´m just starting to fork my engine code to support the real-time support that some people have put together and looking at modularizing my own code so I might be able to offer a script driven (with some C++ changes) bot engine. Lots of fun stuff to do here and will give me both a chance to prove myself with the Torque engine and contribute something back to the community.

That´s about it for now. Time to fire up yet another programming adventure…

Posted in CDX