content top

NPC Movement Example

One of my worst habits is refactoring when I should be moving forward. I’ve got a kind of OCD about organization, especially in the case of Unity where being disorganized is easy, and can come back to bite you in the ass pretty quickly.

I spent some time re-thinking and re-working my NPC movement setup. I tried Playmaker, but ran into a snag that I couldn’t grok, and the jumping back and forth between Playmaker and scripting turned out to be no as worthwhile as I’d hoped. Had I committed to Playmaker and attempted to re-model the whole NPC experience in that method, it might have worked, but that would have sent me back to the very beginning of NPC movement.

Instead, I broke out the individual class movement into different scripts. Merchants, police, and miners all have their own movement scripts, which effectively divides them as GameObjects now. The benefit is that each script can be worked on without worrying that I’m going to break the other two. The detriment is that I have a lot of duplicate code in some places.

To cut down on that, I diagrammed my control scheme as it stands right now:


This gave me a clearer picture of how things should be organized by limiting me to a “communications chain of command”. Previously, everyone could talk to Data Control (soon to be renamed Game Control) in order to get data from Master Database. Now, only components on Sector Control can speak with Data Control, and only Data Control can speak to Master Database. I was able to move some generic functions into the NPCController component of the Sector Control game object in order to streamline some of the scripts, and the SectorController component of the Sector Control game object now takes over the responsibilities of some of the functions that Data Control was handling (technically, SectorController only aliases calls to Data Control, but it standardizes the *Controller references I need to make on individual elements in a scene).

I also had some issues with triggers misbehaving. The solution was to turn all trigger objects into a two part object: the main model, and a spawn point. Miners gave me the biggest headache, and are what prompted the change. In the new system, the asteroids gain any number of dynamically created spawn points that the miners can spawn at and return to, while stations got the same spawning functionality that jumpgates had for when NPCs “undock” from the station. This allowed me to move from the powerful but complex OnTriggerEnter/Stay/Exit control scheme to a “distance to target” control scheme that has the NPC taking action once it’s within a certain distance of it’s current destination. This also allows the NPC to not get waylaid by other potential action objects if it cuts to close. For example, the miners who had to cross the asteroid’s trigger to get to the station were immediately re-docking at the asteroid when they started to move to the station because activating them inside the trigger fired the OnTriggerEnter event, preventing the miner from ever being able to leave the asteroid.

Here’s a video which explains all of this, with examples of the new spawn points and distance to target system. I didn’t think of colorizing the individual NPC prefabs, so I pause and highlight individual items as I talk about them. Hopefully it’s not too confusing.

Read More

The Thing Under the Stairs


The party had split up into a few rooms after having unloaded their carts at the roadhouse, and now the game was afoot (which is about 2 feet short of your average gnome).

Jamna and Tinda took a room on the north side of the roadhouse, while Zalandrin and Elrryn took a room on the western side of the building. Both groups were on the upper level. Much to the party’s chagrin, however, the cultists were also bunking on the upper level, in the two rooms adjacent to Jamna and Tinda.

While Zalandrin kept watch at the balcony, keeping his eyes on the cultists (who were also keeping their eyes on Zalandrin and were making no attempts to conceal the fact), Jamna suggested that everyone split up and recon the complex. Jamna opted for the commissary, Tinda loitered around in the courtyard among the construction materials, and Elrryn took a brief nap before joining Jamna in the cafeteria.

The players were introduced to several of the local luminaries. Gristle Pete, the roadhouse cook, is a cranky old chef who loves to cook, hates his patrons, and has serious concerns about the rats he keeps hearing in the storeroom that lies beneath the kitchen. Bog Luck, the half-orc quartermaster of the roadhouse, seems to be always-on-the-move busy, but otherwise unconcerned with the players or the cultists. Even Ardred Briferhew, the caravan gang leader, seemed to have some strange secrets that Jamna overheard from the adjacent room. In addition, Jamna overheard the cultists from the room on the other side of her’s say something about “a tunnel”, “lizardfolk”, and [Oh shit I forgot what the third thing she overheard was…]

