How The Game Is Played

http://blogs.sun.com/gameguy/date/20080614 Saturday June 14, 2008

Its an XML... its a YAML.. no, its SADDL!

So, I've been meaning to check out YAML for awhile. XML can be handy but its SO verbose and so human-unfriendly. A friend suggested I check out YAML. Since I was writing a configurable UI system for my current project I figured now was a good time to try it

YAML is *better* in the area of human writability but it had a big flaw in my mind. By default, order has no significance. In order to make order significant you need to clutter up your file with this extra lines containing nothing but a dash. Two levels deep on my menus was already ugly. I was dreading going three.

What I *really* wanted was something that was like a Windows INI file or a Java properties file, but that had some of the characteristics of YAML such as hirearchical data blocks and the ability to represent objects.

Thus was born SADDL. That stands for either "Simple Application Data Description Language" or "Still Another Data Description Language." Ive been evolving the unspecification in an open soruce project as well as a currently about 80% complete reference implementation. I call the document an unspecification because it is not a formal specification. Honestly, I hate formal specs. IMO all they tend to do is obfuscate the facts to anyone but an academically trained reader. I am also not a formal spec trained writer. I am trying however to make the unspecification easy to read and logically complete. If you spot any holes, let me know!

The SADDL project can be found at:
http://code.google.com/p/saddl

A travelog of alternate realities

So,
Lost of people around here have heard me snort whenever second life is mentioned as a good example of a "virtual world." You will get the same reaction from most gamers. I could try to explain why, but they say a picture is wroth a thousand words.

So here is a little journey in stills across two current, real virtual worlds in two games today-- City of Heroes and Age of Conan. Please realize that as impressive as these are, they don't really do the games justice because there are all kinds of in game animated effects you cant really see in stills. Ripples on the water, things like that.

Also please keep in mind that there are no backdrops. Everything you see in the distance is real geometry that
can be approached, walked on or otherwise interacted with. The jaggies you see are because these are full screen sized shots that I set for reduced size in the web page so you could look at them easily in a browser.
























http://blogs.sun.com/gameguy/date/20080613 Friday June 13, 2008

Fun with Project Darkstar and JMX

Hey All,

This is just a sort of a random update, but I thought it was neat enough to share. I'm currently multi-tasking and one of the projects I'm working on is the server side of a complete casual game example for Project Darkstar. It is our intent to show it at the AUstin Game Developers Conference in september and release it as open source for other developers to take and modify.

As part of the demo w wanted to be able to peek under the hood at what the app was doing while it was running. After some poking around (and a pointer from a co-worker) I discovered that Java 6 has a *wonderful* tool built in called JConsole.

It is a complete, extensible, JMX viewer you can fire up and just attach to your VM. For anyone who doesn't know, JMX is the monitoring API for Java. You get all sorts of useful VM stats like memory consumption and number of current threads, but the best thing is that extensibility. By writing very little code you can expose your own information to the Console!

For my demo I have written a little Project Darkstar service thats starts an MXBean and registers it and then handles data requests from thw NMXBean. A service is necessary because the data comes from a Project Dakrstar managed object and you need to be able to run transactional code to read a Managed Object. I will be posting the actual code in tghe next day or so, its remarkably small and simple!

http://blogs.sun.com/gameguy/date/20080530 Friday May 30, 2008

AoC... the C is for Conan, not Customer Service

Alright,
Last week I gave the new Age of Conan game a rave review. This week I'm going to give it a rant.

The game is really really good. It has the usual launch technical issues but these in themselves are not all that surprising.

Funcom however should be ashamed of how bad their customer support is right now. I want to make it clear that I am not blaming the GMs (the CSRs). They are doing what they can with an obviously and terribly broken system. The system does not and cannot scale to meet the needs of a launching game.

Here's how the system is designed:
(1) The player tells a chat-bot that it wants help. This goes on an (in memory) queue in the chat-bot process.
(2) As GMs come available, they take the next ticket in strict FIFO order. This removes it from the queue.
(3) The GM attempts to contact the player in game. If the player is NOT in game, then they send the player a "Sorry you weren't here. Please resubmit your problem" message and the ticket is deleted.
(4) Next time the player logs on, they see that message and have to start at the back of the queue again.

