Oni Central Forum

A forum for the Oni community

You are not logged in.

#1 21/9/13 19:57

Dirk Gently
Member
From: Boston, MA
Registered: 12/6/09
Website

Re: Engine hacking questions 2

[I'm splitting the off-topic posts from the "h2w System" thread so the discussion has its own space.  Dirk's post below is responding to ltemplar's post HERE --Iritscen].

ltemplar wrote:

What regard dynamic holstering feature, I was really curious is there a way around, other than using scripting(like changing characters AI to use taunt system differently for example).It seams the answer is no.

Yes, through heavy engine modification.

ltemplar wrote:

I also Asked is there a way to change the AI behavior in h2h to force it to use particular moves(and only them) on the proper ranges other than very close, or use h2h combat when it's in range(no mater if they have weapons or not).

Yes, through heavy engine modification.

ltemplar wrote:

The other question(maybe indirect) was is there a way to show where this move(attack) should aim (for example where the character is looking). No answer yet.

Yes, sort of, but it isn't an exact science in being able to script or do something without it being engine side

Offline

#2 24/9/13 17:27

ltemplar
Member
From: Poland
Registered: 23/8/12

Re: Engine hacking questions 2

Hack the engine...?

Hmm ok....... I can give it a try.

-So what tools I need for this?
-Where to start?
-What part of code/data I need to hack(if known) to .. for example change holstering system(to have one weapon in hand and one in the holster)? - any clue will be a big help here.

Offline

#3 25/9/13 11:13

Iritscen
Moderator
From: NC, USA
Registered: 22/10/07

Re: Engine hacking questions 2

I didn't see where Loser posted this, but here is his demo of how dynamic holstering works: http://www.youtube.com/watch?v=dlK8LJGmt_k.  Pretty cool stuff.

ltemplar, I'm not sure anyone here has both the time and knowledge to teach you engine hacking.  Only people who are extremely self-motivated become successful hackers, because they have to mostly teach themselves.  Do you even know programming?  I would suggest that it's probably a waste of your time, as we're talking about a large investment in time to learn a very technical skill, for little payback.


byproducts are fine, but where's the beef?

Offline

#4 25/9/13 12:13

ltemplar
Member
From: Poland
Registered: 23/8/12

Re: Engine hacking questions 2

Hmm...

Iritscen: Yes I know what a mount of work is needed to learn such stuff. My last answer was a bit of irony that "bloom" when I saw statement like this "...Trough heavy engine modification, or....You can hack engine by yourself..." etc. However if there is a way to learn such skill , then why not.
What regards your question:
1)I Have some little programing skills, that I develop when working on the NEP mod for Earth 2160, some basic knowledge about C++ stuff(also self kerned - but years ago), but as I said before I'm not a programmer.I know how to create basic script in oni via BSL , but the advanced ones are beyond my reach...yet.
2)Free time is the biggest problem here(or rather it's lack), but I will find some if needed(there are other stuff in real like life that can be cut of: like eat, sleep or other primal needs - HAHAHA - sorry).

But seriously.
We all talking here constantly about what things can be added to the engine(for example limitations for the number of characters, particles etc)which, I understand are values that can be changed by addition via DLL or exe hacking(correct me if I'm wrong).
Also to may knowledge the mentioned holstering is in game already, but the problem lays in the pick up/droop object button(default E) that disallow us to have two weapons sorted in the character's possession.
My point is if somebody known this stuff can direct us noobs where to look for such things. then the easier stuff can be done by us, when they can focus on more advanced one.
This will work for common benefit.

Last edited by ltemplar (25/9/13 12:19)

Offline

#5 25/9/13 16:31

Iritscen
Moderator
From: NC, USA
Registered: 22/10/07

Engine hacking questions 2

Sure, and it's not that I mean to discourage you, exactly -- just that I wasn't sure if you knew the size of what you were suggesting.  Unfortunately, as I said, I don't know if anyone who is active here can help you.  If I'm wrong, then they'll speak up, but I thought I would expand on Dirk's comment, just to make sure that you aren't surprised if no one responds to your request for help.


byproducts are fine, but where's the beef?

Offline

#6 25/9/13 17:55

ltemplar
Member
From: Poland
Registered: 23/8/12

Re: Engine hacking questions 2

Ok i understand.

But this lack off help kill most of the invention here. Things that can be done are simply wasted....
Most of the time you fill alone here with your problems(except Samer , EdT or occasionally Loser - That are a great help - thank guys). Everybody is talking about something , but nobody is actually doing it.
Nobody is willing to help with Samers or my problems regarding limits, etc.
And then you read: Hack engine by yourself....
So I'm willing to do it...if this is the only way even if this will take years to learn(I'm used to long term work).
Everything that I ask for is the list of tools , and if possible list of tutorial and known things(to not repeat somebody work)..that's it.

Do for example, Cheat Engine will be sufficient for this job? (http://www.cheatengine.org/index.php)

Last edited by ltemplar (25/9/13 17:58)

Offline

#7 25/9/13 18:14

EdT
Moderator
From: Los Angeles, CA
Registered: 13/1/07
Website

Re: Engine hacking questions 2

ltemplar: I'm not the best person to explain this, but one of the difficult issue of modifying the Oni engine is finding the memory address for the DLL to use.  We may know x leads to y then to z, but where is y in the memory? How can we change it? 

Or for the limits of number of polygons visible, we know it is 8 * 1024, but where is that info found?

There are people in the background that are looking into the issues and when the solution is found, the DLL is updated.  So if an issue is not fixed, that means currently we don't have the ability to fix it.  We would need someone that has great reverse engineering skills to really improve Oni's engine.

Offline

#8 25/9/13 18:32

ltemplar
Member
From: Poland
Registered: 23/8/12

Re: Engine hacking questions 2

Ok i Understand.

But if more that thous few peoples will work on this we will be able to find thous memory address quicker, don't you think?
I for example first modification for oni done by working via hex edit(using the documentation), before I even known about onisplit etc.
So subject is familiar for me.The problem is how i can track this.
I don't know, but maybe the list of all bytes will be a solution. Then we can mark thous checked(function is known) , and move to thous that are still remain unknown.

Any guide will be a great help here.

Last edited by ltemplar (25/9/13 18:43)

Offline

#9 25/9/13 18:49

Iritscen
Moderator
From: NC, USA
Registered: 22/10/07

Re: Engine hacking questions 2

The Cheat Engine does look like it could be useful, although I'm not a hacker myself so I can only guess.  Unfortunately, if you're looking for an existing list of tutorials, links to tools, or a database of information, such as we have for the binary data and modding, there's precisely nothing written down.  Not a word.  No one has ever documented that side of things.  All I can suggest is asking for tips from people who've actually done this, and to look at the Daodan DLL source code to see what's been done so far.

Anyway, I do appreciate your willingness to commit to a long-term task; it's true that a few of us were only able to contribute to Oni after investing lots of time in learning new skills.  As you probably realize, this community is entirely based on DIY effort, with no support from developers or official modding tools to work with.


byproducts are fine, but where's the beef?

Offline

#10 25/9/13 19:07

ltemplar
Member
From: Poland
Registered: 23/8/12

Re: Engine hacking questions 2

Honestly I think we need to create such list, and start working with some plan in mind. step by step.
This also regards to mods as well.

Iritscen: Asking peoples..is a good thing, but who actually working on this project is active here?Who does what?
Even if we create a wish list...where we should send it to?Who will respond on it?

I'm simply tired of waiting. So I'm wiling to start this myself if I have to.
BTW.EdT in what form you want me to post the done fillers for the Hesagawa flashback level. As a level from where you can grab needed stuff , or as 3d data files?

Last edited by ltemplar (25/9/13 19:12)

Offline

#11 25/9/13 19:40

Iritscen
Moderator
From: NC, USA
Registered: 22/10/07

Re: Engine hacking questions 2

I'm not sure what your partners in other projects will have to say about your sudden change in focus, but I will respond to your post as a neutral third party who can offer (only a little) information smile

Honestly I think we need to create such list

The OBD page was intended to hold this kind of information, as you can see from the introductory text, but we never had anyone sit down and start documenting, so recently I removed a note to add such a section, having finally given up hope that someone would do it.  If you do desire to start filling in this information, then as a wiki sysop (and the person who categorized the existing pages), I would help you with the planning and management of a new section on "runtime" information on the wiki, though I can't do anything to actually help you collect such information.

and start working with some plan in mind. step by step.

Honestly, I don't think a comprehensive plan is needed, as we don't have that many needs in the area of engine hacking that I'm aware of.  But we do have a place for managing feature requests -- the Community Bug Tracker.  You'll notice that we already have some outstanding requests filed for the Daodan DLL that no one is handling.

This also regards to mods as well.

When it comes to modding, I find that it's not productive to make plans for a community.  The most you can do is organize individual projects, like Samer is doing for the Wilderness level, and hope that other volunteers continue helping you.  To try to organize any large-scale multi-project effort or long-term plan is simply impossible.  Trust me, it's been attempted, and it didn't end well.

Asking peoples..is a good thing, but who actually working on this project is active here?Who does what?

Well, the former maintainers of the Daodan DLL are not active anymore.  When I suggested asking people for tips who have done hacking, I meant in general, not for Oni.  There are probably some very informative general sites and forums on this subject out there.


byproducts are fine, but where's the beef?

Offline

#12 25/9/13 19:50

Dirk Gently
Member
From: Boston, MA
Registered: 12/6/09
Website

Re: Engine hacking questions 2

While engine modification is possible to some extent, there are some components of this that would require additions to engine behavior. That isn't a feasible thing to do without being engine-side on this. By that i mean source code access.

While out of almost anyone on these forums, i probably have the most expertise in reverse engineering, but the amount of time i would need to invest into this to have a barely useable game engine afterwards, well i don't know about that. I love this game, but I just don't have the time to dedicate that much of my life to it at this point.

Offline

#13 25/9/13 20:47

EdT
Moderator
From: Los Angeles, CA
Registered: 13/1/07
Website

Re: Engine hacking questions 2

ltemplar: One other page you can look at is: http://wiki.oni2.net/Oni_engine_patches_%28Win%29  It shows the early efforts of hex-editing and patching the Oni engine, but also links to the Subversion Repositories for the DLL and other projects.

I suppose you could use a disassembler or decompiler to look at the engine.   I used IDA Free to help patch the PPC Mac Engine a few years, that was a lot of fun smile

Regarding the objects for the Hasegawa project, I suppose we can start off as a level and go from there.  If there are items that can be reused and are composed of one object with one texture, then .obj, .mtl files will work, then I can add them to the level through BINACJBOFurniture.xml.  Otherwise, I have to add them directly to the environment.

Offline

#14 26/9/13 2:45

ltemplar
Member
From: Poland
Registered: 23/8/12

Re: Engine hacking questions 2

Iritscen, EdT:Thanks..I surly will look in to this.
Iritscen: Dont worry about other projects...The NEP is almost finished(the bug tracking remains+ few other things in the long term). The Oni stuff is done (most of it).
Dirk Gently: I don't know if i catch this correctly, but if you have such experience with source code , maybe the new oni engine will be more sufficient for you?The grace2 engine (http://grace2engine.com/)will be something you can start working on(if you decide that is).
EdT:Then I will post them as a level(I used 2 textures for trees, one for the base and one for the leafs(200 poly each) , rocks are one texture only(100 poly or less), the 2 d are single textured objects that are divided to few polygons(4-6  to avoid this errors with transparency). For now I have done - 2 normal trees 3  2,5 d and 5 rocks (from small to medium). I Plan to do 5 versions for all thous and some big rocks(3). The bushes are there I presume so I will not make them(or I'm wrong?).No wild or deformed trees yet.
BTW.I think that Obj can handle information about more than one texture per object from my experience...

Last edited by ltemplar (26/9/13 3:22)

Offline

#15 26/9/13 8:57

Dirk Gently
Member
From: Boston, MA
Registered: 12/6/09
Website

Re: Engine hacking questions 2

To be honest, I am rather nostalgic about the current engine. I love it and think it is quite a work of art. I would rather continue to spend my time working with the existing engine despite the flaws it has in it.

Offline

#16 26/9/13 9:58

ltemplar
Member
From: Poland
Registered: 23/8/12

Re: Engine hacking questions 2

Then maybe you can help us?
The things that I'm personally looking for are:

-the limit for the characters per one save point(increase from 32 to 200+).Do the fact that they are only object cable for degradation in oni engine(lose health),which makes them  perfect candidates for stationary turrets, cars, walls ,and any objects that can be dynamically destroyed. Other advantage will be the fact that for most scripts to work correctly they required being in active state.
-Limit for the number of weapons from 60 to 200+ (to remove floating guns bug)
-limit for visible corpses.(50 will be enough I think)

The rest is optional(even having two guns.)from my point of view.

Any hint where I should look for thous values will be a great help. Thanks in advance.

Last edited by ltemplar (26/9/13 10:16)

Offline

#17 26/9/13 10:09

EdT
Moderator
From: Los Angeles, CA
Registered: 13/1/07
Website

Re: Engine hacking questions 2

ltemplar: I'm not sure what you mean by "-the limit for the charters per one save point" What is charters?

Offline

#18 26/9/13 10:18

ltemplar
Member
From: Poland
Registered: 23/8/12

Re: Engine hacking questions 2

Edited (I mean characters.)

Offline

#19 26/9/13 11:02

EdT
Moderator
From: Los Angeles, CA
Registered: 13/1/07
Website

Re: Engine hacking questions 2

ltemplar: The persist.dat file only has data on the player, not the other characters. http://wiki.oni2.net/Persist.dat.  Or you are referring to the limit of 32 characters appearing at one time in the game?

Sorry, I keep reading this line and I can't understand what you are asking  "Do the fact that they are only object cable for degradation in oni engine(lose health),which makes them  perfect candidates for stationary turrets, cars, walls ,and any objects that can be dynamically destroyed."  What are you referring to as "they" and "them"

Also, for the limits on visible corpses and weapons, as I understand it, when the game is originally compiled, those limits and other variables are defined. Finding them in the exe, through hexediting is very difficult.

Offline

#20 26/9/13 11:31

ltemplar
Member
From: Poland
Registered: 23/8/12

Re: Engine hacking questions 2

I'm referring to characters(ONCC) of course.

To the limit of characters that can be visible and active(32 is the current, do to fact that characters are the most polygon consuming ones - i think)
The characters are perfect candidates to be used as:
-Turrets
-Mobile weapon platforms
-Destroyable walls, cars, panels, etc.

Did you ever consider how fun the fight with deadly brain can look like , if "he" have been created as character/s ? Destroy his outer shield destroy his turrets, destroy his core. etc..
With increased limit we can do:
-Dynamic character swaps( change normal ninja to variant with sword for example in real time)
-Dynamic degradation (the robot first lose some armor then he become more potent for destruction)
And plenty of other things(like populated city levels)

And all that on one save point.
From my knowledge the visibility (rendering) range for player can be set by BSL command.So the problem with lagging can be avoided by calculating proper ranges(Not to mention LOD thing)
BTW. Did you known that AI can pick up another weapon if his first one is holstered?So the problem is only player-side, not game side.

Last edited by ltemplar (26/9/13 11:54)

Offline

#21 26/9/13 12:32

Dirk Gently
Member
From: Boston, MA
Registered: 12/6/09
Website

Re: Engine hacking questions 2

ltemplar wrote:

Then maybe you can help us?
The things that I'm personally looking for are:

-the limit for the characters per one save point(increase from 32 to 200+).Do the fact that they are only object cable for degradation in oni engine(lose health),which makes them  perfect candidates for stationary turrets, cars, walls ,and any objects that can be dynamically destroyed. Other advantage will be the fact that for most scripts to work correctly they required being in active state.
-Limit for the number of weapons from 60 to 200+ (to remove floating guns bug)
-limit for visible corpses.(50 will be enough I think)

The rest is optional(even having two guns.)from my point of view.

Any hint where I should look for thous values will be a great help. Thanks in advance.

I don't know off the top of my head if these are possible, however some of this is definitely limited to what space the engine has within it for these values. I cannot also help but feel that this would be altering the mechanics of the game hugely.

Floating guns bug?

Corpses and other items onscreen is a caching system with the engine. it removes objects to keep performance alive. You could say that the engine is the best and that they were dealing with not the best hardware at the time of creating this game.

Offline

#22 26/9/13 14:05

ltemplar
Member
From: Poland
Registered: 23/8/12

Re: Engine hacking questions 2

Yes you are right.
I also suspect that this limitations where do the hardware available that time (the oni minimum requirement was 32 mb ram, voodo banshe and P166  if I recall correctly).
But now we have year 2013, where such limitations are no more.
So why not remove them and check what will happen?
Correct me if I'm wrong, but I think most engines that time were mostly based on cpu power and memory rather than video card, so things , that are more advanced now.

Don't know to what space in the engine you are referring to..Memory for example?
Can you en-light me?Because in my understanding such briers are added do the hardware issues..not the engines itself..but maybe I'm wrong.As i said before I'm not an expert here.

I'm curious , why you think that such changes will alert game engine greatly yes , but in negative way(or misinterpreted this?)?

Last edited by ltemplar (26/9/13 14:08)

Offline

#23 26/9/13 15:39

EdT
Moderator
From: Los Angeles, CA
Registered: 13/1/07
Website

Re: Engine hacking questions 2

ltemplar:   You have some great ideas for using characters in different ways and it can be done. Recently I made that car in the City level which was a character, or awhile ago I made an exploding barrel from a character.  Until there is a way to increase the number of characters, you would have to design the level to limit the number of active characters (AI and or objects as characters).

What is the floating gun bug?

Looking at this page: http://wiki.oni2.net/CRSA the limit for corpses is 20, however, looking at the ONLV for a level in .xml, it may be possible to add more CRSACorpse arrays to the xml.

I think another factor for limits on characters, polygons and so on is the size of the buffer arrays used in Oni, for example we get the "sorting buffer overflowed" error.  So then in addition of finding where the limits are located, then you have to find the buffer arrays and somehow increase them.  Just my thoughts.

Offline

#24 26/9/13 16:10

ltemplar
Member
From: Poland
Registered: 23/8/12

Re: Engine hacking questions 2

Floating gun bugs...agh..my bad..I mean flying in mid air .When the maximum number for active weapons is reach(default is 60) the other added later have tendency to "levitate" .They don't have weight or can be pick up.If this was corrected then sorry.

EdT: Yes the characters have great potential, but wasted due the limit.Exploding barrels are new to me..but this prove, that this method can be used with success for other things than "peoples".

Tanks,,helicopters, VTOLs vehicles - there is plenty of possibilities. Imagine console that can be destroyed to prevent something from happening, or wall that can be removed opening a new patch.
If you start treat char(ONCC) as object where peoples are only one from many options..then the new world of modding is waiting wide open.
Add to this that every chra. can have different death explosion and things impossible become real.More we can even add particles that will simulate wreckages(after all this is only one particle more).
I will not even mention how awesome will look fight in the garage filed with the exploding cars....and other damageable stuff.
But till this limit will not be removed ..this awesomeness can't be done (hlip) 8.(

BTW. EdT as a test we can create new test level with new..deadly brain fight.. to show what oni engine is really cable for. If you will handle level geometry(edit. I mean export to oni - side), I will create..all needed cannons(I have some already), destroyable objects(nonexplosives shock shields,walls,poles, etc) and deadly brain himself.All of course with 32 chrs. limitations in mind.

Edit. I think we reach the of-top limit here , so the future discussion should be continued elsewhere(a new topic)

Last edited by ltemplar (26/9/13 17:11)

Offline

#25 26/9/13 18:02

Iritscen
Moderator
From: NC, USA
Registered: 22/10/07

Re: Engine hacking questions 2

I've moved these posts to their own topic, as you can see.  I think I should mention, ltemplar, that you happen to be talking to three Mac users.  We can run Windows when we have to, but I don't know if any of us is going to be able to help you find the limits you speak of.  But I do agree that it would be very helpful to raise those limits with the Daodan DLL, if you acquire the skills to do so.


byproducts are fine, but where's the beef?

Offline

Board footer

Powered by FluxBB