Of primary interest to the players was the storage room, the only semi-non-easily-visible place in the entire building (that they were interested in). While the courtyard held the larger construction materials — timber, scaffolding, carts — the storage room was where all of the caravan’s crates were taken, along with tools and smaller, less durable goods. The storage room wasn’t secured, but it was back under the stairs that lead up to the commissary, and supposedly where Gristle Pete’s rats were hiding out.

Tinda made an initial pass through the storage room undetected by those loitering in the courtyard and discovered a heavy, locked door that lead to another room from within the storage area. She raced back to the group and relayed her findings, and it was decided that the group really needed to know what was in that room.

The party split up, with Elrryn keeping watch over the courtyard, and Zalandrin, Jamna, and Tinda sneaking off towards the storage room. As a precaution, the three party members waited for a few heartbeats before attempting to gain entry to that locked room, which turned out to be a good idea: Bog Luck appeared in the door way of the room, and for an instant the party braced themselves for a confrontation. Luck only popped his head into the room far enough to grab a clipboard from where it was hanging by the door, and then left.

Seeing as how Jamna was well versed in the thiefly arts, she went to work on the solid door while Zalandrin hovered nearby, Tinda  blended into the shadows amidst various crates, and Elrryn worked on a turkey leg he’d taken from the commissary for a late night snack. The door was proving to be quite the adversary, and it took three tries for Jamna to successfully pick the massive lock.

Zalandrin was the first one through, and the first one to register the fact that there were three lizardmen in the cramped secured room. Wasting no time, Zalandrin started attacking. The party quickly filled the small room taking out two of the lizardmen in short order. Jamna cast Charm Person on the third lizard, and was barely able to stop Zalandrin from killing him before they could use the charm to their advantage. When questioned about how they got into the secure room, the charmed lizard explained that they had arrived through a concealed trap door in the corner, and they had been coming back night after night to take away marked crates through a tunnel and into the Mere of Dead Men. He implicated Bog Luck as the one who was marking the crates and signaling the lizardfolk. Having heard enough, Jamna made the executive decision to kill the lizardman, and the party stuffed the bodies into the tunnel. They realized that they had 24 hours to figure out a plan to follow those crates without tipping off the cultists that the party was on to their scheme.

*   *   *

This was a very good scenario. We were down by two players who had other commitments for the evening, but we’d been so sporadic in our convening that we decided that we’d best push ahead this week.

I think this scenario was the perfect mix of creativity, execution, role-playing, and action. The players were faced with downtime, a good 16 hours or so before the construction crew would be waking and moving out to the construction site. During that time, they had the opportunity to snoop around the cultist’s business, seeing as how everyone was thrown together in this small space and unable to leave.

On occasion, the players seemed to be considering the situation individually, leading to periods of silence while they sussed out their next moves. We did have a fair bit of “meta gaming” going on, as the party discussed options while the characters weren’t in close proximity. Normally we overlook this kind of thing because the party is all together, but there were a few times when I think the players silently opted to concede to the decisions of the group, despite the characters being in places where they couldn’t possibly have been included in the plan-making. For a scene such as this, which was equal parts stealth, eavesdropping, and information gathering, the meta gaming was conspicuous, but manageable. Had it escalated, though, it would have been a problem by subverting my ability to actually take advantage of a split party, for good or for ill, and to give the gameplay the kind of tension it deserves.

