Milk, Vaults & Ulfoi

Player-to-Player Interactions

I’ve been cruising along with infrastructure features, hoping to get a fair number of them in place so that the LoE team can reuse my server tech for more stuff.

It’s funny what ends up getting coded first, though. I started working on the player-to-player interaction system, which will let players trade, duel, play board games against each other, etc. The first step was to have a confirmation box: “Player X would like to do Y with you, accept/refuse/ignore?” So I added that tech, but in order to test it, I needed it to do something once you pressed Accept. So I looked for the simplest player-to-player interaction possible. And way, way down the list I found it: milking.

So PC cows can now be milked by other players. “Bob would like to milk you. Accept?” If you accept, Bob gets milk, and the interaction ends. It’s literally the simplest possible interaction, so it got coded first. I just never would have guessed that while making the task list.

The most important interaction I want to support is player-to-player trading. But that’s the hardest interaction (yes, harder than a simple board game!). There’s a lot of different steps to get there. But I’m adding tech that leads up to it. One such piece of tech got added this week, and is useful for another feature: storage vaults.

Storage Vaults (And Related Places to Dump Crap)

In some MMOs, the “bank vault” is really just a special backpack. It travels around with your character, but you just can’t access that “backpack” unless you’re at the bank. That makes it incredibly easy to implement, and avoids tons of special cases. But the down side is that you can’t have too much stuff in the vault, because all your backpacks are always in server memory, and server memory is scarce.

I wanted to avoid that, so Gorgon’s storage vaults are stored in the database separately from players. This means I can have a lot of storage available to players… but not all in one box. There’s a sweet spot of about 100 complex items per storage container; when there’s more than that, things get a little bogged down. (Retrieving all the info from the database takes a tiny bit longer, and sending all the info to the client takes a bit longer, too. Nothing earth-shattering, but better to avoid it.)

So my plan is to have a the traditional “inter dimensional” storage, a la WoW: no matter which Bank you go into, your stuff is the same. That’s the main storage vault, and it costs a lot to buy slots in there.

But I’ll also have lots of other small storage areas. For instance, if you become good friends with an NPC, they might let you store a few dozen items in their home chest. (Those items only exist in that chest, so you have to trek back to it to get your stuff… but that’s gameplay, not a flaw!)

This also means I can have some location-based decisions. In a busy city, extra storage slots are hard to come by. Out in the boonies, you can store a ton of stuff for cheap, but then it’s a pain to transfer.

I’ll also use a related system for consignment vendors: when you’ve befriended a shopkeeper, you can give them a few items to sell in their store for you. But that part comes later. Everything happens in little steps!

Special Request: Ulfoi

One of the cities in Project Gorgon is under constant attack by a horde of demons from another plane of existence. They can’t be bargained with or reasoned with and they won’t stop coming. In other words, they’re perfect classic video game monsters that you can feel no remorse in killing.

I was basically thinking of aliens from Aliens, or Zerg from Starcraft, or maybe even a fantasy version of Borg. Later it occured to me that this monster also fits the same ecological niche as Olthoi from Asheron’s Call (a game I worked on long ago). So to amuse myself I named them Ulfoi as a kind of homage.

They have a few similarities: they’re both a little reminiscent of Aliens, and they both have a scary queen who’s a boss monster. Here’s Will’s initial sketch of the queen, an egg-laying tentacle beast:

ulfoi queen

But when you get down to it, they’re not very similar at all. Olthoi are insects while Ulfoi are demons. The only reason you’d likely even compare them is because I gave them a similar name.

So that name is a problem. I’m afraid people will say “you stole that from Turbine” or other such nonsense. And really, the name “Ulfoi” just feels like… it’s trying too hard to be clever.

So… does anybody have a better name?

This entry was posted in Project Gorgon. Bookmark the permalink.

