18 October 2013

You Know You've Been Playing Clan Lord Too Long...

I quickly read (or misread) this headline from Apple Insider:
Apple seeds OS X 10.9 Mavericks Server GM to developers ahead of Oct. 22 special event
 ...and my reaction was "why is Apple giving the Clan Lord ServerGM a copy of Mavericks?"

24 September 2013


This is not helping the development of my Clan Lord projects.

01 September 2013

The Twenty-One

I am about to undertake a major Clan Lord project.  The first step of this major project is to undertake another major project: updating the processes of the NPC training scripts.

This has been on my To Do list for some while, but only recently have I felt confident (and competent) enough to move forward with this huge undertaking.  This lead me to wonder: what else do I have on my To Do list?  While having lunch at a restaurant, I took out pen and paper and began compiling a list of open (outstanding) projects.  I was both impressed and horrified to see twenty-one items listed.

Some of the items on the To Do list are low priority (like creating a new Boss AI), while some of the projects are overwhelming in scope (like Healer subclasses).  They're all on my radar, and I've started initial first draft designs on all of them.  But it was this one particular project that I mentioned to another GM and was delightedly surprised to hear the GM commit 110% to this project.  We contacted a script helper, who also surprised me with his enthusiasm for the project and committed to the project on the spot.

So.  Big things in the pipeline, and we'll see it all "Soon!™"  As the other GM and helper begin with starting points of design, I have started the process of reviewing the training scripts.  My goal: have one less project on my To Do list.

26 August 2013

Back in the Saddle

I'm back!

Tonight was Compiling the Update night, something that I should have done over the weekend but was all strung out from vacationing up in northern New England.  Lots of cool behind-the-scenes stuff going in.  Maybe you'll get to see some of it!

19 August 2013

The Great AFK

I will be gone for the remainder of the week, returning this weekend.  I hope that my new script does not break anything in my absence!

18 August 2013

And Now I Dust My Hands

I have completed my work on my latest script to the point where I feel comfortable checking it in to the script repository.  I began adding one of my "it would be nice – but not mandatory – to include this cool feature" ideas and quickly learned that Socks would not readily support what I wanted to do, and by this point I lack the energy and motivation to crowbar new technologies into this script.  As it stands, the script is "good enough" for now, and that future feature can simmer on the back burner.

Now comes the uncertain part: releasing the script into the wild.

I must say that I am rather pleased with the result.  Maybe one of you may see it in action sometime soon.

16 August 2013

Literal Humor

I read this joke the other day and got a laugh from it:
A wife asked her husband to go to the market.  "Buy one carton of milk, and if they have avocados, get six."  A short time later the husband returned with half a dozen cartons of milk.  "Why did you buy six?" asked the wife.  Replied the husband "they had avocados."
After writing logic code for the past week, I found this especially funny.

15 August 2013

Scripter Humor

I have been reading other scripts with the intent of plagiarizing becoming inspired by other GMs/scripters' works.

Scripters will often add comments within their code as to describe what task/role the section of code performs.  I was interested in how other GMs have handled math problems (like calculating the average size of a mobile), and while researching that subject I was entertained by some amusing one liners.  Or in some cases, multi-liners.

    // Initialize it, cap'n!
    //    This is a public file.

    //    Everyone is welcome, nay encouraged,
    //    to use it and add to it.   
    // OK, dumkopf. You use it, you lose it.
    // All the nifty display poo goes here

    **    utilities for manipulating the [player]'s store-string
    **    err, I mean the data-string
    **    no, wait, make that the thing-string

And my personal favorite:

    **    **Warning** this code is god-like and perfect.
    **    When we work on it choirs of angels
    **    gather around and sing. Mortals must keep out.
    **    This code is so blindingly beautiful
    **    that your eyes will melt if you look at it.

14 August 2013

Sign o' the Times

I have received some feedback on the new signposts from some of the players.  The feedback has been very constructive, and I spent this evening preparing the script and items for the next generation of signposts.

I just had an idea.  Neon signposts!  The action bubble box could change from red to blue to green!

13 August 2013

The Back-up Back Up Plan

