Network Update

You may have noticed in the right-click menu or in Triangle's double click menu an option to "update". When set up properly, this allows your ghost to connect to a server and download updated files you've uploaded, thus updating itself with new material. This is the Network Update.

Of course, you don't have to set this up if you don't want to, in which case you can ignore this page. However, without Network Update, when you update or change something about your ghost, your users will have to redownload the ghost entirely. It's your choice, really. But if you are interested in this feature, read on.

There are two methods you can use to set-up Network Update. One of them is a lot shorter and easier than the other, but they do each have their pros and cons.

The first method is the short and easy way - the zip + txt update package option. This was just introduced recently into SSP with an update, and it took me a while to figure out how it worked. Basically, what this does is put your whole ghost into a single zip file, and then when your user checks for updates and there's a discrepancy, the ghost will download the whole zip and fix the different files.

Pros: You will only need to upload and host two files - the zip and the txt. It is very easy to set up and again, a lot more doable because you don't have to upload all the files individually, and some hosting services have file restrictions on what can be uploaded, so this can also get around that.
Cons: The whole zip will be downloaded each time there's a discrepancy, which can potentially run up bandwidth depending on where you are. Since it does just one file, you also can't set individual responses for certain files as in the etc.dic, where you can have the ghost comment on when they're updating their speech file, or their menu file, or what have you. This is a matter of preference mostly, but it does mean you'll sacrifice a bit of precision, so to speak.

The second option is the option that was explained here beforehand, wherein you upload a mirror of all your ghost's files to a corresponding directory on your server. In this case, you layout the directories and files just like they're laid out on your computer, and when the ghost checks for updates, it'll check an updates.txt file, find the different files, and download them each individually.

Pros: This takes a lot less bandwidth since you're only downloading a few files at a time. It is also a lot more precise, so you can have specific dialogue for your ghost about what files they're downloading. Also, if you make a small change, like fixing a typo or whatever, then the user only has to get the one changed file, as opposed to downloading the whole zip.
Cons: Setting up a mirror of your ghost's files is finicky and can be hard and/or timeconsuming, especially if you don't have your own hosting service or aren't familiar with FTP use. A lot of free hosting services don't like you uploading a lot of files at once. Also some services don't like you uploading certain kinds of files, like dll files, which can also cause problems. It is a little more complicated to also set up each time you push a new update, but not like, overly so. But it is more complicated than the above method in that regard as well.

I'm going to assume the simple method is the most appealing and I don't blame you for that, haha. But if you're already set up the old way, there's no real need to change or anything. Both ways are valid and work. Just choose which way will work best for you.

But first, one thing that both methods will need is a place to host your files. The Network Update functions by having the ghost connect to a server, where it checks for new or updated files and then downloads them from the server. Both methods do require this, so you will have to figure out file hosting.

The tricky thing is that you will want a service that will let you point to a solid, unchanging directory, since you will be coding that directory's location into your ghost. It also needs to be a place where you don't have to click "okay" or go through a download screen to get to the file. So this rules out free hosting services like Mediafire or Sendspace or what have you, that auto-generate URLs and require an extra step between clicking the URL and actually accessing the file. I think Dropbox also does the same but I'm not sure, you may want to give it a try but my first thought is that it probably won't work.

Blogging services won't work either, unless they let you host files in unchanging, solid directories that are accessible to anyone. This would only be feasible for the ziptext users, but even then I think it would be hard to manage...

Really, what you're looking for is a free webhosting service like, and yes I am being serious here, Angelfire, Geocities (RIP), Altervista, or Tripod (maybe Blogger? I'm not sure). Believe it or not, despite the fact that the days of the personal website have long since passed, these services still exist and there are a wide variety of them. There's a page for them on wikipedia even. Look through here and see if a service jumps out at you. In particular, if you're going to be going for the more complicated set-up, look for one that allows FTP upload since that will make things much faster. If you're doing the ziptext method, that's not as necessary though.

I don't know nothing about making websites!!

Don't worry, the only thing you'll need to do is upload your files in the right configuration, and maybe write a very simple little frontpage for your ghost. I'm pretty sure most webhosts have an automatic page maker for newbies for just this purpose. More than anything though, you'll just need to upload your files.

I don't know nothing about FTP!

