[WIP] Zeus: Pre-alpha 1 release

Everything about HD, MD, and their mods.

Moderator: Halo Moderators

rEsTnPeAcEz
Veteran
Posts: 291
Joined: Sat Sep 01, 2012 12:34 pm
Location: Canada EHH

Re: [WIP] Zeus

Post by rEsTnPeAcEz » Mon Apr 01, 2013 7:05 pm

Is this able to edit Eschaton tag types?

Sparky
Delta Force
Posts: 4194
Joined: Wed Mar 31, 2004 8:59 pm
Location: New Jersey, USA
Contact:

Re: [WIP] Zeus

Post by Sparky » Tue Apr 02, 2013 3:45 pm

Yes.

It is fully-compatible with the Halo Editing Kit and Eschaton. You can start new Halo tags in Zeus and save them in Eschaton tag format and Halo Editing Kit format ... and also in Halo Hacking Kit format. So it's fully-compatible, reading and writing, with tag files and map files exported or generated from Eschaton, HHK and the HEK.

Presently, first step is to generate interfaces for the first tag type: ACTR, then do the coding for both HEK and Eschaton/HHK tag file reading/writing for use with that document type. Then I'll go to the rest of the tags in alphabetical order. Will take me about a week for this first tag type to be finished, then I estimate maybe a month or two for the rest of the tag types to be finished. Also, a nice feature is the ability to save tags as text files (xml files) like Guerilla lets you export to text files. The generated xml fields will be understandable so you can simply open the tag in a text editor and edit the metadata there and save it without even using Zeus -- excellent for multi-platform compatibility and online tag data handling.

The Tool functionalities will be the most enjoyable for me to reverse-engineer, and then the last major stage is inclusion of 3D viewers, the scenario viewer and the model tag viewer. Also included will be a bitmap graphics viewer and a sound tag player. I'll be using QuickTime for the .wav file and .ogg file playback, which will be available right there in the tag document window as it is with the sound tags in Guerilla. If I get around to it, I'll probably implement some pre-existing Nvidia bitmap file viewer or do my own QuickLook generator plugin for viewing Halo bitmap tag file images.
Either you are groping for answers, or you are asking God and listening to Jesus.

rEsTnPeAcEz
Veteran
Posts: 291
Joined: Sat Sep 01, 2012 12:34 pm
Location: Canada EHH

Re: [WIP] Zeus

Post by rEsTnPeAcEz » Tue Apr 02, 2013 4:34 pm

Just to make Zeus better, I think there should an visual meta editor that allows you to see how the amount of world units looks like in real life, or to see the angle for weapon spread visualy. It's just an idea.

Also I hope this will be an attempt to make an exact replica of Guerilla, Tool and Sapien but maybe with a few 'tweaks' and bug fixes, etc.

Sparky
Delta Force
Posts: 4194
Joined: Wed Mar 31, 2004 8:59 pm
Location: New Jersey, USA
Contact:

Re: [WIP] Zeus

Post by Sparky » Tue Apr 02, 2013 5:10 pm

I'm planning to replicate them directly first for us Mac users, and then afterwards do the fancy things like you suggested.

Do you folks think Zeus should have tag metadata entries for values that are not used by the game? For example, the three "DO NOT USE" dependency references in the ACTR tag type (these are included with the Experimental Plugins for Eschaton) and the several "unused" bitmask flag values. I don't see any point in including them, but I am adding them in so far. Give me your opinions since it really does not matter to me.
Either you are groping for answers, or you are asking God and listening to Jesus.

rEsTnPeAcEz
Veteran
Posts: 291
Joined: Sat Sep 01, 2012 12:34 pm
Location: Canada EHH

Re: [WIP] Zeus

Post by rEsTnPeAcEz » Wed Apr 03, 2013 3:16 am

If the values does stuff, then yes.

Modzy
Green Beret
Posts: 3058
Joined: Fri Feb 22, 2008 11:06 pm
Location: Portland, OR

Re: [WIP] Zeus

Post by Modzy » Wed Apr 03, 2013 10:05 am

Sparky wrote:Halo Editing Kit format ... and also in Halo Hacking Kit format.
HHK is a terrible format. It does not support Lone IDs or raw data/internal data.

Sparky
Delta Force
Posts: 4194
Joined: Wed Mar 31, 2004 8:59 pm
Location: New Jersey, USA
Contact:

Re: [WIP] Zeus

Post by Sparky » Thu Apr 04, 2013 2:43 am

