Thursday, November 08, 2007

Business Logic as a Solution for Game Scripting

What I would like to see are more projects where the developers don't hand the designers a database, a scripting language or a hybrid of the two. Instead, take a cue from big business, where this is a solved problem (or less disingenuously, an offloaded problem). Businesses use business logic packages (Drools, Jrules, etc) to handle information exchange between a database and a user interface. It's not even that hard to embed or implement a full declarative language, such as Prolog in a server and use that as the scripting layer that designers write code for.

Tuesday, October 09, 2007

An Interface for Evil

Matt Mihaly recently dicussed the difficulty of making the enemy obviously bad without resorting to making the enemy stereotypically bad, which prompted Brian Green to muse on the nature of evil. After several rereadings, I'm still a little bit lost. I just don't see a problem at all. In many modern games, the user interface itself conveys plenty of information about the status of mobs via clear indicators such as label color (red ones are aggressive, yellow ones are passive, green ones are friendly), mouse-over cursor changes (cursor becomes a sword, cursor remains an arrow, cursor becomes a smiley face) and floating icons. The fact that the mob belongs to a usually-evil/hostile/bad species or faction doesn't in any way prevent the user interface from presenting the player with the appropriate set of interaction affordances.

Or maybe they aren't asking about how to implement unexpected interactions with mobs. Maybe they are really asking how to get the player to want to react against type. How do you make the player hug the ugly girl or stab the pretty boy?

Sunday, September 23, 2007

Areae Decloaks

Areae has gone public with their much-anticipated product and it is called Metaplace. According to the faq, it is a virtual world platform that is closely tied to web technology. It's using a Lua-like game logic programming language and appears to expose most of its content using urls (xml, stylesheets, rss, etc). It looks like the alpha client will be 2d, with a 3d client still in the works.

Wednesday, September 05, 2007

The Nature of Exploration

Reading Brian Green's recent post about the nature of exploration games prompted me to think about the core distinctions one can make about exploration. Specifically, I think exploration breaks down into two major types: exploration of things (places, objects, story lines, etc) and exploration of relationships (physics model, crafting systems, talent builds, etc). Notice that this distinction is exactly parallel to the code/data distinction programmers (can) make.

What would the nature of exploration content in a lisp-like world be?

How about in a prolog-like declarative world?

Or a ml-like functional world?

Where does the exploration content of current games fall?

Tuesday, May 22, 2007

Horizon-based Distance Culling

There are many techniques used to reduce the visual complexity of the viewable scene in order to improve a game's performance (fps, freeing cycles for other calculations, etc). This is an especially important issue in multiuser games that simulate a world-like space, since "world" implies having rather large spaces. All the typical techniques are applicable, such as distance-culling, fog, level of detail, limited sight-lines, etc. One technique that I think has been under-utilized is creating a world with actual curvature to it.

The earth itself is approximately spherical with a radius of 6371km, resulting in a horizon at 4.7km for the average (1.7m) human. It should be possible to "bend" the terrain mesh of a world to give it a horizon far enough out to feel realistic but close enough to hide a fair amount of distance culling. For example, a spherical terrain mesh of radius 100km results in a horizon at approximately 583m (horizon = sqrt(2*r*h + r*r), where r is the radius of the sphere and h is the eye height of the viewer). Such a world has a surface area of 125660km square (area = 2 * pi * r * r), which is more than enough for any current game (World of Warcraft, for example, has been calculated to have about 200km2 land area, pre-Burning Crusade).

However, work needs to be done in determining how close the horizon can be pushed and still feel realistic. The above horizon of 583m means that a player moving at the speed of a typical human sprinter (approximately 10m/s) will reach objects at the horizon in somewhat less than a minute. The total circumference of such a horizon distance is 3.7km (circumference = 2*pi*r), which may not big large enough to make properly-scaled objects appear realistic. Tall structures with strong vertical lines may also suffer a distortion due to being set perpendicular to the ground that makes them appear to be tipped away from the viewer.

There are also several other obvious benefits to verisimilitude obtained by bending the terrain mesh to create a horizon besides concealing distance culling. Tall objects over the horizon, such as towers, large trees and mountains will gradually appear to the player as they approach. The top will become visible first, and the rest of the structure gradually revealed from top to bottom as the player comes closer instead of the typical distance pop-in of the whole object. Flying objects (birds, flying mounts, airships etc) will appear at the horizon and trace an arc across the sky instead of popping in at altitude in the distance tracing a straight line across the sky and popping out at a distance. Terrain relief (hills, mountains, even buildings) will better mask out other local high points (other hills, mountains, buildings). For example, if you are standing below the summit of a mountain you will not be able to see the summit of an adjacent, even taller mountain on the other side of your mountain, just as in the real world.

Wednesday, May 02, 2007

Sanya Thomas Leaves EA Mythic

What do you think the chances are that Sanya leaving EA Mythic has something to do with the open position for Senior Community Manager at Areae? I'm putting it at better than 50/50.

Wednesday, April 25, 2007

If a Tree Falls in the Woods

If a player didn't see it, it didn't happen. If a player was there, but was too busy doing something else to notice, it didn't happen. If a player saw it, but couldn't tell what it was, it didn't happen. If a player saw it, but didn't care, it didn't happen.

Wednesday, April 18, 2007

I'm Not (Yet) Afraid to Admit I'm Wrong...

The verdict is in, I massively underestimated the budget for a two-year, large-scale multiuser online game. Oh wait, no, I massively overestimated the budget. The lesson here is that facile, back-of-the-envelope calculations please no one. On the other hand, it generated two kind and considered lengthy responses which will be invaluable in shaping my future posts on production budgets.

Friday, April 13, 2007

Wanted: Two Million Dollars

I think that one could make a perfectly acceptable large-scale (but not massive) multiuser online game, given two million dollars and two years.
  • Technical Lead, $120k
    • Developer, $60k
    • Developer, $60k
  • Art Lead, $100k
    • Artist, $50k
    • Artist, $50k
    • Artist, $50k
    • Artist, $50k
    • Artist, $50k
  • Design Lead, $100k
    • Designer, $50k
    • Designer, $50k
    • Jr Designer, $30k
    • Jr Designer, $30k
That's an $850k a year burn rate, or $1.7 million for a two-year development cycle. That leaves $300k available for purchasing third-party software and for overhead.

Sunday, April 08, 2007

World War II Online Makes Me Sad

I wanted to like it, I really did. So when the 14 day free trial was offered, I signed up, downloaded, logged in and attempted to play for almost six hours. I have never seen a more newbie-unfriendly interface in my life. The game ran at one frame per second until I upgraded my video driver, even though World of Warcraft played fine on it, at which point it ran at eight frames per second except in towns or combat when it dropped back down to one frame per second. I would spend ten minutes walking from the spawn point to the front lines, die without ever seeing an enemy on the ground and repeat. It was horrible, and yet I counted at least forty other people playing on the same battlefield as me. And that was the best thing about the game. My teammates were both committed and helpful.

It reminded me a lot of Counterstrike. Easy to die, and when you do, it's a wait before you get to play again. But where Counterstrike let you view the game from a living player's camera until the next round, WW2O lets you respawn immediately but forces you to walk the usually lengthy distance back to the front lines.