content top

If Project Universe Were Multiplayer I Would…

The one thing I’m always thinking about, in a sad way, is what I’d like to do with Project Universe if it were a multiplayer game. Technically, I guess, if it were an MMO-esque game, or even just a host your own game like ARK: Survival Evolved.

I’m not a PvPer, but I know that people do like that thing, and not having it excludes people who might otherwise be interested. But PvEers can be horrible anti-PvP, especially when they see opportunities for themselves to be taken advantage of (aka griefing) even if it never happens. Dividing PvE from PvP is an age old requirement if you’re going to have both side by side, but dividing them too much makes a game essentially two different games under one umbrella, and that’s difficult to balance and I’m sure difficult to run and maintain.

I like the idea of putting the PvPers out where they can pew pew one another, and letting the PvEers do their gardening or whatever in a safe zone, but also letting people cross bounds if they so choose. Being a space sim, I always think of EVE Online as a touchstone, and I think they do the mix pretty OK, although you can sense that CCP really believes in pushing the envelope of PvP into PvE territory by allowing criminal acts that really only amount to griefing.

If I could set up Project Universe with multiplayer, I was thinking of allowing players to “corp up” as a player structure, but require them to select a faction under which to incorporate. Corporations would do corporation things, like make resources available to members and dedicated chat etc. PvP minded corps could head out to the zones beyond the lawful periphery and duke it out with other faction corporations in order to lay claim to the sector.

But corps wouldn’t claim the sector for themselves; they’d claim it for the faction. The corp would gain the rights to administer the sector, levying taxes and setting jumpgate fees and so on. The bulk goes to the faction, but the corporation keeps a percentage.

What this means is that PvPers can PvP all they want, but they’re also “making sectors safe” for PvEers because players can only fire on other factional members. Once a PvP corp takes over a system and plants a flag, PvEers can drift in and mine, build, and trade.

Of course, if another faction drifts in to re-take the sector, or takes a hallway sector, PvErs can either turtle up or run like hell to get out of that zone. Or jump into the fray alongside friendly faction corporations.

The purpose, really, is to make it so PvPers can fight, and have something to fight over, but at the same time make it so that not every PvPer can be hostile to everyone. PvEers would want PvPers to fight on their behalf, and PvPers would want to open more space for PvEers so they could provide them with more goods and services.

Granted, this is just “throw it on the wall and see if it sticks” talking out loud, and I’m well aware that A) there’s holes, B) might have been done somewhere/will be done somewhere (like maybe Crowfall), but I think finding an interdependence between PvPers and PvEers is something that not a lot of games have made real efforts to integrate, preferring to keep the totally apart, or cater to one or the other.

Read More

NPC Round Trips

As exciting as my earlier examples with NPC pathing were — and you know they were awesome — I needed to build out the system a bit more because certain functionality required certain other functionality which required certain other functionality…you get the gist.

The trouble started when the NPC reached the end of his route. For a merchant, that meant simulating jumping through a gate. I don’t care that the NPC doesn’t actually go through the gate, but it has to look like he does. One way to do that was to destroy the NPC object. Another way was simply to make the NPC invisible, or more specifically by deactivating it.

With my central data dispatcher model, deleting the NPC would be OK because I’d have it’s data in the Data Controller and could call it up at will. I’d just need to create a new GameObject, set it’s values, and drop it into the world. But in the name of efficiency, instantiating an GameObject from scratch at run-time is expensive, so conventional wisdom says. If you’re creating a lot of instances, the cost just increases.

Data pooling is the practice of creating a bunch of stuff, sticking it in a bucket, and drawing out items as you need them. Once you’re done with the ones you’re working with, you clean them off and put them back in the bucket. I figured that this was a good idea for dealing with NPCs, and it has some interesting side effects as well.

When you create a new game, the system will generate X number of NPC GameObjects. X is currently in flux. The system loops through the data definitions in the Master Database of individual NPCs — currently named for people I follow on social networks — and assigns the info data to each of the GameObjects. Those GO’s are set inactive to put them to “sleep”, and are stored in a collection within the Data Controller called “NPCPool”. When I need an NPC, I can pull an inactive copy from the NPCPool, set it active, and away it goes. When I’m done, like when the NPC has to use a jumpgate, I just set the object inactive.

