[WIP] Zeus: Pre-alpha 1 release
Moderator: Halo Moderators
-
- Veteran
- Posts: 291
- Joined: Sat Sep 01, 2012 12:34 pm
- Location: Canada EHH
Re: [WIP] Zeus
Is this able to edit Eschaton tag types?
- RIPz, a user and modder for Halo Demo PPC and for HaloMD.
► Youtube https://www.youtube.com/user/rEsTnPeAcEz
► Facebook https://www.facebook.com/groups/HaloDemoGroup/
http://www.facebook.com/timstutorialsgaming
http://www.facebook.com/cfb101
► Youtube https://www.youtube.com/user/rEsTnPeAcEz
► Facebook https://www.facebook.com/groups/HaloDemoGroup/
http://www.facebook.com/timstutorialsgaming
http://www.facebook.com/cfb101
Re: [WIP] Zeus
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.
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.
-
- Veteran
- Posts: 291
- Joined: Sat Sep 01, 2012 12:34 pm
- Location: Canada EHH
Re: [WIP] Zeus
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.
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.
- RIPz, a user and modder for Halo Demo PPC and for HaloMD.
► Youtube https://www.youtube.com/user/rEsTnPeAcEz
► Facebook https://www.facebook.com/groups/HaloDemoGroup/
http://www.facebook.com/timstutorialsgaming
http://www.facebook.com/cfb101
► Youtube https://www.youtube.com/user/rEsTnPeAcEz
► Facebook https://www.facebook.com/groups/HaloDemoGroup/
http://www.facebook.com/timstutorialsgaming
http://www.facebook.com/cfb101
Re: [WIP] Zeus
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.
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.
-
- Veteran
- Posts: 291
- Joined: Sat Sep 01, 2012 12:34 pm
- Location: Canada EHH
Re: [WIP] Zeus
If the values does stuff, then yes.
- RIPz, a user and modder for Halo Demo PPC and for HaloMD.
► Youtube https://www.youtube.com/user/rEsTnPeAcEz
► Facebook https://www.facebook.com/groups/HaloDemoGroup/
http://www.facebook.com/timstutorialsgaming
http://www.facebook.com/cfb101
► Youtube https://www.youtube.com/user/rEsTnPeAcEz
► Facebook https://www.facebook.com/groups/HaloDemoGroup/
http://www.facebook.com/timstutorialsgaming
http://www.facebook.com/cfb101
Re: [WIP] Zeus
HHK is a terrible format. It does not support Lone IDs or raw data/internal data.Sparky wrote:Halo Editing Kit format ... and also in Halo Hacking Kit format.
Re: [WIP] Zeus
HHK format is Eschaton format but without the raw data partner file.Modzy wrote:HHK is a terrible format. It does not support Lone IDs or raw data/internal data.Sparky wrote:Halo Editing Kit format ... and also in Halo Hacking Kit format.
they either do nothing, do weird stuff, or crash the game.rEsTnPeAcEz wrote:If the values does stuff, then yes.
Either you are groping for answers, or you are asking God and listening to Jesus.
Re: [WIP] Zeus
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.
They are not similar.
Re: [WIP] Zeus
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
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.
Re: [WIP] Zeus
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.
Re: [WIP] Zeus
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:
Screenshot of window after opening an HEK .actor tag:
note the "actr" at the bottom left of the window, which is the only value parsed from the tag thus far
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:
Screenshot of window after opening an HEK .actor tag:
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.
-
- Veteran
- Posts: 291
- Joined: Sat Sep 01, 2012 12:34 pm
- Location: Canada EHH
Re: [WIP] Zeus
Why is the text boxes empty? Does that mean that it will create tags from scratch like Guerilla?
- RIPz, a user and modder for Halo Demo PPC and for HaloMD.
► Youtube https://www.youtube.com/user/rEsTnPeAcEz
► Facebook https://www.facebook.com/groups/HaloDemoGroup/
http://www.facebook.com/timstutorialsgaming
http://www.facebook.com/cfb101
► Youtube https://www.youtube.com/user/rEsTnPeAcEz
► Facebook https://www.facebook.com/groups/HaloDemoGroup/
http://www.facebook.com/timstutorialsgaming
http://www.facebook.com/cfb101
Re: [WIP] Zeus
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.).
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.
Re: [WIP] Zeus
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.
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.
-
- Veteran
- Posts: 291
- Joined: Sat Sep 01, 2012 12:34 pm
- Location: Canada EHH
Re: [WIP] Zeus
You are so cool
- RIPz, a user and modder for Halo Demo PPC and for HaloMD.
► Youtube https://www.youtube.com/user/rEsTnPeAcEz
► Facebook https://www.facebook.com/groups/HaloDemoGroup/
http://www.facebook.com/timstutorialsgaming
http://www.facebook.com/cfb101
► Youtube https://www.youtube.com/user/rEsTnPeAcEz
► Facebook https://www.facebook.com/groups/HaloDemoGroup/
http://www.facebook.com/timstutorialsgaming
http://www.facebook.com/cfb101
Who is online
Users browsing this forum: Ahrefs [Bot] and 48 guests