Sunday, December 18, 2011

Loading Zones

Let me try to elaborate on where I am in the games development right now, as I feel I have not discussed that in a while on this blog.



I have just completed the zoning system for the default world.  There is only 1 world in the game right now, but it would be easy to add more.  The games first world is split up into blocks, and the players view follows the character around, keeping the character centered on the screen unless he is up against the sides of that zone.  When you reach the edge of the zone and push up against the side, the game pauses for 1 second as it swipes over to the next zone.  I tried to make this effect as much like Zelda 3 as possible from SNES.  


There will not be loading screens between zones, thanks to preloading of the 4 surrounding zones.  I have found however that there is sometimes a short period of time when when you first enter a zone that you cannot enter a new zone.  This is because the surrounding zones have not finished preloading yet.  I think this is still vastly superior to a system like that of my last big online game, CND.  The sliding into the new zone also creates a unique effect that few games have used since Zelda.


Here is an overview of my progress so far.  I tried to put it in order of when I did what:

I know this is a boring post so here is a comic.
  1. Map making client
  2. Game client loads in map
  3. Game client loads in player
  4. Player basic movement
  5. Player collision with map/walkable areas
  6. Screen centers on player
  7. NPCs in game
  8. NPCs wander around
  9. Action.as allows for actions such as swinging a sword
  10. Added fireball action
  11. Moved data for actions to webserver
  12. Moved data for NPCs to webserver
  13. NPC Perma-death / replaced by new NPC
  14. Worked heavily on Mario World Builder
    1. Tons of bug fixes
    2. Tile System totally overhauled
    3. Multi-select groups of tiles at a time
  15. Decided to use Mario World Builder for both WORG2 and Mario2
  16. Adjusted World Builder to work with WORG
  17. Adjusted WORG to work with World Builder maps (still no collision with world tiles)
  18. Overhaul of classes and re-organization of code
  19. Major bug fixes
  20. Reprogrammed CharacterVisual.as classes entirely... Now based on spritesheets
  21. Wrote 5~ pages of lore for world and class backgrounds
  22. Decided on a combat system and drew out classes/combat structure
  23. Put classes and other data into webserver database
  24. Re-zoning in game
  25. Re-zoning with zelda-like sweeping effect
So whats coming next?  Here are 4 things I have in mind right now, in order of how I plan to execute them:
  1. Assign classes to NPCs so they use different skills
  2. Empty zones self-populate with trees and NPCs
  3. NPCs at further zones are higher level
  4. Bug Fixes (Esp. collision detection with map / Improvements to World Builder FLA)
Sadly I do not think I will be able to get through all these things this quarter because I only have a couple weeks off to think about this and then I am back to grad school.  However, I do hope to have these 4 things done by Spring and to start working on Multiplayer.  Oh, and I have like 20 topics for blog posts written down somewhere... Haha.

Lss

Data Management

the action table, this is where the magic
happens, literally.
So as I continue developing my combat and class system in my mind, I have been starting to move some of it to my games database.  When I say game database, what I am talking about is my webservers mySQL databases, which are accessed in game via php.


I am excited to share these tables related to this project that I current have in my database.  I created some scripts on cnd-online.net to make it easier for me and other administrators of the site to make modifications to these tables...  The thought being that if the tables are saved on my webhost and easily accessible via the website then it will be much easier to make modifications in the future when I am not feeling like re-compiling the finished game over and over to do simple things like add or modify skills, classes, character visuals, etc.  Likewise, my moderators on the site can make changes if they are needed, such as nerfing a skill that is overpowered, etc.


I can't help but notice that even in the AAA MMORPGs they have to bring the servers down just for some simple updates to how much damage a spell does, etc.  I find that annoying.  In fact, in the ideal Online RPG, skills and classes would be set up to balance themselves automatically.  I have a lot of ideas on how to do that, and I may bring them into this game (especially because the open class system I am using in this game will be difficult to balance), but that will have to be left for another blog post.


the character sheet table contains the information of
the hundreds of playable characters and creatures
So lets go over some of these tables, shall we?  In the top right we have the actions table, where spells and skills are carried out.  It is one of the more complex tables because I really wanted to make spells vary.  For instance, using what is already established here in the game and on this table, you could have a skill fire a spell which floats in front of the player for 1 second, then explodes in all directions.  Or how about one that fires at the enemy, and when it hits the enemy it fires back at you and heals you when it hits you.  How about one that shoots a strong projectile straight ahead but has poor homing capabilities so is less likely to hit the target?  Or one that slowly accelerates forward, and if it doesn't hit the enemy within a few seconds comes back to you?  It is all possible because of the Action.as class and this handy database.