The benefits are that I should save on memory and loading time by populating this collection at the start of the game, but also in data retention. If I set up the NPCs with advanced tracking info — like, say, an actual inventory — then having them persist as GOs in a pool means that certain data will also persist. I could technically load an NPC with goods from a station and have them carry those exact goods to another station somewhere else (in a totally random, underhanded, simulation-type way). Should the NPC meet an unfortunate fate, then the actual contents of their cargo hold can spill out into space for collection.

I don’t know if I’ll go that far, though, because I can simulate goods moving through the trade lanes behind the scenes easier than worrying about which NPC has how many goods and where they need to pathfind to in order to sell it. I can also just randomly generate cargo spill on destruction, and aside from reading this paragraph, no player would be any wiser that it doesn’t actually work they way that it seems to work.

So now that I have the pool, a random NPC from the pool is spawned in the scene and placed at an egress point associated with a random jumpgate. The egress point is an empty (non-visible) active GO that serves as a relational position in world space that I can refer to when I need to place or move items through code. Jumping into a system would technically put a player (or NPC) inside the trigger sphere. For a player, they’d get a prompt to jump, but for an NPC being inside the trigger (technically the OnTriggerEnter event handler) would cause them to “jump” — get set inactive. They’d be caught in a never ending loop, so the egress point exists outside the trigger-sphere and will be where players and NPCs are placed when they jump into a sector.

Because the movement calculations exist on the NPC itself, once it’s activated, it just…does it’s thing. Right now the NPC will spawn in and move to a random station, “docking” with the station (vanishing from the player’s view), spending a bit of time doing business, reappear, and move to it’s jumpgate destination. That’s about as far as I’ve gotten for now, as I had to step back, review and refactor the code, so I made sure I wasn’t spaghettiing it up and can understand my own logic in a month’s time.

Read More

Customer Service in the 21st Century

Customer-Service-WordcloudI beg the pardon of those who’ve heard me go on about this for a few days now, but I’d like to talk about customer service and expectations in the Internet Age.

For those of you old enough to remember, customer service was limited to a sales associate, someone at the returns counter, or someone on the other end of the 1-800 number listed in the manual. If you ever had a problem with a good or a service, your options were limited by the amount of time you could spend with someone who might be able to help you. If you wanted to find an item, the sales associate could help. If you wanted to return something, the person at the service desk could help. If you needed to order a missing part of straighten out an account, the 1-800 number representative could help. The biggest issue with this setup was that if you couldn’t get your issue straightened out while you were talking with the customer service person, there was very little additional recourse. There was no escalation, and because everything was done face-to-face (or face-to-telephone-receiver), there was practically no paper trail to refer to for your experience.

The best — and worst — part of the 21st century Internet culture is that customer service has become a stand-alone industry. If you’re selling something, then customer service should be standing shoulder to shoulder with consideration on how to handle distribution and delivery, manufacturing, and compensation for employees. We’ve got an unprecedented level of consumer-producer interaction through websites and social media. “Off-shoring” allows any company to set up service centers around the globe so that customer service is a 24 hour gig now, and sub-industries exist strictly to create and support “customer relation management” (CRM) software that helps producers foster better, quicker, and more reliable relationships with their patrons.

All of this wonderful power has made us expectant, though. We’ve come to assume that the “always on” economy means that we should never have to wait longer than an average attention span for feedback on our customer service requests. Email is instant. Posting a ticket to a support website takes no time at all. Social media is practically in real time. Consumers want satisfaction when they have issues, and while the Internet can provide the cannon from which rapid responses can be fired, companies aren’t always up to the challenge of being able to light the fuse.

*   *   *

As I had mentioned in an earlier post, I’m really enjoying Skyforge. I figured that since I spent money on ArcheAge and didn’t care for it, buying into SF was a no-brainer.

