The Aleph One wiki has migrated! Please see:
https://github.com/Aleph-One-Marathon/alephone/wiki/Developer-Notes
See the Linux Install Instructions page for information on dependencies. Autoconf and automake are the only developer-specific dependencies.
To build from an SVN snapshot, run ./autogen.sh
instead of ./configure
. You can then run the usual make
and make install
steps. To create archives for distribution, run make dist
(for the source tarball) and make datadist
(for the scenario downloads).
Release binaries were built using Xcode 3.2.6. Xcode 3 no longer runs on current OS X releases, but the command line tools still work fine. To build signed releases compatible with Gatekeeper, you should use the command line option under 10.10 (Yosemite). To update the project, use a Mac running 10.9 or earlier.
You need all dependency frameworks installed in /Library/Frameworks
before you can build. You can:
frameworks
section of the SVN repository.If you choose the first option, you'll have everything required except boost.framework
, which is not distributed with Aleph One. You can download a copy from the Aleph One web site.
The Xcode project for the release applications is PBProjects/AlephOne.xcodeproj
. From the command line, switch to the PBProjects directory and, assuming Xcode 3 is installed in /Developer, run:
/Developer/usr/bin/xcodebuild -project AlephOne.xcodeproj -configuration "Deployment (Universal)" -alltargets
Products will be located in PBProjects/build
, including the disk images used for distribution. You need to be a registered Mac developer and have created a "Developer ID Distribution" certificate. Otherwise, the process will fail at the signing step. If you wish to build unsigned apps, remove all codesign
lines in the project's Run Script build phases.
For daily development in trunk, I use PBProjects/AlephOne-Xcode4.xcodeproj
with the latest Xcode. Run the "Aleph One" target, "Development" configuration. Other configurations and targets may not be kept up to date.
Windows binaries are built from Linux or OS X, using the MXE cross-compilation toolchain. Native Windows compilation is not tested or supported currently.
The list of required MXE packages is similar to the Linux build. The configure process will alert you to missing dependencies. A custom makefile is used for ffmpeg, to limit the number of codecs included. In addition, a few patches were applied on top of the stable MXE release. You can download detailed instructions for replicating the MXE environment used to build version 1.2.
I use MacPorts under OS X to install the necessary MXE dependencies, and then use the following script to set up the environment and build:
1 2 3 4 5 6 7 8 9 10 11 | #!/bin/sh MINGW_ROOT=/Users/$USER/Source/mxe-git MINGW_PREFIX=$MINGW_ROOT/usr MINGW_TARGET=i686-pc-mingw32 MINGW_PATH="$MINGW_PREFIX/$MINGW_TARGET/bin:$MINGW_PREFIX/bin" STD_PATH="/opt/local/bin:/opt/local/sbin:/usr/local/bin:/usr/bin:/bin:/usr/X11/bin" PATH="$MINGW_PATH:$STD_PATH" SDL_CONFIG="$MINGW_PREFIX/$MINGW_TARGET/bin/sdl-config" ACLOCAL_FLAGS="-I$MINGW_PREFIX/$MINGW_TARGET/share/aclocal" LDFLAGS=-Wl,-S LIBS="-lfreetype -ltiff -ljpeg -lpng -lz -lstdc++ -lws2_32 -lbz2 -liphlpapi" ./autogen.sh --prefix=$MINGW_PREFIX --target=$MINGW_TARGET --host=$MINGW_TARGET PATH="$MINGW_PATH:$STD_PATH" make PATH="$MINGW_PATH:$STD_PATH" make dist windist datadist |
If your MXE setup is correct, you'll see the following summary from configure
:
. Enabled: OpenGL rendering . Enabled: built-in Lua scripting . Enabled: SDL_image support . Enabled: FFmpeg playback and film export . Not found: libmad MP3 playback . Not found: libsndfile audio decoding . Enabled: libvorbis Ogg/Vorbis music playback . Not found: SMPEG movie playback . Enabled: Speex net mic playback . Not found: ALSA net mic transmission . Enabled: cURL for HTTP communication . Enabled: zziplib support . Enabled: libpng PNG screenshot support
The make windist
command will create the archives used for distribution. For normal testing of new features, make clean
and make
are sufficient to rebuild the executables.
Source_Files/Misc/alephversion.h
cd docs
sed -e 's/version="SVN"/version="20150619"/g' -i '' Lua.xml Lua_HUD.xml
xsltproc Lua.xsl Lua.xml > Lua.html
xsltproc Lua.xsl Lua_HUD.xml > Lua_HUD.html
svn commit -m "release 1.2"
export SVNROOT=svn+ssh://jeremiahmorris@svn.code.sf.net/p/marathon/code
svn copy -m "release 1.2" $SVNROOT/trunk $SVNROOT/tags/release-20150619
includes/versions.php
on web site with release infoFilm playback compatibility is handled in Source_Files/CSeries/FilmProfile.[cpp,h]
. When making a gameplay-related change after a release, set up a new profile and add handling for the newly-obsoleted profile.
Multiplayer compatibility is handled in Source_Files/Network/network_capabilities.[cpp,h]
. When making gameplay-related or net protocol-related changes, bump kGameworldVersion
and/or kGameworldM1Version
as necessary.
Scenario compatibility is handled in MML, in the <scenario id="...">
attribute. The ID should be changed whenever MML or data updates affect gameplay.
Version checks are made directly to marathon.sourceforge.net. When updating the web site, be sure to keep the current version-check URLs functional.
Metaserver and other online functions communicate with lhowon.org, which is hosted separately and run by active Aleph One developers. Coordinate any new online features with the lhowon.org admins.