You see the problem don't you? This is a queue thrash waiting to happen and in fact thats what IS happening right now. The queue gets so big so fast that it takes many many hours for any one persons ticket to get looked at. I'm estimating about 8 to 10 hours in the current avg queue length Im seeing of 200 messages, based on my own experiences in that queue.

This means the vast majority of tickets WILL get read AFTER the user has logged off. Which means the CSRs are spending msot of their time writing "Sorry" messages rather then getting any real work done. This slows the queue down even more so it grows even bigger.

The only release valve for the queue is players who give up on ever getting help from Funcom and stop re-submitting. This is NOT a desired customer service state.

Here is a journsal of my own 3 days spent on that queue:

Day 1:
I get stuck behind a peice of geometry. I try the /stuck command. This makes it worse by actually throwing me behind the building and off the map.

I try "Asura's Recall", it won't work because I am on the "Kill Strom" quest which disables it.

I try an instance change. It wont work because there is only one (personal) instance of any tortage night mission. I look around for some way to kill my character and find there is nothing. I put in a ticket and wait, and wait, and wait, at 1:30am I go to bed cause I have to work,

Day 2:
I log in and the first thing I am greeted with is a message from a GM saying "Hi. You werent here so we deleted your ticket. If yous till have problems please resubmit." I resubmit and discover that I am at the back of the queue all over again.

I resubmoit my ticket and start waiting. I periodically check my ticket, which starts at about 210. Apparently the ticket serve crashes because my ticket vanishes at about 180. I submit it *again* and Im back to 200. This happens once more during the night.

Pissed off, I go to the boards and spew. Someone points me at a buried response from funcom in the customer service part of the web site that says if you have waited over two hours and then gotten one of these messages you can email support@funcom.com for offline support., I do so and get an automated message back with a ticket number. I check but there is no way to tell the status of this ticket-- its write only email based system.

Again after 1 am I log off.

Day 3:
I log in and find Im STILL stuck and another one of these "You werent here so we deleted your ticket." messages. I check my email, still no reply from a real human being for offline support. I put *another* online ticket in and sit off the map chattign with friends staring at my unusuable character feeling pissed off.

One of them suggests I try spamming the /stuck command. Even though that was what got me into this mess, I figure it cant get any worse and I try it. Low and behold, after about 10 min of trying it in every nook and corner I can find in the back-side of th geometry it works!

I delete my ticket from the queue to guive some other poor user half a chance of actually GETTING help and send an email to cancel my offline ticket.

In short, AoC is a great game IF you dont need FUncom's help. If you do, your shit out of luck. I cannot in good conscience recommend this game any more until Funcom fixes some of these fundemental support issues. All it would take is modifying their system so, rather then giving the GM the next ticket in the queue, to skip any tickets where the user isnt online and leave them in place. That way, the next time the user logged on they would be at the ehad of the queue, rather then going abck to the tailall over again.

This sia fix, but its only an immediate fix. The REAL fix is to be able to do CS while the user is off line. I really dont udnerstand why they couldnt move me abck to the start position when I wasn't online. It seems like that woudl be one SQL quey. But I don't know what their back end looks like.

On the bright side, all this DOES point to the need for mature, manageable systems for running online services. Maybe next time, they should look at Project Darkstar as a base. Project Darkstar is in its infancy now but it would (a) give them more time to work on the issues they clearly didnt have time on this time around like customer service and (b) as a standard platform allow them to leverage others work in these areas.

http://blogs.sun.com/gameguy/date/20080527 Tuesday May 27, 2008

Go Speed Racer, Go

Okay now for part tow of my weekend.

I went to see "Speed Racer" in Imax with my wife, brother and his SO on Monday.

This is a movie that justifies IMAX. One part original speed racer, one part "power rangers" and one part video-game it is just dripping with visual appeal. That there is a video game aesthetic should come as no surprise to anyone: The film was written and directed by the Wachowski brothers who also brought us The Matrix. Whereas the Matrix though was a dark and brooding videogame, this is all bright lights, garish colors and fast action.