On Tuesday morning I purchased the “Wardens of the Wasteland” collector’s edition from their website. That night, I logged into the game, ready to take advantage of the boosts that came with the purchase. However, I didn’t see any CE applied to my account. I went to the website to check the store page, because when I had made the purchase earlier, the “Buy” button had turned to an “Acquired” label. This time, however, the button only said “Buy”. I had the PayPal receipt so I know the transaction went through…where was my product? I filed a ticket through My.com’s support site, and continued to investigate on my own, searching through the forums and their anemic self-serve support site.

It dawned on me that I had once logged into the site and the game two different ways. The first — how I had been playing SF — was using an email address-based login for a My.com account. The other method had been to log in using my Twitter account. Everything I had been investigating was done under the My.com account, so I logged out, logged back in with Twitter, and re-traced my steps. Sure enough, the store page said “Acquired” on the CE details page. I had made the purchase under the wrong account.

I updated my ticket with this information, and asked if there was any way I could get the CE switched to my “proper” account, or if not, could I be issued a refund so I could make the purchase on the proper account?

Here it is on Thursday morning, and I have yet to receive a response.

*   *   *

Is it wrong for me to expect a resolution in the span of two days? I’m generally an easy-going guy when it comes to turning these kinds of wheels. I understand that a ticket system available to thousands or millions of users is going to get swamped for all kinds of reasons, and the only recourse is to wait patiently for my name to be called. Ordinarily I’d be content to just play the game and hope I get a response in a timely manner. So expecting a resolution? I think it’s fair to allow time for a resolution. A response, however? Yes, I would expected to have received a response long before now, even just a “we’re looking into it” canned response would suffice.

There’s two factors at play here. The first is that I’m “burning daylight”, so to speak. The CE comes with 60 days of “premium time”, which boosts the loot rate needed to advance characters. The second is more ephemeral, and that’s comparing this experience to past experiences I’ve had with other companies.

Generally, my customer service experiences with game service companies have been positive. I’ve had responses in a matter of hours, even when I expected significant longer lead times (Wildstar, World of Warcraft). I’ve had dire situations where I was almost banned from a game, but had the decision reversed and all marks against me expunged when I explained my situation (Defiance and streaming through EA’s Origin client). In most cases I steel myself for a wait of several days, or to have my requests denied, but almost every time I’ve been giddy with surprise. When I want to sit down and play but can’t because of some situation that requires customer service intervention, it’s pleasant to know that companies are standing by to make sure that my lock-out-time is as short as possible, are reasonable, and flexible on the information (not always comprehensive) that I can provide.

Is it fair to compare how one company performs to the past performances of other companies? Absolutely. These companies do not operate in a vacuum. They are all basically small cogs in a universal machine of online gaming. Consumers are spoiled in many respects in that we have an “embarrassment of riches” when it comes to choosing which game or games we want to play; we can be as picky as we like and not worry that we’ll check-box ourselves out of options.

That includes customer service experiences. Ideally, we’d never have to use customer service, and most of the time customer service plays no part in our enjoyment of a game. When we do need to use it, however, I suspect everyone’s experience starts out the same: we gird ourselves for battle with intractable representatives who put the company ahead of the consumer and make our lives difficult in the hopes we’ll go away without costing the company anything. Most of the time it’s not that bad, I’d wager, and we’re at least satisfied with our outcome if not entirely with our experience.

But the best experiences don’t just solve our problems; they make us into repeat customers. Companies live and die based on repeat customers. Loyal customers who like the product can be loyal because of the product, but you never know how loyal until they have to use the customer service system. The experience that a person has with a representative or a process can erode even the most stalwart fan of a company. Just one bad experience can sour a person on a company for a long time, possibly even forever. Since we’ve been trained to not expect a good experience when we have to engage support, we’re so much more receptive to good or great support when we get it. Conversely, we’re also more willing to hold a company in contempt when we feel that we’re getting the run-around, if we get anything at all.