If you're not using the long method, then you can probably skate by without ftp use. If you're doing the harder way though, knowing how to use FTP will be very useful to you. You may want to read through this FTP tutorial, since that's a bit more complicated than I want to get into here. If this whole thing is scary to you, you don't need FTP to be able to do this, it just makes doing it a lot easier and faster. You can do it manually, it will just be pretty tedious.

The Zip+Text Method

As mentioned above, the ziptext method is the easiest and simplest way to set up network update. In this scenario, you only need to upload two files to the directory you choose! A zip and a text. But I'll go through the basic steps in order.

First, you'll want to decide on the directory for your ghost's files. Sign up for a file hosting service, set up your account, take a look at how it all works, and get into the file manager if you can, where you can see where your files are and how the directories are laid out. You can create a folder for your ghost's files or just put the files in the root directory, it's up to you, but a folder might be easier to keep track of. So if you had a tripod site, you might make it or something like that.

Now, go back to string.dic in your ghost's files and open it up. There is a section right near the beginning called on_homeurl. I mention in the comments in the file which one you're looking for. I put a fake URL in there originally, so the template ghost wouldn't update and erase all your work, but now you should put in the URL where you'll upload your files. So if you'll upload your files to, then you would put that URL in that section. Then save the file.

So now that your Ghost is ready to go, we're gonna do a tiny bit of set-up. Go into your ghost/master directory, and delete the profile folder. You can undo this after we're done making the files. This is so your personal progress with the ghost doesn't get included with the download. Then drag and drop your ghost's folder onto your ghost. You should get this image.

Select the "create zip + text update package" option. It will then prompt you for a place to save your zip file on your computer. You can make a folder for it or put it whatever, it's not that important. Once you select a place, it will create a folder with your ghost's name, like hunter_smoker or z_gaster or radic_farns or what have you. The basic folder name for your ghost, essentially.

Inside that folder, you'll find two files - a zip file, with the same name as your ghost's folder again, and a text file called updates.txt. Take those two files, and upload them to your filehosting service in the directory you specified in strings.dic. Now you can undelete the profile folder, if you want.

Believe it or not, you are almost done! But you want to test your update to make sure it works, right? First, tell your ghost to update to make sure it can connect at all. You can do this from the right click menu, hitting CTRL-U, or possibly from one of your ghost's menus if you put it in there. If you set it all up correctly, your ghost should say that there are no new updates. That means that it's successfully connecting to the server you set up. So that's a good sign! If you get an error there, you might want to go back and make sure you put the files in the right place on your server, and that you put the right URL in strings. Remember, strings.dic is pointing at a directory, not a specific file. So you don't want to have in on_homeurl or something like that. It's got to point to a general directory.

So if you can successfully connect to the directory, now you want to test and make sure that an update will go through properly. To do this, go back to your ghost's files on your computer and change something. You can just type gibberish in a comment in one file, it doesn't matter. Then save that file and reload your ghost.

Now tell your ghost to update, and the ghost should see that the files on the server don't match the files on your computer, and it should download the zip file and fix it! If you got to this point, then you're good to go!

Now, every time you want to do an update, you just repeat this basic process. You make a new zip + text file, you upload the two new files to your site, and boom, done. No problem!

As mentioned, the user WILL download the whole zip file, even if you just change a small thing, so if you're doing a lot of fiddly little changes, you might want to let em stack up for a bit before you do a new zip. But that's really your call! If you don't care you can set up as many updates as you want, haha. But that's all there is to it for this method. You still may want to make a little frontpage for your ghost with basic info though, just so it doesn't look so much like you're leeching. I get into that more near the end of the other method though. Most webhosting services will have an easy page maker or walkthrough for such a thing.

The Updates.dau Method

This is the first method for Network Update I wrote about here, so I'm not going to adjust this section all too much. It's still the same process it was before, if you've been here before. I'll just call it the Updates.dau method, although it doesn't really have any kind of official name or anything. FTP Mirror method could also work...

So, first, go ahead and sign up for a free hosting service. Set up your account. Take a look at how it works, but more importantly, look at how you upload files and how you set up directories within your new website.

As an aside, I thought doing this page would be pretty simple but I'm becoming increasingly aware that a lot of the basic skillset used for Network Update has been completely lost for those used to pre-made social media sites. Well, hopefully this won't be too opaque.

Your website host should have some kind of file manager in it so you can see what files you've uploaded to your tiny webspace. Look around and see if you can find it. Let's say you signed up with Tripod. This is the kind of thing you're looking for, something that'll let you see all your files.