I finally remembered that Jamna was with the party, which paid off on multiple levels, but with warning flags. First, she took over for our absent members. Second, she conveniently happened to have thieving skills (legit, from the module, and not a deus ex machina to fill a needed role). Third, she allowed me to throw in a Greek Chorus without having to resort to “Booming DM Voice From The Heavens”. It was tough, though: Jamna suggested the party split up and recon the roadhouse. She raised suspicions of Briferhew (who vanished as soon as the caravan put in, and hadn’t been seen since), suggested that they stay on-mission and find the cultist crates so as to follow them to their ultimate destination, eavesdropped on the cultists and discovered valuable information, and mentioned that they might want to walk to Bog Luck, who seemed to know everything that was going on in the complex. She also charmed the lizardman for questioning, which lead to the discovery of the trap door. It’s a fine line between running a helpful character as an omniscient DM, using that character to either force the players onto a track that I as the DM know they should follow, or to use her to perform the actions that the players might not think of in order to keep the plot moving. Having Jamna around can and probably will prove useful, but she’s going to have to take a less active player role while still being a relevant character to the story. That’ll be tough, although it was fun to be on the player side of the table for a change.

Read More

A New Obsession – Smartwatch Faces

Wildstar Watch FaceI was fortunate enough to be able to buy an LG G Watch R from a friend who was changing carriers and phones. Smartwatches have been on my radar for a while because I like technology, especially if it’s got both form and function. I had actually stopped wearing watches back in the mid 90’s when I worked at a liquor store, because reaching between glass bottles with a bulky growth on my arm tended to sweep bottles of expensive booze onto the tile floor, and no one would have been happy about that.

The watch does what you’d expect it to: connects to your smartphone (Galaxy S6 in my case) and gives you weather updates, notifications, and can run some apps pushed from the phone. For example, I can use Google Maps to navigate with turn-by-turn instructions delivered to the watch face. Not great for driving, but it’s a godsend when navigating an unfamiliar city and not looking like a tourist. I’ve come to rely on the watch more than the phone (the fact that the phone is still in the loop notwithstanding) because it’s just more convienient than having to dig into my pocket to tell the time or to see who’s sending me messages.

Like any watch, though, there’s also an element of presentation. The G Watch R isn’t as bulky as I thought it would be, and since the body of the watch is basic black with white markings around the bezel, the best way to get your fashionable bang for your buck is to switch out the watch faces.

There’s a good amount of nice faces you can download for free or for a nominal fee from the Google Play store via the Android Wear application (which handles the interface between the watch and phone), but I came across an app on the Store called Watchmaker. This is an app that runs on your Android device and allows you to create your own watch faces. Basically, a watch face is just layers of elements that are built up to create the display. In my Wildstar example that I posted on Twitter last night, the face is made up of an image of the planet Nexus, the Wildstar logo, the band of numbers, the tick marks, and hour and minute hands, all in that order. Watchmaker really has no requirements for coding knowledge (although it does allow you to script features in Lua), nor does it require a lot of intense graphical work. All of the elements in the face above are stock, downloaded from the Internet or made available from the Watchmaker element repository. You can tweak the layers in different ways for different effects. The Wildstar logo has a lower opacity setting, for example, in an attempt to reduce the “busy-ness” of the face. The number font was an option within Watchmaker, and it looked pretty “Nexian” to me. The hour and minute hand colors are also customizable. Although I didn’t include an image to illustrate it, the watch has a dimming feature, and in this case it just shows the tick marks and the faded Wildstar logo with the watch hands on a black background. Stylish!

Since last night, I’ve been thinking about other watch faces I could make. I’m not entirely pleased with this one, since I actually slapped it together while I was waiting for dinner to cook. I’m planning on maybe creating some racial representations for Wildstar, and also factional faces for The Secret World.

If you’ve got an Android powered smartwatch, check out Watchmaker. There’s a free and a premium version; I believe the free version allows you to use Watchmaker faces, while the premium version allows you to build them. If you would like to use the Wildstar face above, you can download it from the WatchAware website and import it through Watchmaker. The wiki says that faces can be made into APKs, but that requires a lot of hoops to jump through that I don’t have the time for at the moment. Maybe once I get several faces done, and am happy with them, I’ll see about setting up a Google Developer account with all that it entails.

