Jump to content

History of Oni modding: Difference between revisions

adding mention of Oni Master's site, which predated Ssg's site, as well as the Wilderness Preserve level
m (using new age template just for kicks)
(adding mention of Oni Master's site, which predated Ssg's site, as well as the Wilderness Preserve level)
Line 1: Line 1:
:''This article is a historical perspective on Oni modding; for an introduction to how to actually mod Oni, see [[Modding Oni|here]]. To download mods, you can start [[AE|here]].''
:''This article is a historical perspective on Oni modding; for an introduction to how to actually mod Oni, see [[Modding Oni|here]]. To download mods, you can start [[AE|here]].''


As has been documented on the page about [[Oni]]'s overall development, time ran out for Bungie West to do everything they wanted with this very ambitious game. Just as some features had to be omitted, the promise of modding support
As has been documented on the page about [[Oni]]'s overall development, time ran out for Bungie West to do everything they wanted with this very ambitious game. Just as some features had to be omitted, the promise of modding support<ref>
<ref>
 
In [[Harry]]'s [http://oni.bungie.org/special/part1/brent.html interview], Brent Pease, the Project Lead, said: "What we will do is, I'm about 90 percent sure of this, is give away the file format." He also promises with equal certainty that the tools for converting 3D Studio Max models into Oni models will be given away. Pease eventually left the project before its completion. Hardy LeBel, his replacement, would later say that, due to the time crunch, "Our primary focus had to be on completing the content and features of the game rather than building in support for the mod community."
In [[Harry]]'s [http://oni.bungie.org/special/part1/brent.html interview], Brent Pease, the Project Lead, said: "What we will do is, I'm about 90 percent sure of this, is give away the file format." He also promises with equal certainty that the tools for converting 3D Studio Max models into Oni models will be given away. Pease eventually left the project before its completion. Hardy LeBel, his replacement, would later say that, due to the time crunch, "Our primary focus had to be on completing the content and features of the game rather than building in support for the mod community."
</ref>
</ref>
also failed to come true. However, even before Oni fans really knew that there would never be official modding tools from Bungie, they were already eagerly diving into the game data to see how they could mod it.
also failed to come true. However, even before Oni fans really knew that there would never be official modding tools from Bungie, they were already eagerly diving into the game data to see how they could mod it.<ref>
<ref>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 {{AgeFull|year=2010|month=11}}<!--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.
Nevertheless, the lack of any documentation or tools for modding undeniably slowed the development of mods within the community. Only for the last {{AgeFull|year=2010|month=11}}<!--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.
Line 33: Line 34:


===Hackers unite===
===Hackers unite===
Public efforts in "hacking" the binary data began, as far as the modern community is concerned, in the fall of 2004 when [[User_talk:Ssg|Ssg]] started a site on the newly-opened [http://www.oni2.net Oni2.net], a domain run by [[User:Admin|Alloc]], carrying over and translating information that Ssg had originally placed on another site in his native German. 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 90% of the binary resource formats are documented byte for byte thanks to their hard work.
Perhaps the earliest place that knowledge of Oni's data was published online was on [http://oni.moltenstudios.com/tool/index.php Oni Master's site]. Then, in the fall of 2004, [[User_talk:Ssg|Ssg]] started a site on the newly-opened [http://www.oni2.net Oni2.net], a domain run by [[User:Admin|Alloc]], carrying over and translating information that Ssg had originally placed on another site in his native German. 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 54: Line 55:
OniSplit first gained the ability to import new character models in April 2008<ref>See [[User_talk:Neo/Archive2]].</ref>. At first, since the focus was on the technical side of things, pre-existing models were used, either by modifying Oni's models, or by finding royalty-free models on web sites and converting them to Oni's 19-bone system. A more dramatic use of the character-importing ability came with the creation of a high-detail Konoko model from scratch in October 2010<ref>[http://oni.bungie.org/community/forum/viewtopic.php?id=1727 OCF thread, "Konoko HD"].</ref>.
OniSplit first gained the ability to import new character models in April 2008<ref>See [[User_talk:Neo/Archive2]].</ref>. At first, since the focus was on the technical side of things, pre-existing models were used, either by modifying Oni's models, or by finding royalty-free models on web sites and converting them to Oni's 19-bone system. A more dramatic use of the character-importing ability came with the creation of a high-detail Konoko model from scratch in October 2010<ref>[http://oni.bungie.org/community/forum/viewtopic.php?id=1727 OCF thread, "Konoko HD"].</ref>.


A major obstacle with levels was the question of how to generate pathfinding (PF) grids for the AI. Level geometry could be imported fairly easily as of November 2008<ref>See [[User_talk:Neo/Archive5]].</ref>, but AIs could not navigate the level. Manual PF grid creation was first demonstrated with the creation of the Arena level in November 2010<ref>[http://oni.bungie.org/community/forum/viewtopic.php?id=1736 OCF thread, "Arena Level"].</ref>. Automatic PF grid generation was introduced to OniSplit around June 2011. A more comprehensive demonstration of the community's level creation abilities came with EdT's level "Muro's Lair" in August 2011<ref>[http://oni.bungie.org/community/forum/viewtopic.php?id=2024 OCF thread, "Muro's Lair - Preview"]</ref>.
A major obstacle with levels was the question of how to generate pathfinding (PF) grids for the AI. Level geometry could be imported fairly easily as of November 2008<ref>See [[User_talk:Neo/Archive5]].</ref>, but AIs could not navigate the level. Manual PF grid creation was first demonstrated with the creation of the Arena level in November 2010<ref>[http://oni.bungie.org/community/forum/viewtopic.php?id=1736 OCF thread, "Arena Level"].</ref>. Automatic PF grid generation was introduced to OniSplit around June 2011. More comprehensive demonstrations of the community's level creation abilities came with [[User:EdT|EdT]]'s level "Muro's Lair" in August 2011<ref>[http://oni.bungie.org/community/forum/viewtopic.php?id=2024 OCF thread, "Muro's Lair - Preview"].</ref> and [[User:Samer|Samer]]'s level "Wilderness Preserve" in January 2014<ref>[http://oni.bungie.org/community/forum/viewtopic.php?id=2698 OCF thread, "NEW LEVEL : Chapter 17: Wilderness Preserve - Hasegawa Adventure"].</ref>.
<br clear="all" />
<br clear="all" />


==Engine patching==
==Engine patching==
===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|here]].]]
[[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 {{age|2001|1|28}}<!--Give or take a day....--> year old game), as well as the adding of new features.
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 [[User:EdT|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]].


===Bug fixes and beyond===
===Bug fixes and beyond===