My creative patch for my current script did not work as intended, which means I go to Plan B.  Or am I now on Plan C?

Anyways, work continues on it, although sometimes it is discouraging.  I want to get it done and away from me so that I may work on something else, but then I also want it to work well.

Writing bad code is easy!  It's the good stuff which takes time.

12 August 2013

Timing Is Everything

While putting the finishing touches on my latest script, I came across a wrinkle in which no amount of ironing would smoothen.

The script, like another script I recently completed, is a process which hangs out in the background and watches the goings-on of nearby NPCs.  The function of this script needs to know if the NPC is busy with a player.

I tested my script on my test server, and overall the script is looking sturdy.  It did fumble a little bit on the task of checking the availability of a NPC: the script could not seem to recognize that a player was bumping into a NPC.

As with the combat script, I think this too is a matter of bad timing on my part.  My derpy script is looking blindly for bump flags which may or may not have been set.  I think that I am checking too early in the clock cycle – way before the NPC/player bump has been processed.

So I have rigged a hack-ish solution.  It's not very pretty, but it looks as though it will get the job done.  Maybe.  I will test it and confirm that it works.  Or I will confirm that it does not work.

As the old saying goes, timing is everything.  I seem to have a genius for bad timing.

11 August 2013

Marathon Scripting

I arrived home late this morning from a long day out (arriving home close to 2:00am), so I slept in until 10:30am.  At 10:31am, after brewing a pot of coffee, I was sitting at my computer and there I remained for twelve hours: first restructuring, rewriting, and then refining a new Clan Lord script.

