Expediency, Thy Name is Indie MMO

Behold the terrifying giant spiders from the pre-alpha “castle zone”!

Giant Spider in Pre-Alpha 1

Hideous! They can inject deadly venom right through your armor. Fear them! Next, behold the giant spider after it’s been lit up by a fire mage:

Giant Fire Spider in Pre-Alpha 1

There’s a spider that’s having a bad day! And now, behold that most horrid of beasts, the Giant Fire Spider!

Giant Fire Spider in Pre-Alpha 1

Yeah. Fire Spiders look exactly like ordinary giant spiders that happen to be on fire.

How can you tell them apart? Well, fire spiders can spit fireballs at you, so that will be a big clue.

I’d intended to make the fire spider red, but I can’t find a way to do it that doesn’t end up using an extra copy of the spider texture in video memory. (Technically speaking what I mean is that materials with shared textures but different diffuse colors seem to each require separate copies of the textures… disappointing.) I’m not by any means a 3D expert, and it’s actually been pretty hard to find useful advice for intermediate/advanced Unity optimization.

That’s why you should also watch out for fey panthers. They show up in later zones, and they look exactly like regular panthers, but they will seriously kill you. You can tell the difference by how they can heal themselves, and by how they murder you really fast.

I hope to have time to make all these things better. But there’s so much polish required for an MMO that I can’t realistically expect everything to be as good as I want. I mean, the game is inarguably better for having fire spiders in it than not. They’re fun to fight. So that’s the cut-off for whether they go in the game or not.

Graphical excellence is probably always going to be out of my reach anyway: it’s an indie MMO made by a programmer/designer. (Note the lack of “artist” in those credentials.) My only goal with the graphics is to not be embarrassingly bad to the point that it ruins immersion or damages player adoption rates.

Also, watch out for psychic mantises. They’re very similar to regular giant mantises, but they can make your head explode.

EDIT: thanks to some commenters pointing out my error, fire spiders are now kinda reddish (and on fire). Fey panthers are greenish and easier to spot. And psychic mantises… still look exactly like regular mantises. Their chief weapon is surprise. Surprise and fear. No, fear and surprise.

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