Here's what the file manager looks on Tripod. Now what you're going to want to do is make a new directory within your site. Name this directory something related to your ghost, or ghosts in general. Some examples are "ghost", "GT_ghost", "ABghost", whatever. Something to do with your ghost's name.

Once you've made that directory, go into it. If you're using Tripod, you should see a note within the file manager for "Directory:" which means you're on the right track.

What you are going to do now is upload every file within your ghost's folder on your computer into this new directory on your site, laid out just like it is on your computer. It will be a mirror copy.

So, to begin with, upload your install.txt, readme.txt, and thumbnail.png into this root directory. Then make two new directories called ghost and shell.

Go into your new shell directory, and make a new folder called "default_shell" or whatever the name is for your shell that you made for your ghost. Go into that new directory, and upload all your shell files. This includes your surfaces.txt and all your surface.png files. It should look just like the shell directory on your computer. You don't have to upload the /profile/ folder on your computer though. Just the txt files and the png/pna files within your default_shell folder.

In the file manager, go back up to your root directory, and this time go into the directory called ghost. Make another directory called master. Go into it. Upload all your .dll files, .txt files, and .dic files. You don't have to upload the /profile/ folder here either.

And that's it for the set-up! You should now have a set of directories on your webspace that's laid out just like your ghost folders on your computer, populated with the same files.

Now, if you have an ftp client, this part is much easier. In most clients, once you connect to the site, you can just click and select and drag files from one panel to the other and they'll transfer automatically. You can also click in and out of folders easily, as well as make new ones. Tripod limits you to uploading eight files at a time, but FTP has no such limit. Unfortunately, Tripod doesn't allow FTP access, so you may just have to sit and do it by hand, or sign up with a service that WILL allow you to use FTP.

Setting Up the Updates

Alright, now that you have your site basically set up, there's a few more things you need to do. First, go into strings.dic and find the section I set aside for your network update address. Put in the address for the folder you just made in the last step. So if you were on Tripod and you put all your files inside a My_ghost folder, you'd want to put into the strings.dic file where indicated.

Now, open your ghost. Open up an explorer window for your SSP/ghost directory. You should see a list of folders for the ghosts you have downloaded, including the folder for the ghost YOU made! What you are going to want to do is drag your ghost's folder on top of your ghost.

When you do this, a text box will come up that is completely in Japanese. SSP has updated so that this menu is now in English! The first option will make an updates2.dau, the second will make a .nar file, and the third will make both at once. Create Zip+Text update package is covered above, and I'm not entirely sure what Ignore D&D and Report to Ghost does, honestly. SO since we're setting up for updates, you'll want the third option that will create both a NAR and an update file.

The ghost will tell you it's making a NAR file, and it will ask you where you want to save it. It will then tell you it's making an update file, then when the update file is completed. You will use the NAR file to distribute your ghost later, but for now, we're most interested in your update file.

Go into your ghost's directory on your computer. You should see a new file in there called "updates2.dau". What you are going to do is upload this updates2.dau folder into your directory. Not within the ghost or shell folders, but just in the root yourghost directory.

Alright, now the set-up is complete! But how do you actually update?

To actually update something

First, change whatever it is you want to change, add new dialogue, draw new poses, whatever. Make sure it all works and you're satisfied with it. Now, drag and drop your ghost folder onto your ghost again like you just did above, and select the first option. Your ghost should tell you it's making an update file, and the updates2.dau file within your ghost's root directory will be updated.

Now, go to your webspace. Go into the right folders and upload the files you changed. If you added new poses, go into yourghost/shell/default_shell/ and upload them there. If you changed surfaces.txt, upload it there. If you added new dialogue, go into yourghost/ghost/master/ and upload whatever .dic files you changed. Overwrite your existing files with these new changed ones. Make sure you upload EVERY changed file, or else you'll get an update error.

Once you've uploaded and replaced your old files with the new files, go into your root yourghost directory. Upload updates2.dau. You are done. Now when someone tells your ghost to update, they will connect to your webspace. The ghost will see that their copy of updates2 does not match the server's copy, and will download the appropriate new files as directed to update itself.

Once you have everything set up, setting up your ghost is really that simple. Make a new updates2.dau, upload the new files to your webspace, upload updates2.dau to your root ghost directory on your webspace, and done.

