User talk:Neo

From OniGalore
Revision as of 16:26, 29 August 2008 by Gumby (talk | contribs)
Jump to navigation Jump to search

I am sorry to bother, but this can help to make h2w system look better. When character collides with wall, what REALLY collide ??? For me it seems that for char->wall collision there is some invisible bounding box. Where is this bounding box, if you know (or correct me if I am wrong). How can I change it? I ask because for me (it is my guess in next sentence, nothing proven ) it seems that this "bounding box" looks like invisible sphere which is around pelvis bone. That is why you can fall and stick your torso/head/legs into next room. Engine ignores bones in char->wall coll. Is this correct? + please answer if you know how to change it. Thanks a lot in any case

P.S.:Just a curious question, no explanation needed: I know that AI2 powered characters can push away weapons which are on ground. Can it be (from engine-possibilities point of view) that in ONI we should have movable furniture (objects which can be pushed by chars)?

--Loser 11:34, 20 June 2008 (CEST)

Umm... many questions, time for a brain dump :)

Character - Wall collision
this is always sphere tree-quad collision. You probably know that the sphere tree can be seen with "chr_debug_sphere=1". One thing to note about that sphere tree is that it always "stays up" (even when the character is fallen). That's why fallen characters pass through walls, their body gets outside the sphere when that happens.
As for changing the radius of that sphere tree: it may be possible but it won't solve anything.
Character - Floor collision
characters also have a special function to detect floor collision which checks if a 3x3 quad intersects the floor. This is done to avoid "strange" sinking when the sphere's lowest point goes outside the floor. This is the probable cause why sometimes fallen characters hang on an edge (their 3x3 quad still intersects the floor) or fall of the edge even if their feet or head are still on the floor (the 3x3 quad is too small to cover the feet and head when the character is fallen).
Particle - Wall collision
this is always point-quad collision (the point is the position of the particle)
Particle - Object collision (where object is anything with a physics context that supports collision
characters, OBOA objects, powerups, weapons)
this can be sphere-obbox or sphere-sphere collision depending on what the object has (obbox or sphere tree). The radius of the particle sphere is taken from Collision Radius property of the particle class. It can be 0 and then the collision degenerates to point-obbox/point-sphere collision.
Environment collision (general)
The engine can only do point-quad and spheretree-quad collision detection.
Object collision (general)
All objects (that have a physics context) have a sphere tree attached to them and some objects created through OBOA also have an obbox.
Moveable furniture
Yes and no. It can be done to some extent using OBOA.
Basically an OBOA object can be pushed if it's not animated (no OBAN link) and it has "physics type" 2 or 4 (I don't know what's the difference).
What doesn't work:
  • characters fall through objects (the character-floor collision function does not see objects)
  • since the environment only supports sphere-quad collision you tipically cannot push an object very close to the wall (unless of course the object itself is a sphere or close enough to one)
  • objects can fall but because of sphere-quad collision detection they'll get stuck somewhere above the floor
  • an object can fall on another object but a third object will fall through both of them; in general multiple object interaction is buggy
  • if I remember correctly there is 128 physics context limit. That means the number of active characters + objects + powerups and whatever else needs a physics context is limited to 128. Anyway it will very likely crawl before you reach that limit.

Neo

Beta4

Oh boy, were Mono developers lazy or not... :)

Neo

Thank you! BINACJBOCharacter.oni works fine, now to take a look at the melee profile file...

Ed

The melee profile is much more understandable. The moves are clearly identified. So I assume, now we will be able to create a new melee profile or at the very least add new techniques to an existing profile.

Again, THANK YOU on your awesome work on OniSplit.

EdT 06:17, 22 June 2008 (CEST)

2 notes about melee:

  • I've yet to make move types to show up as names instead of numbers. Remebering all those is not fun.
  • The original melee files contain what appears to be orphaned moves. Since currently moves are exported as children of techniques the orphaned moves are not exported. I don't think those moves are used by the engine but if someone knows otherwise I'll see what can be done to export them too.

Other stuff:

  • The general xml export was updated to export names instead of number for several enum and flags fields. For example the class of a dialog item in WMDD was previously exported as a number but now it's a string like Button, Edit etc. Flags fields are exported as a list of names (names separated by whitespace) like in this WMDD state field:
  <State>Visible Disabled</State>

