18,700
edits
(→Modular modding: this lets me link to an orphaned page and fill in a bit of missing history at the same time) |
(corrections per Ssg and s10k; also, the number of months is no longer significant in the age of level creation, after three years) |
||
Line 9: | Line 9: | ||
Fans wasted no time in dumping the readable text from the executable and trying to figure out how to enable Developer Mode, as [http://carnage.bungie.org/oniresforum/onires.archive.pl?read=35 this thread] from before the game's official release date attests. Little did they know it would take another five years before this particular goal would be reached. | Fans wasted no time in dumping the readable text from the executable and trying to figure out how to enable Developer Mode, as [http://carnage.bungie.org/oniresforum/onires.archive.pl?read=35 this thread] from before the game's official release date attests. Little did they know it would take another five years before this particular goal would be reached. | ||
</ref> | </ref> | ||
Nevertheless, the lack of any documentation or tools for modding undeniably slowed the development of mods within the community. Only for the last {{ | Nevertheless, the lack of any documentation or tools for modding undeniably slowed the development of mods within the community. Only for the last {{Age|2010|11|6}}<!--Nov. 6, 2010 is the date that geyser posted about OniSplit supporting pathfinding grids for new levels in the article "New levels".--> has the community's modding capabilities covered nearly all aspects of the game. | ||
There are three basic areas in which the game can be modded: scripting, binary resources, and the engine itself. Along the way, we'll look at some key discoveries the community made in more detail. | There are three basic areas in which the game can be modded: scripting, binary resources, and the engine itself. Along the way, we'll look at some key discoveries the community made in more detail. | ||
Line 17: | Line 17: | ||
Since the .bsl files were plain-text, and in plain <u>sight</u> within the folders that held Oni's game data, it's not surprising that fans quickly learned some basic commands by seeing what Bungie had written, and making their own scripts. Further commands were discovered by dumping readable text from the engine, although not everything worked as it seemed it should. | Since the .bsl files were plain-text, and in plain <u>sight</u> within the folders that held Oni's game data, it's not surprising that fans quickly learned some basic commands by seeing what Bungie had written, and making their own scripts. Further commands were discovered by dumping readable text from the engine, although not everything worked as it seemed it should. | ||
As scripters were learning [[BSL]], they produced scripts that at first merely modified the original level logic in minor ways. | As scripters were learning [[BSL]], they produced scripts that at first merely modified the original level logic in minor ways. Then they produced more original, often epic fight scripts; later, some ambitious modders scripted totally new objectives and mission layouts (e.g., Mariachi Bear's alternate storyline). Some of the most complex scripts are the [[OTA]] scripts which were eventually developed to make up for a lack of [[Multiplayer|multiplayer gameplay]]. However, fully original scripts are all the more prone to bugs. The first two are easier to set up, but extreme situations tend to overload the engine (as in [[Blam]]!) in ways that the scripters have trouble preventing. | ||
Testing the scripts required large numbers of attempts in launching Oni and running the scripts to see how they worked. This process became much faster when the Developer Mode console was unlocked (see below) and individual commands could be tested easily. While this is the easiest way to mod Oni, it's also the most limited; partly because of the lack of full documentation for BSL (which this wiki hopes to provide at some point), and partly because scripts are limited to the resources that an original level has to offer. | Testing the scripts required large numbers of attempts in launching Oni and running the scripts to see how they worked. This process became much faster when the Developer Mode console was unlocked (see below) and individual commands could be tested easily. While this is the easiest way to mod Oni, it's also the most limited; partly because of the lack of full documentation for BSL (which this wiki hopes to provide at some point), and partly because scripts are limited to the resources that an original level has to offer. | ||
Line 34: | Line 34: | ||
===Hackers unite=== | ===Hackers unite=== | ||
Perhaps the | Perhaps the first place that knowledge of Oni's data was published online was on [http://oni.moltenstudios.com/tool/index.php Oni Master's site], which started as early as 2003 and was based on the knowledge that had gone into OniTools. Then, in 2005, [[User_talk:Ssg|Ssg]] opened a site with a much more thorough examination of the game data. After a short time on a university server, Ssg was able to move his site to the newly-opened [http://www.oni2.net Oni2.net], a domain run by [[User:Admin|Alloc]] (see [[History of the Oni community]] for details). A year later, this pool of knowledge was painstakingly moved by [[User:Geyser|geyser]] and Ssg to its current home on the wiki, the [[OBD|Oni Binary Database]], to allow collaboration; at this point, [[User_talk:Neo|Neo]] appeared on the scene, adding his own knowledge that he had been acquiring independently until then, and collaborating on further investigations into the resource formats. Today at least 95% of the binary resource formats are documented byte for byte thanks to their hard work. | ||
===Modding by candlelight=== | ===Modding by candlelight=== | ||
Line 61: | Line 61: | ||
===Finding Dev Mode=== | ===Finding Dev Mode=== | ||
[[Image:Sfeli Finds Dev Mode.jpg|thumb|225px|right|[[User_talk:SFeLi|SFeLi]] documents his discovery in 2006; in examining the binary, he noticed that the list of cheat codes had a gap in it where one code had been removed; that code was for Developer Mode. For more history, see [[History of Oni modding/The tale of Dev Mode|The tale of Dev Mode]].]] | [[Image:Sfeli Finds Dev Mode.jpg|thumb|225px|right|[[User_talk:SFeLi|SFeLi]] documents his discovery in 2006; in examining the binary, he noticed that the list of cheat codes had a gap in it where one code had been removed; that code was for Developer Mode. For more history, see [[History of Oni modding/The tale of Dev Mode|The tale of Dev Mode]].]] | ||
Engine patching is needed when modders want to do things the game's scripts and data do not currently allow for, as well as to fix bugs. Bug fixes were the earliest notable achievement in engine patching, originally performed by a patching application that altered the Windows Oni executable directly, but a revolution in this type of modding occurred in 2006 when [[Developer Mode]] was finally discovered in retail Oni's code, and a means for unlocking it was needed. The most foolproof method of altering the engine turned out to be replacing a library that Oni loads at runtime. Now known as the [[Daodan DLL]], this library-as-patch can alter many aspects of Oni's behavior. This allows the fixing of bugs (some of which result from new computers running a {{ | Engine patching is needed when modders want to do things the game's scripts and data do not currently allow for, as well as to fix bugs. Bug fixes were the earliest notable achievement in engine patching, originally performed by a patching application that altered the Windows Oni executable directly, but a revolution in this type of modding occurred in 2006 when [[Developer Mode]] was finally discovered in retail Oni's code, and a means for unlocking it was needed. The most foolproof method of altering the engine turned out to be replacing a library that Oni loads at runtime. Now known as the [[Daodan DLL]], this library-as-patch can alter many aspects of Oni's behavior. This allows the fixing of bugs (some of which result from new computers running a {{Age|2001|1|28}}<!--Give or take a day....--> year old game), as well as the adding of new features. | ||
Not long after the Daodan DLL was released for Windows, it was discovered that the Mac versions of Oni still had Dev Mode in them, too. Unlike Windows, the Omni Group port to OS X did not seem to have any libraries that could be exploited for runtime patching, so the changes were simply made with a hex editor, directly modifying the executable. In the fall of 2008, it was discovered that numerous BSL functions and variables that were thought to be removed from Oni for the Mac [[Mac beta|before release]] were still present in the code, and the ones which allowed Macs to run (almost) all scripts written for Windows Oni were "unlocked" by EdT using hex edits. Certain changes made by the Daodan DLL for the Windows version were also carried over to the Mac's [[AE:OMNI|PPC game application]] in hex-edit form. Later, these changes were made in source for Feral Interactive's [[AE:FERAL|Mac Intel port]]. | Not long after the Daodan DLL was released for Windows, it was discovered that the Mac versions of Oni still had Dev Mode in them, too. Unlike Windows, the Omni Group port to OS X did not seem to have any libraries that could be exploited for runtime patching, so the changes were simply made with a hex editor, directly modifying the executable. In the fall of 2008, it was discovered that numerous BSL functions and variables that were thought to be removed from Oni for the Mac [[Mac beta|before release]] were still present in the code, and the ones which allowed Macs to run (almost) all scripts written for Windows Oni were "unlocked" by EdT using hex edits. Certain changes made by the Daodan DLL for the Windows version were also carried over to the Mac's [[AE:OMNI|PPC game application]] in hex-edit form. Later, these changes were made in source for Feral Interactive's [[AE:FERAL|Mac Intel port]]. |