14 Responses to Expediency, Thy Name is Indie MMO

  1. asafsitner says:

    How about different scales?

    Make the fire-spiders larger. I presume an OMG, IS THAT A FIREBALL SPITTING SPIDER?!?! is more dangerous, and if it’s larger it’s more dangerous (perception-wise, what is more terrifying – a tiny spider that’s very venomous, or a giant harmless tarantula?).

  2. Dave Rickey says:

    Trick for getting multiple uses out of a single skin: Make the original skin both lighter in tone and low in saturation then tint the geometry. So ordinary Giant Spiders could be dark grey/black and Giant Fire Spiders would be light grey/red.

    –Dave

  3. @Asa: Ah, but if you rely on size, how will the player know whether it’s a giant flaming spider that’s a good distance away versus a regular size spider that is both closer and currently on fire courtesy of a yet-unseen mage? :)

  4. Ahtchu says:

    @ Green Armadillo
    Aha! But how else do you keep the player on their toes?!

  5. Nevermind says:

    Technically speaking what I mean is that materials with shared textures but different diffuse colors seem to each require separate copies of the textures… disappointing.

    How do you know that? I just tested, and textures do NOT seem to be copied. I created a bunch of cubes using same (big-ass) texture but different materials with different colors, and texture memory only increased once (at least, according to Unity profiler).

    Here’s my code:

    public GameObject cube;

    void OnGUI(){

    if(GUI.Button(new Rect(0,0,100,100),"do")){

    var c = (GameObject)Instantiate(cube);

    c.renderer.material.color=new Color(Random.value, Random.value, Random.value);

    }

    }

  6. Eric says:

    @nevermind – hmm that’s encouraging, thanks for trying that! I tried a similar test, but I was reading the numbers in the Stats panel of the game window. It seemed to be increasing with each version, but that could be because of a problem with how I’m streaming the monsters into the game.

    Can you check what shader you’re using? (e.g. Diffuse, Bump Mapped etc.) Maybe I just need to use “VertexLit” shader to get the savings? I will play around with it.

    (I also tried asking a question on Unity Answers, but the only answer I’ve gotten was that “it would help a little” or something strange like that.)

  7. Eric says:

    On scaling the spiders — I do plan to use that trick eventually, but during pre-alpha, all monsters have the same physics size on the server, so when a monster gets too big, he runs right through you instead of stopping when he reaches you, and his legs literally go through your body when he attacks. It’s pretty disturbing!

    … and if I make the spiders too small, they get hidden by the tall grass. :) Which is terrifying, but seemed a bit too evil.

    But yeah, that’s a very important trick for the final game!

  8. Nevermind says:

    @Eric I looked at Stats window too, and the number there (“Used Textures”) did not change after first time. I used Diffuse shader, but I don’t think that’s what matters here.

    In fact, I believe I know what happened. Most probably, you load both your spiders from different AssetBundles complete with texture. And objects from different AssetBundles are duplicated whether they are identical or not. I just checked with three different bundles, all built from the same object: when I load (and instantiate) each bundle, Stats window shows marked increase in memory consumption.

    This also means that having all spiders have the same color does not save you anything – texture is duplicated in memory anyway. I can’t think of any way to stop his duplication, except put shared texture in a separate bundle, and attach it to the model in runtime.

  9. asafsitner says:

    By the way, it’s possible that testing inside the Unity Editor will result in misleading numbers as there have been numerous known cases of leaked materials and textures not cleaning up properly (whether it’s Unity’s notorious GC or not is still in debate).

    Linking the Profiler to a standalone build or using external profiling tools might give a clearer, more accurate picture.

  10. Mavis says:

    I like the idea of tiny spiders that hide in the grass…… ‘sure the direct route is across the plains but that’s tiny spider country and only an idiot goes there…..’. :-)

  11. Eric says:

    @Nevermind – I have a system to account for that, but it’s very complicated (storing all the parts of each asset separately so I can download each only once, making sure Unity can recognize them as identical). There was a bug… actually there are probably many bugs :) But I think I have texture sharing working now! Thanks for the insight.

    @Mavis – you know when you put it like that, I do like the sound of Tiny Spider Country…

  12. Crito says:

    Hey Eric, care to comment on this:

    http://tobolds.blogspot.com/2012/02/designing-impossible-game.html

    This kind of dream-spinning comes up a lot, but it keeps us focused on the ying and yang of scripts and chance.

    C.

  13. Eric says:

    @Crito – The stuff in his “impossible MMO” isn’t hard. It’s all been tried, and most of it, discarded because it’s not fun. Tobold’s always been better at finding the flaws then providing the remedies.

    What Tobold proposes is a game where you can’t prepare ahead of time — where nothing can be known. Thus it either ends up needing to be easy enough to accomplish regardless of what you happen to have prepared, or else it requires masterful preparation for all possible scenarios. Neither result is something players generally want to experience in an MMO.

    If you look beneath this random collection of features what you see is two things. First there is a desire for danger, for the knife’s edge of difficulty: the perfect level of difficulty so that it’s incredibly hard but you can just barely do it, and when you do it you feel amazing. This is a common desire, but it’s very hard to deliver. Even pencil-and-paper RPGs have a hard time delivering it. As a DM, my players love combat, so I strive to give them fights just within their capacity. It generally flops and they either win handily, or else they are destroyed utterly. Living on the knife’s-edge has its rewards, but it is not a place for the faint of heart. And it certainly has nothing to do with the mechanics he’s mentioned.

    Secondly, Tobold wants an MMO that is always fresh, so there is always something new to discover and experience. This is a lofty goal, but his feature set doesn’t come anywhere close to doing that. Randomly shuffling entities around doesn’t do it. Giving monsters occasional unpredictable attacks doesn’t, either.

    In the same vein, he also has a desperate desire make it impossible to look things up on website cheatsheets. That’s a totally separate topic, but I don’t think randomness alone is very good for accomplishing this goal: it has to happen much deeper within the game. If the game attracts players who feel the need to use walkthroughs, then walkthroughs will still exist. And they will still rob the game of its mysteries… but instead of specifying what lies around the corner, they’ll provide listings of the possibilities. This will make the walkthroughs much harder to use, frustrating the players who feel they need them. Does that make them quit using them? Or quit the game? Or work to minimize the effect of the randomness? (“Damn, the dungeon has deadly poison spiders today — the walkthrough says that only happens 12% of the time! I’ll try again tomorrow.”) Or does it do something else to player behavior? In short, what outcome does this have on the MMO?

    I don’t think Tobold has given deep consideration to such questions. Not that I’m blaming him or saying this is unusual. I know I often avoid thinking everything through to its logical conclusion because my enthusiasm for an idea gets in the way. But that’s where sharing your ideas in public can help point out the flaws, I guess.

  14. Crito says:

    Eric,

    Thanks for the reply! I think you were right about the type of experience he’s looking for. It is interesting that certain mmo players consistently idealize specific mechanics or ideas such as randomization or completely dynamic/persistent worlds. I understand the tug but don’t have the solutions. It’s great to see gorgon in progress and consider all the puzzle pieces (vicariously) as they come up.