Abide AddOn Debugger

A wealth of applications with which you will need to mod Halo 2.
Post Reply
User avatar
Click16
Posts: 1941
Joined: Mon Dec 31, 2007 4:36 am
Location: United States

Abide AddOn Debugger

Post by Click16 »

Introduction:
I have been inactive for quite a while, but that doesn't mean I haven't been working with Halo 2. I know that Halo 2 modding is pretty much dead except for a few people. I created this as a way for programmers to add their fantastic ideas to what will be the future Abide. Abide was started by Zaid, and with his help, we resurrected the project and gave it some new powerful features. AddOns are going to be available for anyone to make. AddOns are similar to the Applets that can be created for Contribute.

Features:
• YeloDebug Implementation, allowing you to use your Debug Xbox and poking, reading, writing in real-time with your AddOn.
• An API to read map data, or grab all the settings used by Abide.
• A command system so that if there is an unimplemented API feature, you can use commands to communicate between the AddOn and the Program.
• Managed IO and Tag classes to get basic IO features and Tag data.

Abide's bread and butter are going to be the powerful things to come from these AddOns so I hope that you all give this a try, and make some cool stuff.

Downloads:
Abide AddOn Debugger.zip
Abide AddOn Debugger
(72.44 KiB) Downloaded 293 times
Abide AddOn.zip
AddOn Template for Visual Studio 2012
(48.44 KiB) Downloaded 298 times
Pictures:
Image
- Hello World AddOn (future tutorial...)

Image
- Bitmap Viewer
Image
User avatar
CaptainPoopface
Posts: 714
Joined: Sat Feb 16, 2008 5:47 am

Re: Abide AddOn Debugger

Post by CaptainPoopface »

It sounds cool. It would be great to write a plug in that performs some meta changing and sharing, to make my long-desired map-independent mod patching system. Sounds like that would be easier with a tag class to interface with.

Can you give other examples of what the program might be used for?
User avatar
Click16
Posts: 1941
Joined: Mon Dec 31, 2007 4:36 am
Location: United States

Re: Abide AddOn Debugger

Post by Click16 »

CaptainPoopface wrote:It sounds cool. It would be great to write a plug in that performs some meta changing and sharing, to make my long-desired map-independent mod patching system. Sounds like that would be easier with a tag class to interface with.

Can you give other examples of what the program might be used for?
Dude just write a list of things you would like to see added. If they are small enough I'll be able to make them quick. Please Ideas people. This is the future of Abide.
Image
User avatar
CaptainPoopface
Posts: 714
Joined: Sat Feb 16, 2008 5:47 am

Re: Abide AddOn Debugger

Post by CaptainPoopface »

OK, well I had a decent list going in your other thread from a couple months ago. Here are some things I would love to have, broken down by priority and phases of implementation:

Priority 1: Meta change recorder
"Record" meta edits for a tag, such that I can apply them to that tag in any number of other maps. To me, this suggests that I would tell Abide what the initial state of the tag is, and what the modified state of the tag is, and then it creates some kind of output file that logs the initial and modified state of the tag. Abide would write to the log in a "record" pass and read from it in the "apply" pass. When applying the modification to a tag in another map, if the initial states of the tag do not match, it could warn me first.
Phase 1 would be just simple meta edits like number of rounds per shot for the battle rifle. Phase 2 would include meta sharing, like if my shotgun shares the triggers and barrels of the scorpion cannon. If Abide needs to know what tag the shared meta comes from, I would be willing to go through additional steps to tell it. Phase 2 seems a little harder to me because the change log needs to know the order that things are done in (for example, it would not know how to set the second projectile for the second barrel before the meta has been shared such that the shotgun has those chunks available).
I would want this to work for an arbitrary number of tags in a single map, so that I ultimately have one change file that will apply all my edits from one map to another. That means the sequence of changes in a tag is important, and the sequence of tags changed is important. I am willing to tell Abide these things manually if necessary.

Priority 2: Player spawn coordinator
I would like to enter the X,Y,Z coords and maybe yaw for 6-12 player spawns, and then have Abide set all player spawns in the scnr to one of the coord sets I entered, chosen at random, and possibly with randomized yaw.

Priority 2: Tag reference lister
Phase 1: For a tag that I select, display a list of all tags that have that tag as one of their dependencies. For example, which tags depend on the sword's ready effect? And it would list the sword weap tag, the FP and 3P sword jmads, etc. There was an old modding program that did this, but I don't remember which one or if it was a map-bricker for certain maps.
Phase 2: For a chunk/reflexive (is tag block the correct term?) I select, what other tags point to that reflexive? For example, all the weap tags that share the triggers reflexive of the shotgun, or all the effects that share the locations reflexive of the warthog hull damage minor effect. I didn't realize how immensely helpful this is to know until Troy identified shared meta in Entity.

Priority 3: Effect Size and Color Editor
For each visual dependency in the effect, let me view the initial and final colors as a swatch or color wheel, and either change them with RGB values or use some kind of color picker. For the size of each dependency in the effect, display the 4 bytes of the initial and final size as a float, and let me edit them as a float.

