Plan for Joshua Ritter
by Prairie Games · 09/30/2003 (3:29 am) · 10 comments
The last weeks have seen a steady increase in the game's capabilities. Most of the core systems are in place and are now in need of fleshing out. It is nearing Dikumud/Original Everquest in functionality. The amount of work is truly staggering... Once done, I am thinking a book may be in order :)
The technology test draws nearer... I have a bit more stuff I want to get in before I start packaging/messing with the Autopatcher...
A quick progress report:
1. Zoning - mostly done.... issues with spells, combat system cleanup on zone out... also need to disable collision at the zone in... Player's fuse together if at same xyz ... There has been a pile of syncing work to do on this between the servers (and Torque).. many chicken and the egg scenarios to be solved, etc... I must say, interconnected (persistent) Torque Zones absolutely rock :)
2. Pathing - quite solid, needs optimization and better interior/exterior linking.. like Everquest there is no "safe spot" if the spawn is having trouble getting to you it will warp to your location... This doesn't happen very often, but sometimes needs to...
3. Spell System - The spell system is really gettin' there... spells can affect stats/gameplay instantly, globally over the duration of a spell, or per tick... Spell's sparkly particle effects are in for casting and duration (you can tie a Torque particle system or Explosion to a spell, camera shake = yummy)... Component checking, item summoning, zoning crumbs
4. Spawns - Spawnpoints are in and can serve up to 10 different mobs per game day. Spawns from a spawnpoint can be set to specific times of the day, be given a frequency, lifetime, etc... Spawnpoints also dictate the loot:
5. Looting - Mobs can have up to 10 loot items on their corpse... each loot item has a frequency tied to it, and you can also set a max items on the corpse... characters can loot corpses, checks are made so that only one character is looting at a time... All looting takes place on the World Server... (see Database below)
6. Quest System - Quests work! You can submit items and get a reward item/exp/money, quests can also be Multi-Quested, meaning that multiple characters can cooperate on handing items in... the final character to hit submit, gets the reward... another cool thing is that if you submit items to a mob, and then kill that mob.. your items are on the corpse :)
7. Pets - Pets can be summoned (woohoo), need to add rules for them
8. Stats Twiddling - a cool stats system is in place... with simple and derived stats... equipment being equipped/unequiped modifies stats as expected... derived stats can raise per level as they are actually formulas...
9. Persistence - Characters are persistent, when you log in/out your stats, equipment, etc are all stored... as well as your zone information... when you come back into the game world you are where you left... zing!
10. Database - The World Database is served, well from the world. Mob/Equipment/Spell statistics are cascaded down the server hierarchy much like a datablock. All new loot, new spawns, and experience is rewarded on the World Server with logging... so if cheating is suspected/found the World Admin can nuke all exp/loot from a given Region between any time period... The World server also stores all spawn locations (parsed from the .mis file at database create time)... so you will only get the spawns the database says you should... The World Database is procedurally generated in Python... So, handmade as well as automatically generated item/mob/spell effects are possible. This will greatly reduce content creation time. The World Server also serves Torque datablocks, whee... this was kind of tricky but necessary
11. GUI - The following windows are in and operational: Character Inventory, Item Stats, Loot, Quest, Spellbook, Memorized spells, Macro Commands (with editing/serialization) .. need to create the combat window, with stats on your equipped weapons
12. Combat system - Things like awareness range, follow range, hate, etc are implemented... Mobs shoot at you and can equip weapons (from their loot inventory), etc... the question lies in how much twitch should be involved.. I am leaning towards very little... I wish I remembered my Anarchy Online experience a little better... Guns.
13. Grouping - Hooks are in place, will be a day or two to get this working once I get to it..
14. Business Logic - The client communicates with a Master Server to create an account, get a list of worlds, create characters, etc... they are then passed directly to a zone. They never get the World's IP address... and even if they did, they can't get in until the Master submits them...
15. Time - The World is in charge of minute, hour, day, month, and year... This is stored in a database table so when server is stopped and then restarted time is persistent...the World systems the time on all servers connected to it at regular intervals... it is the same time in all zones, and TGEDayNight makes it look good :)
Things I am working on in the near term - Server Stability, GUI frontends for the various servers, weather effects for the zones, and more and more gameplay.
One last thing, Torque Rocks!
The technology test draws nearer... I have a bit more stuff I want to get in before I start packaging/messing with the Autopatcher...
A quick progress report:
1. Zoning - mostly done.... issues with spells, combat system cleanup on zone out... also need to disable collision at the zone in... Player's fuse together if at same xyz ... There has been a pile of syncing work to do on this between the servers (and Torque).. many chicken and the egg scenarios to be solved, etc... I must say, interconnected (persistent) Torque Zones absolutely rock :)
2. Pathing - quite solid, needs optimization and better interior/exterior linking.. like Everquest there is no "safe spot" if the spawn is having trouble getting to you it will warp to your location... This doesn't happen very often, but sometimes needs to...
3. Spell System - The spell system is really gettin' there... spells can affect stats/gameplay instantly, globally over the duration of a spell, or per tick... Spell's sparkly particle effects are in for casting and duration (you can tie a Torque particle system or Explosion to a spell, camera shake = yummy)... Component checking, item summoning, zoning crumbs
4. Spawns - Spawnpoints are in and can serve up to 10 different mobs per game day. Spawns from a spawnpoint can be set to specific times of the day, be given a frequency, lifetime, etc... Spawnpoints also dictate the loot:
5. Looting - Mobs can have up to 10 loot items on their corpse... each loot item has a frequency tied to it, and you can also set a max items on the corpse... characters can loot corpses, checks are made so that only one character is looting at a time... All looting takes place on the World Server... (see Database below)
6. Quest System - Quests work! You can submit items and get a reward item/exp/money, quests can also be Multi-Quested, meaning that multiple characters can cooperate on handing items in... the final character to hit submit, gets the reward... another cool thing is that if you submit items to a mob, and then kill that mob.. your items are on the corpse :)
7. Pets - Pets can be summoned (woohoo), need to add rules for them
8. Stats Twiddling - a cool stats system is in place... with simple and derived stats... equipment being equipped/unequiped modifies stats as expected... derived stats can raise per level as they are actually formulas...
9. Persistence - Characters are persistent, when you log in/out your stats, equipment, etc are all stored... as well as your zone information... when you come back into the game world you are where you left... zing!
10. Database - The World Database is served, well from the world. Mob/Equipment/Spell statistics are cascaded down the server hierarchy much like a datablock. All new loot, new spawns, and experience is rewarded on the World Server with logging... so if cheating is suspected/found the World Admin can nuke all exp/loot from a given Region between any time period... The World server also stores all spawn locations (parsed from the .mis file at database create time)... so you will only get the spawns the database says you should... The World Database is procedurally generated in Python... So, handmade as well as automatically generated item/mob/spell effects are possible. This will greatly reduce content creation time. The World Server also serves Torque datablocks, whee... this was kind of tricky but necessary
11. GUI - The following windows are in and operational: Character Inventory, Item Stats, Loot, Quest, Spellbook, Memorized spells, Macro Commands (with editing/serialization) .. need to create the combat window, with stats on your equipped weapons
12. Combat system - Things like awareness range, follow range, hate, etc are implemented... Mobs shoot at you and can equip weapons (from their loot inventory), etc... the question lies in how much twitch should be involved.. I am leaning towards very little... I wish I remembered my Anarchy Online experience a little better... Guns.
13. Grouping - Hooks are in place, will be a day or two to get this working once I get to it..
14. Business Logic - The client communicates with a Master Server to create an account, get a list of worlds, create characters, etc... they are then passed directly to a zone. They never get the World's IP address... and even if they did, they can't get in until the Master submits them...
15. Time - The World is in charge of minute, hour, day, month, and year... This is stored in a database table so when server is stopped and then restarted time is persistent...the World systems the time on all servers connected to it at regular intervals... it is the same time in all zones, and TGEDayNight makes it look good :)
Things I am working on in the near term - Server Stability, GUI frontends for the various servers, weather effects for the zones, and more and more gameplay.
One last thing, Torque Rocks!
#2
09/30/2003 (4:35 am)
you rock.
#3
This does seem to be the synthesis phase of the endeavor... I really must (and will) give credit to all the great libraries and frameworks I am using... we are nearing a golden age in indie development.
On the data streaming side, I use Twisted for all my non-simulation streaming... It has a highly efficient/powerful data caching/cascading mechanism. Of course it's important to lay out the (distributed) server hierarchy consistently and with forethought.
The game being developed is a 3d mud... we'll see where it goes from there :)
Cheers,
-Josh
09/30/2003 (4:41 am)
Xavier, FAST is kind of relative.. I started down this road a couple years ago... I've done lots of research, learning, and protoyping. Some of the components such as TGEPython have been written and refined over months. I've also tried to figure out ways to make money along the way. Finally, I just gave up on the finances and moved to the boondocks... I won't starve, but it will be hard. In summary, it's been a schizophrenic time... :) This does seem to be the synthesis phase of the endeavor... I really must (and will) give credit to all the great libraries and frameworks I am using... we are nearing a golden age in indie development.
On the data streaming side, I use Twisted for all my non-simulation streaming... It has a highly efficient/powerful data caching/cascading mechanism. Of course it's important to lay out the (distributed) server hierarchy consistently and with forethought.
The game being developed is a 3d mud... we'll see where it goes from there :)
Cheers,
-Josh
#4
I'm sure the fact Everquest is as dull as watching paint dry hasn't escaped you. I hope once you have the base down we'll see some worthwhile new features.
Awesome work though, kind of seems a shame to lose the real-time gameplay of torque. But I could see the bandwidth requirements getting somewhat painful otherwise!
09/30/2003 (6:09 am)
Fast is relative, but considering this isn't far off a one man effort (+Open Source). Very impressive. Great breakdown too.I'm sure the fact Everquest is as dull as watching paint dry hasn't escaped you. I hope once you have the base down we'll see some worthwhile new features.
Awesome work though, kind of seems a shame to lose the real-time gameplay of torque. But I could see the bandwidth requirements getting somewhat painful otherwise!
#5
09/30/2003 (6:11 am)
Absolutely impressive, Josh! I can't wait to see this in action :-)
#7
09/30/2003 (10:58 am)
I was thinking for collisions across zones you might want to use a penalty method to seperate objects. It would be a good solution for seamless server->server transitions, but it would also work in a zone-based world.
#8
How about creating "seamless" worlds with paging? Is this some features you will add later on, or will your world be zonebased further on as well?
09/30/2003 (12:34 pm)
Nice additions. How about creating "seamless" worlds with paging? Is this some features you will add later on, or will your world be zonebased further on as well?
#9
09/30/2003 (3:47 pm)
Awesome work!
#10
10/01/2003 (12:56 am)
Sounds great. We've missed you on IRC :p 
Torque 3D Owner Xavier "eXoDuS" Amado
Default Studio Name
Congratulations, seems it will be the first time Torque sees some MMO concepts.
Not that I'm doing an MMO, but how did you manage to stream data across zones?
Regards,
Xavier