BSL:BFW Scripting Language: Difference between revisions
(I'm getting tired of having to click twice to get here...) |
m (OSL to BSL) |
||
Line 1: | Line 1: | ||
== | == Bungie Scripting Language (or BSL) == | ||
is what [[ | is what [[BSL:Scripts|Oni scripts]] are written in. It's a programming language akin to C with some shell-script features as well. | ||
== Editing Scripts == | == Editing Scripts == | ||
Line 23: | Line 23: | ||
===Knowledge database=== | ===Knowledge database=== | ||
For the theoretical minds, everything you'll ever need to know about | For the theoretical minds, everything you'll ever need to know about BSL | ||
*[[ | *[[BSL:Statements|Statements]] | ||
*[[ | *[[BSL:Variables|Variables]] | ||
*[[ | *[[BSL:Functions|Functions]] | ||
*[[ | *[[BSL:Operators|Operators]] | ||
*[[ | *[[BSL:Data|Data types]] | ||
More on modding basics | More on modding basics | ||
*[[ | *[[BSL:IGMD|IGMD folder]] | ||
*[[ | *[[BSL:IGMD/global|global folder]] | ||
And some random (so far) useful pages | And some random (so far) useful pages | ||
*[[ | *[[BSL:Inventory|Inventory management]] | ||
===[[ | ===[[BSL:Tutorial|Tutorials]]=== | ||
For the practical minds who don't care (too much) about the theory. | For the practical minds who don't care (too much) about the theory. | ||
*Wanna make minor (yet cool-looking) changes to the original level logic? | *Wanna make minor (yet cool-looking) changes to the original level logic? | ||
*Wanna script a "patch" that's effective in every level but doesn't affect the original logic? | *Wanna script a "patch" that's effective in every level but doesn't affect the original logic? | ||
*Wanna create completely new level logic from scratch? [[ | *Wanna create completely new level logic from scratch? [[BSL:Tutorial/Scratch|Here you are]] | ||
==Overview== | ==Overview== | ||
{| border="1" cellpadding="5" cellspacing="0" align="center" | {| border="1" cellpadding="5" cellspacing="0" align="center" | ||
|+''' | |+'''BSL syntax overview table''' | ||
|- | |- | ||
| align="center" style="border-bottom:3px solid grey;"| | | align="center" style="border-bottom:3px solid grey;"| | ||
{| border="0" | {| border="0" | ||
|+'' | |+''BSL separators'' | ||
|- | |- | ||
| align="center" width="100px" | [[ | | align="center" width="100px" | [[BSL:Statements|<tt>;</tt>]] | ||
| align="center" width="100px" | [[ | | align="center" width="100px" | [[BSL:Functions|<tt>,</tt>]] | ||
| align="center" width="100px" | [[ | | align="center" width="100px" | [[BSL:Comments|<tt>#</tt>]] | ||
| align="center" width="100px" | [[ | | align="center" width="100px" | [[BSL:Data|<tt>"</tt>]] | ||
|- | |- | ||
| align="center" width="100px" | [[ | | align="center" width="100px" | [[BSL:Statements|<tt>{</tt>]] | ||
| align="center" width="100px" | [[ | | align="center" width="100px" | [[BSL:Statements|<tt>}</tt>]] | ||
| align="center" width="100px" | [[ | | align="center" width="100px" | [[BSL:Functions|<tt>(</tt>]] | ||
| align="center" width="100px" | [[ | | align="center" width="100px" | [[BSL:Functions|<tt>)</tt>]] | ||
|- | |- | ||
| align="center" colspan="4" style="border-top:1px solid red; border-right:1px solid red; border-bottom:2px solid red; border-left:1px solid red;" | | | align="center" colspan="4" style="border-top:1px solid red; border-right:1px solid red; border-bottom:2px solid red; border-left:1px solid red;" | | ||
Line 65: | Line 65: | ||
| align="center" style="border-bottom:3px solid grey;"| | | align="center" style="border-bottom:3px solid grey;"| | ||
{| border="0" | {| border="0" | ||
|+'' | |+''BSL operators'' | ||
|- | |- | ||
| align="center" width="100px" | [[ | | align="center" width="100px" | [[BSL:Operators|<tt>+</tt>]] | ||
| align="center" width="100px" | [[ | | align="center" width="100px" | [[BSL:Operators|<tt>-</tt>]] | ||
| align="center" width="100px" | [[ | | align="center" width="100px" | [[BSL:Variables|<tt>=</tt>]] | ||
| align="center" width="100px" | [[ | | align="center" width="100px" | [[BSL:Operators|<tt>!</tt>]] | ||
|- | |- | ||
| align="center" width="100px" | [[ | | align="center" width="100px" | [[BSL:Operators|<tt>and</tt>]] | ||
| align="center" width="100px" | [[ | | align="center" width="100px" | [[BSL:Operators|<tt>or</tt>]] | ||
| align="center" width="100px" | [[ | | align="center" width="100px" | [[BSL:Operators|<tt>eq</tt>]] | ||
| align="center" width="100px" | [[ | | align="center" width="100px" | [[BSL:Operators|<tt>ne</tt>]] | ||
|- | |- | ||
| align="center" width="100px" | [[ | | align="center" width="100px" | [[BSL:Operators|<tt><</tt>]] | ||
| align="center" width="100px" | [[ | | align="center" width="100px" | [[BSL:Operators|<tt>></tt>]] | ||
| align="center" width="100px" | [[ | | align="center" width="100px" | [[BSL:Operators|<tt><=</tt>]] | ||
| align="center" width="100px" | [[ | | align="center" width="100px" | [[BSL:Operators|<tt>>=</tt>]] | ||
|- | |- | ||
| align="center" colspan="4" style="border-top:1px solid red; border-right:1px solid red; border-bottom:2px solid red; border-left:1px solid red;" | | | align="center" colspan="4" style="border-top:1px solid red; border-right:1px solid red; border-bottom:2px solid red; border-left:1px solid red;" | | ||
Line 88: | Line 88: | ||
| align="center" style="border-bottom:3px solid grey;"| | | align="center" style="border-bottom:3px solid grey;"| | ||
{| border="0" | {| border="0" | ||
|+'' | |+''BSL keywords'' | ||
|- | |- | ||
| align="center" width="75px" | [[ | | align="center" width="75px" | [[BSL:Keywords|<tt>at</tt>]] | ||
| align="center" width="75px" | [[ | | align="center" width="75px" | [[BSL:Data|<tt>float</tt>]] | ||
| align="center" width="75px" | [[ | | align="center" width="75px" | [[BSL:Statements|<tt>if</tt>]] | ||
| align="center" width="75px" | [[ | | align="center" width="75px" | [[BSL:Keywords|<tt>repeat</tt>]] | ||
| align="center" width="75px" | [[ | | align="center" width="75px" | [[BSL:Data|<tt>string</tt>]] | ||
|- | |- | ||
| align="center" width="75px" | [[ | | align="center" width="75px" | [[BSL:Data|<tt>bool</tt>]] | ||
| align="center" width="75px" | [[ | | align="center" width="75px" | [[BSL:Keywords|<tt>for</tt>]] | ||
| align="center" width="75px" | [[ | | align="center" width="75px" | [[BSL:Data|<tt>int</tt>]] | ||
| align="center" width="75px" | [[ | | align="center" width="75px" | [[BSL:Functions|<tt>return</tt>]] | ||
| align="center" width="75px" | [[ | | align="center" width="75px" | [[BSL:Keywords|<tt>using</tt>]] | ||
|- | |- | ||
| align="center" width="75px" | [[ | | align="center" width="75px" | [[BSL:Statements|<tt>else</tt>]] | ||
| align="center" width="75px" | [[ | | align="center" width="75px" | [[BSL:Functions|<tt>fork</tt>]] | ||
| align="center" width="75px" | [[ | | align="center" width="75px" | [[BSL:Keywords|<tt>iterate</tt>]] | ||
| align="center" width="75px" | [[ | | align="center" width="75px" | [[BSL:Keywords|<tt>schedule</tt>]] | ||
| align="center" width="75px" | [[ | | align="center" width="75px" | [[BSL:Variables|<tt>var</tt>]] | ||
|- | |- | ||
| align="center" width="75px" | [[ | | align="center" width="75px" | [[BSL:Keywords|<tt>every</tt>]] | ||
| align="center" width="75px" | [[ | | align="center" width="75px" | [[BSL:Functions|<tt>func</tt>]] | ||
| align="center" width="75px" | [[ | | align="center" width="75px" | [[BSL:Keywords|<tt>over</tt>]] | ||
| align="center" width="75px" | [[ | | align="center" width="75px" | [[BSL:Keywords|<tt>sleep</tt>]] | ||
| align="center" width="75px" | [[ | | align="center" width="75px" | [[BSL:Data|<tt>void</tt>]] | ||
|- | |- | ||
| align="center" colspan="5" style="border-top:1px solid red; border-right:1px solid red; border-bottom:2px solid red; border-left:1px solid red;" | | | align="center" colspan="5" style="border-top:1px solid red; border-right:1px solid red; border-bottom:2px solid red; border-left:1px solid red;" | |
Revision as of 17:02, 23 December 2007
Bungie Scripting Language (or BSL)
is what Oni scripts are written in. It's a programming language akin to C with some shell-script features as well.
Editing Scripts
Scripts can be edited with and word-processing program, such as NotePad. They can be edited simply by typing inside the file. Script files can be generated by creating a *.txt document, then changing the extension from txt to bsl.
Scripted Mods
Scripted Mods are great examples of editing scripts. They edit the *.bsl files to create interesting, and often amusing results. They can change everything from the fog, to how the characters and level interact. However, they cannot add characters or change the level layout, only its contents, as they are handled by the Binaries. Information on OBD: Oni Binary Data . They are great examples of what can be achieved simply by typing into a file. The possibilities are simply endless.
Probably the best specimens of Scripted Mods are the Oni Team Arena scripts. Based on an idea for multiplayer Oni, and inspired by Unreal Tournament, they augment Oni's hand-to-hand combat and gunplay integration with a scoring system much like Unreal Tournament's DeathMatch. More information about this exciting project can be found at the page listed above.
All other scripted mods are basically anything you can imagine. From free-for-all arenas to objective based missions and enhancements of the original level, they spice up the games original levels and provide a more exciting experience to those who have finished the game. They keep the game alive, outside of its original levels.
Downloads of OTA Mods are available at the OTA page. (Oni Team Arena) Downloads for other scripted mods mave been gathered here : Script Download Page and here.
What Are Scripts?
Scripts are the files that dictate the in-game processes in Oni, which include level logic, environment effects, as well as cutscenes. They are the *.bsl files inside the folder ...Oni/GameDataFolder/IMGD/. By editing scripts, you can alter how the game plays.
Knowledge database
For the theoretical minds, everything you'll ever need to know about BSL
More on modding basics
And some random (so far) useful pages
Tutorials
For the practical minds who don't care (too much) about the theory.
- Wanna make minor (yet cool-looking) changes to the original level logic?
- Wanna script a "patch" that's effective in every level but doesn't affect the original logic?
- Wanna create completely new level logic from scratch? Here you are
Overview
| |||||||||||||||||||||||||
| |||||||||||||||||||||||||
|