Modzy wrote:
Sparky wrote:Halo Editing Kit format ... and also in Halo Hacking Kit format.
HHK is a terrible format. It does not support Lone IDs or raw data/internal data.
HHK format is Eschaton format but without the raw data partner file.

rEsTnPeAcEz wrote:If the values does stuff, then yes.
they either do nothing, do weird stuff, or crash the game.
Either you are groping for answers, or you are asking God and listening to Jesus.

Modzy
Green Beret
Posts: 3058
Joined: Fri Feb 22, 2008 11:06 pm
Location: Portland, OR

Re: [WIP] Zeus

Post by Modzy » Thu Apr 04, 2013 11:21 am

HHK uses int values to store tag information. Eschaton uses XML-style files. HHK does not support lone ID, so shader tags, bitmaps, and a few others do not import properly.

They are not similar.

Sparky
Delta Force
Posts: 4194
Joined: Wed Mar 31, 2004 8:59 pm
Location: New Jersey, USA
Contact:

Re: [WIP] Zeus

Post by Sparky » Sat Apr 06, 2013 9:18 am

http://objc.toodarkpark.net/Foundation/ ... DataObject
http://developer.apple.com/library/ios/ ... jects.html

Deciding how to read file data, but I think it might come down to the C language file handling approach, which would simply be assigning the variables I've already declared to each metadata value, and using them to display them on the window and hold the values to write to file when saving the file. Seems pretty straightforward, but I've been running around in the file archiving documentation trying to find out which class and method to use. I'm thinking that for Zeus's proprietary format, it will simply hold the values in an NSKeyedArchiver-based file, where each metadata value is assigned a key paired with it. That would mean Zeus's file format would be a property list file that includes all the data for the single Halo asset or collection of Halo assets. So the Zeus file format would be Property List (modifiable with the Property List Editor) and would consist of key-value pair entries for each metadata item of each included Halo tag, map, etc. It would be a more organized and efficient format for the Halo metadata, easily accessible and modifiable, which would mean you could modify a map or tag file inside that Zeus project with any program that can read/write text data in property list files. But then you would need to use Zeus to read in that information and translate it into an HEK or Eschaton tag or Halo map file.

Anyway, I'm at this file parsing step now. I used @property and @synthesize for each metadata variable, so now it's a matter of using those methods in the NSDocument ACTR file subclass within - (BOOL)readFromData:(NSData *)data ofType:(NSString *)typeName error:(NSError **)outError in order to set the value of each variable by stepping the file pointer to each metadata value... and then having IBOutlets for each variable to display the variables' values in the window.

Once I get all this down the first time, it will be a straight shot to do this with the other tag types. Then we'll have a basic version of Guerilla for Mac.


EDIT: I think I figured it out: http://pastebin.com/E6FZJBLm
Either you are groping for answers, or you are asking God and listening to Jesus.

Sparky
Delta Force
Posts: 4194
Joined: Wed Mar 31, 2004 8:59 pm
Location: New Jersey, USA
Contact:

Re: [WIP] Zeus

Post by Sparky » Thu May 09, 2013 11:54 pm

I appreciate nil's help with certain things we discussed. References are given where I recognized them and found them appropriate, both in the application and in the application's source code.
Either you are groping for answers, or you are asking God and listening to Jesus.

Sparky
Delta Force
Posts: 4194
Joined: Wed Mar 31, 2004 8:59 pm
Location: New Jersey, USA
Contact:

Re: [WIP] Zeus

Post by Sparky » Fri May 10, 2013 1:05 pm

First measure of success! I was able to parse the four-letter tag type name from an HEK .actor tag file and display it ("actr") in the window.
I estimate that by this weekend I should have all of the HEK actor tag type parsed so that its values show up in the window. This is read-only for now, then I add in the padded data and writing will be supported, by the end of this weekend. Then after that, it will be very very easy to finish up the rest of the tag types. After all the HEK tag types are readable and writable, I'll release an alpha version along with source code as a tutorial, complete with debugging NSLog messages.

Progress! And it's becoming much easier to understand the workflow and how these things work. It's addicting...

Screenshot of new tag type window for HEK .actor tag:
Image

Screenshot of window after opening an HEK .actor tag:
Image
note the "actr" at the bottom left of the window, which is the only value parsed from the tag thus far
Either you are groping for answers, or you are asking God and listening to Jesus.

rEsTnPeAcEz
Veteran
Posts: 291
Joined: Sat Sep 01, 2012 12:34 pm
Location: Canada EHH

Re: [WIP] Zeus

Post by rEsTnPeAcEz » Fri May 10, 2013 1:46 pm

Why is the text boxes empty? Does that mean that it will create tags from scratch like Guerilla?

Sparky
Delta Force
Posts: 4194
Joined: Wed Mar 31, 2004 8:59 pm
Location: New Jersey, USA
Contact:

Re: [WIP] Zeus

Post by Sparky » Fri May 10, 2013 3:24 pm

In the first image, the text fields are empty for that reason, where you start a new tag file and save it with your metadata values like in Guerilla.
In the second image, the text fields are empty because I did not parse those metadata values yet.

For new tag files, by default, float values will appear as 0.0 and integer values will appear as 0 and text strings will appear blank. Dependencies will show the Applications folder directory path, although at some point I'll have it so you can specify a default "tags" directory to reference instead by default, so you can start there when you choose the dependency. Values that are stored in radians will be displayed in degrees when appropriate, like they are in Guerilla. Eschaton displays them as radians, which is less intelligible.

Alpha version is when all the HEK tags have read and write capabilities. In the second version of the alpha, I plan to add tooltips to the text labels so you get information about how to use them when you hover your mouse over them. The alternative is to use a HUD window with that functionality. Alpha versions will also sport other basic things like Halo 1 map file metadata editing and Eschaton tag metadata editing.

Beta versions will include the ability to add tags to maps and save modding projects in a proprietary format for Zeus, probably consisting of NSKeyedArchiver being used in conjunction with base64 conversions and zip archival... so basically zipped xml files. Beta versions will also include xml-based text file format for importing and exporting, to complement the Eschaton and HEK tag file formats as an alternative way of exporting tag data. Data blocks will simply include exported relevant file types, such as .png for bitmap images and .obj for models and .wav for sounds.

Gamma versions should include functionalities of the HEK's Tool executable.

Delta versions should include scenario viewing and editing, the functionalities of the HEK's Sapien program. They should also include asset previewing, such as viewing bitmaps and models (with shaders applied) and hearing sounds.

Epsilon versions should conclude the inclusion of the functionalities of the HEK. These versions should add more "cool" features and ideas to the workflow so modding is more fun.

Zeta versions should incorporate internet features like the long-anticipated INCY Online, and should coordinate with BDCN web site development.

Eta versions should expand upon the internet features to further improve the workflow by having real-time multi-modding sessions, where it's almost like you are playing the game and collaboratively modding it at the same time.

Theta versions will be the final versions of Zeus and will expand to incorporate modding assets from different versions and platforms of Halo games (Halo 2, Halo 3, etc.).
Either you are groping for answers, or you are asking God and listening to Jesus.

Sparky
Delta Force
Posts: 4194
Joined: Wed Mar 31, 2004 8:59 pm
Location: New Jersey, USA
Contact:

Re: [WIP] Zeus

Post by Sparky » Sun May 12, 2013 12:00 pm

Bitmask reading/displaying works. I interpret it as an unsigned integer (uint32) from the NSData object and use "if" blocks to check bitwise equivalency with an enum definition's values which are equated to 1's at different bit positions. No need to explain that any more; you can see it in the source code when I release it. The timetable for this weekend was a little too ambitious, since i have been too tired. Once I get all the basics done with these meta data values for the first tag, I'll post the XCode project so you guys can comment on it. It's not open source until I'm done doing what I intend to do with it. Afterwards, you can feel free to play around with it or optimize it or whatever. I'm leaving in commented NSLog lines for you to see where I checked certain things along the way, and it is heavily commented as usual. This is my first application for Mac, and my first real program using Objective-C. ...ok I don't feel like talking anymore.

So yeah, displaying bitmask flags is done in the ACTR tag.

I'm going slowly because I'm learning along the way, but I have the hang of it now, so it's just a matter of reading the specifications for applicable classes and searching for methods to use.
Either you are groping for answers, or you are asking God and listening to Jesus.

rEsTnPeAcEz
Veteran
Posts: 291
Joined: Sat Sep 01, 2012 12:34 pm
Location: Canada EHH

Re: [WIP] Zeus

Post by rEsTnPeAcEz » Sun May 12, 2013 12:02 pm

You are so cool :lol:

Locked

Who is online

Users browsing this forum: Ahrefs [Bot], Bing [Bot] and 55 guests