This simplifies editing but currently there is now way to discover what names are available (unless you take a look at the source code :)). I'll try to make OniSplit display such a list as part of the help or something.

Neo

Hey Neo, do you have any idea what the flag "Boss" does?

Gumby 18:02, 22 June 2008 (CEST)

Not sure. It mai be connected to ai2_boss_battle script variable. And I'm not sure those flags are 100% correct, it looks to me that Boss/NoAutoDrop/Omniscient are mixed up.

Neo

Hello again. I am thinking of writing the Windows GUI for Onisplit. What scripting language would you suggest I write it in?

Gumby 02:55, 23 June 2008 (CEST)

Hmm... the only scripting language to do a Windows GUI that comes to mind is Tcl/Tk but you really don't want to use that :). There are Perl/Python/Ruby etc. implementations for Windows but I have no idea if they can be used to make a GUI. It's likely that you'll have to use one of the "usual" languages: C/C++/C#/VB/Java/Delphi...

Maybe I'll do a GUI one day but it's not on my priority list, I'm more interested in making importers/exporters for now.

Neo

  the only scripting language to do a Windows GUI that comes to mind is Tcl/Tk but you really don't want to use that :)

You can also try AutoIt3: http://www.autoitscript.com/autoit3/

It's easy to create a GUI with both of them, but AutoIt3 can't work with binary files, only text files (as far as I know). And in case of tcl/tk: It's a pain to install it. I tried and failed.

Ssg 11:44, 23 June 2008 (CEST)

I've worked with AutoIt3 before and I would recommend it. The GUI creation functions are both powerful and easy to use. It can work with binary files using:

FileOpen("filename", 16)

If you need any help with AutoIt post a message on my talk page. rossy 12:55, 23 June 2008 (CEST)

Why would I want to open binary files? O_o. For detecting the type of .oni file I give it? I have not worked with AutoIt3 before, but it doesn't look too hard, and I'm sure my conglamerated knowledge of random scripting languages will help me...

Gumby 16:57, 23 June 2008 (CEST)

http://gumby701.googlepages.com/gui.exe

Look, its a GUI! That doesn't do anything...

...and needs properly aligned and formatted...:D

Gumby 02:23, 24 June 2008 (CEST)


One more beta for OBJC: Beta 5.

Fixed character flags and added move type names and parameters names to melee (instead of numbers and Param0, Param1 etc.).

Neo

This makes reading the melee much easier. I wish I had some time to play around with making a new melee profile.

Is this a bug or just an error in the original code. In the NINJA_Easy profile I found this technique:

<Technique>
<Name>Back Kick</Name>
<Flags />
<Weight>40</Weight>
<Offset_0660>10</Offset_0660>
<RepeatDelay>0</RepeatDelay>
<Moves>
<Position Type="CloseBack" MinRunInDist="0" MaxRunInDist="10" ToleranceRange="4.5" />
<Attack Type="PB" />
</Moves>
</Technique>

Even though it says Back Kick, the attack is Punch Back.

EdT

The wiki has some pages about various melee profiles and it contains the same thing: OBD:BINA/OBJC/MELE/NINJA. So either it is just a mistake in the melee profile or the move type wiki tables are wrong, I'll have to check with the executable.

Neo

Hey. I got a bit of the Windows GUI done. It wasn't too hard...and tell me if the icons arent there (either for the explorer icon, or the one in the top right corner)

http://gumby.oni2.net/GUI/LevelRecombine.exe

Gumby

Yes, the icons are OK. But is it supposed to do anything? That recombine button appears to have no effect.

Neo

I was looking at the attack moves on this page: http://wiki.oni2.net/OBD:BINA/OBJC/MELE/MoveList And I gave one a try, Attack Move #28 KF KF, but got an error in OniSplit.

Edit: Cleaning up.

EdT 03:56, 30 June 2008 (CEST)

It's KF_KF, I cannot have spaces in those names.

Neo

Thanks, now do you think the names of the moves on the MoveList page should match the ones in OniSplit? For example on the MoveList page it has Throw-P Behind Disarm but OniSplit has it as P_BehindDisarm. There are many differences between the MoveList and OniSplit syntax.

I'm sure others will have the same issue as they start modifying the melee profile.

EdT 16:16, 30 June 2008 (CEST)

Well, spaces and - are not allowed in there. As for the Throw- prefix I just removed because it's kind of dumb to write <Throw Type="Throw_P_BehindDisarn".../>.

The best I can do is to make sure that space is consistenly converted to _ so instead of RunLeft you get Run_Left which is closer to that table.

Neo

I think we should change the syntax on the wiki to match OniSplit. Like for example change the wiki entry Throw-P Behind Disarm to P_BehindDisarm. The reason for this is when we want to modify the melee profile, we will look at the wiki and use the syntax there and put it in OniSplit, then we get errors. But if the wiki has the syntax the OniSplit will use, that will eliminate the problem.

Is there a way to get the moves syntax from OniSplit? Then I can start updating the wiki.

EdT 22:48, 30 June 2008 (CEST)

OniSplit 0.9.18

I added a "-help enums" option which dumps a list with all enums and flags used in XML files. Since otherwise it seems to work fine I dropped the "beta" label.

Feel free to update the wiki if you want but I'd say to leave it like it is. The wiki is about Oni internals, not about OniSplit.

Neo

I had an interesting idea today. If the only difference between a .dat file and a .oni file is that in a .oni file the .raw entries and .sep entries are stored at the end of the file, it might be possible to write a small engine hack which allows Oni to load .oni files directly as level plugins. The problem is, I'm not sure whether it would be useful or possible yet.

rossy 12:56, 2 July 2008 (CEST)

Well, in theory it is possible but: - we may need to add the raw/sep parts at the end of existing .dat files too because supporting both styles of loading raw/sep is more difficult to implement - what about Mac? I may as well rewrite all the .dat loader and replace the original one by means of vtuneapi.dll/daodan but I don't know how new code can be loaded on Macs.

Neo

So what will you be working on next?

EdT 06:23, 3 July 2008 (CEST)

Don't know, it depends on how much free time I have and my mood :).

Neo

Neo, I remember you wrote about having a folder inside the levelX_Final folder that will not be included when recompiling, I must be blind, I can't seem to find it. What was the name for it?

Any chance that you can find out how to add more level plugins for the Mac version. Since Oni originally was going to have more levels, the Mac engine should be able to handle more levels without crashing.

Thanks

EdT 07:48, 10 July 2008 (CEST)

That directory is called noimport or _noimport.

Oni may very well had more than 16 levels. For Bungie, who had the source code, it was a matter of changing one line of code to adjust the max number of levels. The story is quite different if you want to change the compiled thing.

Neo


Hi there Neo, again I am here to seek your advice, this time it is about AI2, ONCC and MELE.

First of all, I have tested it and it seems that AI2 powered characters can jump (they have attacks from air) but they can do only basic tap jump(ONCC, offset 0x010), like if you just tap spacebar. Question is: is there possibility to make them use jetpack timer(to make them 'hold spacebar') in order to jump higher/further ?

Second, if AI2 character is far from you, it runs to you and uses pathfinding mode. With help of pathfinding grid it moves in space, avoids obstacles etc. Question is: Do AI2 characters ignore grid when they have MELE mode on? Do they ignore it completely/partially/they don't ignore it? I ask because when in MELE mode active, AI2 characters can pursue you even outside area with pathfinding grid, but then they won't move if you run away from them, but start attacking you(and moving) if you come close to them again. Also, in MELE mode AI2 characters can run across red pathfinding tiles (impassable) but if you get away they get stuck as if they were outside the grid (won't move until you get close). BUT, there are pathfinding tiles which look like they could be used only for jumping (border 1/2/3/4). And jumping is avilable (as far as I know) only when in MELE mode ^_~. Also, I have tested this: player is in BNV1, standing on top of some box (so he is surrounded by red tiles). AI2 is in BNV2, which is next to BNV1 but there is NO direct transition quad between those two BNVs, only there are 'border' tiles in BNV1 near the line between BNV1 and BNV2. Now tell AI2 to attack player. If player is too far from AI2 character, AI2 will use pathfinding and it will take some long way in order to get to the player. But if player is close enough AND AI2 has in MELE some jumping attack, this AI2 will run towards border and JUMP directly to the player. So it looks like border tiles indicate space where jump attacks are prefered in order to reach enemy. Also, in devmode if you bring MELE debugging window, you can see(if AI2 is in 'border' tiles) that next to other info about technique (like DELAY, UNBLOCKED etc.) there are also informations WORRY-FWD and DANGER-FWD which looks like they correspond to blue (border) and then orange (danger) grids.

So question(s) for this part once again: is pathfinding grid ignored by AI2 when in MELE? If not, is there relation between some pathfinding tiles (border, danger) and MELE messages WORRY-FWD, DANGER-FWD ??? Next, how these tiles affect (if they affect) MELE attacks selection? Do they make AI2 prefer jumping attacks?

All these questions have their sense. I am tired of being able to escape unarmed enemy just by simple jump onto nearest obstacle. I have tried to make AI2s jump, but they can do only tap jump which is not too high and they cannot jump too far + if you escape from them, they get stuck. So if You can answer me, I will see what I can do. I have done some exeriments already (see THIS video) but it is not enough IMO. Thanks for any info.

--Loser 21:03, 14 July 2008 (CEST)

The short answer: I don't know.

The long answer: I haven't looked too much into Oni's AI code partly because it is quite large and complex (in fact it's probably the largest piece of code in Oni). I don't think AI can do more than simple tap jump but that really depends on how the AI controls the character:

  • simply tell the character to execute an animation: that makes doing more than tap jumps impossible because there isn't a special animation for "jetpack" jump.
  • simulate keypresses and mouse input: that means that it might possible but the AI needs to simulate holding the jump key which I have no idea if it can.

The "simulate keypresses" method is more likely to be used in Oni. In fact I know for sure it does simulate some keypresses but I don't know if that's the only way.


Pathfinding & stuff: I know there is something called "local movement" which may be what happens when the character is close by. This code seems to do character - environment collision detection so it may be true the pathfinding grid is ignored sometimes bacause there's not much point in AI doing collision detection if it always used the grid.

Nice video anyway :)

Neo

Neo, can you program OniSplit so that it can import ONWC? Let's say I wanted to change the 3D model of a current weapon, how could I import that 3D model? Also, didn't you at one time mention about importing of M3GM with its texture map in an easier fashion?

Thanks,

EdT 06:38, 24 July 2008 (CEST)


M3GM/ONWC: you can do that already. Export the ONWC to xml, remove all the M3GM related stuff (M3GM, PNTA, VCRA, TXCA) and replace the M3GM id in ONWC with a name of your choice:

       <Geometry>M3GMgun_x</Geometry>

instead of

       <Geometry>#2</Geometry>

Now you can create M3GM files to be used with ONWC as usual.


M3GM/TXMP: yes, I have some plans but right now nothing is implemented.

Neo

Thank you!

If you have some time... In the Mac Oni engine, there are a few strings I've always wondered about: at offset 0x1D9D55InitializeDeveloperKeys, 0x1D9f2C UnbindDeveloperKeys, 0x1DE24C DeveloperAccess, 0x173BBC, bad parameters on chr_location. Do the first 3 refer to Developer Mode or something else? The last one about chr_location, could that script command could somehow be enabled?

EdT

You probably mean: _LIrInitializeDeveloperKeys, _LIrUnbindDeveloperKeys and _ONgDeveloperAccess. The _LIr* names are functions that are supposed to be called from the "cheater" code. _ONgDevloperAccess is a variable that controls the calling of those 2 functions, it's basically the equivalent of "the day is mine" cheat.

bad parameters on chr_location is printed from the function that set the location of a character (_iSetAnyCharacterLocation or something like that). In theory it can be made to work by registering it with the scripting engine but it's rather complicated.

Neo

Thank you. Oh well, I guess the Mac engine will remain limited compared to the PC engine.

EdT 04:40, 25 July 2008 (CEST)

There is a user on OCF that has a problem with OniSplit http://oni.bungie.org/community/forum/viewtopic.php?pid=8417 Can you take a look and post the answer here, then I'll make a reply on OCF.

Thanks,

EdT 15:53, 25 July 2008 (CEST)

Umm... absolutely no idea. Since it works for me and others I assume it's something about his game files. Maybe some file is corrupted or he has some strange version I have never seen before.

Neo

Sorry to bother you. I exported ONWCw1_tap as .xml, and I was comparing the output with http://wiki.oni2.net/ONWC. One thing I can't find are the weapon options 0x0D4 to 0x0D6 in the xml. I want to enable secondary fire but can't figure that out. Not for this weapon, but a new one. I got the model for the assault rifle from Halo, I used as a base the chaingun weapon, but now want to add grenades as secondary fire.

EdT 07:10, 27 July 2008 (CEST)

I found it: <Flags>180272</Flags>

EdT 05:04, 28 July 2008 (CEST)

OniSplit v0.9.21

XML export/import for particles added.

Neo

I've a bug for you. I converted BINA3RAPsuperglow_e01 into xml and back into oni again. The link "h2h_murglow_e02" is missing now. Here are the files. (The blue glow can be seen only for one or two seconds.)

Paradox-01 17:04, 10 August 2008 (CEST)

Fixed

OniSplit v0.9.22

Neo

Hm, it wasn't the murglow-thingy but you fixed it whatever it was, thanks.

Paradox-01 17:54, 10 August 2008 (CEST)

The particle are still a bit too big. Here are the files and screenshots. (Only converted to xml and back again.)

Paradox-01 18:34, 11 August 2008 (CEST)

Paradox, it might help if you provided a proper link ^_^. Have you tried reducing the size? >_> (Though that is probably the issue you are having, not being able to do that :P)

Gumby 18:47, 11 August 2008 (CEST)

I forgot the file suffix. Thanks for checking. ^_^

Paradox-01 19:08, 11 August 2008 (CEST)

Just noticed there is a new version 0.9.23, what has changed?

EdT 04:59, 12 August 2008 (CEST)

There was an erroneous field type in OBAN, which I discovered in XML while setting up the DeLorean for the trailer.
geyser 05:57, 12 August 2008 (CEST)

Particle size fixed: OniSplit v0.9.24

Neo

Just curious, do you have a list of binary data files that can be exported and imported as .xml?

EdT 07:15, 25 August 2008 (CEST)

That's quite simple: all object collections and particles.

Neo

I just want to make sure you understand the purpose of the edits I made to the file type pages the other day, Neo. I only wrote this in the edit summaries, so maybe you missed it. The idea was to encourage someone more knowledgeable than I to fill in information on the types. I can tell you that I personally have no idea what most of the types are for, and poring through the page's tables is a waste of time when a few words up top would inform a newbie what that type does and whether it's important to a particular modding effort.

It seems that you removed more information than you added, and I am disappointed because I thought you had so much to offer in terms of writing synopses. Is it just that you don't have the time? If so, just say so. But once again, the point was that I was writing what (little) I knew or could guess in the hopes that someone would correct the info... not delete it. Deleting it takes us back to square one where I and anyone else interested in binary modding have this roadblock to learning because there are no summaries. In the long run it is absolutely to your benefit to assist others in learning their way around the binaries.

P.S.: The "I don't know what this is" comment on the ABNA page was intended to be mildly amusing in addition to being a "replace-me-with-something-informative" placeholder. I was so certain that your humorless response was coming from geyser that I had to verify that the edit had your name on it several times. Please don't take geyser's place as Resident Wikian With No Sense Of Humor. I really admire your work and I hope that we can have a nice cooperative relationship going forward. Thank you. --Iritscen 19:30, 28 August 2008 (CEST)

"I just want to make sure you understand the purpose of the edits I made to the file type pages the other day, Neo. I only wrote this in the edit summaries, so maybe you missed it. The idea was to encourage someone more knowledgeable than I to fill in information on the types. I can tell you that I personally have no idea what most of the types are for, and poring through the page's tables is a waste of time when a few words up top would inform a newbie what that type does and whether it's important to a particular modding effort."
I'm not trying to incite another flame war here, but if you don't know what something does, perhaps it is better not to edit it at all? (Might I point out the very erronous description for OBAN, that I had to fix?) No information is better than wrong information...Gumby 19:42, 28 August 2008 (CEST)
geyser has pointed out multiple times that we can have more levity on this wiki than if we were, say, Wikipedia. He demonstrated this all the time with silly haiku and joke articles (even though he never found anything I said remotely funny). I knew that someone (I wasn't planning on it having to be Neo) would see my edit in their Watchlist and I assumed they would quickly replace it with something helpful. Also, if I knew that I knew something for sure I wouldn't be asking for help with the synopses; however, aside from the joke comment, the other edits were thought by me to be pretty certain (I didn't touch the file types after ABNA that I had no inkling of). If I made any mistakes in those serious edits, it only demonstrates the need for the synopses in the first place.
If I had simply announced somewhere "Hey guys, let's do this thing", no one would have acted and another argument would have ensued because I dared suggest something without contributing myself. So I applied the principle of "acting rather than talking about acting" and gave it a college try (and also to establish the format we could use).
Finally, the fundamental purpose of the wiki is to allow teamwork, and that definitely includes, in every wiki out there, correcting others' mistakes. Hence why I said "correct me if I'm wrong" 50 times (even though it should have gone without saying, being on a wiki). I hoped that I wouldn't have to apologize for any mistakes because my edits would be received in the spirit of earnest effort in which they were made. --Iritscen 20:56, 28 August 2008 (CEST)

And you say I have removed information?? You must be kidding. The "information" in question either did not exist at all or it was redundant.

  • What's the need for "A versatile bitmap format that allows for an optional alpha channel, TXMPs can come in 16-bit and 32-bit varieties and can also be compressed in a standard OpenGL format" when all this can be found clearly stated in the texture format field?
  • Why do we need "TXMPs are also stored upside down" when this is stated at the end of page (and pictures are included too).
  • What's up with words like "versatile" and "interestingly" here? Who cares about it being versatile or not. It is what it is and there are probably more versatile texture formats around anyway.
  • ABNA stuff? That belongs to talk pages. There's no point in having that "joke comment" sitting there for months until me or somebody else has time to write something better.


And pay close attention to the above comment. You are trying to start something that we probably don't have the resources to finish. I'm quite busy in real life and I consider that my Oni related time is better spent working on more importers/exporters for OniSplit than writing more or less useful "synopsis". Others that may add some information (alloc, geyser, sfeli, ssg etc.) rarely come here (if at all) or they're busy too.

In general I agree that some OBD pages need more information but not all.

  • I have nothing more to add about TXMPs, all I know is there and I think the page is compact enough that it does not need any kind of synopsis (not to mention that there are at least 2 programs that can create TXMP files so there's no need for "binary modding").
  • I don't know if I'll ever add detailed explanation about environment (Akira) files because it's very unlikely that they can be modded in any significant way. Some octree related pages (OTLF) happen to have more information because using octrees this way is less common in games and I thought it's worth documenting that.
  • I don't know when I'll add information to other pages, it's simply not on my priority list.


In summary:

  • you could have used my talk page or ABNA's talk page to ask me (or others) about doing this.
  • you could have just edited the page template to add the synopsis field and edited 1 or 2 files that you happen to know best to give an example.

Instead you chose to make many more poorly worded/informed edits. This kind of impulsive behavior doesn't help anyone. If anything it's just a waste of other people's time.

Neo

Okay, we're spinning our wheels again talking about doing stuff. The time we spend talking is a significant fraction of what it would take a knowledgeable modder to synopsize the file types. I will only say this in response to your last post: I did pick the file types I was most familiar with, that's the sad part. To do this job singlehandedly (to not make mistakes that could easily be corrected by others afterwards) might take me 20 minutes of research per file on average, whereas it would take someone else 30 seconds to synopsize off the top of their head. And having to spend those hours on this project will only delay my other Oni work. So if that's how it's gotta be, where you're the only one visiting the wiki who knows the file types already, and you don't see the sense in doing this, then I guess we're at an impasse. I really thought there were others who could help with this or I would have asked you on your Talk page if you wanted to do this.

P.S.: Yes, maybe I wrote too much for the TXMP synopsis, it's not the end of the world. Wikis are for refining each other's work, not deleting it because it's not how we would have written it. If there were any words at all that were true, they could have been left there, and if there were statements that were inaccurate or wrong they could have been replaced with the truth in the matter. Your making editorial comments on my writing style is also counterproductive at this point. --Iritscen 15:33, 29 August 2008 (CEST)

Iritscen, What the hell are you doing?! He said he didn't want to do it, and had better things to do. Leave him alone! Discussions for this kinds of thing are better put here OBD_talk:Oni_Binary_Data. Complaining to Neo (or any other modder\hacker\whathaveyou) is not going to get it done. Gumby 18:26, 29 August 2008 (CEST)