Oni Central Forum

A forum for the Oni community

You are not logged in.

#1 04/25/07 03:04

Tosh
Member
From: Oregon, USA
Registered: 01/14/07
Website

Mod Manager :D

Okay so I finally peddled this thing out, I've been working on it off and on since I started mostly because I have other projects including school ones that hold my attention.
In any event this is all ready for its first release!
So far it can only install whole files (script files I would assume is the main use).
I'll be working on the patches next.

I haven't set up ftp on my new web server yet... or really much of anything (linux noob =___= ) so I'm just gonna RS it for now.

Next update will either be for bugs if there are any I haven't found yet, or for adding patching.
For now, enjoy!

If you need any help making an attributes.txt file I'd be glad to assist you. I'm including my sniper mod and a testing thing that's not really a mod as examples.

Also post your exe CRCs here if it alerts you about it and I'll add them to the list for the next update. :)

Finally; sorry Mac users, this is Windows only. Though I used basic APIs, so it should emulate well if desired.

http://rapidshare.com/files/27810844/On … r.zip.html

Update:
Fixed a bug that caused it to crash when you try to install to a non-existant folder.
Notifys you if you are about to overwrite a back-up.
Added official demo CRCs to the list.
Changed the mod files' extension to "pom" per request (Packed Oni Mod).
http://rapidshare.com/files/27952259/On … r.zip.html

Update 0.2c:
Bug Fix: Potential overflow in output window.
Bug Fix: Misinterpretation of current folder during FLinkTree::Load, causing an infinite loop when it passed an empty folder.
Addition: Outputs the text in the output window to "output.txt".
Addition: Writes some debug information to "output.txt".
Fix: Forgot to write a version number in the about box..
Addition: "Options->Reload Preferences" added to menu.
http://rapidshare.com/files/28310760/On … r.zip.html

Update 0.2c (redux):
Bug Fix: Potential erroring on attempt to write to "output.txt".
Bug Fix: Fixed dependency list creation for verification.
Bug Fix: Fixed loading mod from list error, causing it to add erronious files to the list. (This may have been your problem, geyser.)
Bug Fix: When a mod was removed from the installed list that was not the last in the list, the list didn't collapse.
Bug Fix: Something else in the install and uninstall functions, I forget what now.
Addition: Fábio Bento's Unreal Tournament mod in package form. I think that's script10k's real name? If you want me to remove or modify it, post here; I was using it for testing purposes and figured I'd just include it.
http://rapidshare.com/files/28318739/On … r.zip.html

Update 0.8c:
Bug Fix: Forgot to go back to the start of the file in CopyTo before copying it. ^^; Re back-up your GDF's guys..
Bug Fix: A few line numbering issues for the code. (I likely haven't gotten all of them)
Bug Fix: Scalable GUI settings
Bug Fix: A couple missed delete[]'s
Fix: A few problems in the default GUI
Addition: Extended the scripting a lot. Added variable support. Added the following commands:
name &variable
auth &variable
desc &variable
inst &variable
text "GUI part" "text"
check "Button"
uncheck "Button"
checked "Button" &variable
return
restore "folder or file"
echo "Text"
if[ ]*(exp[ and|or exp]*)[ \t\r\n]{[.]*}
exp:([a-zA-Z]{1}|[0-9]+){1}[ (==|<=|>=|>|<|!=) ([a-zA-Z]{1}|[0-9]+)]?
else[ \t\r\n]{[.]*}

Addition: Partial installations. Not completely tested yet.. just gotta test the compatibility checking for it.
Addition: Added Your_Mom's Mountain Rally 1.2 package to the included mods. Had to fix a couple syntax errors myself. :X This was for testing partial installations as well as near everything I added to the scripting language since the last release. And it works! I is happy. :D Your_Mom if you want me to modify or remove this I'll be glad to.

I'll add a detailed report on the language in the next release..
Probably fixed up some other stuff, too, but I've forgotten it by now. :)

Oh also, I haven't extensively tested the if command or the limits of the engine but most all formatting should work. One limit I do know of is that when ending a block (with "}") it can only share its line with whitespace... I think. >__> I'd recommend you give it its own line.
Comments are ignored completely so they won't affect that if you put one on the same line.

http://rapidshare.com/files/28715337/On … r.zip.html

Last edited by Tosh (04/30/07 08:04)

Offline

#2 04/25/07 10:04

geyser
Member
From: beyond the veil
Registered: 01/14/07
Website

Re: Mod Manager :D

Having a look...

.omp is the extension for the quite popular OmniPatch.
Incidentally, I was about to use .omp patches for demOni.
There's a good chance there'll be "OmniPatch"es around.
So, dunno. Maybe .omp is not such a good choice. .omm?

So far it looks really nice (even though dynamic loading would be best).
Keep in mind that no one is going to patch the EXE anymore. DLL power smile
(we'll supply vtuneapi.dll, which is loaded by all the original PC engines)

DAT/RAW patches are a completely different story, since diffing can't offer portability: the resource tree will differ slightly between versions, so modders would have to gather every possible version on their HDD, CRC and diff them, and release a whole series of patches. That's a no-way. OmniPatch is not standard diff, but I guess it won't help either.
The only way to patch DAT/RAW/SEP in a consistent way is for the to navigate the resource tree inside the DAT... which is something OUP already does. I'd use OUP.

There are quite a few "features" to report smile  For one thing, it hangs when the CRC check fails (I tried it on the demo), and I have to copy the CRC by hand: CRC16:B8D6, CRCTT:45D82B75
A neat feature would be to dump the whole log into a text file.
For my main copy of Oni, it crashed while installing the Sniper Mod.
No detailed crash report ATM, I'll drop one when I feel like it smile

Last edited by geyser (04/25/07 10:04)


Behold the power of that which is yet unborn! For the swirling images that flow forth from the Chrysalis are only a shadow of the sleeper's true power.

Offline

#3 04/25/07 19:04

Tosh
Member
From: Oregon, USA
Registered: 01/14/07
Website

Re: Mod Manager :D

O_o I think I know why it crashed on the demo, because there is no roof folder (atm I think the installer assumes the directories exist.. but I'm pretty sure I have a "force directory exist" function in there already I can just use).
I wouldn't do .omm cause that would mean Oni Mod Manager.. and the file isn't the manager. smile .omp stands for Oni Mod Package by the way.. I'll try to think of another extension later. :X

Also with the patches, I was planning on doing a directory tree thing, searching for the files.. not like a pointer to a location in the file but the actual filename as stated in there, or if there isn't one the folder name and index or something. I have to look into the structure first but for what of the output I've seen in OUP I'd say it's possible.

Also what do you mean by dynamic loading?

I'll add the CRCs now, thanks.

Offline

#4 04/26/07 05:04

Alloc
Member
From: Germany -> Darmstadt
Registered: 01/14/07
Website

Re: Mod Manager :D

Tosh wrote:

I wouldn't do .omm cause that would mean Oni Mod Manager.. and the file isn't the manager. smile .omp stands for Oni Mod Package by the way.. I'll try to think of another extension later. :X

Why not just use a four letter extension? Like .ommp (Oni Mod Manager Package)?


ONI2.net, link to just any important resource-pages about ONI.

Offline

#5 04/26/07 14:04

Tosh
Member
From: Oregon, USA
Registered: 01/14/07
Website

Re: Mod Manager :D

Thanks for the suggestion, but I already changed it to ".pom" Unless that's taken too. :X

Offline

#6 04/26/07 16:04

geyser
Member
From: beyond the veil
Registered: 01/14/07
Website

Re: Mod Manager :D

Unless you release an Exquisite Xbox Emulator or such, the extension of the program will never match its acronym.
So I'd say it's OK for the acronym to be reflected by the primary resource filetype, in your case, .omm
Besides, "omm" is doubly funny. Because of the meditative connotation, and because of the easter egg.

None of the 3 (pom, omm, omp) exist according to various file extension lists. But we know better...
.omp is taken by that OmniPatch thingie. I'm not sure I'll be using it for Oni, but Myth folks use it.
So, just to avoid confusion, it's best to stay away from .omp. Nothing wrong with the other two smile

Dynamic loading: I meant one would choose the mod(s) to load right before launching Oni, or at runtime, before loading a level.
There would be nothing nothing but the original data on the hard drive, plus a number of patches alongside it, "injected" when needed.
Nice as it is on paper, I have no clear idea how that could be implemented. Oni has (or used to have) features that go in that direction.
However, those features weill certainly be limited (or complicated) when it comes to moving resources across levels.
It may also take quite long to thus patch a level file (or two) before playing. If it takes minutes, it's too long.
For DemOni (coming tonight), I will set up a few batch files for diff/patching and renaming/moving stuff around.
The "installation" will consist in duplicating GameDataFolder and making the appropriate changes to the copies.
The "management" will then consist in renaming the GameDataFolder around between the modded folders.
That looks like a simple and robust scheme that hardly requires a GUI (even if a GUI would be better).
DemOni is what I'd suggest to experiment with. Since there's only one version, patching is easier.

OMM didn't crash for the demo. It complained about the CRC and hung, before I had the chance to install the Sniper Mod.
It crashed while installing the Sniper Mod for the full version, and there the "roof" folder is "present and correct". So there tongue
You said you'd like advice for the Sniper Mod. Is that still the case? Maybe start either a thread or a wiki page then.
BTW, if you plan to develop OMM further (and I'd definitely love you to), about time you got an oni2.net account smile


Behold the power of that which is yet unborn! For the swirling images that flow forth from the Chrysalis are only a shadow of the sleeper's true power.

Offline

#7 04/26/07 22:04

Tosh
Member
From: Oregon, USA
Registered: 01/14/07
Website

Re: Mod Manager :D

Thanks for the offer but I'm content with my own webspace...at least I will be when I get it back up. ^^;
As for the dynamic loading... that'd require some mem hacking on my part, and I'm not well acquainted with that. hmm

I'm not sure I completely understand your idea for DemOni but I'd suggest not copying whole GameDataFolders as it takes quite a while to copy even if you do it efficiently.

Well, I tried to get it to hang on the CRC check and it wouldn't.. it ran fine. :X Also I'm not sure why it would crash on your normal install; perhaps your files are Read-only? I dunno if that'd matter but it's worth a check.. If not.. does it get past the words "No compatibility errors!" in the output? Or like.. what's the last thing it says?

Anyone else having problems?

By the way, I forgot to add the export text thing this round, but I'll add it for next release.

EDIT: Oh and advice on the Sniper Mod is mostly just help with the bugs, which I could still use as I don't have much time to figure them out myself.. you guys are welcome to just PM me about them, though.

Last edited by Tosh (04/26/07 22:04)

Offline

#8 04/26/07 23:04

geyser
Member
From: beyond the veil
Registered: 01/14/07
Website

Re: Mod Manager :D

Sorry, I was confusing. Whole GameDataFolders will be copied whenever you "install" a mod (if a mod only affects certain levels or script folders, only those will be duplicated).
Basically like what your OMM does, except it's not 2 GameDataFolders (a working copy and and a backup) but as many folders as needed, built upon "installation".
Then you load and unload mods merely by moving stuff around between the "backup" folder, the "modded" folders and GameDataFolder. Renaming. Quite fast.

Bug fixes: those will come whenever I'm able to extract the scripts... Bug reports: tomorrow.
What do you mean by "falling" anim? And what's an "anim ID": name/type/state?


Behold the power of that which is yet unborn! For the swirling images that flow forth from the Chrysalis are only a shadow of the sleeper's true power.

Offline

#9 04/26/07 23:04

Tosh
Member
From: Oregon, USA
Registered: 01/14/07
Website

Re: Mod Manager :D

I think I'd be using chr_wait_animtype to check if he's falling, so the type I guess.
So I take it the readme is installing?
Hmm... does it error when you try to install the test mod?

EDIT: geyser, try the newest version I just put up, I added some debug output. Then you can, please, tell me the last line in the file when it crashes and I can find what's causing it, hopefully. ^^;

EDIT 2: I actually may have fixed it? :X We shall see...

Last edited by Tosh (04/28/07 00:04)

Offline

#10 04/30/07 08:04

Tosh
Member
From: Oregon, USA
Registered: 01/14/07
Website

Re: Mod Manager :D

Okay this most recent update is worth of a double post. x3
Fixed up a lot of stuff and completed the scripting engine. In the sense that it can be added on to, but it works completely as it is.. except for maybe a few incorrect line numbers in error reports.

By the way, I wrote the if and else statements up top in a kind of RegEx style because there's a lot of variation allowed. If you dunno what it says, unpack the Mountain Rally mod and take a look at its code.

Last edited by Tosh (04/30/07 08:04)

Offline

#11 04/30/07 15:04

geyser
Member
From: beyond the veil
Registered: 01/14/07
Website

Re: Mod Manager :D

A few remarks at this point (testing with the last download).

Back-up "features"
Your backup doesn't preserve the file creation dates.
Your backup copies everything that's in my GDF.
(and I happen to have a number of backups of my own)
(stored alongside IGMD because it makes sense to me)

From now on, using a clean-install GDF unless stated otherwise.

Hashing etc
The GUI hangs if one tries to interact with it while the backup is in progress.
If one doesn't, it freezes anyway upon "Hashing files...", at the very end.
After the hashing (which takes bloody long), it becomes responsive again.

Installing mods
Test mode "installs" and "uninstalls" fine. All the others go "No compability errors! Installing..." and crash.
After disabling the read-only attributes, everything works fine (FYI, the clean-install .bsl files are read-only).
You probably want OMM to handle read-only scripts without requiring prior user action.

EXE
I already told you we'll be updating vtuneapi.dll instead of patching the EXE.
Also note that whereas binary and scripted mods come and go, DLLs will be upgrades.
That means there won't be much of a need to toy around with many different DLLs.
People will just get the latest stable DLL and use it. OMM can be used to retrieve it though.

Options
You have two tabs called Options.

Dev-C++
Since it's a Dev-C++ project and the source is included, hmm...
Maybe I'll try and give you a hand with it. Dunno when though.

chr_wait_anim...
Included in Oni Menu 4 was a file with generic "chr_wait" functions that covered mostly any animation you'd ever need to wait for.
If by "falling" you mean the "jump_flail" anim, note that the type for that anim is not consistent for the various characters.
For male characters, the type and state of that thing are exactly the same as for jump anims. So I use chr_wait_animation.

func chr_wait_flail(string char) {
    chr_wait_animation(char, KONOKOjump_flail, STRIKEjump_flail)
}

More advice coming later, once I get more familiar with your stuff.

Haven't tried creating a mod yet. Sorta more worried about binary patching right now smile

Last edited by geyser (04/30/07 15:04)


Behold the power of that which is yet unborn! For the swirling images that flow forth from the Chrysalis are only a shadow of the sleeper's true power.

Offline

#12 04/30/07 17:04

Tosh
Member
From: Oregon, USA
Registered: 01/14/07
Website

Re: Mod Manager :D

Did I take out the "Make sure it's a clean install" line? ^^; Maybe I should put that back in, sorry.
About the hanging.. I could put a sleep in on the hashing if you want, but you won't be able to use the thing while it's hashing anyway (you'd at least be able to close it). smile
Good thing you only have to weather it once eh?
And yeah, I'll probably take the exe options out just haven't gotten around to it.

lol at the two Options, how did I not notice. xD The first should say "Back-up". And yeah, I should be able to do the read-only handling easy enough, but I dunno about preserving the date... I'll see what I can do. :X

I'll try that on the sniper mod, too, thanks. ^^

EDIT:
Oh and, if you wanna help, that's cool I guess. I open source my stuff more for the sake of showing how I did it than expecting help. :X
And yeah.. looking forward to binary patching myself. ^^;

Last edited by Tosh (04/30/07 17:04)

Offline

#13 04/30/07 17:04

geyser
Member
From: beyond the veil
Registered: 01/14/07
Website

Re: Mod Manager :D

Did I take out the "Make sure it's a clean install" line? ^^; Maybe I should put that back in, sorry.

You didn't, but I won't be keeping my GDF clean just for you, man...
Maybe back up only the IGMD and the *.dat and *.raw at the root of GDF.
I do a lot of testing with French and German vers.
So I have the respective DAT/RAW backed up in GDF/Final.fr and GDF/Final.de (and my personal English backup in GDF/Final.en)
And you make me move those folders away for the time of the backup. And then I move them back. And then...

If you manager becomes staggeringly popular big_smile , we'll certainly have to decide what's the best place and name for a backup folder.
I think the user should be allowed to have several GDFs around, one of them with the original data, the others with lots of mods...

One thing I haven't figured out yet is how one would handle patches to the same DAT/RAW/SEP... I mean, cumulating them ain't easy.
Maybe my "modular dreams" will have to wait, i.e., we'll just release a single set of patches to be applied at once, so no "history".
Then of course it will be OK to have only 2 copies of GDF: a backup and a working copy. "We shall see..."
It would totally kick ass to have an svn/wiki-like engine managing the changes to the binaries, though smile

I actually didn't have the patience to sit through the backup at first. What's all that fuss with the hashing?
Could anything wrong happen later if I close it while it's hashing and go on like nothing happened?


Behold the power of that which is yet unborn! For the swirling images that flow forth from the Chrysalis are only a shadow of the sleeper's true power.

Offline

#14 04/30/07 17:04

Tosh
Member
From: Oregon, USA
Registered: 01/14/07
Website

Re: Mod Manager :D

You only have to for the first run, so it backs it up correctly. Never do a full GDF restore and you'll be fine. ;P But your suggestion is good, I'll probably add it, though my FLinkTree::Load doesn't currently allow for wildcards. :X I'll have to implement that first.

And no, not at the moment. The only thing dependant on the dat/raw hashes is level0_Final.* so far. I'd do all of it but with how long it takes to hash I'm not sure if I want to... I might just have a verify option. And then if you didn't use that option, it'd never be important. smile

As for the patches, well, the mod would describe the compatibility. The one for sure thing though is that if a mod were to patch over a section in use by another mod the formerly installed mod wouldn't work; but it will have checks for that, too.

You can have multiple GDF's if you want, the program just expects you not to store them in the main GDF folder. I personally have a "Stuff" folder in the base dir I keep all my other stuff in. tongue

EDIT:Oh wait, just remembered. One other thing is dependent on the hashes.. but not entirely. When restoring files, it checks if the file exists as an entry in the hash list to determine if it was an original file or not. So just add the filename, and equals sign, and a bit of hex after. Or if you're lazy, you can use mine. tongue Make sure to use whatever hashes it did make before you closed it.. might as well keep some integrity. Also, be sure it has level0_Final.* .

[CRC]
C:/Program Files/Oni/GameDataFolder/outro.bik=27DED3A
C:/Program Files/Oni/GameDataFolder/level9_Final.raw=5EBE945
C:/Program Files/Oni/GameDataFolder/level9_Final.dat=5ADB8C16
C:/Program Files/Oni/GameDataFolder/level8_Final.raw=DBB33518
C:/Program Files/Oni/GameDataFolder/level8_Final.dat=B6E94107
C:/Program Files/Oni/GameDataFolder/level6_Final.raw=75553850
C:/Program Files/Oni/GameDataFolder/level6_Final.dat=EA195018
C:/Program Files/Oni/GameDataFolder/level4_Final.raw=9994533D
C:/Program Files/Oni/GameDataFolder/level4_Final.dat=EE4D3969
C:/Program Files/Oni/GameDataFolder/level3_Final.raw=8D765304
C:/Program Files/Oni/GameDataFolder/level3_Final.dat=50B7203C
C:/Program Files/Oni/GameDataFolder/level2_Final.raw=9579F3BE
C:/Program Files/Oni/GameDataFolder/level2_Final.dat=C4C76BAB
C:/Program Files/Oni/GameDataFolder/level1_Final.raw=6F4DD069
C:/Program Files/Oni/GameDataFolder/level1_Final.dat=62CBED27
C:/Program Files/Oni/GameDataFolder/level19_Final.raw=59D0A3DD
C:/Program Files/Oni/GameDataFolder/level19_Final.dat=421AA37B
C:/Program Files/Oni/GameDataFolder/level18_Final.raw=E664C422
C:/Program Files/Oni/GameDataFolder/level18_Final.dat=FF31E672
C:/Program Files/Oni/GameDataFolder/level14_Final.raw=8C5C9F79
C:/Program Files/Oni/GameDataFolder/level14_Final.dat=878A88C2
C:/Program Files/Oni/GameDataFolder/level13_Final.raw=84752232
C:/Program Files/Oni/GameDataFolder/level13_Final.dat=2CA5844F
C:/Program Files/Oni/GameDataFolder/level12_Final.raw=5E4AD28E
C:/Program Files/Oni/GameDataFolder/level12_Final.dat=15C63C8A
C:/Program Files/Oni/GameDataFolder/level11_Final.raw=33DD2AD0
C:/Program Files/Oni/GameDataFolder/level11_Final.dat=D4EB0145
C:/Program Files/Oni/GameDataFolder/level10_Final.raw=45FA2F55
C:/Program Files/Oni/GameDataFolder/level10_Final.dat=116E8F68
C:/Program Files/Oni/GameDataFolder/level0_Final.raw=8EC18F6D
C:/Program Files/Oni/GameDataFolder/level0_Final.dat=61EC4FA2
C:/Program Files/Oni/GameDataFolder/intro.bik=44DC948
C:/Program Files/Oni/GameDataFolder/IGMD/tctf_ii/tctf_ii_main.bsl=CDC30465
C:/Program Files/Oni/GameDataFolder/IGMD/tctf_ii/tctf_ii_cutscene.bsl=729922AA
C:/Program Files/Oni/GameDataFolder/IGMD/tctf_ii/tctf2.bsl=6B693CC5
C:/Program Files/Oni/GameDataFolder/IGMD/tctf/tctf_spawn_syndicate.bsl=3698728B
C:/Program Files/Oni/GameDataFolder/IGMD/tctf/tctf_objectives.bsl=AB47B569
C:/Program Files/Oni/GameDataFolder/IGMD/tctf/tctf_main.bsl=F997C914
C:/Program Files/Oni/GameDataFolder/IGMD/tctf/tctf_door_lock_lights.bsl=9E98908B
C:/Program Files/Oni/GameDataFolder/IGMD/tctf/tctf_cutscene.bsl=DBE8666C
C:/Program Files/Oni/GameDataFolder/IGMD/tctf/particle_scripts.bsl=40D59E7
C:/Program Files/Oni/GameDataFolder/IGMD/state/state_main.bsl=51632CD
C:/Program Files/Oni/GameDataFolder/IGMD/state/state_level_logic.bsl=5D718E9F
C:/Program Files/Oni/GameDataFolder/IGMD/state/state_cutscene.bsl=35A0A6D0
C:/Program Files/Oni/GameDataFolder/IGMD/roof/roof_main.bsl=9ED5E092
C:/Program Files/Oni/GameDataFolder/IGMD/roof/roof_cutscene.bsl=6DE5AAC1
C:/Program Files/Oni/GameDataFolder/IGMD/roof/roof.bsl=56FF21BA
C:/Program Files/Oni/GameDataFolder/IGMD/roof/particle_scripts.bsl=A695F356
C:/Program Files/Oni/GameDataFolder/IGMD/power_II/power_II_main.bsl=DE9FCD1C
C:/Program Files/Oni/GameDataFolder/IGMD/power_II/powerII_cutscene.bsl=A4A2F7E2
C:/Program Files/Oni/GameDataFolder/IGMD/power_II/power2_spawn.bsl=94D3D31F
C:/Program Files/Oni/GameDataFolder/IGMD/power_II/particle_scripts.bsl=32087532
C:/Program Files/Oni/GameDataFolder/IGMD/power/power_spawn.bsl=EECD0DDB
C:/Program Files/Oni/GameDataFolder/IGMD/power/power_objectives.bsl=452C61D4
C:/Program Files/Oni/GameDataFolder/IGMD/power/power_main.bsl=6E7ABB97
C:/Program Files/Oni/GameDataFolder/IGMD/power/power_cutscene.bsl=2C5D6912
C:/Program Files/Oni/GameDataFolder/IGMD/power/particle_scripts.bsl=5B8FF22D
C:/Program Files/Oni/GameDataFolder/IGMD/neuro/particle_scripts.bsl=25DC512
C:/Program Files/Oni/GameDataFolder/IGMD/neuro/neuro_main.bsl=9CC449F2
C:/Program Files/Oni/GameDataFolder/IGMD/neuro/neuro_level_logic.bsl=733B9602
C:/Program Files/Oni/GameDataFolder/IGMD/neuro/neuro_cutscene.bsl=F8FC35D9
C:/Program Files/Oni/GameDataFolder/IGMD/manplant/particle_scripts.bsl=56E75BF3
C:/Program Files/Oni/GameDataFolder/IGMD/manplant/manplant_main.bsl=3BC11457
C:/Program Files/Oni/GameDataFolder/IGMD/manplant/manplant_level_logic.bsl=8AF571F0
C:/Program Files/Oni/GameDataFolder/IGMD/manplant/manplant_cutscene.bsl=6B65FD49
C:/Program Files/Oni/GameDataFolder/IGMD/manplant/manplant_anim_scripts.bsl=CE27DACF
C:/Program Files/Oni/GameDataFolder/IGMD/lab/particle_scripts.bsl=80DD9E9A
C:/Program Files/Oni/GameDataFolder/IGMD/lab/lab_main.bsl=BF96DB35
C:/Program Files/Oni/GameDataFolder/IGMD/lab/lab_level_logic.bsl=508C132
C:/Program Files/Oni/GameDataFolder/IGMD/lab/lab_cutscene.bsl=68B3DC82
C:/Program Files/Oni/GameDataFolder/IGMD/EnvWarehouse/warehouse_training_scripts.bsl=EC1FA4E4
C:/Program Files/Oni/GameDataFolder/IGMD/EnvWarehouse/warehouse_train2.bsl=FEBB228A
C:/Program Files/Oni/GameDataFolder/IGMD/EnvWarehouse/warehouse_particles.bsl=80C9CC2F
C:/Program Files/Oni/GameDataFolder/IGMD/EnvWarehouse/warehouse_main.bsl=263DA6C4
C:/Program Files/Oni/GameDataFolder/IGMD/EnvWarehouse/warehouse_level_scripts.bsl=C40D15E7
C:/Program Files/Oni/GameDataFolder/IGMD/EnvWarehouse/warehouse_cutscene.bsl=E5A302C3
C:/Program Files/Oni/GameDataFolder/IGMD/EnvWarehouse/warehouse_anim_scripts.bsl=E9A5EE05
C:/Program Files/Oni/GameDataFolder/IGMD/dream_lab/particle_scripts.bsl=3461A7CD
C:/Program Files/Oni/GameDataFolder/IGMD/dream_lab/dream_lab_main.bsl=311BDD10
C:/Program Files/Oni/GameDataFolder/IGMD/dream_lab/dream_lab_logic.bsl=AFD7AB9B
C:/Program Files/Oni/GameDataFolder/IGMD/dream_lab/dream_lab_cutscene.bsl=937C8021
C:/Program Files/Oni/GameDataFolder/IGMD/compound/particle_scripts.bsl=FA29EC01
C:/Program Files/Oni/GameDataFolder/IGMD/compound/compound_main.bsl=FC932C90
C:/Program Files/Oni/GameDataFolder/IGMD/compound/compound_cutscene.bsl=41DFD3D8
C:/Program Files/Oni/GameDataFolder/IGMD/compound/compound.bsl=B29BA798
C:/Program Files/Oni/GameDataFolder/IGMD/Airport_III/airport2_main.bsl=6037ECFE
C:/Program Files/Oni/GameDataFolder/IGMD/Airport_III/airport2_level_logic.bsl=79F9D537
C:/Program Files/Oni/GameDataFolder/IGMD/Airport_III/airport2_cutscene.bsl=675BA6D4
C:/Program Files/Oni/GameDataFolder/IGMD/Airport/airport_main.bsl=AAAE111E
C:/Program Files/Oni/GameDataFolder/IGMD/Airport/airport_cutscene.bsl=5ACBDB6D
C:/Program Files/Oni/GameDataFolder/IGMD/Airport/airport1_level_logic.bsl=EC00B701

Last edited by Tosh (04/30/07 17:04)

Offline

#15 05/01/07 20:05

geyser
Member
From: beyond the veil
Registered: 01/14/07
Website

Re: Mod Manager :D

Yo, check out xdelta. Unless I'm greatly mistaken, that's what we'll be using for DemOni upgrades on both PC and Mac (until OUP catches up as a "smart" patcher)

Whether you like xdelta or not, don't bother with "managing" patches in an incremental way. Most of the patchers out there will only accept one source file anyway (CRC check), so typically a patch will always be applied to the original files stored in a backup folder. Something like

xdelta3 -d -s ..\GameDataFolder\GDF0\level0_Final.raw MOD1\level0_FinalRAW.x3d ..\GameDataFolder\GDF1\level0_Final.raw
xdelta3 -d -s ..\GameDataFolder\GDF0\level1_Final.raw MOD1\level1_FinalRAW.x3d ..\GameDataFolder\GDF1\level1_Final.raw
xdelta3 -d -s ..\GameDataFolder\GDF0\level2_Final.raw MOD1\level2_FinalRAW.x3d ..\GameDataFolder\GDF1\level2_Final.raw
xdelta3 -d -s ..\GameDataFolder\GDF0\level4_Final.raw MOD1\level4_FinalRAW.x3d ..\GameDataFolder\GDF1\level4_Final.raw
...

Basically, every binary patch would read from the backup GDF and create a clone (omitting IGMD). There would also be script mods (those would clone IGMD).
The only thing that would need checking is whether the currently loaded IGMD is compatible with the currently loaded GDF generation.
And that's something you don't even need to check automatically. It can be a "certificate" kind of thing, delivered by the modder/tester.
If you can handle incremental patching of IGMD subfolders (rather than whole IGMD clones), that'd be great. It doesn't look easy though...

BTW, Joke Of The Day: GameDataFnewer neutral

Last edited by geyser (05/01/07 20:05)


Behold the power of that which is yet unborn! For the swirling images that flow forth from the Chrysalis are only a shadow of the sleeper's true power.

Offline

#16 05/01/07 21:05

Tosh
Member
From: Oregon, USA
Registered: 01/14/07
Website

Re: Mod Manager :D

.. O_o
I don't think I understood anything in that post.
I dunno what you mean by clones or anything, but I plan on sticking to the one back-up and one "in use" copy of each thing.

About binary patching, I'm looking at the dats/raws as file structures, certain structures in that as files, and others as folders. And I'm gonna be doing the patching as something like that. I doubt if I'll do any full file replaces in relation to binary files, but it will be an option in "Restore GameDataFolder". Really the only limitation and can forsee right now without thoroughly looking into it is that the replacement file would have to be the same size as the one currently in the binary. Though with some creative programming that's probably fixable. I mean, I know it is, but I don't know if I wanna do it (aka if it's too hard). smile Because with some structures like this it would require a complete unpacking and repacking, if I can't just modify it I'll leave that stipulation in.

As for script patches I plan to do something like in Wikipedia's history thing. with the + and - certain lines and a search feature/parser, etc. Not gonna be fun, but it'll work well.

Offline

#17 05/02/07 18:05

geyser
Member
From: beyond the veil
Registered: 01/14/07
Website

Re: Mod Manager :D

I meant that apart from the original GDF and the one "in use" there can be a few more (probably not all that many).
Picking from them is as fast as moving files around. "Installing" them every time would take ages (from a gamer's POV).
Actually, it looks like the enhanced scripting will ultimately remove the need for hacking levels in binary (beyond some major release).
And if the user only cares to have that one working copy around, it's fine. But if someone ever needs or wants more, I'd allow for that.
It's much better (for a modder, say) to have one mod loaded in Oni, edit another (in OUP or such), then switch to a third one, etc.

The obvious next step would be to author a mod from the current GameDataFolder (or any of the other GDF copies around).

About binary patching, I'm looking at the dats/raws as file structures, certain structures in that as files, and others as folders. And I'm gonna be doing the patching as something like that.

That's interesting. I'm aware of two approaches to Oni's data: databases (Alloc) and folders (Neo). Folders are appealing, but there are cross-links...
Note that OUP still lacks such a patching system, and that it would be great to achieve some sort of common philosophy, if not a common patch format.
Any reflexion about the "right" way to navigate Oni's data is worthwhile at this point. Check out THIS and THIS smile

Really the only limitation and can forsee right now without thoroughly looking into it is that the replacement file would have to be the same size as the one currently in the binary.

Heh. First thing I would do is get rid of the megs of gaps in every level's RAW smile

Though with some creative programming that's probably fixable. I mean, I know it is, but I don't know if I wanna do it (aka if it's too hard).  Because with some structures like this it would require a complete unpacking and repacking, if I can't just modify it I'll leave that stipulation in.

What's wrong with unpacking and repacking? Full-featured navigation of the resource tree is virtual unpacking already...

As for script patches I plan to do something like in Wikipedia's history thing. with the + and - certain lines and a search feature/parser, etc. Not gonna be fun, but it'll work well.

I'll wait till I see it big_smile  I'd definitely have multiple script folders installed at the same time, alongside each other. And since every script folder (one per level) is standalone, I wouldn't have anything incremental there either. Just a few labels to move the relevant subfolders of IGMD around (possibly while Oni is running!!! ).

Note on the name and extension. If I were you (but I'm not), I'd name this thing Kanabô (AKA The Tool Through The Use Of Which The Already Superhuman Oni Becomes Truly Godlike). Extension would be .knb, obviously smile

Note on the featured scripts. They're buggy. All of them. Especially yours. The other two I can't get to Blam at all. More, later... smile
Also, the GUI for Mountain Rally doesn't quite fit into the frame here, and if I have the bad idea to stretch the window... OMG.
Erm. As for Mountain Rally, I'm almost certain you're not supposed to keep particle_scripts.bsl and compound_cutscene.bsl...
More generally, why do things like readmes and screenshots end up in Oni's root folder??? Whiskey Tango Foxtrot...
Makes me wonder whether you actually test those things yourself... once installed by your manager, I mean smile

Last edited by geyser (05/02/07 18:05)


Behold the power of that which is yet unborn! For the swirling images that flow forth from the Chrysalis are only a shadow of the sleeper's true power.

Offline

#18 05/02/07 19:05

Tosh
Member
From: Oregon, USA
Registered: 01/14/07
Website

Re: Mod Manager :D

Yeah, that's how I built the packages on purpose.. you're welcome to unpack and rebuild them as you see fit.
Also all the GUIs look crazy when you resize atm.. I can't figure out the redraw command. ^^; This will be fixed at some point in time, for now you can drag the window below the task bar and pull it back up to redraw it.

I dunno what you mean by this taking a long time to install. All the included mods install really quickly for me, even Titan Mode installs pretty quickly - though I haven't included it and probably won't.

And yeah my scripts are buggy. >__>; But so far I've only been able to get mode 4 and 5 to blam and I have no idea why.

Also nothing is particularly wrong with unpacking and repacking except for the speed at which I'd have to do it. I'd think it'd be pretty slow to unpack, modify, and repack. hmm

A common patch format would be nice, but I don't think mine can be.. not with the code thing. For cross links.. I may have to do a strange method of pointers. :X Because of which I'll probably make it so the back-up of the dats/raws are actually unpacked.

So, Kanabô, I don't see how that means that.. but isn't the name taken anyway? In "Oni ni Kanabô"? >__>;

Finally, I think, OMM isn't meant to be used while making a mod. Once you finish making the mod, then you pack it for release. That's the idea anyway.

Offline

#19 05/02/07 20:05

geyser
Member
From: beyond the veil
Registered: 01/14/07
Website

Re: Mod Manager :D

I dunno what you mean by this taking a long time to install.

I meant binary mods...

I'd think it'd be pretty slow to unpack, modify, and repack.

OUP needs about 2 to 3 minutes per level. Something that patches resources in-place would be faster, but much less flexible.
Repacking is needed for globalizing characters, getting rid of gaps, extending pathfinding grids and object collections, etc.
Any such patching would take time. That's why I'd like to separate installation (actual patching) and loading (moving files and folders around).

even Titan Mode installs pretty quickly - though I haven't included it and probably won't.

Why the... ? Why not include it?

Yeah, that's how I built the packages on purpose.. you're welcome to unpack and rebuild them as you see fit.

"That's how" = how?
Readmes and screenshots at the root?
Original files retained in level script folder (particle_scripts.bsl and compound_cutscene.bsl... you know they screw up the thing, don't you?)?

I'll probably make it so the back-up of the dats/raws are actually unpacked.

That's an interesting idea. Folders don't really solve the issue of resources being shared, but it's probably worth experimenting with nonetheless. Curious about your "strange method of pointers"...

But so far I've only been able to get mode 4 and 5 to blam and I have no idea why.

Those are usually quite easy to debug (since they Blam all the time: reproducibility is a good thing).
One thing that bugs me for the other 3 modes is how the fighters keeps wandering out of sight for annoyingly long periods.

So, Kanabô, I don't see how that means that.. but isn't the name taken anyway? In "Oni ni Kanabô"? >__>;

OnK is not taken, in the way that it designates All This... modding as a whole.
You can read up on the expression HERE. A kanabô (iron club) is an Oni's chosen "tool", that canalizes its potential and makes the Oni "strong beyond strong".
The analogy with Oni's Daodan is something SFeLi saved for the DLL (Daodan Inside wink ), but naming a major modding "tool" Kanabô and "giving" it to Oni seems quite fitting to me. And no, it's not taken either... yet.

Finally, I think, OMM isn't meant to be used while making a mod. Once you finish making the mod, then you pack it for release. That's the idea anyway.

How would one author a complex mod? Scripts are easy, but what GUI would one use for authoring a binary mod, or a binary/script bundle? Why not the same GUI as the one used to load those things on the user's side?

EDIT: Keeping the original logic around... that's a very bad idea.
There are trigger volumes deleting characters... Sure you didn't miss any? wink
As for Blams, yours probably occur because some function forks itself right away.

func looping {
#    Something that takes up no frames
    fork looping
}

That's a guaranteed blam. The "something" may be a test or any set of instructions...
Basically anything not including a "sleep" or a "chr_wait_whatever" is instantaneous.
And a function forking itself instantaneously is something Oni doesn't like at all smile
(if there are two of more functions forking each other instantaneously - same thing)
Might be something else. Haven't looked at the code that much yet...
More generally, you may be forking "too forking much". Like most. Sigh smile

Last edited by geyser (05/02/07 21:05)


Behold the power of that which is yet unborn! For the swirling images that flow forth from the Chrysalis are only a shadow of the sleeper's true power.

Offline

#20 05/02/07 22:05

Tosh
Member
From: Oregon, USA
Registered: 01/14/07
Website

Re: Mod Manager :D

Ah.. probably what it is for mode 5 since there are so many enemies.. I forked for each one to check their health since chr_wait_health is blocking. :X

Why I'm not including Titan Mode is because it wasn't used for testing any functionality of OMM, if you wanna pack it, you can do it yourself easy. smile My host is fixing up my webspace at the moment, so I may upload it seperately if Script_10k doesn't mind.

Yeah I figured the level packing would take long.. that's why I want to make it simply replacable - it wouldn't take as long that way. Again, I'll have to look at the format, but I might be able to swiftly modify pointers, size notes, and etc. with an indexing system of sorts. I can't explain it well until I read the format which I will do when I have time. Got some school work to do right now.

"That's how" = how?
Readmes and screenshots at the root?
Original files retained in level script folder (particle_scripts.bsl and compound_cutscene.bsl... you know they screw up the thing, don't you?)?

No, I meant "that's how". I packed the mods so the readmes and screenshots installed into the root, because I didn't really know where else to put them.

Also no I didn't realise those screwed up the thing, I figured it changed gameplay a bit but I forgot about it when I released it. >_>; I gotta add a delete files command then I'll fix up that package.

Offline

#21 05/04/07 17:05

s10k
Member
Registered: 01/14/07
Website

Re: Mod Manager :D

Tosh no problems with my scripts you can edit them, pack them, share them what you want, I just want little credit for the work. And I tried your onimod manager and it is a little confusing, I think that it didn't worked in my pc, because my oni directory is d:\programas\oni, however keep the good work. I am not having many time for oni now, maybe in holidays. wink

Offline

#22 05/04/07 19:05

Tosh
Member
From: Oregon, USA
Registered: 01/14/07
Website

Re: Mod Manager :D

Script_10k wrote:

Tosh no problems with my scripts you can edit them, pack them, share them what you want, I just want little credit for the work. And I tried your onimod manager and it is a little confusing, I think that it didn't worked in my pc, because my oni directory is d:\programas\oni, however keep the good work. I am not having many time for oni now, maybe in holidays. wink

No problem there, after you run it the first time change the path in the INI. smile
Under [Main],Folder I believe.

Also thank you for okaying it. big_smile You are listed as the author of the scripts so you get all the credit. tongue

Offline

#23 08/05/07 16:08

Tosh
Member
From: Oregon, USA
Registered: 01/14/07
Website

Re: Mod Manager :D

Hey guys, sorry I'm so inactive here but I've been focusing on other projects.
I'm kinda at an impasse of tediousness in OMM and since I don't often take time to work on it because of my other projects, I decided to post the source here, and hope you guys add some things.

Okay so the basic structure of where I'm at is in dat.cpp DAT_DB::ExtractFile, where it extracts all the files in a dat into a human readable format.

Basically what it does is compares a letter at a time of the extension, refining which to execute with each. So in other words it's just a fuckload of ifs. All of the final level ifs are commented with what extension it is.
All sections need to load/create the file with the appropriate extension at the beginning of its segment, check the ones I've done for examples.

These all export to the best formats I could think of for each, for instance, the IGST format extracts to rtf because that supports colours and size (though no alpha, you can set that somewhere... I forget xD).

And once the extraction is done, I'll write the importer (it needs some special work) and make the reverses of all these functions. And then it'll be back on track.

http://logicplace.com/pc/games/oni/oni_mod_managaer.zip
EDIT: Sorry, screwed up on the link. lol Thanks Alloc

Last edited by Tosh (08/07/07 21:08)

Offline

#24 08/05/07 21:08

Alloc
Member
From: Germany -> Darmstadt
Registered: 01/14/07
Website

Re: Mod Manager :D

Hm, new WebService ... "html:" wink
Can't access that file (not even by http) wink


ONI2.net, link to just any important resource-pages about ONI.

Offline

Board footer

Powered by FluxBB