/OpenBOR_PLUS

OpenBOR PLUS is the ultimate 2D side scrolling engine for beat em' ups, shooters, and more! This version has all official features plus new features!

Primary LanguageCBSD 3-Clause "New" or "Revised" LicenseBSD-3-Clause

OpenBOR PLUS

OpenBOR PLUS is an advanced version of official OpenBOR.
OpenBOR is a continuation of the Beats Of Rage 2D game engine, which was originally created by the wonderful folks over at Senile Team. The plus version is based on official version and it has all official features plus new features!

PLEASE DON'T COPY THE "PLUS" CODE WITHOUT MY CONSENT.

Overview

OpenBOR is a royalty free sprite-based side scrolling gaming engine. From humble beginnings in 2004, it has since grown into the most versatile, easy to use, and powerful engine of its type you will find anywhere. OpenBOR is optimized for side scrolling beat em’ up style games (Double Dragon, Streets of Rage, Final Fight), but easily accommodates any sort of gameplay style and feature set you can imagine.

Want to try your hand at game making? Open one of the already existing modules and tinker around – the community is right here to help you along.

Ready to make something of your own? Get some images together and away you go!

Feeling ambitious? Delve into the built-in script engine and graphical suite to build a masterpiece rivaling the most outlandish Triple-A productions. Sell it if you can!

To find out more, stop into the OpenBOR community at ChronoCrash.com. You will also find dozens of game modules already finished to download and play.

Masters of The Universe

Masters of The Universe

Streets of Rage2X

Mortal Kombat Outworld Assassins

History

  • 2003 - Senile Team releases Beats of Rage, a free beat-'em-up for DOS inspired by SEGA's Streets of Rage series using assets from SNK Playmore's King of Fighters series. The game quickly achieves mass popularity through word of mouth. Senile Team releases an edit pack allowing anyone interested to create a module for the BOR engine.

  • 2005 - Developer Kirby2000 asks Senile Team to open the source code to BOR. They agreed, and the project is named OpenBOR. The project quickly spawns numerous ports and branches, each with unique features.

  • 2006 - Developer Sumo1X (SX) reorganizes the loose coalition of developers into what is now known as the OpenBOR Team. Features from the various branches are backported into the original OpenBOR.

  • 2011 - Sumo1X retires from the OpenBOR Team, and hands management duties to DCurrent (Damon Caskey).

  • 2017 - OpenBOR repository migrates from SourceForge to Github.

  • 2021 - Development continues on OpenBOR 4.0, with various internal source cleanups, a more object centric script engine, and fixes for long standing issues.

Platforms

OpenBOR has a very modular and portable design inherited from Beats of Rage - several ports have been made available.

Current

These platforms are actively supported and may be compiled with the latest OpenBOR engine.

  • Android
  • Windows
  • Linux
  • Mac OS X
  • Wii
  • PSP
  • PS3

Discontinued

The following platforms are still available as legacy binaries but are no longer supported and may not be compatible with current iterations of OpenBOR.

  • Dreamcast
  • GP2X
  • GP2X Wiz
  • OpenDingux (Dingoo A320 & GCW-Zero)

OpenBOR Team

Current Members

White Dragon (2016-)

A long time module author and extremely knowledgeable coder who joined the development team in 2016 and immediately began making an impact. White Dragon generally focuses on level and menu properties, but has branched out into various other facets of the engine over time.

Former members and contributors

Damon Caskey (2007-)

OpenBOR project manager and site owner of the OpenBOR community. Primary contributions are core engine and scripting development, code cleanup, and organization. Main focus is keeping OpenBOR future proof and modular by replacing specialized hardcoding and overlap with generalized features that allow for more author creativity.

Plombo (2009-)

A developer who prefers to work on OpenBOR's supporting libraries and platform-specific backends. Known for maintaining the Wii port, writing the GPU-accelerated video code for Wii and OpenGL, and a few engine features.

Malik (2018-)

Malik came to the team with a strong OpenBOR scripting background, and quickly established himself as a resident go-to for the Android Port. Malik dedicates himself to keeping the Android port of OpenBOR a commercially viable platform for authors who wish to sell their original IP projects.

Douglas Baldan (2018-2021)

Known as O'Ilusionista, Douglas was a highly respected administrator of the OpenBOR community and a prolific member of the Mugen scene. His professional background in graphic design brought a plethora of graphic and game development experience to the team. Citing personal reasons, Douglas officially retired from the OpenBOR team mid-2021.

Haxpor in the forums, a Linux centric developer who works hard to ensure our penguin crowd has the proper tools for development and underlying libraries of OpenBOR remain compatible to compile for mobile platforms.

crxtrdude (2016-2018)

crxtrdude focused on the android port in particular on the module Activity, Manifest and on the virtual gamepad.

uTunnels (2007-2014)

Among many other powerful additions, contributed the original scripting engine to OpenBOR, single handedly breaking nearly every limitation module authors faced. While not officially retired, uTunnels' presence became gradually more infrequent before stopping altogether in early 2014.

Anallyst (2011)

This developer's work centered mainly around trimming the fat and optimizing the codebase.

SumolX (2006-2011)

Former project manager and lead programmer, retired from the scene in 2011. Known for porting PSP, PS3, Linux, Wii, GP2X and maintaining all other platforms and code base.

KBbandressen (2007-2011)

Contributed a plethora of features, including the powerful text object and filestream capabilities.

CGRemakes (2005-2006)

Main developer after Kirby2K. Introduced many exciting features to engine.