18 Responses to Milk, Vaults & Ulfoi

  1. Lolin says:

    oh I have spent HOURS with the Olthoi. Moo.

  2. Ken says:

    Moohoo! I wonder if a cow-player will be able to milk another cow without being treated like a freaky kinky cow now?

    As far as naming I come up with american bankers as a role model but my imagination isn’t coming up with a related name. Leprechaun doesn’t seem quite right. hmm…

  3. Jason says:

    Storage on NPCs in disparate locations is a neat idea! Before your players ask, make sure you have a way to locate those items from afar or determine which NPCs and what items you have where without having to travel to the locations and search.

    One thing we always ran into with bank loading (and other MMOs like Lotro had this issue as well) was that the contents weren’t requested until you “opened” the bank. So there was always this two or three (maybe longer depending upon load at that time, such as during busy weekend evenings) second hitch while it retrieved your data.

    Two things you might consider for the loading issues are…

    1) Once a player loads the bank for that session, cache it on the player.
    2) If they come within a certain range of this storage, consider loading it just in case.

  4. Zhinru says:

    Milking players… must stop myself from innuendos.

  5. Lolin says:

    Oh right….helpful comments. In AC2 when we had to use pack mules, I’d go nuts trying to remember where I put that thing I really thought I had. Would there be a way to see where we had that thing before we trekked all the way to Hobbiton to get it?

  6. Markus says:

    Egg-laying tentacle beasts and playing milking… it has to be asked – can the tentacle beasts milk players in humanoid form? (Or can I milk my female elf buddy, for that matter?) ;)

    Also, how have you implemented your database? Are you using an existing database management system or have you written your own?

  7. Mavis says:

    Given that people can not communicate with them – the only name the players will have for them will be the one the city has given them…..

    And because I’d find it funny – I’d just call them “Fuckers”.

    Cue lots of comedy dialogue…..

  8. Mouse says:

    Name ’em based on their goal. Do they want to eat folks? Something like Ravenor (Ravenous). Destroy everything? Tropi (Entropy… and cue jokes regarding the tentacle beasts and kidnapped elven heroine). Just as long as you avoid the unne’cessary apo’straphy s’illiness.

    Alternately something onomatopoetic. Give ’em a disturbing sound effect and name them for it.

  9. Rauxis says:

    I have an idea creeping out of the back of my mind …

    Eric, what is the cultural background comparable to this city? Western middle ages, arabic, east indian, native american, south american…?

    Rauxis, chosen of CAT

  10. Mike says:

    That’s obviously a Splaughulthormus, though some people simply refer to them as “Hordlings”.

  11. Ken says:

    Hmm, just occurred to me that we could take a friendly poke at another game I’ve been following and call it a Greed Monger.

  12. Eric says:

    Good stuff here :) I like ravenors or something in that vein…

    Other things:

    – I’ll add an NPC who can generate a list of all your items everywhere. For a fee, probably. Good idea!

    – only cows can be milked, and cows still can’t milk other cows, due to the hoof problem. (But there might be magical milking-machine items at some point that let cows milk other cows.)

    – High-level cows can already milk themselves; this was added for their convenience. However, visualizing the logistics of this is left as an exercise to the reader…

    – The database is MongoDB, though it’s also used some MySQL tables in the past and may again in the future

    – The city under attack by the ulfoi is… hmm, well it’s a fantasy city, but it could be described as a mix of ancient Hindu ideas mixed with the more violent aspects of Aztec culture. I don’t think that’s very helpful description though, huh…

  13. Neofit says:

    I am not sure that having many vaults in different locations will be fun. It sounds fine on paper, but I’ve suffered through that already in Fallen Earth, and in the real world I did not find it fun at all. But then again the itemization in FE is horrible, once you start crafting you need a couple of dozen ingredients per tier and per craft, and at one point you start spending more time managing your inventory than playing the rest of the game.

    But even if you have less items to store, if you create another vault in another location it is to limit the main one and make people spend 10-20-30 minutes of their life to go the other one, probably many times a day. I do not see what this adds to gameplay, it is not challenging, just a timesink. With all the other great ideas you are implementing into PG, this one strikes me as very odd.

  14. Eric says:

    I haven’t played Fallen Earth, did it have a universal-access vault also? I think that’s the key to the idea’s success. There’s a regular vault of typical MMO size, accessible from each town. So the other storage areas are bonuses. You’re likely to store your exotic crap there, not your day-to-day stuff — common stuff would go in the shared vault so you can get it from any town.

    I’m not sure yet how much stuff each crafting skill will take, but I wouldn’t be unhappy if the design causes people to designate towns for different skills — at high level when you’re running out of room, you use town A for armorsmithing (and store your armorsmithing stuff there), town B for cooking, etc. That has some nice locality verisimilitude without being too tedious. (If you really need to move out of a town, you’d use the shared vault plus your main inventory to do the transfer in, at most, two visits).

  15. Markus says:

    From what I understand MongoDB doesn’t support atomic transactions across documents. Is this part of the reason player trading is proving difficult to implement? If so, how do you plan to get around it?

  16. Eric says:

    No, that’s not really an issue, because players can only trade when they’re in the same geographical area. Each geographical area (a Java process) “owns” the players in it. Items are atomically swapped on the Java representations of the players, and the players are saved periodically — including atomically saving before switching areas. So the only danger of item loss is if the sub-server crashes… which is adequate for a game. (After all, if there’s a bug in the server that causes a crash, there is just as likely to be a bug in the logic that allows players to dupe items anyway.)

    The more complex parts are making sure all the game systems inter-communicate to the extent that players can’t cheat the system — for instance, by trading an arrow at the same time that it’s being fired (it’s in the air but is still “owned” by the player for that split second). Lots of weird conditions. They all have to be handled in a coherent fashion as opposed to having dozens of special-case handlers, so there’s some architecture stuff needed for that.

  17. bubble says: