18,700
edits
m (replacing tag with template version of tag) |
(tweaks such as adjusting wording of gunfire dodging part; making multiplayer section more prominent and mentioning Mac MP) |
||
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 {{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".--> years 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 {{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".--> years has the community's modding capabilities covered nearly all aspects of the {{Age|2001|1|28}}-year-old 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 31: | Line 31: | ||
Fans with some expertise in parsing files with hex editors found that the level data files held four-letter codes, indicating the start of each resource within that file. Within a week of the street date for Oni, the community had its first resource modding tool, OniTools. While the author did not yet know how all the data worked, his program could at least parse it, and allow the modder to more easily edit each resource without having to count in hexadecimal. It also supported user-friendly replacement of texture maps and allowed in-line viewing of the game's 3D models. There seems to be little evidence that this knowledge was put to use in modding the game resources beyond simple mods such as texture replacements, no doubt due to the lack of a complete understanding of how Oni's dozens of resource types were inter-related. | Fans with some expertise in parsing files with hex editors found that the level data files held four-letter codes, indicating the start of each resource within that file. Within a week of the street date for Oni, the community had its first resource modding tool, OniTools. While the author did not yet know how all the data worked, his program could at least parse it, and allow the modder to more easily edit each resource without having to count in hexadecimal. It also supported user-friendly replacement of texture maps and allowed in-line viewing of the game's 3D models. There seems to be little evidence that this knowledge was put to use in modding the game resources beyond simple mods such as texture replacements, no doubt due to the lack of a complete understanding of how Oni's dozens of resource types were inter-related. | ||
This did not stop one intrepid programmer named Pierre Terdiman from deciding to import data from Oni into the game engine that he was writing from scratch. Called [[Konoko Payne]], it | This did not stop one intrepid programmer named Pierre Terdiman from deciding to import data from Oni into the game engine that he was writing from scratch. Called [[Konoko Payne]], it was a long-term project which took the form of (1) an underlying engine, and (2) a short scenario for it that resembles a sequel to Oni. In order to extract models and animations from Oni and recreate them precisely in his project, Pierre became one of the early pioneers in "reverse engineering" the game's resources, although his acquired knowledge remained largely private, as his work predated the community's organized public attempts at gathering this information. | ||
===Hackers unite=== | ===Hackers unite=== | ||
Line 61: | Line 61: | ||
==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 | [[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 cheat had been deactivated; 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 | 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 modern 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]]. | ||
===Bug fixes | ===Bug fixes=== | ||
One of the most visible changes to the game that the Daodan DLL (and equivalent hex edits on the Mac side) made possible came about in July '07, when an error in Oni's AI routines was corrected, allowing the AI to dodge incoming fire consistently. Fans had originally | One of the most visible changes to the game that the Daodan DLL (and equivalent hex edits on the Mac side) made possible came about in July '07, when an error in Oni's AI routines was corrected, allowing the AI to dodge incoming fire more consistently. Fans had originally been surprised to see the AI often run blindly into projectiles while being shot at. With the community's patch in place, previously glitched code now works as intended, allowing the AI to dodge projectiles by taking cover, as Bungie West intended. | ||
The most ambitious use of | ===Multiplayer=== | ||
The most ambitious use of engine patching has been to fill in for Oni's missing [[multiplayer]] mode. This is done in Windows through the Daodan DLL in the form of the [[Flatline]] project, and in Mac OS X, the [[Zukai]] project operates on a Mac equivalent of the Daodan DLL. | |||
Work continues in all areas of modding Oni, as well as documenting the modding process. | |||
{{clearall}} | {{clearall}} | ||
---- | ---- |