[Project Standards] Packaging and Hosting Files

alerum68

Priest of Hiroshima
Joined
Jan 3, 2004
Messages
2,519
Location
San Francisco, California, United States
Before you begin reading, understand that I am willing to help any modding project out there with doing these steps. If you can't figure something out, I'll help you do it.

I've noticed a lot of the projects on here are using file servers that require the user to have to wait, or go to other sites, or other annoyances. They also seem to be very sluggish. I'm suggesting everyone with a project that is too large to host on the CFC server, to follow these step. Also, there is no constancy in the format the files are packaged in, and suggest that EVERY project uses this method to package their files.

Here are the steps I'm proposing for projects, and yes I am willing to help any designer with this process:

  1. Use one of the following to release files. They are all easy to use, and I will list their benefits later on.
  2. Package your files only using an installer or .ZIP format.
  3. Add your Hosted Project Page to a search engine submission site. There are several on the Web, and they will do it for you quickly and automatically.

1. I have used both SourceForge and Google Code, but not CodePlex. I prefered SourceForge myself, and you do not need to wait for your project to be accepted, so you can start setting it up right away. All three of them supply the three major features you will need to use: Code Repository, File Release System, and Issues Tracker (Features and Bugs). There are many other features they give you, especially SourceForge, but those are the basics and setting them up shouldn't take you more then 30 minutes or so, depending on the size of your project.


IMPORTANT!: Before you begin, I would HIGHLY suggest that you add the prefix civ4, to your project name. For example BUGs project name is civ4bug, and BAT is civ4bat. Then when people do a search for Civ 4 or civ4, your project will be near the top of the list, even if you didn't add keywords or a project description.

Code Repository: This is where you store an online version of your working code. There are usually 2 options, CVS and SVN. CVS is a bit outdate, so I suggest you use SVN. I know there are several projects with only 1 person working on it, but I still feel this is a key feature. It allows you to make revisions, and upload them, and if the revision doesn't work you can always revert to your last working copy. You won't need to store backup directories on your PC, and get confused by whats working or not. You can upload the revision, make some notes about it, and the SVN stores every single file change you make. Just remember to commit often, as there is no limit to the number of revisions you can make. One of my projects probably have around 20gigs of stored history in it, and have not received any notice about it. This also allows users to download the working copy directly, and they can beta test for you. They will find more bugs then you ever could because while you're busing coding, they are trying all your new features.

File Release System: All three provide their own server for the user to download your files from, and they usually have mirrors if their server is going slow. None of them require the user to wait to download the file, and usually the speed is much faster.

Tracker: This allows you to keep track of what issues there are with the code. I think you should start here each time you do something with your project, to see what is going on, but you should at least have it so you can store information in case you need to reference back to it.



Packaging: Your project should only be packaged in ZIP format, or in EXE installer, or both.

Installer: Phungus420 has made a great NSIS installer script for Beyond the Sword Mods. It's fairly easy to modify, and gives you very good control over where and how to install it. Another method is to use a GUI based Install Creator. I found the easiest to use, and the one that let me do everything I need was called Install Creator. There is a freeware, registered, and professional version. For most Mods, the freeware version will do what you need it to do. If you wish more control, then register the prorgram, or use the NSIS Installer Script.

ZIP: The ZIP format is still the most commonly used format in the world. I know some people prefer RAR or Microsoft's 7zip, but you can be sure eveyone will be able to open a ZIP file.



Announcing: There are several search page submission sites out there, that you can use to submit your Hosted Project Page. This will allow people to find your mod very quickly and easily. Another thing to think about is how to notify of updates. The only place you really need to post updates are on the News page of your Hosted Projects Page, and the Announcing New Files for Front Page Coverage thread.



I know this seems like a lot to do, but it will make your project look more professional, it will give the user a more comfortable and easy method of retrieving your files, and in the long run will make it much easier for you to work on your project, especially if you use IDE Editors such as Eclipse for Python and XML, or Microsoft VS for C++.

Do not hesitate to PM me, or write back in this thread if you want help doing these steps, or if you have a suggestion or found a better way to package and release files. I have found this to be the best method, especially with large projects with more then one person using it. At the least, find a file server that does not require you to wait or wade through 5 ads to try the mod.
 
SourceForge Guide

How to upload the file you want people to download:
  • Go to your Summary page while you are logged in.
  • You will se a row of tabs, and the last one will say Develop. Click on that, and it will expand the tabs giving you several more options. Those are admin options that most users do not see.
  • Hover your mouse over the tab that says Project Admin and you will see a drop down menu, where one of the options will say File Manager. Click on that.
  • The first thing you will want to do is to make a path. Click on New Folder to create one. I'd suggestion (Mod Name) (Version number). so it will look like BAT Mod 2.x. I suggest using an x instead of an actual version number, so you can group releases.
  • Click on Upload File, browse to the file you want to upload, and wait til it says the file is done. It will be marked as your newest file, and should be listed on your summary page where it says Download Now as well.
 
So, I've created a project on Source Forge. But I can't figure out how to upload the project :dunno:
 
What you need to do is:
  • Go to your Summary page while you are logged in.
  • You will se a row of tabs, and the last one will say Develop. Click on that, and it will expand the tabs giving you several more options. Those are admin options that most users do not see.
  • Hover your mouse over the tab that says Project Admin and you will see a drop down menu, where one of the options will say File Manager. Click on that.
  • The first thing you will want to do is to make a path. Click on New Folder to create one. I'd suggestion LOR (Beta). When you do your 1.0 release, create another folder called LOR 1.x or some such.
  • Click on Upload File, browse to the file you want to upload, and wait til it says the file is done. It will be marked as your newest file, and should be listed on your summary page where it says Download Now as well.