Priority 3: Objective Zone Geometrizer
Let me specify whether an objective zone (I'm thinking King of the Hill) is a circle or rectangle. If I choose a circle, let me enter the radius and have it set the position of each of the objective spawn points such that they are in a circle with the radius I entered. If I choose a rectangle, let me designate the length, width and "yaw" of the whole rectangle. Pitch and roll are much easier to manipulate manually than yaw for a set of spawn points, but it would be cool to set them automatically as well.

Priority 4: Stray Spawn Roundup
If any spawns (player, object, objective, collection) are outside the boundaries of the map, present them to me in a list, and/or automatically move them to a point on the map I specify (such as the center of the map, where I can see them).

Although I have listed these in the priority of usefulness/need to me, I would be happy to have any of them as they come online. Some sound easier to implement than others, so whatever you come up with, I will be grateful to have.
User avatar
OwnZ joO
Posts: 1197
Joined: Sun Dec 09, 2007 4:46 pm

Re: Abide AddOn Debugger

Post by OwnZ joO »

CaptainPoopface wrote:Priority 2: Tag reference lister
Phase 1: For a tag that I select, display a list of all tags that have that tag as one of their dependencies. For example, which tags depend on the sword's ready effect? And it would list the sword weap tag, the FP and 3P sword jmads, etc. There was an old modding program that did this, but I don't remember which one or if it was a map-bricker for certain maps.
Phase 2: For a chunk/reflexive (is tag block the correct term?) I select, what other tags point to that reflexive? For example, all the weap tags that share the triggers reflexive of the shotgun, or all the effects that share the locations reflexive of the warthog hull damage minor effect. I didn't realize how immensely helpful this is to know until Troy identified shared meta in Entity.
This is not too difficult if somebody wants to implement it. The easiest way to implement it is loading and scanning every tag in the map at startup, then you can just do a single LINQ statement that says give me all tags that have that one as one of their references. The code for it is in the reference editor I released(It's for Halo 1 though), would not be hard to port to Halo 2 for anybody. Can't remember what editor it was that I took the idea from, I think it was green themed and maybe written by Iron_Forge or Swamp_Fox.
User avatar
XZodia
Staff
Posts: 2208
Joined: Sun Dec 09, 2007 2:09 pm
Location: UK
Contact:

Re: Abide AddOn Debugger

Post by XZodia »

@CPF

For your meta change recorder, would it suffice to merge all changes made to the same tag type? (Or you could specify which tags you wanted to merge)
That way you would make your new object (weap, vehi, etc) in a map, record the changes then use a fresh map to make your next object.
This deals with the problem of meta sharing and allows you to mod as you would normally.
Image
JacksonCougar wrote:I find you usually have great ideas.
JacksonCougar wrote:Ah fuck. Why must you always be right? Why.
User avatar
CaptainPoopface
Posts: 714
Joined: Sat Feb 16, 2008 5:47 am

Re: Abide AddOn Debugger

Post by CaptainPoopface »

XZodia wrote: For your meta change recorder, would it suffice to merge all changes made to the same tag type? (Or you could specify which tags you wanted to merge)
That way you would make your new object (weap, vehi, etc) in a map, record the changes then use a fresh map to make your next object.
This deals with the problem of meta sharing and allows you to mod as you would normally.
I don't think of it as making individual objects or tags so much as gathering all the changes in the mod, and then porting them to another map. In the end, I suppose it does need to be broken down by per-tag changes...

I figured the user would designate a tag to Abide and tell it to record its starting state (for example, the unmodified shotgun weap tag). Then you make a few changes to the field values and dependencies, and tell Abide to record that as the end state of the weap tag. So there would be no need for a fresh map for each change, and you could "start" from a modded tag if you wanted to. It seems like it wouldn't cause any problem to merge changes to multiple tags of the same type or different types, as long as the order of changes is unimportant. I guess it's only in the case of sharing meta or adding chunks that order becomes important.

I don't understand what you mean about how merging changes of the same tag type deals with the problem of meta sharing. If you make the shotgun share the barrels reflexive of the banshee gun, and then in the shotgun tag, make those barrels refer to the magazine reflexive in the shotgun, then the order of steps is critical (the second change cannot happen before the first). That's why I think the program needs to know the order of operations, and know symbolically what meta is being shared, so that it can point the barrels reflexive of the shotgun to the banshee gun barrels reflexive in an entirely different map with different offsets.

Does that address your question? If not, can you rephrase?
User avatar
XZodia
Staff
Posts: 2208
Joined: Sun Dec 09, 2007 2:09 pm
Location: UK
Contact:

Re: Abide AddOn Debugger

Post by XZodia »

I appear to have been half asleep when I wrote that, forget the merging this...Hopefully this will make more sense and is a better solution...

Since none of the data ever moves, when looking for changes, you could read the changed map, using the reflexive pointers of the original map.
Storing the changes to the tags data and ignoring pointers to another tags data.
This way you can redirect things as much as you like and it wouldn't matter, because your only saving/applying the changes to each tag's internal data. (Any shared data will be internal to only one tag)
Its a difficult concept to explain but hopefully, you get the idea...
Image
JacksonCougar wrote:I find you usually have great ideas.
JacksonCougar wrote:Ah fuck. Why must you always be right? Why.
Post Reply