Previous Blog Next Blog
Prev/Next Blog
by date

Plan for Joshua Ritter

Plan for Joshua Ritter
Name:Prairie Games
Date Posted:Dec 31, 2002
Rating:4.0 out of 5
Public:NO
Comments:YES
RSS Feed:GarageGames Blog feedor Subscribe with .
Profile Page:View profile page for Prairie Games

Blog post
ActionRPG Launcher
I've been hard at work on the dynamic content management system, a.k.a. The ActionRPG Launcher.

I decided to go with FTP servers as this will allow the game's/framework's data/code to be mirrored on fast and existing servers. The management system uses a manifest of files, paths, and md5 checksums generated for the repository. The client scans it's own local files at launch and compares them against the repository digest. Only missing and modified files are replaced... whee!

The whole thing, including the respository generation code, GUI, and client fits into 18k of Python source. This is all you need, you can download/patch all the games content given just this one file. At 18k, you could even EMAIL the installer :) Of course, baseline/CD installs can also be used.

The Launcher can patch itself... in this case it tells the user that it must restart... it exits... and you simply runs the (new) script again... whewp!

Once you are all patched up... the Patch button turns into a Launch button and it's time to fire up your server (World/Region), or if you aren't the administrative type... simply launch the client and play... :)

I also recently added dynamic zone allocation to the Region Server... this means that Zones are served on demand. Nothing like logging into a world, selecting a character, and watching the region kick off the zone he is in from across the room... then being passed to that very Zone from the World...

I am starting to taste it... I already smelled it a few hours ago... time for a shower...

Anyway, here's a screen.. note that this is downloading from an FTP Server at actionrpg.servegame.com and installing into c:\actionrpg It's really no different than installing off a cd using InstallShield now is it? We've all been lied to, we don't need their plastic :)



... and does it run on Linux? Of course silly:



-Josh
ActionRPG Revolutionary

Recent Blog Posts
List:03/29/08 - TGEA 1.7 Build System and Embedded Python
03/14/08 - MegaTerrains - TGEA Update
01/18/08 - Minions of Mirth: Undead Wars Expansion
01/04/08 - Physics Overhaul - Video
12/26/07 - Web Integration - Video
12/21/07 - New MMO Client - Trees - Day/Night Video
12/18/07 - Minions of Mirth - 1.26 - Holiday Edition!
11/28/07 - TGB/TGEA integration first pass

Submit ResourceSubmit your own resources!

Wendell Brown   (Dec 31, 2002 at 13:09 GMT)
Kudos goes to you. This is coming along nicely Josh. Hope you get all the release issues ironed out so we can start to get the core running elsewhere. Can't wait to play with this.

John Quigley   (Dec 31, 2002 at 17:05 GMT)
Looks good Josh. The system reminds me of the loki setup tools, specifically loki update and loki patch. One cool thing that they did was integrate the xdelta library into lokipatch so that binary patches could be generated thus saving bandwidth. More info on those tools here:

www.icculus.org/loki_setup/

Is the gui done with python's tkinter module or with something else?

Prairie Games   (Dec 31, 2002 at 18:54 GMT)
@Wendell: grin

@John: Patching does save some bandwidth, though at the price of having to store revisions. I've watched users/admins suffer thru incremental patching.. I prefer clean updates of new/changed/modified files.

I thought hard on using CVS (or Subversion) as a backend for the repository stuff (for incremental patching)... though I ended up with FTP as it is a FAR more common server type. FTP doesn't necessarily mean Anonymous FTP, want to charge/restrict access to the content? Authenticate a user/password....

If bandwidth becomes a real issue, I will need to incorporate some kind of .zip file logic for large files into the launcher/repository. Though, if large files are changing a lot, this could be viewed as a problem with the system that uses them and not the patcher. ie. seperate out the stuff that is changing so much into a smaller file.

Something that isn't visible here is the plan for using a Debian styled system of: stable,testing, and unstable branches. Most people would play on stable which implies slowly changing... with a few (mostly developers) playing on testing... and probably only key developers on unstable. These branches are available as an option in the launcher and stored to seperate directories... so if you wanted to see what is new on testing... you could without screwing up your stable game :)

It uses tkinter for the GUI, so you don't need any external stuff... just vanilla python...


-J
Edited on Dec 31, 2002 20:35 GMT

Yacine Salmi   (Dec 31, 2002 at 19:45 GMT)
Man, Joshua, that is really cool.

Ben Garney   (Jan 01, 2003 at 00:15 GMT)
Will you be using CVS for the backend content management?

What I mean by this is: the client<->server link is FTP, but how do you plan to manage the content in the repository?

(Nice work)
Edited on Jan 01, 2003 00:15 GMT

Prairie Games   (Jan 01, 2003 at 00:59 GMT)
The development side uses CVS, content is propogated to FTP mirrors. One interesting thing is that via Twisted, World Servers can host embedded FTP Servers... so world mods with override directories are completely possible :)

-J

Luc Jordan   (Jan 02, 2003 at 16:28 GMT)
Quote:

I am starting to taste it... I already smelled it a few hours ago... time for a shower...




First of all, that is disgusting. :)

Second of all -- you are the MAN. Isn't he the man? He's SO the man. DAMN.

Mike Stoddart   (Jan 04, 2003 at 01:31 GMT)
He's the smelly man, but the man all the same!

Jarrod Roberson   (Jan 14, 2003 at 02:03 GMT)
I am pretty sure you are quit familar with rsync, if so, did you consider it for this?
Reason I am asking, is I am planning on using rsync to do just this exact same thing for my project.

You must be a member and be logged in to either append comments or rate this resource.