The new thing you'll want to do is version control. Are you using Eclipse for your modding, or do you do everything from your file explorer?
 
OK, created a LoR (beta) and LoR (beta-light) folder, since I have two versions, one light which does not have ethnic unit are or other flavor stuff, just the core mod. It just is uploading though, it didn't seem like it was possible to select which version to put in which folder (actually I think I figured this out, not a very intuitive inteface though). Anyway it's in the middle of uploading, and will likely take some time to finish.

I have no idea what eclipse is.
 
Okay, after it finishes upload you can move files around as you need to put in the proper folder. You used to be able to edit your download page to show more then one file, but I'm not sure with the new setup they have now. They have the More Files button now. I'd suggest linking to the file folders instead of the summary page. You can find that by going to the More Files button, navigating to the folder, then copying the url.

Eclipse just makes it easier to code, especially with Python. It has it's own desktop basically, just for coding function. It also integrates with your code repository online, so you can update and commit directly from it. I think EmperorFool did a write up on how to set up that somewhere in the BUG forum, but it's outdated somewhat since it was 2 versions of Eclipse ago, and some of the steps aren't needed anymore either. Once you get SourceForge set up, look for that, and you'll basically have everything linked up.

I'd really suggest getting your other guys using the Code Repository as well, so people don't do double work on the same feature, or someone has a HDD crash and looses everything. Getting everyone using the SVN will make things alot easier, especially if you guys are emailing files currently, even if you don't touch Eclipse.
 
Well most of the code is done by jdog and glider in the RevDCM core, which I am not involved in. I have made a few SDK changes, but they are not very in depth or expansive, and no one else is working on that, just me, so really doesn't seem necessary, plus alot of the code I've been working on that is different from the RevDCM SDK will likely be incorporated in the next release anyway. Everything else is art or text stuff, which again doesn't seem necessary or useful to set up a code repository for. Will ask if I have any other questions.
 
Hi,

I'm following your post, and I've got everything set up correctly at Sourceforge, but I am trying to upload my mod and it seems that there isn't a way to upload more than one file at a time. Am I missing something here? I have a hard time believing that you can't upload an entire folder, for instance.

Cheers,
ripple01
 
No, you can only upload one file at a time. Are you trying to upload older versions of your mod to archive? This can take a while.:( I don't think any of the hosting sites allow multiple file uploads.

If you're trying to the SVN, that's a different process then just releasing the Mod though.
 
Ah, my bad, yes, I was trying to upload my mod to the SVN. I didn't get a chance to get back to it last night, but I think I have to do this through the TortoiseSVN software?

EDIT: Hmm, maybe not. I can't figure out how to access the SVN to create directories and upload files and the like... anyone help?

Cheers,
ripple01
 
Ah, my bad, yes, I was trying to upload my mod to the SVN. I didn't get a chance to get back to it last night, but I think I have to do this through the TortoiseSVN software?

EDIT: Hmm, maybe not. I can't figure out how to access the SVN to create directories and upload files and the like... anyone help?

Cheers,
ripple01

Yes it can be a bit of a burden setting up the SVN. Most operations are actually done in File Explorer for TortoiseSVN. I'll do a write up on how to set up Eclipse, Eclipse SVN support, as well as how to setup TortoiseSVN later this evening. If you have any more questions, my yahoo im adress is in my info.

Thanks Alerum68, I didn't know there is such thing as a search Engine submission!

N/P. Yeah, search submission will make it painless to get your Mod out to the whole world, as opposed to just CFC.
 
Once you have the SVN repository set up (just a URL you can access), you start by checking out your (empty) project to you local hard drive.

  1. Create a new folder where you want to build your local repository for the initial checkin
  2. Right-click it and select SVN Checkout...
  3. Enter your SVN URL and hit OK
Now you'll have an empty folder that contains a hidden .svn folder. The .svn folders you'll see are for SVN tracking, and you shouldn't mess with them. I recommend starting with the standard SVN structure: create three empty folders: "trunk", "tags", and "branches". Check out the BUG SVN repo for how each are used, but you'll do most of your work in "trunk" once this is setup.

Now right-click the main folder holding these 3 new folders and select "SVN Commit...". Make sure all three folders are checked and click OK.

Time to add your code. Copy and paste your entire code folder into the "trunk" folder. This will be the initial version of your mod. How you organize your files is up to you. For BUG which was initially designed to be easy to checkout right into the My Games / BTS folder, I just had "CustomAssets", "BUG Mod" for the INI files, and "PublicMaps". For BULL I have "Assets", "SDK", and other stuff. Just pick what works and you can always change it later. :)

Now select the folder(s) you added to "trunk", right-click and select TortoiseSVN : Add. Now right-click and select SVN Commit... Always enter a meaningful commit message, even if it's just "initial checkin" or "first version", then hit OK.

SVN will upload all of your files, building the same folder hierarchy in the repository as you have on your HD. I'll let Alerum write up a better and deeper intro to SVN, but that will get you started.
 
One issue ran across with the use of SVN is the first upload of information to the server. For some reason, when using the HTTP protocol, it hangs with large numbers of folders. You will run into issues when uploading Art work, if you have a large mod already. A work around I've found has been to upload smaller groups of folders. You don't need to do each individually, but don't choose to many.
 
Top Bottom