24 September 2008

More Navigation

I recently designed a navigation bar that meets the following criteria:

Cross-browser support (IE, Chrome, Firefox)
Scriptable (add/change links by only changing HTML, can create an ASP .NET or other server control with it)

The design I came up with looks like this:



The images are replaceable to match whatever theme. Sizes and so forth can be adjusted in the CSS.

Here's the HTML layout:

<div class="subNav">
  <div class="line"></div>
  <table class="links" cellpadding="0" cellspacing="0">
  <tr><td>
    <a href="#">
      <span class="left"></span>
      <span class="mid-wrapper">
        <span class="mid"></span>
        <span class="text">Text</span>
      </span>
      <span class="right-mid"></span>
    </a>
  </td><td>
    <span class="divider"><span>
  </td><td>
    <a href="#">
      <span class="left-mid"></span>
      <span class="mid-wrapper">
        <span class="mid"></span>
        <span class="text">Text</span>
      </span>
      <span class="right-mid"></span>
    </a>
  </td><td>
    <span class="divider"><span>
  </td><td>
    <a class="selected" href="#">
      <span class="left-mid"></span>
      <span class="mid-wrapper">
        <span class="mid"></span>
        <span class="text">And More Text</span>
      </span>
      <span class="right"></span>
    </a>
  </td></tr>
  </table>
</div>


It is a lot of HTML, compared to some other ways to do it, but it doesn't have any weird, oversized target areas, and it is very scriptable.

Here's the CSS (for transitional doctype):

.subNav
{
  position: relative ;
  width: 100% ;
  height: 32px ;
  text-align: center ; /* centers in IE */
}

.subNav .line
{
  position: absolute ;
  left: 0 ;
  top: 15px ;
  height: 1px ;
  border-top: 2px solid #aaa ;
  width: 100% ;
}

.subNav .links
{
  position: relative ;
  top: 0 ;
  margin: 0 auto ; /* centers in firefox and chrome */
  text-align: center ;
  vertical-align: bottom ;
}

.subNav .links a
{
  position: relative ;
  display: block ;
  text-decoration: none ;
  color: #000 ;
  height: 32px ;
  padding: 0 4px;
}

.subNav .links a:hover
{
  cursor: pointer ;
}

.subNav .links a .left
{
  position: absolute ;
  display: block ;
  left: -4px ;
  width: 8px ;
  height: 32px ;
  background: url(subNav-grey-left.png) no-repeat ;
}

.subNav .links .selected .left
{
  background: url(subNav-blue-left.png) no-repeat ;
}

.subNav .links a:active .left
{
  background: url(subNav-blue-left.png) no-repeat ;
}

.subNav .links a .right
{
  position: absolute ;
  display: block ;
  top: 0 ;
  right: -4px ;
  width: 8px ;
  height: 32px ;
  background: url(subNav-grey-right.png) no-repeat ;
}

.subNav .links .selected .right
{
  background: url(subNav-blue-right.png) no-repeat ;
}

.subNav .links a:active .right
{
  background: url(subNav-blue-right.png) no-repeat ;
}

.subNav .links a .left-mid
{
  position: absolute ;
  left: 0 ;
  top: 0 ;
  display: block ;
  width: 4px ;
  height: 32px ;
  background: url(subNav-grey-mid.png) repeat-x;
}

.subNav .links .selected .left-mid
{
  background: url(subNav-blue-mid.png) repeat-x;
}

.subNav .links a:active .left-mid
{
  background: url(subNav-blue-mid.png) repeat-x;
}

.subNav .links a .right-mid
{
  position: absolute ;
  right: 0 ;
  top: 0 ;
  display: block ;
  width: 4px ;
  height: 32px ;
  background: url(subNav-grey-mid.png) repeat-x;
}

.subNav .links .selected .right-mid
{
  background: url(subNav-blue-mid.png) repeat-x;
}

.subNav .links a:active .right-mid
{
  background: url(subNav-blue-mid.png) repeat-x;
}

.subNav .links a .mid-wrapper
{
  position: relative ;
  display: block ;
}

.subNav .links a .mid
{
  position: absolute ;
  display: block ;
  height: 32px ;
  width: 100% ;
  background: url(subNav-grey-mid.png) ;
}

.subNav .links .selected .mid
{
  background: url(subNav-blue-mid.png) ;
}

.subNav .links a:active .mid
{
  background: url(subNav-blue-mid.png) ;
}

.subNav .links a .text
{
  position: relative ;
  top: 8px ;
  font-size: 14px ;
  font-family: sans-serif ;
  line-height: 16px ;
  vertical-align: top ; /* makes it v-centered in IE */
  padding: 0 8px ;
}

.subNav .links .divider
{
  display: block ;
  height: 32px ;
  width: 1px ;
  background: url(subNav-divider.png) no-repeat ;
}


As you can see, everything to do with the layout is defined in the CSS, from sizes to images.

23 June 2008

MMO Corruption

I have no doubt that corruption exists in some form in every MMO out there. See, it's a double-edged sword. Either the people who make and maintain the game have no interest in playing it, and then they can easily miss the mark on what's fun. Or the GMs and Devs are avid gamers and as a consequence probably make a pretty fun game, but they daily are tempted to put their self-interest above their integrity by cheating. And there are shades everywhere in between those two.