Setting the action in an entire world that looks like a cartoon allowed them to get away with what is probably the most important part of a speed racer cartoon-- the over the top cartoon physics and race car driving. The Mach 5 seems to spend more of its time spinning, flying through the air or sliding sideways then it actually does driving straight ahead. But it "works" in the context of this world its set in.

This really isn't so much an "update" as an opening out of the speed racer story. All the elements I remember from the cartoon are there. The original cartoon aired in the late 60s, and the time period for the film is the late 60s, although a late 60s in this alien cartoon world. The "high tech" in the film all looks like the 60s idea of the future pushed through the lense of a modern 3D animation esthetic.

All in all this move was far better then I expected it to be. Its not deep, but it IS fun, especially for those of us who fondly remember the TV show. It looks gorgeous, even better on a bigger screen. The plot doesnt have many surprises but thats okay. Where this move is going really isnt all lthat important. Just sit in the passenger seat and enjoy the ride!

Speed and Gore

So its been an interesting weekend. I played the new Age of Conan MMO up to 18th level, and I saw Speed Racer in IMAX. Below are some imrpessions of both:

Age of Conan.

This is the first (mainstream ) MMOLPRG that is rated M for mature. (There have been a few pure cybersex MMOs already. If you don't know what cybersex is, you probably don't want to.)

Being M rated effects it in some interesting ways. First off, it is the goriest MMO I've ever played. It has "fatailities" which are basically like "finishing moves" in Mortal Combat. Do the right things at the end of a combat and you chop the other guys head off, splatter your screen with blood, or trigger other serious gorefest animations.

I'm not a big fan of gore for gores sake but in thsi case, it works. Anyone who knows the original Conan source material knows that this is an important part of the genre. As such, it never feels gratuitous and actually is fun in a mildly sick way.

The game also contains sexual references. I have yet to see an overt sex scene but there is no doubt that the charcters have a sexuality. The NPCs will often tlak in innuendo (the females at least. Which feels a bit odd if your playing a hetero-female character.)

Though i havent tried it, Im told if you take all the clothes of a PC there is actually a naked body under it. There is actually a potentially good reason for this. Most MMOs put "molded on " underwear on character models, like a barbie doll. The problem with this approach, ask any woman, is that one set of underwear dopes not go with all types of outer clothing. Different clothes call for different undergarments. By having a real anatomy, a 3D model cna be dressed in any sorts of clothing and "look right." I have yet to see enough "social clothing" in the game to really taje advantage of that but Im still in newbie land.

Thats the next thing about the game thats unusual. It takes a LONG time to get out of newbie land. Your there til level 20 which is almost half of the current Max level of 50. But it doesn't really feel that bad cause the newbie space is huge compared to many games and the work your given is varied with an interesting, deep plot line behind it.

This has to be one of AoC's stroingest points in fact. The plot is VERY strong and well written with multiple threads that all come together nicely in your story. The quests are, for the most part, directly related to that story and advance it in interesting ways. None of the quests feel like repeats of previous ones and there are very few that feel like "time wasters." All in all the newbie quests are an outstanding feature of AoC.

Another interesting difference is that AoC has two modes, day-play and night-play. In the newbie areas, day-play is multi-player while night-play is single player. Your main story is moved ahead through night play. i *think* the design reason for this is that, as people get higher level characters, it will prevent them using them to "twink" beginning players through the main starting quests.

A final thing I really appreciate about AoC, is that the M rating cuts way down on the kiddie factor. It doesn't eliminate it, especially late at night. (Parents, do you know what your kids are up to on their computers late at night? For some of you, the answer seems to be no.) But in general it makes for a much more enjoyable social environment for adults.

AoC is, in the end, a niche product. It is intended for and theoretically limited to a mature market who like gritty fantasy. Time will tell how big its niche really is, but its a worthwhile contender in the arena thatw as obviously crafted carefully and with love.

http://blogs.sun.com/gameguy/date/20080503 Saturday May 03, 2008

Hot troll in the city

This is actually a test of blocking. Right now blocking occurs at the 0.0 point on the model so the gets half-way into walls but then is indeed stopped. Im going to move the test point forward by half his bounding box width to fix that.

