What is OpenBOR?
OpenBOR is a royalty free open source gaming engine. Typical OpenBOR games are comprised of three dimensional worlds projected with pre-rendered two dimensional assets (commonly called sprites). This makes OpenBOR ideal for creating side scrolling beat em up titles such as Double Dragon or Streets of Rage, but the engine easily accommodates any other genre including two dimensional platformers, SHUMPS, and RPGs.
It is advertised as the world’s most powerful sprite based engine, and most agree it lives up to the branding. OpenBOR’s native functionality is fully self contained with control mappings, precise physics, AI, and asset handling all included. This gives the engine a plug and play approach to game building that is so beginner friendly it is often mistaken for an emulator running mod ROMs. Advanced creators can take advantage of OpenBOR’s powerful high definition graphics suite and a native C derivative scripting interpreter to create virtually anything imaginable.
Contents
Getting Started
Please note, this wiki is not a tutorial, it is a reference manual. The following is meant to get you started with a development environment. For more in depth guides, consult the various tutorials and guides provided in the Chronocrash forum and always keep the following rules in mind:
- The guides and articles in this wiki assume default and sometimes legacy functionality. Almost everything can be modified, overridden, or otherwise reworked to suit a project. OpenBOR’s strength is its flexibility, so if you are unsure about something, ask!
- OpenBOR is not a game, and it’s not an emulator. It’s an engine, no different than others like Unity or Unreal. You’ll see “mod” used a lot in the forum, but that’s legacy nomenclature. You’re building a game using the OpenBOR engine, not making “an OpenBOR mod”.
- Learn to abstract. As in, don’t get caught up in labels. For example, the engine doesn’t know or care what a “Hadoulen” is, and it doesn’t “see” things on a screen. To the engine, it’s all just data. This mentality will allow you be be much more creative and productive.
Essential Tools
The following are sessential toos you will need to get started building games with OpenBOR.
- OpenBOR engine executable – The latest stable engine release.
- Edit Pack – This contains a legacy copy of the engine, a legacy module with some basic examples, a pack application for unpacking existing game moudles or packing your own, and a an application for converting .wav files to the propritary .bor music format.
- Development environment – OpenBOR relies on a combination of text files and (optionally) script files to set up and configure game functions. You may use any text editor of your choice.
- Graphics Software – You will need a graphic editing applicaiton capable of outputting 8bit .png images. Photshop or Gimp are reccomended.
- Audio Software – Sound editing application capable of outputting .wav files (sound effects) and (optionally) .ogg files for music if you prefer to use .ogg over the propritary .bor format. Adobe Audition or Audacity reccomended.
Optional Tools
These tools are optional, but highly recommended.
- Chronocrash Modders Tools (CMT) – Visual editing application for building OpenBOR games.
- PalApply – Applies a palette to one or more images and outputs optimized .png files ready for OpenBOR.
Index
The following is an index of individual engine facets, properties, and functions. Click on an item below to view a list of relevant articles.
#
A
- air_control Options for model's jumping ability.
- Ajspecial Map native special attack to Attack+Jump.
- Alpha Mask Apply an alpha mask to animation frames.
- alternatepal Load extra color palettes for a model.
- animal
- ANI_BACKWALK Walking backward animation.
- ANI_CHARGE Charging (holding Special + Jump) animation.
- ANI_DUCK Down command in 2D stage animation.
- ANI_DUCKING Transition to Duck.
- ANI_FAINT Idle when at low HP.
- ANI_FORWARDJUMP Jump while moving.
- ANI_GRAB Default grappling animation.
- ANI_GRABATTACK Basic grapple attack.
- ANI_GRABATTACK2 Finishing attack after two grapple strikes.
- ANI_GRABBACK Grapple attack with command back.
- ANI_GRABBACKWALK Moving backward with grabbed entity.
- ANI_GRABBACKWARDS Grapple attack with command back.
- ANI_GRABBBAWARDS2 Finishing grapple attack with command back.
- ANI_GRABBED Grabbed by another entity.
- ANI_GRABBEDBACKWALK Grabbed by entity moving back.
- ANI_GRABBEDTURN Held by entity reversing direction.
- ANI_GRABBEDWALK Grabbed by moving entity.
- ANI_GRABBEDWALKDOWN Grabbed by entity moving down.
- ANI_GRABBEDWALKUP Grabbed by entity moving up.
- ANI_GRABDOWN Grapple attack with command down.
- ANI_GRABDOWN2 Finishing grapple attack with command down.
- ANI_GRABFORWARD2 Finishing grapple attack after two forward command attacks.
- ANI_GRABTURN Reversing direction with grabbed entity.
- ANI_GRABUP Grapple attack with command Up.
- ANI_GRABUP2 Finishing grapple attack after two grab up attacks.
- ANI_GRABWALK Moving with grabbed entity.
- ANI_GRABWALKDOWN Moving down with grabbed entity.
- ANI_GRABWALKUP Moving up with grabbed entity.
- ANI_IDLE Default ready animation.
- ANI_JUMP Default jump animation.
- ANI_JUMPATTACK Default jumping attack.
- ANI_JUMPATTACK2 Jump attack with command down, or vertical jump attack by AI.
- ANI_JUMPATTACK3 Jump attack with command Up.
- ANI_JUMPDELAY Transition from ground to jump.
- ANI_JUMPFORWARD Jumping attack while moving.
- ANI_JUMPLAND Transition from jump to ground.
- ANI_PICK Chosen by player animation.
- ANI_RISEATTACK Fall recover while attacking animation.
- ANI_RUN Running animation.
- ANI_RUNJUMP Jump while running.
- ANI_RUNJUMPATTACK Jump attack while running.
- ANI_SELECT Idle animation in select screen.
- ANI_SELECTIN Transition to this entity in select screen.
- ANI_SELECTOUT Transition from this entity in select screen.
- ANI_SLEEP Reaction to extended idle animation.
- ANI_THROW Legacy throw animation.
- ANI_UPPER Animation used by AI against jumping.
- ANI_WALK Basic moving animation.
- ANI_WALKOFF Moving over edge without jumping or falling.
- antigrab Resistance to grabbing.
- array()
- Arrow (Subtype)
- atchain Define a model's default attack chain.
- attack#
- attack.
- attack.damage.recursive.force
- attack.damage.recursive.index
- attack.damage.recursive.mode
- attack.damage.recursive.rate
- attack.damage.recursive.tag
- attack.damage.recursive.time
- attack.damage.recursive.type
- attack.effect.hit.flash.layer.adjust
- attack.effect.hit.flash.layer.source
- attack.effect.hit.flash.z.source
- Attack1
- attack2
- attack3
- attack4
- Attackbackward
- Attackboth
- Attack box
- attack sequence
- Attack Type
- Audio
- Axis
B
C
- cantgrab
- Chargeattack
- Chargerate
- Chargetime
- Chase (Subtype)
- cheats
- child_follow_direction_adjust_range_base_min
- child_follow_direction_adjust_range_x_max
- child_follow_direction_adjust_range_x_min
- child_follow_direction_adjust_range_y_max
- child_follow_direction_adjust_range_z_max
- child_follow_direction_adjust_range_z_min
- child_follow_offset_x
- child_follow_offset_y
- child_follow_offset_z
- child_follow_range_base_max
- child_follow_range_base_min
- child_follow_range_recall_base_max
- child_follow_range_recall_base_min
- child_follow_range_recall_x_max
- child_follow_range_recall_x_min
- child_follow_range_recall_y_max
- child_follow_range_recall_z_max
- child_follow_range_recall_z_min
- child_follow_range_run_base_max
- child_follow_range_run_base_min
- child_follow_range_run_x_max
- child_follow_range_run_x_min
- child_follow_range_run_y_max
- child_follow_range_run_z_max
- child_follow_range_run_z_min
- child_follow_range_x_max
- child_follow_range_x_min
- child_follow_range_y_max
- child_follow_range_z_max
- child_follow_range_z_min
- child_follow_recall_offset_x
- child_follow_recall_offset_y
- child_follow_recall_offset_z
- Chipdeath
- Collision
- colourselect
- common drawmethod
- constant
- Coordinate
- counter
- custbomb
- custknife
- custpbomb
- custpbombno
D
E
F
- faction
- faction_damage_direct
- faction_damage_indirect
- faction_hostile
- faction_member
- faction_type_damage_direct
- faction_type_damage_hostile
- faction_type_damage_indirect
- Faint
- Flydie (Subtype)
- fmap
- Follow (Subtype)
- forcemap
- Free Drawmethod
- fshadow
- func acos() Get an arc cosine.
- func add() Add an array element.
- func adjustwalkinganimation() Force use of specific entity for alternate walk logic.
- func allocate_drawmethod() Define new drawmethod object.
- func asin() Get an arc sine.
- func atan() Get an arc tangent.
- func copy_drawmethod() Duplicate a drawmethod object.
- func cos() Get a lookup cosine.
- func delete() Remove an array element.
- func free() Delete a referenced object.
- func get() Get value of an array element by index.
- func getentityvar() Get an entity level variable value.
- func getglobalvar() Get a global level variable value.
- func getlocalvar() Get a local level variable's value.
- func get_animation_property() Get an animation property value.
- func get_bind_property() Get a bind property value.
- func get_colorset_property() Get a colorset property value.
- func get_color_component()
- func get_drawmethod_property() Get a drawmethod property value.
- func get_entity_property() Get an entity property value.
- func get_faction_property() Get a faction property value.
- func get_model_property() Get a model property value.
- func get_projectile_property() Get a projectile property value.
- func get_recursive_damage_property() Get a recursive damage property.
- func isactivesample() Is a sound channel active?
- func isarray() Is variable an array pointer?
- func isfirst() Is array cursor at first element?
- func islast() Is array cursor at last element?
- func key() Get index at array cursor position.
- func killentity() Instantly remove entity from game.
- func loadsample() Load a sound for playback.
- func NULL() Use as a NULL constant.
- func openborconstant() Get a constant value.
- func openborvariant() Get a global system value.
- func playsample() Play a sound sample.
- func pow() Batman punches you in the face, or raise a number to the nth power.
- func previous() Iterate array cursor backward.
- func querychannel() Find channel playing a sample ID.
- func reset() Move array cursor to first element.
- func round() Round a decimal.
- func sampleid() Sample ID a channel is playing.
- func scos() Get a calculated cosine.
- func set() Set value of an array element by index.
- func setentityvar() Set an entity level variable.
- func setglobalvar() Set a global level variable.
- func setlocalvar() Set a local level variable's value.
- func setopenborvariant() Set a global system variable.
- func set_animation_property() Set an animation property value.
- func set_bind_property() Set a bind property value.
- func set_colorset_property() Set a colorset property value.
- func set_color_component()
- func set_drawmethod_property() Set a drawmethod property value.
- func set_entity_property() Set an entity property value.
- func set_faction_property() Set a faction property value.
- func set_model_property() Set a model property value.
- func set_projectile_property() Set a projectile property value.
- func set_recursive_damage_property() Set a recursive damage property.
- func sin() Get a lookup sine.
- func size() Get count of array elements.
- func sqrt() Get an inverse square root.
- func ssin() Get a calculated sine.
- func strinfirst() Output string from first occurrence of substring.
- func string_to_float() Convert numeric string to floating decimal value.
- func string_to_int() Convert numeric string to integer value.
- func strinlast() Output string from last occurrence of substring.
- func strleft() Return set number of characters from start of string.
- func strlength() Get number of characters in a string.
- func strright() Return set number of characters from end of string.
- func strwidth() Get width of a string in pixels.
- func trunc() Truncate a decimal.
- func typeof() Get a variable type.
- func unloadsample() Remove a sound sample from memory.
- func value() Get value at array cursor position.
G
I
M
N
O
P
- p#icon
- p#life
- p#lifen
- p#lifex
- p#menu
- p#mp
- p#namej
- p#rush
- p#score
- p#shoot
- paingrab
- palette
- palette.burn.index
- palette.freeze.index
- palette.ko.index
- palette.ko.type
- palette.shock.index
- Panel (Type)
- Player (Type)
- project
- Project (Subtype)
- projectile
- Projectile (Type)
- projectile_color_set_adjust
- projectile_direction_adjust
- projectile_offense
- projectile_position_x
- projectile_position_y
- projectile_position_z
- Pshot (Type)