That also sets a bar, and this is where the question of fairness comes into play. Should all companies be judged by a “gold standard” of customer support? Again, absolutely. We’ve got choices, and when we feel like we’re not being taken care of, when we feel that a company is lax in responding to our problems with their product or service, then we as consumers have the right and possibly the obligation to help the industry “normalize” it’s relationship structure with consumers by supporting companies that value their consumers, and taking business from companies which have systems or cultures that allow customer issues to fall through the cracks. I’m purposefully trying to be diplomatic here: I do not believe we should default to “punish all transgressions” in a show of verbal violence. I’d rather companies that cannot keep up be made aware that better care is expected of them, and one way to do that is to take business to companies that can be held up as examples.

I’m hoping that My.com/Allods responds to my ticket before the end of the week. I suspect I have three options in this situation. The first and best is that My.com/Allods responds to my ticket soon, moves the CE to the proper account, or refunds me the cost. For that I could forgive a delay, and would gladly re-purchase the CE. The second and less palatable option would be to have to abandon my progress on my main account and start over on the secondary account. I’d still play, but I would be less than happy about it and would hope that I’d never have to contact their customer service department again. The third and most painful option would be to seek restitution through PayPal, shut down my SF accounts (if possible), and stop playing in protest. That I would rather not do. I accept that with my modus operandi SF will not be on my radar forever; I had hoped to get at least 60 days of enjoyable, stress free Premium gameplay from this purchase, but the longer this process takes, the less likely that is to happen.

Read More

Discord, Your New VoIP App

Like amateur porn, just because you can some people believe that they must, the adoption of voice over IP (VoIP) has become an almost indispensable tool for the modern gamer. So many games require hands-on-keyboard-and-mouse at all times that it makes responding to an incoming chat message impossible. People think they’re being ignored, or someone forgets to check after the boss battle is over, and communication via keyboard just sucks.

The “standards” for a long time were Teamspeak and Ventrilo, but we’ve got a lot of other choices these days, like C3, Mumble, and Raidcall, among others. Most of these work great: the audio is great, people know them, etc. The downside, though, is that a lot of them overwhelm you with options — codecs? Bitrates? Accounts or no accounts? They also all require a server that you have to run, or pay someone to host.

Discord is kind of the opposite of all that. It’s got minimal setup, and no hosting fee. Anyone can set up a “server” and invite people to it. It offers both text chat (which persists between sessions, like a “wall” of your least favorite social network) and also VoIP at the same time. The best (and weirdest, actually) part is that it runs from a web browser. Technically, there’s nothing to download and nothing to install. You simply hit up http://discord.gg, log in, create or join a sever (via invite link), and you’re good to go. If you do want to download their desktop wrapper, though, you’ll gain notification toasts and push to talk (PTT) abilities.

DiscordLayout

Click to Embiggen

Here we have the Discord layout. It’s the same whether we use the web or desktop app.

1. Server list. You can create a server, or join a server. You can inhabit multiple servers, although you can only participate in one server at a time, but are free to switch at will.

2. Chat and voice channels. Chat channels allow you to create rooms by topic to keep your text chatting organized. Voice channels can be created for the same purpose. You can participate in a chat and a voice channel at the same time, and can switch through each independently. There are permissions that can be set via a role system.

3. Voice controls. If you are using the web UI or aren’t using PTT on the desktop client, you can mute yourself or all audio here. You can also get access to some of the settings here.

4. Chat area. Type in the box, see it in the chat window. Simple! You can even upload images, and posting URLs provides a preview of the porn cute animal pictures you’re linking to. Chat posted here persists between sessions, so be sure not to say bad things about other server members. HAHAHAHAH! Seriously, don’t.

5. People on the server. People who are currently live (or AFK) are listed here. A green dot indicates that they’re active; grey means they’re sleeping, eating, fighting off sharks, etc. You can private message people as well, and any open messaging sessions you have active will show up in section 2.

And that’s it! Really.

The only downside that I’ve seen is that Discord servers are invite only. If you don’t have a link to a server, then you’re not getting into that server. There’s no discovery service that lets you “friend” anyone, and you can’t petition to join a server. It’s made a tad bit more difficult because the links you generate to give access to the server are randomly generated, and while you can view the invite codes you generate at any time, you can’t copy them once they’ve been generated, forcing you to type intelligible strings to your friends (caps matter, because of course they do).