This is also a bit more complex scene then the first tests. Its a bit dark because I haven't done anything with lights yet.


http://blogs.sun.com/gameguy/date/20080430 Wednesday April 30, 2008

Walk the Troll

Here is a video I made of the DarkMMO client with a troll under user control.

The jerkiness is an unfortunate side effect of the video capture software I used. Motion is silky-smooth when its not doing capture.

http://blogs.sun.com/gameguy/date/20080428 Monday April 28, 2008

Troll animation in NB6

Here's the latest from the DarkMMO project.
I've added animation playback in the Netbeans NWN mdl viewer.

I caught a little video. Its a bit jerky due to running the capture software along with NB6, but you can get the general idea.

Play Video

http://blogs.sun.com/gameguy/date/20080427 Sunday April 27, 2008

Beware of the troll...

Here is the next step, a troll placed into the scene by the server.

He's in a neutral position because animation isn't working right yet. Thats the next thing for me to fix...


Hot troll in the city

This is actually a test of blocking. Right now blocking occurs at the 0.0 point on the model so the gets half-way into walls but then is indeed stopped. Im going to move the test point forward by half his bounding box width to fix that.

This is also a bit more complex scene then the first tests. Its a bit dark because I haven't done anything with lights yet.


http://blogs.sun.com/gameguy/date/20080426 Saturday April 26, 2008

Mission control, we have lift off!

Here is the screen shot of the very first Zone rendered by the DarkMMO client.




It doesn't look like much, I'll have some more interesting maps to show at JavaOne. But it does represent
a very important milestone. I can now build a Zone in the NeverwinterNights toolset, load it up into the server and then connect and have the server send the tile map for the Zone down to the client for display.

The server retains a WalkMesh for the zone so it can do collision checking for cheating clients. My next order
of business is to add in moving characters and do that collision detection. As thats based very heavily on the "BattleTrolls" code base from about 3 years ago, with a bit of luck I should be able to get that much in
before JavaOne!

http://blogs.sun.com/gameguy/date/20080408 Tuesday April 08, 2008

My latest Netbeans trick

I now have the netbeans plug-in correctly displaying the walk-mesh for a tile when the tile is displayed.

Walk meshes are a kind of movement blocking map used to make fast calculations as to where a character can or cannot move.

here's the display with the walk mesh shaded green for non-blocking and red for blocking:









http://blogs.sun.com/gameguy/date/20080404 Friday April 04, 2008

Viewing Neverwinter Nights creatures in Netbeans 6

The past week I've been back to fairly heavy work on the Project Darkstar based MMO engine that I will be talking about at JavaOne and featuring in my upcoming book on writing Massively Mutliplayer games using Project Darkstar.

One of the early decisions I made was to use the NeverwinterNights data set because its is good quality, well thought out ,freely available and has some wonderful tools. However I also need to develop new tools for this projects. A second decision I made was to do all of my new data tools in Netbeans.

There was a not insubstantial learning curve to writing Netbeans plugins, but now that I'm starting to see the other side of that this decision is starting to pay off. I have a plugin now that lets me freely browse through the NWN meta-file structure and view files. The first file viewer/editor I wrote was for 2DA files. These are simple spread-sheet like files that NWN uses for tabular data.



The next one, that I just finished, was harder but is very rewarding. Using JMonkeyEngine (www.jmonkeyengine.com) it displays actual NWN 3D models right inside of Netbeans!

http://blogs.sun.com/gameguy/date/20080321 Friday March 21, 2008

First ever darkstar training course comes to an end

Well,

This past week I spent giving a week long course in Darkstar to a number of Sun technical representatives from all over the world. We had attendees from China, Korea and Australia just to name a few.

The week was broken up into morning lectures of anywhere from 45 to 120 min (with breaks) and afternoon labs where they did real Darkstar coding. The labs included a simple matchmaker, a full Blackjack game, and a tiny action game complete with dead-reckoning and server-side collision detection. Look for some form of the slides and labs to be available for general down load in the not too distant future.

Another note: I lied last blog. There IS one date on the road map. I guess the team felt confident enough to release that.