The new script is looking very solid.  I still need to add some back-end commands (like a kill switch: in the event that things go badly, it's always comforting to have a self-destruct button to panic-stab while sobbing uncontrollably).

A couple of more lines of code and this should be ready for testing on the test server – on tomorrow.  Not tonight.  I think I'm done for today.

09 August 2013

Oot and Aboot

I am AFK for today and tomorrow.  Sunday will be my day to finish and test my new script.

08 August 2013


I have been corresponding with a player who has been sending me a steady list of uncovered bugs.  Some of these bugs are eyebrow arch-inducing.  I want to acknowledge this player's efforts: thank you, you know who you are.

If you find a jitterbug bug, or have an idea or a suggestion, then please let us know!  You may either /bug it, or you may address an email to me, YappyGM, at my gmail account.

07 August 2013

Who's the Boss?

Some while ago I had implemented a new monster template: the Boss.  The idea behind this monster type is that it would always be a slaughter, it would be big and bad, and everyone would be rewarded for participating in defeating it.

Well, the last part I got right, but the first part was a complete and decided failure on my part.  After a formidable boss was defeated, I recall players laughing in town and announcing "ha ha! Rank number 17!"  I had jacked the boss's Histia ranks up to a ludicrous level, and the just-as-high slaughter ranks were absolutely ignored.  So yeah, the boss template was not working in practice the way I had designed it on paper.  Players who defeated the boss received both shared reward experience and got credit for the not-a-slaughter-but-instead-a-very-juicy vanquish.  What an embarrassing disaster for me.

I have been redesigning the entire template and giving a lot of thought to my goals for Boss Template v2.0.  I still love the elements of increased rewards based on increased participants, and I want all of the active participants to be rewarded (whether they are in the area or not: nothing sucks like falling and getting chained to the safe cave just as the Boss falls and the big reward chest is popped: both the kill credit and the bonus are missed).  And I am exploring the possibility of a new slaughter/dispatch/kill/vanquish mechanic: "You have massacred Yappy the Black!" or "You have conquered Eldon the Grey!" or some other unique description of defeating of a boss.

And then players can gloat over the corpse of the boss.  "Who's the boss now?"

06 August 2013

Script Reconstruction

I went from polishing a script to dismantling a script to reconstructing a script within the period of three hours.

As I was rereading the code to my current project, I had realized that I was not negative enough in its organization.  In fact, I was not negative at all, and the free-for-all organization which I had structured the script made it difficult for me to understand what it was that I was trying to accomplish.

So the good news is that the new script looks great!  The less-than-great news is that I wrote it out longhand on a piece of scrap paper, which means that there is an entire transcribing process which still needs to happen, and that the transcribing process is highly unlikely to happen before the v819 update goes live.

Perhaps if I employ puppy dog eyes then ServerGM would be willing to transfer the completed (and full tested) script to the live world this weekend.

05 August 2013

Script Polishing

Today was a vacation day for me, so I got to stay home and do fun stuff: I spent my entire day debugging and polishing a new script (and this script is not in any way related to combat).

The script runs a new tool for v819, and I got it to a point where it works well enough, but it works well with vulnerabilities.  Being a rather frightened and slightly paranoid Yappy, I am working to seal off any perceived leaks and problems.  The last thing I want to have is a scripting misfire resulting in the injury of one of our gerbils.

I need to work fast.  The update is less than 48 hours away.  Does anyone know where I can buy some gerbil insurance?

04 August 2013

Did I Tag Yet?

I have learned far more about the internal mechanisms of combat than I had ever had hoped to learn.  Or cared to have learned.

Before pushing the v819 update out to the UpdateGMs, I wanted to get one more script submitted before the deadline.  And as the one who receives and packages the updates, I get to choose the timing of that deadline!

The script is a simple one on paper: monitor the combat of a monster and inform the script when the monster has tagged a player.  Simple, right?  In practice it is, and there are heaps of scripts that already handle this precise function (herpetids come to mind: if the herpetid hits the player, then the player becomes increasingly intoxicated).

The catch: my script is a sort of a supplemental script which kind of hangs out in the background.  It isn't as plugged into combat system the same way as, say, the monster AIs scripts are.  My script is an independent entity, if you will, and just observes combat.

I completed the script and tested it.  What a disaster.  I spawned several monsters running my monitoring script, and while the monsters were knocking the stuffing out from me, my monitoring script observed my beat-down in awed silence.  That was bad.  The script should have been triggered by the monster's first damage delivery, and nothing happened.

Back to the drawing board.  I added my debugging notices.  I recompiled the script.  I generated more monsters running my script.  I got pwned by my monsters.  I cried – not because my monsters pwned me, but because after reviewing the logs I saw that my script was receiving absolutely no notification of my entering combat and subsequent pwnage.  I added more debugging notices.  More monsters.  More beat-downs.  And a lot more of nothing from the script.

At this point I felt that I failed to understand the mechanics of Clan Lord combat, so I started researching and reading about it.  It's a fascinating mechanic, IF YOU LOVE MATH.  Out of desperation (and by this point I was also nearly out of time), I then turned to the ServerGM and described my problem.  What was I doing wrong?  Why was my script ignoring combat?

ServerGM had the answer: this was not so much of a scripting issue as it was a timing issue.  ServerGM described what was happening:
  • At the beginning of each frame, all of the combat flags are cleared (Clan Lord runs roughly five frames per second)
  • My goofy script would then check the status of the combat flags and see that no combat had taken place
  • Then sometime before the end of the frame, combat would take place, and the appropriate combat flags would get set
  • The frame ends, combat resolves, and then we go on to the beginning of the next frame.
ServerGM recommended a couple of approaches to help achieve my intention for the script.  These suggestions worked brilliantly, and my script now correctly recognizes a monster tagging a player.

Maybe you'll encounter this script in v819.  BUT YOU HAD BETTER PRAY THAT YOU DONT HAHAHahaha hoo boy.

03 August 2013

Random Dungeons

I am arriving a little late to the party, but I recently purchased Torchlight (the original version, not Torchlight II: the sequel is not yet available for the Mac, at least not on Steam).  I have been playing it for some while now, and I enjoy it.

I am not obsessed with it as I was with Diablo II, even though the two games have similar game play and goals (fight monsters, get loot).  The 3D graphics are gorgeous, and the interface is simple.  I don't quite see the point of pets, but I find it entertaining to teach them spells.  There are plenty of quests to do, but it did not take long for me to grow bored by their repetitiveness ("kill a boss", and "return an item" are the two more common quests types).  A little more variety in quests would have been nice.

However it has been the randomized dungeons which has me thinking back to a project which I had started over two years ago: random instances, which would allow multiple groups to enter the same dungeon and not encounter each other.  I have given this subject a little thought, and want to apply it to my current major project.  Or should I say projects.

With our player base shrinking, instances are becoming less necessary.  But for me, it's a challenge in making it happen.  And making it happen – or making any of my projects happen – is a challenge!

02 August 2013

Day Away

I was away for most of the day today, so very little Clan Lord development got accomplished on my end.  And tonight is the submissions update deadline, and there is still a lot to do.

I can double down tomorrow and try to bang out some new monsters.

01 August 2013

Signs on Top of Signs

In another post, K'vynn commented:
Suddenly i'm envisioning a signpost forest springing up... signs on top of signs on top of...
I gave that some thought.  Well, at least from a technical standpoint.

In the first draft of the new signpost script, it was possible to have signs on top of signs.  Because the new signposts have no mask – one may not bump into them, nor could one sign collide into another – it was easy to dogpile signposts on top of each other.  In solving one problem, I had created another.  A player could move freely through a sea of signpost spam.

I have wedged a little bit of ugly code in to curtail this from happening (ugly in that it is not elegant scripting).  Now should the signpost detect another signpost nearby, then the player is prohibited from planting the signpost at that location.

A little more testing and this updated tool should be ready for prime time!

31 July 2013

Noodlin' and Doodlin'

I spent a small portion of today noodling around with some Clan Lord areas, but it otherwise was a very unproductive day development-wise.

I fussed around with a couple of new areas, and I invested a little time in reviewing some new content from a new helper.  But otherwise I spent the day watching bad television and half-heartedly playing video games.  I had envisioned myself being more productive than I was.  I have a heap of scripting to do before the v819 deadline.

30 July 2013

Here's Your Sign

There's a lack of signs in Puddleby.  Specifically, there's a lack of signposts.

If you are unfamiliar with signposts: they are items which rarely turn up in town.  Bumping the signpost will reveal an action bubble and some text.  The rarity of such signs is – in my personal opinion – because of the risk of abuse in using the signs.  That is not to say that we GMs are concerned with players using adult language within the text: we're far too busy to be policing in-game language.

My perception of the problem is a (simple) technical issue: once a signpost is placed into play, it is there, and there it stays for the duration of its life.  I equate this to placing down a pretzel box that hangs around for an hour or so, regardless of how many player bump the box.  And I have seen the pretzel box maneuver several times: it is a clever way to creating a short-life obstacle for players which can not be circumvented by the sword, as with kudzu plants.  A couple of well-placed pretzel boxes on a narrow bridge makes that bridge impassible for as long as the pretzel box remains there.  In that vein, a couple of well-placed signposts could conceivably block players from entering (or leaving!) the library for much much longer than a life of a pretzel box.

I see a need for signposts.  They are great tool for in-game communication.  They just need an adjustment so that they are able to perform their job without behaving like a brick wall.  Or a stack of pretzel boxes.

I am working on a solution, and I hope to have revised signposts available for this upcoming update.

29 July 2013

if ( debugMode )

I have been struggling with my recent scripting project, and I found a simple solution: add a lot of announcement checkpoints throughout the script so that I may follow the script's progress:
    if ( debugMode ) log( "Scanning " + theIncomingText );
This was incredibly helpful in finding bottlenecks, missing data and other shenanigans caused by me whilst attempting to write this code quickly.  As a result of these internal announcements, I was able to find numerous bugs, squash them, and get my script running in an "as expected" manner!

Next up comes the long, dull portion of adding controls and restrictions (silly stuff, like "don't use a tinderbox while the player is under water" kind of logic).  But I am pleased to be reaching this point, as it is an indication of progress!

28 July 2013

Mystics and Shadows

There are two nice reports over on Thoomcare worth reviewing: one regarding mystics and one regarding the Shadowguild.

/narrate Cue dramatic music.

27 July 2013

Ice Cream Break

A very important part of scripting is to take an occasional ice cream break.  I am taking mine now (albeit a very, very late one).  I am making slow progress on my new tool – having found a seldom-used script which is similar in function – and I felt it was time to reward myself for this afternoon's work.

I am making a conscious effort to avoid dripping chocolate ice cream all over my new keyboard.

26 July 2013

When Easy Becomes Hard

I am developing a new tool.  The goal is to make the interface of this tool easy to use – roughly as simple as typing a macro trigger.

The challenge here is dealing with all of the possible variables in which a player may encounter.  Such quasi-relevant conditions for which I must plan: in what area is the player?  Where within the area is the player standing?  Who else is in the area?  Are there any environmental restrictions within the area?  How close are the players standing?  Is there any other activity surrounding the player?  What has changed since the last frame of action?

The more I think about what needs to be done on my part, the more daunting the project becomes.  All of these conditionals need to be reflected within the script if I want it to work simply and be easy to use.  I sincerely thought that this would have been a script which I could have written in two evenings.  I am on my second evening of development now, and predict that I may be working on this script all weekend.

Not that I am complaining.  Scripting is a nice way to spend the weekend.  I just wish that it wasn't so hard to write an easy script!

25 July 2013

Gaming Gear

I broke my last keyboard (the G key was permanently depressed) as well as my mouse (the scroll wheel would not scroll), so I went out today and dropped $100 on some new Logitech equipment: I treated myself to a G105 keyboard and a G100s mouse.

I've always like Logitech and I have had good experiences with their gear (with the exception of G330 headset: there was some interference with the volume knob, so I often heard static – but I digress).  I bought the keyboard and mouse at a local computer store, and while I stood in the checkout line I saw something troubling printed on the bottom of the boxes: the system requirements for both peripherals was Microsoft Windows system 7 and up – no mention at all about Macintosh compatibility.  I was feeling lucky and took a gamble (or I was too lazy to leave the checkout line, pick one) and made the purchases anyways, with the thought that I could return them if I was unable to use them.

Before opening any of the boxes or breaking any of the seals, I went onto the Logitech website and, much to my delight, discovered that – at the very end of the list of operating systems supported for their gaming mice and keyboards – was the Mac OS X download link.  I now have a programmable keyboard and mouse, and I can record keystrokes on-the-fly and save them to a hotkey.  This has some wild and awesome potential for me when I am running spur-of-the-moment invasions.

There are two features missing from this keyboard: (1) it lacks USB ports.  This is unfortunate, and it was a feature that was on my "must have" list (which I completely forgot to check while shopping).  And missing feature (2) is the Macintosh command key.  It's a Windows keyboard, so I must instead use the Windows key when I want to command-click or command-key something.  This Windows key is in a different layout position than what I am accustomed to using, so I find myself ascending a bit of a learning curve (the Mac keyboard layout is, from left to right, control, option and then command; the Windows layout is control, Window and alt).  So I need to remember if I want to type option-G, then I need to instead type alt-G – using the third modifier button instead of the second button.

But boy, does it feel nice to have working equipment again.  Now that I know that much of the Logitech gaming gear is supported on the Mac, I almost regret not buying the super-deluxe versions of both keyboards and mice (one mouse had 20 customizable buttons, while another had small weights which could be added as to customize the feel of the mouse).

I suppose I now have something to look forward to when I break the new equipment!

24 July 2013

Yappy Anniversary

It's hard to believe that it was six years today that I became a GM.

7/24/07 10:29:38p Yappy thinks, "eldon I can use my sunstone without a sunstone?


23 July 2013

How YOU doin'?

It's been a while since I've made any comments here on my blog.  Like, exactly one year to the day.

I had a nice chat this weekend in the Fairgrounds.  The point of my chat was basically "it's summertime, a lot of GMs are away on vacation, so do not expect much in terms of content for updates."  I am included in that group of summer frolickers: I have been traveling and will continue to do so through the beginning of Labor Day.

But as soon as the words left my mouth within that Fairgrounds chat -- "yeah, don't expect much from me" -- I was subsequently inspired by some of the players and I find myself fervently scripting and designing.

So much for that summer break!