|This page is under development.|
This page explains how to package Allacrost for a release. This process differs greatly depending on the operating system for which the release is being made for. No matter what OS the release is being created for, these rules apply:
- Make sure that you have the latest source from the SVN repository
- Check that there are no pending source code commits that need to be made prior to the release
- Check that there are no media content files missing, nor any updates to those files for the release that are not yet available
- Most importantly: install and thoroughly test the release on your machine before giving it to others!
The apt packaging system is what is used by Debian-based Linux distributions such as Debian, Ubuntu, Mepis, etc.). This packaging system resolves all dependencies on the user's machine so that they do not need to be concerned about missing packages that Allacrost relies on.
The rpm packaging system is used by many distributions such as Red Hat/Fedora, Suse, Mandriva, etc.
Since XCode can compile for PPC and x86 at the same time, these instructions apply for compiling for both.
Begin by downloading the SDL developer suite. Install it.
In XCode, Create new SDL application.
Add to the project all the source files in from svn.
Make sure the following frameworks are included. They should be found under HD > System > Library > Frameworks.
Cocoa.framework OpenGL.framework AppKit.framework Foundation.framework
Other frameworks you need to download and include are:
IL.framework Vorbis.framework SDL.framework SDL_ttf.framework SDL_mixer.framework Ogg.framework Lua.framework
They can be found all over the web -- so if you need help with them, shoot an e-mail to email@example.com, and maybe he will upload a package so they can be downloaded.
Put all these frameworks in the "Link Binary with Libraries" section of the target.
Click on the "info" button under your project, and under build, set "Installation Directory" to @executable_path/../Frameworks, and set "Skip Installation" as checked.
Copy Bundle Resources from the resource tree (dat, img, snd, mus)
Go to Project > New Build Phase > New Copy Files Build Phase. Set destination to "Frameworks." Then under your new Copy Files build phase in your target, add your downloaded frameworks.
Build and Go!
Oh, if you want it to be universal: under project information, you should be able to change the build type under the 'General' tab (assuming you have the latest XCode build)
- Build the game normally using Visual C++ 2005 Express Edition and Allacrost.vcproj as the project file.
- Create a temporary folder where every (and only) necessary files and folders needed for the game are copied. These include the following:
- img/, mus/, snd/, dat/
- Allacrost.exe, Microsoft.VC80.CRT.manifest and all the required DLLs. Note: Map Editor won't be in any public release at the moment!
- Text files such as MANUAL, README, README-SDL.txt etc.
- Remove any hidden .svn folder that might be hiding somewhere - especially under dat/ !
- Add the whole new folder into a .ZIP archive using any standard archiving software available. TUGZip is a handy freeware tool for this.
These are the DLL files required:
Visual C++ 2005 Express Edition and the manifest file
Note that the programs compiled with Visual C++ 2005 Express Edition won't work on platforms that don't have it installed without tricks. The solution is to create a file named "Microsoft.VC80.CRT.manifest" and paste the following code into it:
<?xml version="1.0" encoding="UTF-8" standalone="yes"?> <!-- Copyright © 1981-2001 Microsoft Corporation --> <assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0"> <noInheritable/> <assemblyIdentity type="win32" name="Microsoft.VC80.CRT" version="8.0.50608.0" processorArchitecture="x86" publicKeyToken="1fc8b3b9a1e18e3b" /> <file name="msvcr80.dll"/> <file name="msvcp80.dll"/> <file name="msvcm80.dll"/> </assembly>
Source packaging is the act of bundling all of the Allacrost source code and game content necessary for the user to build and compile the game from scratch. This package should also include well-written instructions for the user on how to compile the game and install it on their machines. The source package must be created on a Linux or GNU-compatible system, but it should be able to be compiled on any system. (Note: we provide the build/make/project files for some compilers, but not all. If the user wishes to use a compiler not supported, they will have to create that setup by themselves).
The result of the source packaging process is a gzip'ed tar file (.tar.gz) that contains all of the source code, scripts, media, and other necessary files. Executable files are -not- included in this release file. To create the tarball release file, perform the following steps.
- Change your present working directory to the Allacrost top-level directory.
This should be the directory where you update and submit files from subversion. It includes the primary Allacrost folders such as src/ and img/.
- Type svn update.
This is to make sure that you have the most recent files before producing the package.
- Modify the configure.ac file in the TLD.
Edit the line near the top of that file that begins with "AC_INIT" to reflect the latest application name, version number, contact e-mail address, and package name.
- Type autoreconf -i && ./configure && make.
This will re-create the configure script, run that script to produce the make file, and then proceed to compile both the game and the editor. Make sure that the compilation of both the 'allacrost' and 'allacrost-editor' executables succeed. If there are compilation warnings, try to address them if time and circumstances allow (don't allow them to hold up a critical release date/time). Remember to submit any changes you make back into subversion and let other release packagers know that you have made an update.
- Type ./allacrost and make sure the game runs.
This is done to make sure that there were no problems with the compilation process. You only need to let the game go through the boot sequence. Once you get to the boot menu and the opening music starts playing, you may exit the program.
- Type ./allacrost-editor and make sure the editor application runs.
Again this is to ensure that the compilation process succeeds. Click on a few drop down menus and then exit the editor.
- Type make distclean && make dist.
This will remove all compiled object files and executables and then proceed to make the release tarball file. The file will be in the format of allacrost-X.Y.Z.tar.gz, where X, Y, Z represents the version number that you are creating (if this number is incorrect, you did not modify the configure.ac file correctly or did not re-generate the configure script correctly).
- Rename the tarball file by running this command: mv allacrost-X.Y.Z.tar.gz allacrost_source_X.Y.Z.tar.gz.
This is done to make it more clear what this release file contains. You now have the release file, but you're not ready to release yet! Continue on to the next steps.
- Unpack the tarball file by typing tar -xvzf allacrost_source_X.Y.Z.tar.gz.
This will create a directory called `allacrost-X.Y.Z` containing the uncompressed, unpackaged release files.
- Change your present working directory cd allacrost-X.Y.Z and type ./configure && make.
This will begin compiling the release from scratch using the configure script that was generated for this release. Make sure that both the game and editor compile successfully.
- Run ./allacrost and perform a sanity test of the game.
The sanity test makes sure that everything works okay in the compiled executable of the release.
- Run ./allacrost-editor and perform a sanity test of the editor.
Again, the sanity check is needed here to ensure that we are releasing a functional product.
If you have gotten this far, then your release is ready to go. You may delete the unpacked release directory that you created earlier (rm -rf allacrost-.X.Y.Z). Place the package tarball file in the staff FTP and alert the release manager that it is available. He/she will upload your package file to sourceforge and make it available for others to download.