I’ve since stopped paying for a TS server because Discord is so simple to use and is always available through a web browser (except IE, probably, because of course it’s not). There’s also an iOS and Android app for your chatting on the go, you social butterfly, you!

 

I am not affiliated with Discord, but I do like pimping services that I find to be useful and friendly. 

Read More

I Know This Will Curse Me But…

Well, looks like Skyforge has become my game du jour, every jour for the past few jours so far.

At my advanced age, I’ve convinced myself and anyone who’ll listen to my shouting from the park bench that I’ve earned the right to game at my own speed. I grew up in the age when “punshing” was the lowest and default setting for any game, and it didn’t deter me. I played Unreal Tournament at large LAN parties. I played MMOs on dial-up, people! Gaming, thy name is masochism. But now I just want to enjoy my gaming time. Since I played mostly RPGs or varients thereof, progression is important to me; more important than a feeling of accomplishment, or knowing that I’ve persisted in a bid to overcome challenges and difficulties. I don’t get my enjoyment from being better than what the game throws at me, nor do I really care for prestige in the eyes of my fellow gamers. I just want to have fun.

But I’ll be damned if I’m not having a hell of a time with the challenges of Skyforge. First, I want to say that I’m not immune to the irritations that seem to be floating to the surface with a certain level of frequency, but I’ve always been able to look past that; bugs rarely bug me. It’s a mystical power of mine. Instead, I focus on what I enjoy, and so far I have really been enjoying kicking the crap out of things that want to kick the crap out of me.

So far, the game has treated me well. It’s been difficult, but not super-duper difficult. Not Dark Souls level difficult. Not Defender level difficult. But there are hair-raising moments, and I’ve managed to come through them all. In fact, my only death so far was particularly ignoble: I tried to reach a section of the map that took me through a coastal swell, and I drowned as a result of my efforts. Wicked anticlimatic.

I’m trying to understand why I can stand (for now) the glaring repetition that Skyforge is throwing at me. I did the same zone three times in a row last night, once to start it, again because I missed the objective before teleporting away, and a third time because the narrative told me to. But that’s OK; I was looking forward to it. I don’t even know myself anymore.

Actually, scratch that. I know that I’m seeing definitive progress, with a caveat. It seems that Allods Team has found a sweet, sweet formula to get me to pony up for premium service. See, every player starts out in the most standard way, learning the ropes, doing nothing that you wouldn’t expect to be allowed to do in a free to play title. Then suddenly, BAM! they grant you a free three day pass to their premium membership. Premium membership in Skyforge increases the amount of progress you see as you play. It’s very clear that once your free-mium access runs out, though, you’ll be progressing at a significantly slower pace. The currency drops will be reduced. You’ll be earning less overall, and at the end of each mission, they tell you how much you could have earned if you were a premium player.

Well played, Skyforge. My free-mium status ends today, actually, and I’m already getting nervous. What will my progress look like without premium status? Will it be arrested to impossible-to-stand levels, as many people claim that it has been for them without premium access? Being progression-oriented, that would be like a literal door being slammed in my face. A steel door. Maybe the door to a safe. Like a bank safe, not one of those small ones hidden behind a painting. One that would hurt real bad.

My next step, then, is to decide which level of premium to go with. The per diem 3 pack is a good deal for a weekend, but I do play during the week. If I were to play every day, then I’d like something more robust. I might consider the $14 starter pack, although since I’m writing the game this love letter, why not go nuts with the $60 CE with all the currencies and all the two new classes and all the moah mount and all the two months of unadulterated premium access?

The only concern in my mind, I guess, is “what then”? Maybe I can get two solid months of play out of this game. Heart of Thorns is coming out. And Sword Coast Legends as well. And stuff on consoles as well. There’ll be claims on my time from other corners. I think maybe two months might be a good amount of time. Then I could evaluate where I am and decide if I want to run with ad-hoc Argent purchases, or just see if non-premium is as bad as it sounds.

Read More
content top