Read More



I have a habit of reading interesting things, but then a few days later wanting to touch on a specific point in whatever it was that I read, only to have forgotten where I read it. That leaves me having to recount the thrust of the post or article without the context that probably made me want to talk about it in the first place.

This time around, an article I had read mentioned something about being an expert. It was regarding how we don’t think we’re good at anything because we don’t feel like an expert, when in fact our interests are constantly forcing us ever deeper into the subject matter. Through osmosis, we absorb details and facts, and don’t even know we’re learning because we’re personally driven to consume more and more. Here in the West, the word “learning” usually equates to decades in our broken school system, sitting in uncomfortable chairs and being talked at while we memorize facts. If nothing else, we learn that learning is painful, an unhappy alternative to staying home and playing video games or hanging out with our friends. That’s why when we doggedly pursue our interests it doesn’t seem like learning; it seems like passion.

So there’s that setup and a bit of editorial exposition, but the point I’m after is that often times once someone translates something for you, you lose the blinders that prevented you from understanding that you’ve actually been improving yourself through what you’ve been doing. This is an opportunity to step back and assess your experience from a 10,000 foot vantage point and see the steps you’ve taken, to consider what knowledge you’ve gained, and to realize that while you may not know everything there is to know on a subject, you have actually become somewhat of an expert simply through sheer force of will.

I’ve often tried to think of where my expertise lies, and in all honesty I cannot put a finger on a single thing. I don’t mean that to say “I feel I’m an expert at many things”, but rather “I don’t believe I’m an expert at anything.” This is something I’ve understood for some time, actually, when I look around at my peers in this community. For example, I’ve been gaming for decades now, but my pattern is one of flight and indecision as I jump from game to game in search of a new experience. Meanwhile, others are able to stay put for longer, and as a result throw themselves more into the guts of their current experiences. I don’t bother learning the depths of any game I play; I learn enough to progress, but never enough to excel the way I see others doing. Maybe that’s because I know I won’t stay very long, or maybe I don’t stay very long because I treat every game as a shallow, moment-by-moment experience.

While I might blame my chase of the New, after reading whatever article I read that started me down this path, I thought about it from a different angle. Assuming I did stay with a game, how would I feel? And based on that feeling, what would be the outcome?

The answer I came up with was that I would feel bored, eventually. Past posts might lead you or me to believe that my predominantly solo gameplay experiences are to blame, whereas my group experiences were tethers that have kept my interest for far longer. Maybe that’s a part of it, sure, but digging deeper and deeper, this post is the key.

The Internet loves facts. Sorry, “facts”. Many folks believe they have the answers because having answers means having knowledge, and any PSA can tell you that knowledge is power. One opposing facet of facts, then, is opinion, which is a personal point of view designed around our own nature and nurture life experiences (which do include facts, at least as we believe that we understand them). Facts lead to expertise; opinion leads to…what, exactly?

That is where I fall in the spectrum: closer to the “opinion” side than the “fact” side. My posts here are 98% opinion. They’re not all closely related to fact either, just a lot of theories and philosophies applied to the geek community. The carry no weight and have no authority behind them. I’m just some guy on the Internet doing what the Internet can’t stop me from doing, but trying not to be an asshole about it.

I rarely think of anything in terms of “facts”, which I’m coming to realize, and I think that is preventing me from becoming an expert in anything. I’m an OK developer. I’m an OK gamer. I’m an OK blogger. I’m an OK parent, an OK husband, and an OK friend. But I’m not very good at any of those things, at least not to the point of being an “expert”. I’m sure someone would point out that, really, no one is an expert, but I disagree because thinking like that tends to assume that to be an expert implies that there’s nothing else to learn, or that someone knows so much more than everyone else that they have achieved a state of wisdom that transcends mere expertise.

