Saturday, March 19, 2011

Major Milestone, What's Next?

While I haven't had very much time to work on Ambition, I have made quite a bit of progress since my last post. The game now has a fully functioning inventory system, where the player can move things around, equip, unequip, place items on the ground, pick items off the ground, open other containers in the world, and move items to and from those other containers.

The game is also more optimized as far as knowing who needs to receive action messages and movement updates from any given object. Basically, the world is separated into zones, though it will be seamless to the player. These zones are also cut up into 20x20 (meter) cells that I call the Scene Matrix. Objects send and receive messages from all objects in their cell, and all adjacent cells (a 3x3 grid). When a player moves to another cell, the server will send the player all the object information for cells that are 1 cell away, and the client will destroy objects that are >1 cell away. Using this method, instead of just doing distance checks, really is an obvious improvement, but in more ways than just not having to do distance checks. Before, every object would have to 'ping' by sending a movement update to all objects in action range, even when they weren't moving. This forces the network to use more network, not just by the ping, but when the player receives it, their client doesn't know the object information, so must request it. This new method is not much more complicated, but is a lot more code. It took a few days to get objects to spawn in correctly when traversing the Matrix.

What is Next?

I haven't really decided what to work on next, so let's make a list of things that should be in before it becomes a playable game, which means I can make a demo for people to play:
  • Skills - This is a very important aspect of the game, but I don't feel it has reached the point where I can start implementing it. I still don't know exactly how I want skills to work. They are necessary to the game, but I don't want the design to be susceptible to AFK macroing, so it needs some careful design, and I really should get some others' opinions.
  • Scavenging - This action is exactly how the game Xsyon does 'resources'. Depending on the terrain you're standing on, you can scavenge for things on the ground. Most of the time it will be grass, dirt, and rock, with the occasional twigs and small branches. On junk piles it could be any number of things, and with the excavating skill, you will have access to even more.
  • Harvesting - Almost exactly like scavenging, except that you use an object to get resources, this may be a plant (herbalism), a rock (mining), a tree (logging). This action does not always require skill, like picking a flower, or medium sized branches from a tree. I may make excavation use this system, instead of scavenging, because it may be more clear and simple.
  • Crafting - Most of the time, this will require skill, but I believe in making everything possible from the beginning, without training. I haven't talked about crafting yet, but my intentions are to make it feel like you are building things, like Minecraft.
  • Combat - Some of this is already in, but it is a complicated system that involves many. The player can already 'attack' an object, which is to use his main hand item on an object while in attack mode. This already results in an animation based on the weapon, but it does not actually do anything to the object. To make the object's health go down and update on all clients seems really easy, and it probably is. That, however, is not all their is to combat, but it is a good start.
  • Chat - This definitely needs to get in, and probably some form of it should be in before I release a demo, so the basic chat system, which will be text over heads, is pretty high priority. A global chat system will not exist, but whispering and party chat (and parties) will need to go in at some point in the near future.
  • Avatars - Currently, I am using a premade model of a female, but ideally, players will be able to choose their avatar and customize the skin color, face, hair, etc. I have developed a system that would allow this before, so it shouldn't be too hard, but the problem is that I have no art. The Commoners and Warriors pack is great, but it's not the genre I want, nor does it have females.
I will have to take some time to figure out what I want to work on, but at least I have several things to point me in the right direction. And I'm sure there are things that need to get done that aren't on this list.

Tuesday, March 8, 2011

An Almost Playable Demo

I have been working on Ambition a lot more than I expected I would be able to. Of course, this comes with the price of not getting anything done at home, and my wife is probably not very happy about that. But when being on fire and really productive, I just don't have a choice.

The game is coming along better than I could have anticipated, which doesn't happen often, and is likely the reason I have become so consumed by the project. It's hard to turn away when so much is getting done each day. Anyway, what I have right now is a working server, with most of its scalability architecture complete. The only thing I don't have completed, is migrating clients from one server to another. That felt like a pretty low priority for me right now, considering it will take at least 500 CCU to require even one more server machine.

When the client logs in, he chooses a realm (only one right now), and then chooses a character, which allows him to enter the world. The character creation screen has not been done, although it will not be difficult. It doesn't make sense to work on it right now, since I don't have the swappable character art, although, I have been considering purchasing this.

While in the game world, the player can move around, enter "attack mode", and request an attack action, which currently displays an animation, but doesn't do anything. He can also open his inventory (I say he, but the character is female right now...) and move any items around (that have to be added through the database since there is nothing to pick up right now). If he moves a weapon to hi s main hand, the weapon will be equipped, and other players will be able to see it.

There are a few things I would like to do before posting a demo, and screen shots really wouldn't mean anything right now, so I've refrained from posting any. Before I release a demo, I would like to allow the player to pick up items off the ground, which he can currently place there, but not pick back up. I would also like for there to be some way of creating items, whether it's from an infinitely spawning item on the ground, or by performing an action on an object to retrieve one, like maybe picking a flower.