The tricky part is making sure you upload every file and making sure everything is in the right place to begin with. But once you have it all set up, it shouldn't be too hard to do again when you need to.

Testing the update

If you're like me, you'll want to test and make sure your update works properly. There's nothing more frustrating than updating your ghost and then hearing from your users that there's some kind of error. There are a few ways you can do this. Here is my super brief version from my notes.

change a thing and save it
make a new updates2.dau
upload changed file to right directory on your webspace and the root updates2.dau to root ghost directory on your webspace
go back to the file you changed and change it again
make a new updates2.dau
try and update

This is a very simple way of checking that Network Update works at all. It took me a lot of work to figure this out, so I hope you appreciate it, haha. Your ghost will try to connect to your site. If it succeeds, it will download the file and tell you so! If it runs into an error, then something is wrong.

While this is handy for making sure your ghost can connect to your webspace and that all is in order, it's not that helpful for making sure that the user who doesn't have all your up-to-date files can connect to your ghost and update. While having a friend who has your ghost try and update to test it for you is the easiest way, sometimes that's just not convenient.

The latest method I've used to test this is to simply set up a duplicate SSP directory. You can just copy and paste yourself one, the program is so lightweight. Once you do so, go into the dupeSSP\ghost folder and delete your ghost's folder. Run this copy version of SSP, and reinstall your ghost using the NAR file you made in the step above. Drag and drop it on the whatever ghost comes up. Incidentally, this is also a good way to test your NAR file, your install.txt file, and even your OnFirstBoot file.

Once you've installed this dupe version of your ghost, go ahead and switch over to it. It will be in the same state as the NAR you made at first, so presumably will not be updated like your current real ghost.

Set up an update as described above with your real ghost, making an uploads2.dau file, uploading your new files, uploading the uploads2.dau file in the right place. Go over to your dupe ghost, and tell it to update. It should connect to your site and download all the new files you just put up.

If your ghost gets stuck on a file, it will often try to download it or find it multiple times. This can happen if you deleted a file from your computer/your site but didn't delete it on the other, or forgot to upload a file to your webspace. If this is the case, you'll see your ghost struggling to get it, and it will briefly flash the filename of the file near the bottom of your balloon. Make a note of that filename. Check your webspace. Is the file there? Did you upload the most recent copy? This is your big clue to finding out what the error may be.

If the update fails due to an MD5 failure, this means that file isn't the right version. You may have forgot to upload the newest version of the file, so go into the right directory and do so again.

If your dupe ghost updates properly, then success! You should be okay. If you've managed to convince your friends to download the ghost, you can also ask them to update to see if it works.

I noticed an updates2.dau in my ghost/master folder, what's that about?

Ignore it. The only updates2.dau you will be using or uploading will be the one in your root ghost folder. That other one is there just to confuse you as far as I know. But the only one you'll want to upload is the one in your root ghost directory to your root ghost webspace directory.

Testing Update Dialogue

Now, in etc.dic, you saw a lot of dialogue set aside for when your ghost updates itself, and you probably saw some glimpses of it while you were testing your updates just now. But let's say you want to test the update dialogue more thoroughly or want to see how it flows. There is a way to test this without actually connecting to the internet.

In the developer panel, there's a button at the bottom for "Open..." and if you click that, it'll bring up a menu with a few different options. Of interest to you are the four bottom options, the ones that begin with "Update Event". Clicking one of these will simulate your ghost updating without actually updating anything. Use these to test the dialogue you've written for your update, as well as the pauses between, how long it takes a file to download, any aspect of the dialogue you want to tweak.

Didn't you say something about making a webpage?

Right. While you can probably get away just using your free webhost for storage, you're less likely to get thwapped and shut down for leeching if you set up a little page so it at least looks like you're using your webspace. It'll also make a convenient hub page for your ghost.

Pretty much any webhosting service will have an "easy mode" webpage creator. Use that to make a little landing page for your site. Put up a picture of your ghost. Upload your NAR file and link to it. Describe who your ghost is, what it does, how to use and install it, where you can be contacted or where your main blog is. Publish the webpage, check that it looks right, and you're done. You could change the page everytime you update your ghost, but you don't have to. Just a little landing page for it will be fine.

And that should basically be it! Feel free to move on!

<--Phase 4 - Light Coding

Phase 6 - Publishing your Ghost