Aleph One File compatibility
Jul0
”Images” - on Aleph One/SDL this is a data file and not a resource file
as on the MacOS versions of Aleph One and Marathon, but the file format
is exactly the same, and compatible across all platforms supported by
Aleph One/SDL
“Shapes” - fully compatible across all versions of Aleph One/Marathon 2/
Marathon Infinity
“Sounds” - fully compatible across all versions of Aleph One/Marathon 2/
Marathon Infinity
Map files - maps without resource forks are fully compatible across all
versions of Aleph One/Marathon 2/Marathon Infinity; maps with resource
forks need to be in one of three formats:
a) data and resource forks in separate files, <name> and <name>.rsrc/
<name>.resources
b) an AppleSingle encoded file containing data and resource fork
c) a MacBinary II encoded file containing data and resource fork
All of these formats are fully compatible across all platforms supported
by Aleph One/SDL.
Saved games - fully compatible across all versions of Aleph One/
Marathon 2/Marathon Infinity (but the MacOS versions save a small picture
of the map at the current player’s position in the resource fork of
saved games, which is not preserved or used by Aleph One/SDL)
Films - fully compatible across all versions of Aleph One/Marathon 2/
Marathon Infinity
“Aleph One Preferences” - platform-specific, not compatible with the MacOS
versions of Aleph One/Marathon nor across the platforms supported by
Aleph One/SDL
Themes - fully compatible across all versions of Aleph One/SDL; the MacOS
versions of Aleph One and Marathon don’t support themes
What is Aleph One
Jul0
Aleph One is an Open Source 3D first-person shooter game, based on the game
Marathon 2 by Bungie Software. It is set in a Sci-Fi universe dominated by
deviant computer AIs and features a well thought-out plot.
To compile Aleph One/SDL, you need an up-to-date C++ compiler. Using GCC 3.x
should give the best results. Users of pre-ISO C++ compilers need not apply.
Aleph One/SDL supports, but doesn’t require, OpenGL for rendering.
Types and Mnemonics
Jul0
The string mnemonics listed below can be used for assignment and as arguments to functions. Additionally, Aleph One’s Lua interpreter has been modified so that equality comparisons between userdata types and strings are possible.
For example, this script would move all players on the blue team to the red team:
for p in Players() do
if p.team == “blue” then
p.team = “red”
end
end
And this one would damage all major compilers with 10 points of fusion damage:
for m in Monsters() do
if m.type == “major compiler” then
m:damage(10, “fusion”)
end
end
Each type has a read-only .index field, which represents the game’s internal index:
> =ItemTypes["pistol"].index
1
Each type also has a .mnemonic field, which is handy for finding the mnemonic of a given type:
> =MonsterTypes["major compiler"].class.mnemonic
compiler
You can even use the mnemonic field to customize the mnemonics for your scenario. Note that you can only have one string mnemonic per type index:
> WeaponTypes["fist"].mnemonic = “puncher”
> =WeaponTypes["puncher"].index
0
> =WeaponTypes["fist"]
nil
If you do this, you should customize them all at the beginning of the script. Changing mnemonics mid-game will confuse anyone who tries to read your script, and probably yourself as well!
Sides
Jul0
# Sides
number of sides on the level
Sides()
iterates through all sides on the level
Sides.new(polygon, line) 20080707
creates a new side
side must not already exist
Sides[index]
.control_panel
nil if the side is not a control panel
set to true or false to create/destroy a control panel 20080707
.can_be_destroyed 20080707
whether projectiles destroy this switch
.light_dependent 20080707
switch can only be activated if light > 75%
.only_toggled_by_weapons 20080707
switch can only be toggled by weapons
.permutation
permutation of control panel
.repair 20080707
switch is a repair switch
.type 20080707
type of control panel
.uses_item 20080707
i.e. chip insertion
.primary
.secondary
.transparent
.collection
texture collection
.empty
whether transparent side is empty
transparent side only
setting empty to false is a no-op; set collection and texture_index instead
.light
texture light
.texture_index
texture bitmap index
.texture_x
texture x offset
.texture_y
texture y offset
.transfer_mode
texture transfer mode
:play_sound(sound [, pitch])
play sound coming from this side
.line (read-only)
line this side is attached to
.polygon (read-only)
polygon this side is attached to
:recalculate_type() 20081213
correct the side type (Forge can generate incorrect side types)
.type (read-only) 20080707
type of side
Scenery
Jul0
# Scenery
maximum number of map objects
Scenery()
iterates through all valid scenery
Scenery.new(x, y, height, polygon, type)
returns a new scenery
Scenery[index]
:damage()
damages scenery
.damaged (read-only)
whether this scenery has been damaged
:delete()
removes scenery from the map
.facing
direction scenery is facing
:play_sound(sound)
play sound coming from this scenery
.polygon (read-only)
polygon the scenery is in
.solid
whether this scenery is solid
.type (read-only)
type of scenery