Talk:Oni 2 (Angel Studios)

From OniGalore
Revision as of 03:28, 12 December 2016 by Iritscen (talk | contribs) (laying out my questions and the "launch arguments")
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)
Jump to navigation Jump to search

General engine discussion

I don't have much experience reverse-engineering game data, but I have a lot of questions from looking through the strings in the game data files in the Oni 2 ISO, namely, BANKS.DAT, RB.DAT, SCPS_123.45 (the binary), and STREAMS.DAT:

  • What does "RB" mean? It occurs everywhere, including in the name of file RB.DAT.
  • There seem to be launch arguments available for the game, but how does one supply them to the game? Or, if they are console commands, how does one access the console? Or, if they are config settings, where does one place a .cfg? To find them, search the binary for the string "BASLUS". I have listed them under "Launch arguments" below. They seem like they would be tremendously useful.
  • There are references to a Chrysalis entity in RB.DAT. An entity is any kind of object, animate or inanimate.
  • There are references to Konoko skateboarding. There's even a skateboard texture. What is that about? See "Entity/KonokoBoarder" in RB.DAT. KonokoGym sounds interesting too.
  • Among the other entities, which are often abbreviated to three characters, is "shn". Could that be who I think it is? I'd like to draw attention to the resources named "win32_shn_LODs[0-3].mod". Could these be rips from Oni? I'm suspicious that they ripped other resources from Oni, like the Lariat and back-roll throw animations. Of course, they could simply have asked the animator to reproduce those by hand. But they also seem to have the model/textures for the original Konoko in the dev build (she appears in Brawler). If "shn" is indeed Shinatama, she doesn't appear in Brawler, which seemingly spawns all characters (or maybe it doesn't!).
  • It looks from the arguments below like they were thinking of co-op multiplayer, specifically local two-player mode. If we could utilize those arguments, perhaps we could activate it.
  • What is that Password field for, on the game's Options screen? It's only four characters, and rather than allowing you to select A-Z for each space, the first slot only allows A-F and S, the second slot only allows A-F and W, the third slot allows A-F and Y, and the fourth slot allows only A-F. The A-F seems to be a reference to hexadecimal. The fact that the only characters allowed for the first three slots besides A-F are S, W, and Y implies to me that at least one password is "SWY_", where the '_' is something between A and F. However, I tried all those permutations and didn't see any result in the game. I cannot find a string anywhere in the game data that is of the form "SWY", nor "YWS" if written little-endian like Oni's tag codes. So I may be arriving at a wrong conclusion based on the allowed characters.
  • It's possible that the Password is where cheat codes are entered. There's a single reference to cheats in the engine, a portion that reads "End Cheat Flying Mode [...] Start Cheat Flying Mode". Perhaps the mystery "SWY_" code above is the flying cheat?
  • Does anyone want to try to extract the game data? I don't have the time, and since this is an unfinished PS2 game there's not a lot of modding potential in terms of bringing data into the game. But there's certainly some resources that I would like to see (for examples, take a look at any part of RB.DAT, or the beginning of STREAM.DAT at the names of the .stm files). Some interesting-sounding resources do not seem to appear in the dev build. Since AGE is a known engine, it's possible that someone has already attempted to reverse-engineer the format of these resources for the sake of another game. AGE eventually became an engine that powers games released for PC too, including the GTA series, which would have made it a matter of great interest for modders, but it's likely that the data formats have changed considerably since the time that Oni 2 was under development.
  • The level scripts might be interesting to read. See the references to the "ScrOni" system in the binary, and the names of the .onc files in RB.DAT. Unfortunately it seems that the scripts are not encoded in plain-text.

--Iritscen (talk) 04:28, 12 December 2016 (CET)

Launch arguments

Found in the binary after the string "BASLUS", I'm not sure if these are launch args, console commands, or .cfg-type settings. My first thought was "launch args", since commands like "noui" would seem to need to be passed to the game at launch-time in order to take effect.

ui
use the frontend
noui
Bypass the frontend and go to game.
devui
use the dev frontend
fullui
use the full frontend
nogame
Never go into the game shell. Useful for testing frontend.
mission
The "mission" to load.
level
The level to load
players
The number of human players in game.
vsplit
Want vertical split for 2 player mode instead of default horizontal split.
sharevp
All players share the same viewport.
diff
Difficulty to use.
musicvol
Music volume to use for playback.
sfxvol
Sound FX volume to use for playback.
voicevol
Voiceover volume to use for playback.
nocutscenes
Disables in-game cinematics.
noattacking
Prevents AI from attacking player.

??? (no text where there should be an argument; perhaps it's just a number? also, is this not the same as the "level" code above?)

Specify which level to load.
testloadsave
Use test save file to run game.
oldcam
Start with the old camera system in the game.
noactorreload
Don't reload actor XML files when doing the "quick" restart.
defaultcampack
Use the default camera package instead of the campack in the layout directory.
nocamcollision
No camera collision.
norumble
No pad rumbling.
noparticles
No particle effects.
unbreakable
Player is unbreakable
polar
Use polar camera by default.
nohud
Don't draw the HUD.
recompile
Recompile all used scripts.
noai
Disables NPC movement/actions.
notemplates
Don't preload the actor templates.
nopausemenu
Do not show the pause menu when you press start, just freeze the frame.
playerNN
(Where NN is 0->Max players) Sets the specified player's name.
modelNN
(Where NN is 0->Max players) Sets the specified player's model to use.
controlcfgNN
(Where NN is 0->Max players) Sets the specified player's control configuration.
controlmapNN
(Where NN is 0->Max players) Sets the specified player's control mapping (i.e. Player 1 is using controller in port 3).