To me, being an expert means that when presented with a situation, there’s no conflict when choosing which path to take. That decision is based on facts, numbers, rules, and experience. An expert has the right tools for almost any situation, and knows which tool to use for which job. An expert is a reliable source of information, and is willing to share his or her expertise with others.

This opens up a whole can of “expert versus Internet expert” topics that are just so far beyond the scope of this post that I can’t even, but thinking about what I know, and how I approach subjects, I realize that I tend to take more of a philosophical approach than a fact-gathering approach. That kind of bothers me for a few reasons. First, I’m limited in what I can achieve if I only learn the surface facts necessary to get the job done. Second, opinions don’t get us anywhere except possibly in trouble. Third, not pursuing expertise puts me way behind others in terms of participation, leaving me at the far back of the pack while others find ways to level more efficiently and consume more content because of it. Thinking of my posts in the past in light of these points, my tendency to put philosophical thinking ahead of good old fashioned know-how is very much a part of my feelings of disconnection from my peers.

So, what can we do? I’ve been trying to keep the nose to the grindstone with Project Universe, and my posts here reflect the kind of drive towards expertise that I am generally lacking. But it’s development, and while I’ve been developing for many, many years now, I’m entirely self taught. That leads to massive gaps in knowledge which force me to learn what I need to know to tackle the task at hand, but not necessarily the why behind it. Still, progress is progress. When it comes to gaming, I need to really find the strength to buckle down and investigate on my own. To take time to experiment and test theories to find the patterns in the outcomes. I could read guides, but that’s too close to the slippery edge of “Internet fact” for me; plus, learning through trial and error is a better way to learn, IMO.

Of course, knowing what to do is different from actually doing it, so I need to figure out a way to get on task and stay on task. That’s the difficult part, and might be the linchpin in my whole philosophical trauma.

Read More

I’m No Good At Guilding

I think I’ve come to the realization that I’m not very good at joining things. Over the years, I’ve kind of blamed my solo-gaming-nature on just enjoying solo gaming more than group gaming, and pound for pound I think that stands. But since I have decided to try and be more interactive, I found that I am apparently unable to be more interactive.

I have tried to join guilds in many games with grand plans to get involved, speak up, be noticed, get in good with the locals, be known…but it’s almost never happened. My personality is not one that allows me to be the kind of person that flings himself into someone else’s conversation. I don’t have insight to contribute, and a lot of the times I just don’t really care to interject myself into a conversation because why? Just to be noticed? To me, that makes me annoying, and that’s not the kind of “being noticed” that one is looking for when trying to make a new group of friends. Even when I do have something to say, it’s often passed over: just yesterday I announced to this guild that I joined that the servers would be going down soon (as seen on Twitter!). That knowledge was passed along a few minutes later by another member who said that “someone else said that…”. I didn’t even rank high enough for anyone to bother to remember who it was that said something quotable. #sadface

That does make me sad, and because I can’t really bring myself to get beyond this certain level of comfort injecting myself into other people’s established spaces, I feel that quitting the guild would be the best option for me, because it always hangs over my head that I’m a bad guild member whenever I’m playing. I’m not even playing right now and I’m thinking about it, that’s how much it bothers me.

I’ve said in the past (maybe not in this incarnation of the blog) that I think the best guilds always meet their members half way. I know that’s often really hard to do because it means that the guild members all have to make time to take care of other guild members and that can be a tall order. It also means that guild members need to step up and do their part to introduce themselves and get involved with the existing members. I just can’t seem to force myself to do that, and that’s really weird in some ways. I see a lot of people hand-wringing over how introverted they are and how they have multiple personas for different groups, while I’ve always taken the tack that fuck it…if I’m here as you read me, I’m me as you interact with me, no masks or anything like that, but this is the one aspect I just can’t get under control. I don’t expect people to just “awwww” over this revelation, but I guess it means I need to stop thinking that “finding the right guild” is actually something that’s possible.

Read More
content top