But I had to laugh the other day when I read about the EverQuest 2 dev "scandals" that happened months ago. There were a couple of instances where a dev told someone how to defeat raid encounters.

Lol, is that the best you can do?!

Heck, in Eve, a GM or Dev spawned items on the Live server and let their corp profit off of them for many months. It was discovered by Eve staff, and nothing was even done about it. And then when it was discovered and forced to the forefront by an (arguably malicious) player, that player got banned, any mention in the forums of it got you banned or moderated, and the Employee in question was not even fired.

Granted, enough people were outraged by the cheating that CCP now has a player-elected representative visit Iceland to inspect the works. However, I'm not so confident in most any player's ability to detect cheating by the game's own developers, lol. But anyway it was a nice gesture, and a sign that perhaps they will take cheating a bit more seriously next time.

So anyway, a GM telling someone how to defeat an encounter or use a pathing bug to defeat a mob was bad, but ridiculous to get too hot and bothered over compared to those things.

I thought the more heinous thing that the EQ2 GM did was to quote word-for-word someone's bug report who was reporting the pathing bug, and tell their friend to use that to defeat the mob. I can't imagine the horror on the face of the guy who submitted that bug report if they ever saw how the GM used it instead of actually fixing the bug. That GM gets bonus evil points in my book.

28 February 2008

Eve Online: Hating to Love It

Eve Online is a space-based MMO that I have played it for several years.

One of the hallmarks of Eve Online is freedom. You are free to be just about as good or as evil as you want to be. In some ways, the game encourages you to be evil. In all cases the denizens of the game punish naivete with impunity, and the game encourages cut-throat capitalism.

The major draw of the game is purportedly PvP combat (even though only 19% of the game's population actually visit lawless space, according to CCP) -- blowing up other players for the sheer enjoyment of it. However, unlike other games, loss of a ship or death of your character has a potentially significant cost in the form of your time. In most PvP games, the death of one's character carries a negligible penalty. In Eve, you have to replace that ship, that clone, those enhancements. And that costs money (in-game), potentially a lot of money, which represents a significant time investment in the game. Smaller ships cost maybe a few hours of your time to earn back the money and buy and refit the ships. Larger ships can cost weeks or months of your time to recoup a loss. The largest of ships can take the efforts of an entire corporation or alliance many months to recoup. Character enhancements can potentially take weeks of effort to recoup a loss on top of ship loss.

Outsiders might wonder why you would play a game where one's time was wasted so wholesale. Well, Eve does have some less risky areas known as "high security space" (hi-sec). Anyone who attacks your ship unprovoked in hi-sec will quickly get their ship blown up by the police. It seems that most of the Eve Universe stays in hi-sec according to the same report from CCP.

However, hi-sec is not without risk. You are liable to be openly attacked if you carry very valuable cargo in an indefensible ship. The attackers will lose their ship, but you will likely lose your cargo to other players that scavenge your ships remains. They can scan your cargo hold before hand to make sure they will gain more than they lose. Hi-sec is also subject to corporate wars. Essentially a corporation or alliance may pay off the police to look the other way while you fight each other. The vast majority of hi-sec corp wars are started by small mercenary corps who are paid to do so or think your corp is a juicy enough target to profit from. Essentially corp wars are a version of police bribery and gangster-style "protection". Also, hi-sec is subject to scams of various kinds. Sometimes CCP (the makers of the game) punishes scams, but often times not. There are a lot of "scams" on the market where people count on your ignorance or mistakes (e.g. in one click, you've sold something for 500 thousand that you meant to or could have sold for 500 million). More often than not, the scams involve other people blowing up your ship. Either by using the market to lure you to low security space, or convoluted methods using the poor or non-existent warning indicators to mask a war that other people in a gang are involved in, making you also a valid target of their war (and said war was contrived only to enable the scam in the first place). [Edit: After many years of people being taken advantage of by poor gang mechanics, CCP finally decided to fix it with a recent patch.] There are also internal threats, corporate espionage, etc. If you make someone a director of a corp, and that person leaves the corp, taking every corporate asset with them, the GMs standard response is a politely-worded "Sucks to be you."

Eve is a very cold place. Being naive is the quickest path to losing something. Trust is never assumed. The game publishers seem to thrive on the whines of the swindled. Being cruel can be a profitable business. The worst parts of the real world are the worst parts of Eve, but in Eve they seem to be more pronounced because the game allows it, the consequences are light, and the people less inhibited.

Eve Online is a game that I hate to love. I hate the fact that Eve enables people to try to wreck the gameplay of others like no other game that I've played. The popular excuse for this is: "Eve is a pvp game". In reality, this sentiment should read "Eve is a griefer's game". Despite itself, Eve still manages to have a draw on non-maligned people. Maybe it's the market, or the skill system, or the open-ended nature of the game, or the free expansions, or the fact that you can play for free using in-game money, or the friends. Whatever it is, it's a fragile balance, and I hope one day the game moves further away from being a griefer's game.