Game Development Community

dev|Pro Game Development Curriculum

Plan for Tony Richards

by Tony Richards · 08/12/2005 (9:41 pm) · 5 comments

I got my copy of TSE this week (finally) and it's a lot more stable than I would've thought. Two of the core Renegades coders are deep in TSE land, porting our basic features from our TGE implementation. Since the "too many cooks in the kitchen" applies in this scenario, I'm without a project... or rather, was without a project.

Sometime within the past few weeks I got bit with the MMO bug. I've always wanted to change some of the TGE networking code to support transparent server handoffs, and even started coding a little of it over a year ago.

I searched the forums, found a few resources, looked at them in detail and realized nobody's tackled the networking issue. The MMORPG tutorial was nifty (9 part series, right?) but I don't think it classifies as a MMORPG... more of an MORPG. Now, being the scatter-brained person that I am (hey, it's actually a strength, believe it or not), I figured I'd work on it... and work on multiple aspects of it.

I've never been strong at modeling. Sure, I can crank out a low-poly stand-in and get it into Torque in just a few minutes. I'm better at Quark than Blender and I really enjoy creating interiors, but my real strength is coding, so track 1, phase 1 of my MMO project is to get a bunch of models. I own a license of NWN and the SoU, I figured I'd go down that route. It's pretty easy to yank out textures and MDL files from the main game and the many hack packs out there. It turns out that NeverBlender isn't quite all it's cracked up to be, not supporting animations, etc. Ok, so scratch that idea. New idea... why go through the motions of extracting an MDL, converting it with Blender (including the nasty manual steps of rearranging nodes and such), converting TGA's to PNG's, then exporting to DTS's and not even having animations? Why not just add direct support for MDL's?

Ok, so here's my plan.

Track 1 - Add support for NWN art pipeline
1.1) Resource Manager enhancements to directly support NWN files without having to extract them manually.
1.2) TSShape / TSMesh enhancements and get the model to display without textures
1.3) Add textures / materials support
1.4) Add animation support
1.5) Add node support (NWN uses a replaceable node system to mount armor and weapons)
1.6) Add support for danglymesh nodes (basically this is NWN's soft bodies implementation)
1.7) Add support for particles and other special effects (have to wait until TSE particles are finished)

Why NWN MDL's and not DTS? Well, I'm not removing DTS support, but since I don't have many DTS models, I'm going to use the NWN MDL's to supplement my stand-ins. It's easier to convince other people to help out once you have a working demo.

1.1 is done, 1.2 90% done.

Track 2 - Networking
2.1) Enhance Server / Network code to support multiple servers and Peer to Peer server connections
2.2) Re-write ServerZones from old MMO project, including rendering for debugging purposes
2.3) Non-transparent "trigger" based server handoffs
2.4) Non-transparent "zone" based server handoffs
2.5) Transparent "zone" based server handoffs
2.6) Object loading / discarding optimizations and other optimizations

2.1 is done, 2.2 is done, 2.3 is done, 2.4 is done, 2.5 is less than 20% done.

Track 3 - Database
3.1) Database agnostic layer (aka DBI)
3.2) Expose DBI to Torque Scripting
3.3) Mission information load / save to database instead of script file
3.4) Metadata layer to abstract game information

3.1 is finished. (ok, I cheated and I'm using one that I wrote for another project, but since I own full source I can include it :P) Even though my DBI layer supports a wide variety of databases, for my example MMO I'm going to be using either mySQL or PostgreSQL. I'm not sure which yet, but I guess it doesn't really matter. I'll cross that bridge when I get to it.

Track 4 - Scripting and AI
4.1) Event based scripting enhancements at the Torque Script level
4.2) AI manager enhancements for route following, etc
4.3) New event based scripting language to control NPC's and scenes
4.4) Item manager to handle in-game unique and non-unique items
4.5) Enhanced AI / NPC manager to support a huge number of NPC's.

None of Track 4 is beyond thoughts. I've not started any coding but I have done a little research.

I've been working on this for just a few days and I've accomplished quite a bit. Assuming I continue at this pace I should be able to finish up to 1.4, 2.5, 3.3, and 4.1 by the end of the month.

At this point I'm unsure if I'll follow through with a complete game, or stop with this plan and release as a MMO starter kit or something... or, if I don't finish it (a possibility if Renegades needs my attention soon) then I'll release what I've completed as a resource.... one drawback to releasing as a resource or as a starter kit... it only works for TSE.

Wish me luck.

About the author

I am the founder of IndieZen.org, a website dedicated to the Indie 2.0 Revolution where a number of Indie game development studios and individuals collaborate and share a suite of custom built open source game development tools and middleware.


#1
08/12/2005 (11:14 pm)
That sounds like a sane development plan. Nice. :)

I hope you plan to release some of this tech to the community, one way or another, as it gets done... I think it would be a big boon to a lot of people.
#2
08/13/2005 (2:36 am)
Be wary of copyright issues here. Yanking Bioware's Never Winter Nights models out is one thing. Using them in your own game is an entirely different thing. You WILL need to get permission from Bioware for this.

The good news is that there are many third party models for NWN and, I suspect that if you ask the original authors nicely (they are fellow modders after all), they may let you use those with no strings attached.
#3
08/13/2005 (8:44 am)
Good warning, but I'd never redistribute copyrighted material without first getting permission. The great part about my implementation is that you don't have to extract any files. MDL files that are mine vs MDL files that are not are very easy to distinguish because of the location of the file. (file names of resources loaded from the NWN directories start with "nwn://"). If I ever redistribute, it'd be easy to just search for those and remove the references before redistributing.

I was also considering other model format including .x and gmax files, but the MDL files (for me anyway) are the best bang for the buck, at least in terms of the availability of stand-ins and the availability of pre-existing art that could be licensed freely or cheaply.

Edit: Spelling
#4
08/28/2005 (12:45 pm)
How have you progressed with transparent server handoffs? This would be VERY usefull for my game. I'm just beginning to research the idea.
#5
08/30/2005 (12:30 pm)
I've started on it, but haven't gotten very far. My biggest hurdle right now is interiors and relighting. I don't want them all to be loaded at once. I only want the interiors and other object loaded as the player approaches them, but if they're loaded after the lighting phase then they're not lit... not just the shadows on the terrain, but the inside lighting isn't lighting isn't done either.

Stencil shadows will be finished for TSE soon, so I'll probably solve the problem by having everything (including interiors) use stencil shadows, and make it so that when a player enters an interior zone, that zone is re-lit. Less than seamless, but as close as I'll get for now. If possible I'll try to cache the lighting for a single interior in a page-file or something and maybe try something like a background lighting thread.