Sunday, December 18, 2011

Getting Back to Work

I'm not going to lie, I admit that Ambition has been a bit rough to work on as of late. A month after my last post, I landed a new job at React! Games and so I haven't been able to work on it as much. Lately, though, I have been thinking about this so much that I can't focus on much else unless I start working on it more.

Earlier in this blog, I mentioned that items could be placed and picked up, etc, but that system was extremely clunky and gave me so many issues that it had to be scrapped and reworked. It is pretty much done (again) but I haven't worked on it enough to complete the last three steps, which is: dropping items on the floor, picking them up from the floor, and having containers within containers.

This project has been hard for me to figure out what order to write systems, and so productivity has been relatively low. But, today I decided to sit down and at least write a list of the things I'd like to have for a completely playable Alpha build. Before, I mentioned I'd like to have a playable demo, but waiting for Alpha seems like a better idea now. Once this alpha build is complete, I would love to share it with the community and announce this blog to give everyone an idea of what I'm going for.

Anyway, I am going to get back to coding (after I make some dinner for the family), and when I do, my plan is to work on the gathering system, so maybe next time my character will be able to pick a flower!

Friday, April 1, 2011

Day and Night

After playing Minecraft for a bit, I realized that night time has been widely underused and neglected by games. The first few times playing Minecraft, night was a scary time for me. I would close myself in a tiny dirt cave and pray a skeleton didn't shoot me while I looked out the window in hopes of daylight. Anyway, my point is that night should be dangerous and exciting.

During day time, everything is relatively peaceful in "safe" zones. As long as you are paying attention, and not adventuring out alone in profitable hunting locations, you will most likely be just fine. Most things you need to do can be done around NPC and player camps where there are many people at any given time. Most of these locations will be "protected" by difficult NPCs and hopefully good aligned players. Even hunting mobs is less dangerous, because, my idea is that there will be very few roaming monsters during the day. If you enter their camp that is one thing, but as you're exploring, you won't run into too many monsters or dangerous animals. Also, the majority of NPC bounty hunters will hunt during the day, so you will likely never see a player opposite the alignment of the region.

At night, the monsters come out, and most the bounty hunters go to sleep. It will be easier to hide and sneak at night, maybe even +50%, which can protect you, but most of the time it will protect the PKs. Somehow, skills should raise faster and rewards should be much higher, but the risks could be even higher. I realize that it doesn't make a lot of sense for the rewards to be higher at night, since, if you go searching at night for flowers in real life, you will not have as much success. But, this is a game, and I feel it is a good approach.

Night will last up to 4 hours within a 24 hour period (numbers would probably to change). And I know what you're thinking, "But it would suck to log in only to find it is night time if you just want to relax." Well, I agree, and I have thought about this quite a bit. My solution is simple, the player chooses when it is day and when it is night. There will essentially be two instances of the world, with a few things shared between. A player will only be able to switch to night mode one time in each real life day, and can only be in for 4 hours each day.