the attributes table, this is where you 'level up'
 To the left here is a table to hold the attributes.  In this game, attribute points are everything (this is especially true since there is no item or inventory system in the game yet, Ha!).  They decide what your profession is, what your skills are, and how powerful you are.  You can choose to raise one of your attribute points each time you level up.


Below this text is the skills table.  It is pretty lonely right now as I still just have two skills in the game, a simple swinging of a sword and a fireball attack.  I just added this skills table in tonight because I wanted my NPC's to be a bit more functional:  Before tonight they would always swing a sword at me in retaliation, and I would only have the Fireball spell.  Now NPC's are assigned a profession and they use the skill associated with that profession.  So since there is just two skills, all the magic users are shooting fireballs and the other professions are swinging a sword.  :-)


the skills table contains just two skills right now, these two.
Finally is the professions table, below.  This  is where information about each class you can play as is stored, including a description to help players choose a class and for the game's future website to catalog the possible classes you can play as.  I say class in its loosest sense.  I believe strongly that in a real virtual world that there are no classes, but instead various choices of paths you can take.  Players should be free to mix and match their choices as they please.  That is what a true sandbox is like.  




the professions table.
If you click on this image you will get a little hint at one of my chosen professions for this game, the Elicitator.  The name means to bring out the best or to motivate others, which is why the Elicitator is a buffer.  I want to bring varied and interesting classes to this game.  This may mean that each class will only start out with one or two spells, but since you can mix and match classes this will not really be a problem.  The silly thing is that in most games, players end up just using one or two spells anyways.  When you are designing an indie game you cannot afford to make content that people are not going to or are unable to experience.  That is why it is important that each skill put into the game is utilized by players and there are no 'useless skills'.


Lss

Friday, December 2, 2011

Roles in Multi-player RPGs

When making a games combat, there are some very key decisions to be made about roles in combat.  Typically, the 'Holy Trinity' is used in MMORPG combat:  The tank takes damage, healer heals warrior, nuker kills the bad guys.


In this article I will be taking a break from talking about the technicalities of making my RPG and discussing its future combat gameplay.

A quote by someone; not me.
So where did the holy trinity come from?  In Dungeons and Dragons I don't remember ever rolling to see whether the warrior was maintaining aggro.  In fact, if you go into a difficult combat in D&D, the last thing you want to do as a warrior is try to get EVERYONE attacking just you.  That's suicide even if you are tougher than anyone else (because you aren't tougher to the extreme that the Holy Trinity requires, and the healer couldn't keep up with that damage).  It's generally a good thing for damage to get spread around a decent bit in D&D.


So where does the 'holy trinity' 3-role system come from?  It evolved in early MMO's such as Everquest.  Everquest was developed with a D&D class system in mind and there was no intention for having the holy trinity within the game.  However, the 3-roles were an inevitability as players got into higher end raiding and the need and availability of specialization increased.  This level of specialization is simply not available in D&D...  Probably due to healing spells not being as powerful, and all classes having larger amounts of health and no mana regeneration.

The holy trinity does not make sense on most levels
It is unrealistic to pretty much any setting, whether you are in a fantasy world or flying around in spaceships.  It may break immersion to some degree.

But even more problematic is making your gameplay unique and interesting under a system that has been used by at least 50 major online RPG's by now.  As an indie developer it is incredibly important that every feature in your game is in itself unique and fun gameplay...  The holy trinity is not. 

Roles help build a connection between players and their game
So should an indie developer scrap the Holy Trinity?  Here is an article that thinks so, and it outlines how to create roles without the Holy Trinity.  In the place of a 3-role system it wants to add several more features to create many new roles for players.  Many of these new features would require an AAA budget to incorporate.  Given the poor economy of 2011, no AAA game designer would touch something that has not already been proven to work several times over... So I am not even sure who this article is addressing.

Let me discuss for a moment why roles are important.  Simply put, they work on a social level.  Players really enjoy feeling 'needed'.  I have actually read about and experienced myself friends talking about how good it felt when their group 'needed' them.  Girls especially seem to become territorial when someone with the same role as their character tries to join the group.  Ie, if your group has a warrior already and another warrior joins, they will be aggressive or passive-aggressive towards the other warrior.  You see this in normal social circles in real life as well.  If you are the jester of your group of friends and another person shows up who also enjoys entertaining everyone, you may feel threatened by them.  The sense of having a role within your group builds a connection whether its in a circle of friends in real life or in-game.


Conclusion
I would like to move away from the holy trinity, but the concept of it is compelling and I think it is something that developers can evolve as oppose to completely remove.  Having ROLES that make players feel NEEDED is good game development.  The holy trinity is just one way of doing this.  It is the job of an indie multiplayer RPG developer to find simple yet effective ways of creating roles that fall outside the mainstream 'holy trinity'.

I will explain how my RPG will do this in a future article.

Lss