LordBall (2006)

Developed offshoot engine based on OpenBOR. Shared features with both engines.

Tails (2006)

Developed offshoot engine based on OpenBOR. Shared features with both engines.

Fugue (2006)

Developed offshoot engine based on OpenBOR. Shared features with both engines.

Kirby2K (2004-2005)

The original developer of OpenBOR who asked Senile Team for permission to open up Beats Of Rage.

Senile team was not directly involved with developing OpenBOR, but their opening of the Beats of Rage codebase was vital. Parts of the original BOR still reside in OpenBOR to this day.

Roel (credited as "Opla" in BoR)

The team's chieftain. Does most of the game design, programming and artwork.

Jeroen (credited as "Leila" in BoR)

Does all the things no one else does.

Sander (credited as "Albatross" in BoR)

3D artist and animation sequence editor.

Ben

Senile Team's composer.

Neill was the first to port Beats of Rage to other systems, namely Playstation 2 and Dreamcast. He now supports Senile Team with advice regarding console hardware and code compatibility.

Websites

Home of the OpenBOR community and OpenBOR team. This is the place to go if you want to discuss OpenBOR development, find ready to play game modules, or get started building one of your own.

Senile Team does not support OpenBOR or BOR in any way. Instead, you should stop in to see their latest projects - you’ll no doubt find something interesting!

New Features

  • added "movex", "movez" to entityproperty: the potential entity directions
  • added "collidedentity" to script: it returns the collided entity handler
  • opened animation platform properties to script

NEW OPERATORS

bitwise not (~)

NEW FUNCTIONS

rumble(player_index, ration, milliseconds);

ENTITY COLLISION

accessible in debug mode too.

constants:
ANI_PROP_ENTITY_COLLISION
ENTITY_COLLISION_PROP_COORDINATES
ENTITY_COLLISION_PROP_TAG
ENTITY_COLLISION_PROP_INDEX

animation commands:
ebox {x} {y} {width} {height} {z1} {z2}
ebox.x {value}
ebox.y {value}
ebox.width {value}
ebox.height {value}
ebox.z1 {value}
ebox.z2 {value}
eboxz {z1} {z2}

model commands:
entitypushing {int}: if 1 entity pushing target on collision
pushingfactor {float}: pushing factor on collision. Default: 1.0

openborscript functions: get_entity_collision_collection(void handle, int frame);
get_entity_collision_instance(void handle, int index);
get_entity_collision_property(void handle, int property);
set_entity_collision_property(void handle, int property, value);

openborscript:
added "entitypushing", "pushingfactor" to entityproperty
added "collidedentity" to entityproperty
added "maxcollisions" to openborvariants

events:
onentitycollisionscript
localvars:
"self": entity
"target": entity
"self_ebox_handler": the handler for ebox of self to use with openborscript functions
"target_ebox_handler": the handler for ebox of target to use with openborscript functions

MULTPLE COLLISION BOXES

opened multiple collision boxes to openbor:
you establish the max collision boxes into model.txt file with
maxcollisions {int} (default: 2)
then you can change into animation the index of boxes:
setaboxindex {int} for attack collision boxes (default: 0)
setbboxindex {int} for body collision boxes (default: 0)
seteboxindex {int} for entity collision boxes (default: 0)

by default the index relative to a box is set to 0 of course.

example:

ANIM IDLE
bbox 1 2 3 4 5
setbboxindex 1
bbox 5 6 7 8 9

in this example you set 2 bboxes.

see this example too:

ANIM IDLE
bbox 1 2 3 4 5
setbboxindex 1
bbox 5 6 7 8 9
bbox 1 2 3 4 5

in this example you set 2 bboxes both: bbox 1 2 3 4 5
because bbox 1 2 3 4 5 at index 1 overrides bbox 5 6 7 8 9 at index 1

BOOMERANG

model keys:
subtype boomerang
aimove boomerang

model commands:
boomerang {name}
boomerangvalues {acceleration} {horizontal_distance}

animation commands:
custboomerang {name}

animations:
getboomerang
getboomeranginair
use range {min} {max} to get the boomerang by range

openbor script:
changed access to boomerang props in openbor script:
get/change entityproperty "boomerang" "acceleration" {val}
get/change entityproperty "boomerang" "hdistance" {val}

using subentity and spawnframe example:
for player set type npc, for enemies set type enemy

subentity boomerang
spawnframe 0 5 0 30

using custboomerang example:

custboomerang boomerang
throwframe 0 30

IMPROVED MENUS

all ports menu now support image previews
but into PSP/Wii port is disabled by default for less memory usage

all menus support more mods loading
implemented vertical scrollbar for menus
implemented fast forward/backward to scroll menu with many mods (left/right arrow)
implemented hold key impulse for all menus to scroll menu with many mods more easily

NEW PORTS

PS3 port

ANDROID PORT

Display resizeing support
Virtual gamepad vibration
Hiding virtual gamepad support
Improved gamepad support
Installation dir: /Android/media/org.openbor.engine/OpenBOR (from Android 11 (targetSdkVersion 30), the management of security policies for the external storage management has changed)

3RD PART FRONT-END SUPPORT FOR WINDOWS

Command line example:

"X:\XXX\YYY\ZZZ\OpenBOR.exe" -fullscreen -keepaspectratio "X:\XXX\YYY\ZZZ\OPENBOR_DIR\PAKS\XYZ.pak"

Options: -fullscreen -> Open game into fullscreen -keepaspectratio -> avoid stretch mode leaving the real game aspect ratio