I really like the idea but, already, we run into a few complications.
  • Q: If I chop down a tree at day time, will it grow back before night, or will it still be chopped down when I go to night mode? If the latter, what happens if a player chops down a tree at night, and I'm in day mode? Do I see the tree fall even though nobody is there to chop it down?

    A: Well, I don't really have a good answer for this. Part of me says it is okay that they are not shared between modes, but another part of me says they should just regrow twice per day. I am pretty sure UO's trees spawn in more often than that anyway.
  • Q: Won't this turn into the Felucca and Trammel of UO? Why wouldn't everyone just stay in day mode?

    A: Well, I would really like for that not to be the case. There are a few things different with this system that may contribute to a different result. 1) Land ownership is shared between modes. 2) Rewards (loot drops) are higher at night. 3) Monsters don't really spawn during the day, so fighters will essentially be required to go to night mode at least every once and a while. 4) Caves and dungeons will not be affected by modes, it will always be "night" mode in them. 5) Probably the biggest: You can still get PK'ed during the day, particularly by covert blue PKs (you'd be their first murder). You can especially get pick-pocketed.
Well, that is all for tonight. I am still in favor of night mode, but the first issue is still getting to me. Perhaps it is enough to simply make dungeons and caves be the night mode. Of course I'd still have a night cycle, and maybe it could still be more dangerous at night without having the two instances of the world. It needs to be designed quite a bit more, and I need some feedback from other people.

Skills and Macroing

Creating a design that allows characters to have skills, but does not drive players to AFK macro has been a major goal for me. It is such a high priority, that removing skills altogether is still a consideration for the design. However, skills are still important to me, so I am going to try everything possible to keep them in the game.

To combat macroing, I have read about, and come up with a few ideas.
  • CAPTCHA - I know what you're thinking, and I completely agree with you. How lame would it be for you to have to type in random characters every so often while you're mining or fishing? Although it would be terrible, there are a few games that employ this method. I just think we can do better.
  • Player Policing - This involves a player going up to another and "tapping" on his shoulder. If the other player does not respond within a time-frame, then they must be macroing, so they are free game to kill. Personally, I'm not a big fan of this because I walk away from the computer a lot while I'm playing games, so sometimes I can't respond in time.
  • Free-for-all PvP - While this may solve the problem in some cases, it is not ideal, because a lot of the time, even if you want to play a "realistic" sandbox MMO where you can do whatever you want, sometimes you just want to relax. I don't even know why I listed this, because it's not something I will consider doing, since I believe in safe zones.
  • Interactivity/Minigames - This is the most promising idea I've come up with, though I'm sure it is not a new idea. It needs to be "fun", but not require a whole lot of thought or focus. For mining and lumberjacking, I was thinking of something like Fable II, where a slider bounces back and forth and you have to press the button at the right time. For herbalism maybe something like Thief III's lockpicking, where you have to twist and align roots to dig out. I'm not too worried about fishing or cooking since those will be secondary skills, but if the system was in, why not come up with something small? It would be nice to get anyone's feedback on this idea.
  • Time-based - Just like EVE online, you set a skill to train, and wait, even while offline. This isn't a bad system, but I would prefer something a little more interactive. And why not just have both? Maybe you can set a skill to train before you log out and your character can study it while you're offline. Things like hunting, mining, fishing, etc could even collect a few resources or cash at the same time.

Small Technical Renovation

I haven't had much time to work on the game recently, but it has been on my mind the entire time. However, it is not just time that has been slowing development. When designing the item and object modules, I was following the rule that most MMOs and even RPGs follow, which is that objects are in the 3D world, and items are in your inventory and equipped to characters. I did not take into consideration that in this game, the player can place items on the ground, so they are also objects in the 3D world. This oversight has caused a loss in productivity, because it means I have to redesign the way the inventory works a little bit so objects and items are the same things, but can also be hidden in characters' inventories. While I don't think it will be a huge task, it still causes me to lose momentum because it is stopping me from working on everything else, since everything relies on the object/item system.

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.

Monday, February 28, 2011

Ambition Progress

I am glad to say that progress on Ambition is going smoothly. There is now a server that will allow users to log in. Most of the database has already been set up for most of the game's functions so far. The client has a login screen, and will request to login to the server using a username and encrypted password. I have also made a logo for the game, which I will display at the top of this page.

As far as the design of the game, I think I know what kind of skill system I want to use, which I'll explain in detail below. Something else I've been toying around with is the ability to learn techniques. These techniques can be learned by performing actions in the related skill. You can then use another skill to actually train other players on your techniques. Anyway, that is just a thought.

Skills (continued...)

The skills in the game will be similar to EVE Online in that you have many skills that derive from other skills that open up different abilities for you. A big difference is that in Ambition, you do not have to purchase those skills, they are opened up to you upon mastering their prerequisite skill(s).

Another difference is that the skills will not go up automatically over time. They will increase as you perform actions related to that skill. It is my hope that this method is not a burden on the server, because I would really rather not have the skills go up automatically, and I would like to have many, many skills that can potentially go on forever (or years).

As your skills increase, your abilities that depend on those skills will become stronger, depending on the skill. Each skill will unlock actions/spells for you to learn. Some of these skills will come naturally as the player progresses, but they may also be purchased from a trainer.

Goals (continued...)

When I am enjoying a game, there is a high chance that it is because I am aiming for something beyond what I've ever reached. Goals are a very important aspect of games. That is not to say that the game has to make the goals for the player. Take Minecraft for example, nowhere does that game give you a goal, and yet, it's enjoyable because you create your own goals that can become more and more elaborate over time. Let's look at some goals that can be found in MMOs:

Faster Traveling - I do not believe in this goal, and it is a huge goal in World of Warcraft. It is also my biggest frustration with the game. And the worst part is, it is not ever fulfilled. I was questing down in the new Southern Barrens with my Alliance character and reached a level where I should go back to my trainer. So I thought about it for a minute, and decided that the closest trainer was in Darnasus...which was 11 minutes away...11 minutes! That is completely unacceptable in my opinion, and is a huge design flaw in the game. In Ultima Online you can travel virtually anywhere instantly by using a spell, but you have to have reached that point first, which I think is just great. Nobody wants to waste their time running around not killing anything, or worse, watching a bird fly you around for 11 minutes. Needless to say, in this game, the majority of gameplay will most certainly not be running around.

Player Housing - I aim to have player housing in this game. Every player wants personal housing, and almost no games support it. It makes no sense to me, except that it is probably pretty hard to build. I have been thinking about how I want to do it for a pretty long time. At first I was thinking the player should start with a little apartment where he could keep his things, but housing is a hugely rewarding goal for a player to have throughout the first half of the progression of his character, which is a big reason for not allowing the player to reach that goal within the first few weeks of play time. I will talk about player housing in a more dedicated post.

Reaching End-Game - Oh yes, end-game content. The endless dungeon-run or PvP gankfest. The only MMO I can think of that does not have end-game is EVE. They do it very well because the corporation you are working for can expand virtually infinitely, and since it's all player driven, major events can happen. Just recently, a mega-corporation was the victim of a catastrophic betrayal that basically ended the entire corporation. And now, that corporation has to fight its way back to power. Thus, the cycle continues and there is never an end-game. I would like to steal this idea. I am thinking that players can start their own towns and expand in the same way. Now, as a fantasy game, Ambition can not expand infinitely, but I'm hoping that the world can be big enough to accommodate my player-bases needs. It will be a difficult task to perform, and it will not likely be in the game for a long time, but I feel it is necessary for the game's longevity.

Gear - I think this is a great goal, and it will certainly be in Ambition. There will be a deep and rich item system that will allow metal workers to create all sorts of combinations of gear that will not be bound to recipes like standard games. There will also be an enchanting skill that can further improve the gear.

To Live - While playing UO, I realized that a huge factor in why the grind was fun is because at any time, my character could die to a PK, or even a big bad monster, and lose everything I was carrying. I felt this possibility created a bond between me and my character, and I would love to recreate it.

Playing with your Friends

Trying to play with your friends in a typical MMO is a difficult task. You are forced to have characters dedicated to playing with those friends, and you can only play if your friends are also playing. This is because you have to gain your levels at the same pace as them. I suppose you could spend a lot of time crafting while they're not playing, but World of Warcraft isn't designed for that. It's designed to get ingredients and craft while you're leveling, and not in a sporadic fashion.

My solution for this is to make each increase in your character noticeable, but also smaller than average. This means that skills will only slightly make you more powerful than others. Another consideration is to make the skills progressively help you mostly at defending and attacking multiple targets at a time, encouraging you to fight more things simultaneously, but you can still hold your own in a one-on-one situation. I believe this will also shrink the gap of the tank-mage versus the noob. If the noob can get to the mage, the mage could still die by getting stabbed in the heart.

Thursday, February 24, 2011

What is Ambition Online

Ambition Online is a Massively Multiplayer Online Roleplaying Game (MMORPG). My intentions are to create a world where players contribute to the content of the game. Not to the extend of Second Life, but the intentions are to make the game player driven.

Setting

The game is set in a kind of fantasy world, but that's not to say that there are Elves and Dwarves running around; I plan to have a single playable race, humans. At first, I am considering a top-down view for the game because I think it will simplify the world-building process and allow the players more flexibility in customization. I may be completely wrong, but that's what I came up with.

Movement

As far as controlling your character, there are two options that have to be seriously considered. One option is to control the game like Diablo. This allows multiplayer to be accomplished with far less packets, because you need only to send a few nodes for each client to figure out where your character is and will be in the near future. It allows better motion prediction, and people are very used to it. The other option is movement like the Ultima games, from Ultima VII to Ultima Online, where you can move in all directions by right-clicking around your character. There is an arrow that points away from your character and you will move in that direction. The scheme allows the player to move freely around the world, and will let them jump also. Mainly, the downsides are more packets for movement updates, and picking up items seems a little weird at times, but this can be resolved. Personally, I'm not a fan of the point-and-click model of Diablo because I always mis-clicked and my character starting pathfinding all over. So I'm leaning towards the Ultima style controls, similar to my first real Unity game, A Feeble Saga.

Progression

Unlike most RPGs, I have decided against the Experience/Level system. I have never liked it, and it doesn't make sense to my brain. A system I really enjoyed was UO's skill-based system, where you gain experience in individual skills as you perform them. Another part of the system is that you are not stuck with your skills from character creation, you can change them at any time by performing the new skills. But what are the downsides? Well, let's take them on one at a time.

First: how does the player know how good they are? Well, in UO, you could look at your paperdoll and it would tell you a basic title, based on your highest skill. For example, if your Swordsmanship skill was your highest skill it may say "Journeyman Swordsman" or "Master Swordsman" depending on your skill. And I think that is a pretty good solution, especially if you can see other people's. UO used only one skill, but I think I would like to use three, so you basically create classes for yourself. Sometimes it wouldn't be able to give you a good title, but I think most the time it would be good.

Second: do you limit the skills a player can choose, and should you? UO imposed an artificial skill cap that essentially allowed you to choose from seven skills to master. But almost all other games of this genre that I've seen, do not have skill caps, like EVE Online. What they do instead, is give you tons of skills that build on top of other skills, but the farther you get into the skill "tree", the more and more expensive those skills get to purchase. Not only that, but you can only train one skill at a time, and those skills can take days to train. Personally, I don't like the time issue. Maybe if the game didn't have a monthly cost it would be different, but I doubt it. Most of the time I don't want to wait for things to happen (I'm also not a fan of cooldowns). There are several options I have toyed around with in my head, but I don't like any of them 100% just yet. In a later post I will elaborate on my solution, which I just about have figured out.

Third: How do you prevent AFK macroing? First, let me say, I am not against macroing in UO because I feel it is a huge flaw in UO's design that shouldn't have been there in the first place. So the question is, how do I plan to avoid a design that would make macroing useful? As said before, EVE just gives you a timer, then the skill is done training. Another method, which UO employed on the Siege Perilous shard, is that your character can only learn a certain amount in each skill per day. My solution to this goes hand-in-hand with my solution for the second issue above, and I'd like to save that discussion for a different day.

Player Vs Player

This is always a hugely heated debate between carebears and hardcore players. But more importantly, there are far more carebears than there are hardcore players. However, not only do the hardcore players usually spend more money on average, but they are also very loyal, and more forgiving toward bug related incidents. Now, with that being said, I need to say that I always play on PvE only WoW servers, but I also find it to be extremely boring. Just a few weeks ago, I started playing on a free UO shard called UO Secondage and I was hunting some animals, mongbats, and headless ones, when I realized that what I was doing was purely grinding, but I wasn't bored. Even still, it's not clear to me just why, but I have two theories: One, nostalgia, simply put, I'm reconnecting with my emotions bound to my experiences as an adolescent playing the game; and Two, risk, I knew it was risky to be out there hunting because I could get PKed at any moment. While there's little I can do about the first, I can certainly work with the second one. At any rate, I am aiming for a balance between casual and hardcore, but it's likely I will chose a method similar to EVE. Many players live their entire gaming lives in NPC controlled territories, but many more spend a lot of time in disputed territories, where they can be attacked by pirates or the sovereign corporation of the area.

Goals

In most modern MMOs, which are considered WoW clones, your goal is to hear the ding. Of course, there are side goals, but those are mainly there to get you to the dings faster. So how do you make goals for a skill-based game? Is it simply to raise your skills to the top? I don't think so.

Conclusion

I have to go now, but I want to finish the goals section, and talk more about skills in the next post