[WIP] Zeus: Pre-alpha 1 release

Everything about HD, MD, and their mods.

Moderator: Halo Moderators

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

Re: Zeus 0.5.a

Post by Sparky » Thu Oct 18, 2012 3:56 pm

I'll add support for those later, maybe... the idea is to have the tags not break if you handle them in the HEK again to build a CE version of the map with the HEK from what you've done in Zeus.

I'm done updating the Sparky's Plugins for Eschaton that Zeus is using, to include types="" attributes with space-delimited supported tag types for that dependency entry.

I spent many hours analyzing the .sound tag type files, trying to figure out some of those values not displayed in Guerilla. Check the other topic for more info on that. Finally figured out how to get multiple permutations to work in the HEK though! ;) FINALLY... lol. I gave up two previous attempts already over a period of a couple years.
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: Zeus 0.5.a

Post by Sparky » Sat Oct 20, 2012 7:29 pm

OK dependency swapping is added.

Now since I've not yet implemented AJAX to dynamically load each part of the page, the default bloodgulch map file will end up making you download a 124MB web page... be forewarned. The huge spike in data is from having to output huge popup menu selection lists. Try it out! It's cool. Works well so far for me, but still no Firefox support, only Safari and Chrome.
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: Zeus 0.5.a

Post by rEsTnPeAcEz » Wed Oct 24, 2012 2:40 pm

Awwww... Doesn't work with Firefox and that's the main browser I use because my Safari crashes.
But I'm glad that there is reference swapping now.
One thing about Zeus, is that I'm confused with the UI, when the map is opened and I want to change a tag or reference swap. The only thing I see is tags and not the tag classes like in eschaton. Its pretty weird.

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

Re: Zeus 0.5.a

Post by Sparky » Wed Oct 24, 2012 4:08 pm

The tags and tag classes are all in a single popup menu. It lists all relevant tag types. For example, click on a shader tag like senv (search the page for "senv" using command-F to find one) then look at the dependencies listed -- they are all of the shader tags.
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: Zeus 0.5.a

Post by Sparky » Tue Dec 04, 2012 10:46 am

I'm taking a short break now, that's why the most recent version remains at 0.5.b for the past month.
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: Zeus 0.5.a

Post by Sparky » Thu Mar 07, 2013 10:15 pm

Did you folks download the archive and examine the .php files? If so, any comments?
Either you are groping for answers, or you are asking God and listening to Jesus.

Monoman
Site Admin
Site Admin
Posts: 2662
Joined: Sat Aug 16, 2003 11:26 pm
Location: Planet Bob
Contact:

Re: Zeus 0.5.a

Post by Monoman » Fri Mar 08, 2013 1:00 pm

I thought I had at some point but I don't see it. Maybe I just looked at the stuff you posted. Where is the package so I can download?
Kansas....Like Paris Hilton: White, Flat, and Easy to Enter. -- Conan O'Brien

Masturbation is like procrastination, they're both great until you realize your screwing yourself.

MGM Discord | MGM Chat
MGM Sig

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

Re: Zeus 0.5.a

Post by Sparky » Sun Mar 10, 2013 11:08 am

The latest local development archive in the Sparky's Secret Files topic.

Sparky wrote:Zeus
Latest remote archive
Latest local development archive (same version, just some additional files) for use with MAMP
As far as I can see, the most important thing it needs right now is AJAX dynamic page loading, so that when you click on a table row entry (a tag), it fetches that information and displays it on the page, rather than fetching all the page data all at once, making you download several hundred megabytes of mostly dependency swapper textual list items.

After that dynamic loading is functional, then the rest of the parsing is relatively straightforward. Values are still read-only at the moment.

I've also been looking into ways to have an upload progress bar on the first page, probably as a refreshing iframe that compares the expected file size with the current size of the file on the network disk. This involves refreshing the php cache before each filesize query in the loop. ;D
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: Zeus 0.5.a

Post by Sparky » Sat Mar 16, 2013 1:41 pm

I am frustrated that the host I'm using has been unable to give me details about when they intend to upgrade to PHP 5.4 or why they have decided not to upgrade, and I have asked a couple times since last year, getting the same response.

I'm going to switch hosting providers or somehow figure out a way to upgrade to a dedicated server (but I have no money for this). I'm unsatisfied with this and the slow operation of Mod Security while it checks uploaded files after they have finished transferring to the server through the client's web browser via HTTP.

Monoman, if you have PHP 5.4 on your setup, let me know if you'd be willing to host Zeus there.

Otherwise, I'm going to henceforth be releasing Zeus as a downloadable PHP application that can be run using the latest version of MAMP that runs PHP 5.4 (I don't know if such a version is free), or by using the Web Sharing capability via Mac OS X's System Preferences.

OTHERWISE, I could digress to developing a Mac OS X application AGAIN, maybe this time figuring out how to use Objective-C with XCode. Man, this would feel like the last year of research and self-education about Objective-C, only to determine that it was too complicated for me to understand with all its esoteric functions and libraries that you need a doctorate to remember and consider using... was a waste of time, or was not a waste of time. But before I go into a huff and rant because of my presently disappointed mood, let me simply ask if anyone is able to help with what problems I have mentioned thus far.
Either you are groping for answers, or you are asking God and listening to Jesus.

Monoman
Site Admin
Site Admin
Posts: 2662
Joined: Sat Aug 16, 2003 11:26 pm
Location: Planet Bob
Contact:

Re: Zeus 0.5.a

Post by Monoman » Sat Mar 16, 2013 2:08 pm

I currently have MGM running on 5.2 but I could be running 5.4 I just have never switched to the newer version.
Kansas....Like Paris Hilton: White, Flat, and Easy to Enter. -- Conan O'Brien

Masturbation is like procrastination, they're both great until you realize your screwing yourself.

MGM Discord | MGM Chat
MGM Sig

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

Sparky's C / Objective-C / Cocoa / OpenGL Monologue

Post by Sparky » Sat Mar 16, 2013 3:51 pm

I'm reading this C tutorial and am making progress. Things are starting to sink in now, and I can see myself coding Zeus for Mac OS X in the very near future, like starting tonight and tomorrow. Or I might take a break tomorrow after my slew of 2 months of all-nighters and messed up sleep schedules! After C, it's Objective-C, then Xcode, then OpenGL... all of these would add to my previous studies, but with the revelation that function declarations are the same thing as function prototypes, I feel like some missing puzzle pieces that bogged my mind are coming together, and I'm remembering how the way Xcode deals with the information you type in is actually convenient (whereas before I was confused why it did what it did, as my mind was sort of overloaded with information).

I was primarily confused with functions because I had mis-remembered what I learned in high school from studying C++. I had remembered that the functions were as such:

Code: Select all

function_name (variable_returned_by_this_function)
Instead, it is:

Code: Select all

function_return_datatype function_name (variable_passed_to_this_function)
Some things are probably messed up in my head right now, because I am like a dead man walking (or just sitting) in terms of fatigue.

eidt - it's conna fiel wierld going to sleep at night again.

And this means that I'm seeing why you guys were saying what you were saying about things like defining tag types as structs. Makes so much sense now, except I'll have to get more information before it makes enough sense to know exactly how to start. By the way, you can consider this post my commentary as I go along reading that C tutorial. I'll just edit this post.

I'm thinking that Sparky's Plugins are basically the starting point for structs for each tag type, where the values (including my "experimental" values) would be variables within the tag's struct, such as, off the top of my head:

Code: Select all

typedef H1FT_scen
{
    dependency [which would be another type definition] ref_mod2 [or maybe just 'mod2'];
    ...
    struct [another type definition] predefined_resources [or whatever the heck it's called, unused anyway];
    ...
    string usage [this one isn't actually in this tag type, maybe, I forgot];
}
So for datatypes like struct and dependency and loneID and, and, and... I would need to define structs for each of these.
Then, I would define structs for each tag type, using Sparky's Plugins as a reference.

I'm thinking structs are objects...
I don't know how defining structs as structs will work, though.

I'm renaming this post to "Sparky's C / Objective-C / Cocoa / OpenGL Monologue".

- Done with that; saving these for later:
http://theocacao.com/document.page/231
http://theocacao.com/document.page/234
http://cocoadevcentral.com/d/learn_objectivec/
and in general, the rest of the relevant tutorials at http://cocoadevcentral.com/

--

Starting the code by beginning with defining datatypes used in the tag metadata. I determined that, based upon my previous Plugin Writer's Guide notes, that the only datatypes that would need to be defined are:
the beginnings of [b][color=#BFFF00]datatypes.h[/color][/b] wrote:

Code: Select all

	// bitmasks

typedef struct {
	
}bitmask8;

typedef struct {
	
}bitmask16;

typedef struct {
	
}bitmask32;

	// colors

typedef struct {
	
}colorbyte;

typedef struct {
	
}colorRGB;

typedef struct {
	
}colorARGB;

	// references

typedef struct {
	
}dependency;

typedef struct {
	
}index;

typedef struct {
	
}loneID;

	// struct (reflexive chunks) -- might not need this type, use 'struct' instead?

typedef struct {
	
}reflexive;
I would include that datatypes.h header file at the top of each header file that parses a tag, like scen.h for parsing scen tags. Once the tag parsing files are done, I would include each halo tag parsing file in yet another header file, which would be used as a singular reference for all the Halo1-related map file actions. These files would be bundled into a Framework, and updated versions of the Framework would add support for different versions of map files, such as Halo 2, Halo 3, etc.

So right now, I'm working on a framework for parsing Blam! engine data files related to Halo games. I have not been able to figure out what a "library" is, but I'd say that it's actually a Halo file parser library that I'm trying to figure out how to do now, which would be bundled in a framework along with some documentation for how to use it with a program like Zeus afterwards.
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: Zeus

Post by Sparky » Fri Mar 22, 2013 1:41 pm

Alright, I watched all 65 of these amazingly simple video tutorials, and I think I'm pretty much ready to go get my hands messy with some Zeus code. First, I'm going to take a quick break and review the other tutorials I have which were confusing before but should now be mere reviews. Then, I dive in.

I think for the first, and simplest, task, I plan to write a Mac program that is equivalent to Guerilla in the HEK. Or more specifically, Zeus' functionality will be simply the ability to read and write HEK tag files. This alone should give us some cross-compatibility with Halo Custom Edition map development that Eschaton does not currently provide.

So the first step is to finish up these tutorials, then to write Zeus so that it can edit individual tags that can be compiled with Tool in the HEK. I should probably start with the most basic tag type first: scen (.scenery) files. I'd like to add some more features like displaying both the written data values (like values in radians) alongside the interpreted data values (like values in degrees). At some point, I'll have QuickTime handle audio and image file data so you can play .wav audio files and display .png files from within the program. I think that's quite a bit ahead of myself presently, so let's wait and see how it goes.
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: Zeus

Post by Sparky » Sat Mar 23, 2013 6:22 am

I'm going through this list of C/Obj-C/Cocoa tutorials: viewtopic.php?p=216699#p216699
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: Zeus - release - pre-alpha ui demo 1

Post by Sparky » Sat Mar 23, 2013 3:44 pm

Here is the pre-alpha ui demo 1, in case you'd like to sample the file associations for the Halo Editing Kit tag types, which is what I'm working on first, and to get an overall impression of what I'm working on presently.

Each tag type is a subclass of NSDocument, but I have a question: how should I code it so that each subclass of NSDocument uses a different window interface, based upon the type of document you have? Do I need to add multiple .xib files, or do I need to add multiple types of windows inside a single .xib file? (I think the second is possible, but I think the first approach would be easier since you would have one default document type per interface file. I'll be working with a lot of file types here, as you can see from this demo: over 100 file types. Right now, there are 85 file types supported.)

I'm going for functionality that Guerilla has, where you can start new HEK tags, modify them, save them, open them, etc. And after that, I'll work on some additional features like sound playback from within the sound / sound looping tags, and bitmap image previewing from within the bitmap tags... and eventually model viewing from within the mod2 and sbsp tags.

But first, it's just getting this simple tag file parsing done, which I already have the information about from Sparky's Eschaton Plugins. And as you can see from the interface, I'm just focusing on tag handling right now. I can deal with map files later.

http://www.halodemomods.com/sparkys_sec ... demo_1.zip

Nice icon, right?

Um... my monitor is freaking out... I might have a problem here. EDIT: Just a loose connection on the power transformer. Fixed ;)

Anyway, time for a break, been at this for a few days now. I'll finish up the Objective-C and Cocoa tutorials and then give a status update.

EDIT: Updated the release with some additional icons for current file types:

Halo Editing Kit Tags:
Image

Halo Map Files:
Image

Zeus Project Archives:
Image

Zeus:
Image
The Zeus icon background glow color changes with each major release, starting with Red.

These are all mere sidejobs whilst I take my 'break', lol.
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 » Sat Mar 30, 2013 7:58 pm

When you run Zeus for the first time, you will need to open up Terminal and run this command:

Code: Select all

mdutil -E /
This will reset your Spotlight file type information, most notably, your files' UTI strings. Halo map files and assets are currently unknown to your system, and have received Dynamic UTI strings by the system; so in order for you to use the UTI strings that Zeus wants your system to use for the Halo file types, you will need to run that command in Terminal first. Zeus will enable your system to better understand and handle the Halo file types. For example, your system will be able to distinguish between a Halo 1 Mac Full map file and a Halo 1 Mac Demo map file, etc. This means that you will no longer be limited to a simple ".map" extension referring to a simple "Halo Map File" file kind. Now, you get descriptive file kinds, such as:

Halo Editing Kit Actor Tag (actr)
Halo Editing Kit Actor Variant Tag (actv)

...and so on, with their respective UTI entries visible by typing the following into Terminal:

Code: Select all

mdls <filepath>
...such as:

Code: Select all

kMDItemContentCreationDate     = 2013-03-23 11:34:08 -0400
kMDItemContentModificationDate = 2013-03-23 11:34:08 -0400
kMDItemContentType             = "com.gearbox.haloeditingkit.tag-actr"
kMDItemContentTypeTree         = (
    "com.gearbox.haloeditingkit.tag-actr",
    "public.data",
    "public.item",
    "public.content"
)
kMDItemDisplayName             = "untitled tag.actor"
kMDItemFSContentChangeDate     = 2013-03-23 11:34:08 -0400
kMDItemFSCreationDate          = 2013-03-23 11:34:08 -0400
kMDItemFSCreatorCode           = ""
kMDItemFSFinderFlags           = 0
kMDItemFSHasCustomIcon         = 0
kMDItemFSInvisible             = 0
kMDItemFSIsExtensionHidden     = 0
kMDItemFSIsStationery          = 0
kMDItemFSLabel                 = 0
kMDItemFSName                  = "untitled tag.actor"
kMDItemFSNodeCount             = 0
kMDItemFSOwnerGroupID          = 20
kMDItemFSOwnerUserID           = 501
kMDItemFSSize                  = 1336
kMDItemFSTypeCode              = ""
kMDItemKind                    = "Halo Editing Kit Actor Tag (actr)"
kMDItemLastUsedDate            = 2013-03-30 23:24:17 -0400
kMDItemUsedDates               = (
    "2013-03-30 00:00:00 -0400"
)
...most notably, these:

Code: Select all

kMDItemContentType             = "com.gearbox.haloeditingkit.tag-actr"
kMDItemContentTypeTree         = (
    "com.gearbox.haloeditingkit.tag-actr",
    "public.data",
    "public.item",
    "public.content"
)
kMDItemKind                    = "Halo Editing Kit Actor Tag (actr)"
...and even more detailed entry information such as that visible while using the system extension RCDefaultApp:

Code: Select all

com.bungie-macsoft.halo1macfull.map-scenario
Halo 1 Combat Evolved Mac Retail Scenario Map
Extensions: map

Code: Select all

com.gearbox.haloeditingkit.tag-actr
Halo 1 Combat Evolved Halo Editing Kit Actor Tag
Extensions: actor
All of that information saved with each Halo map and asset instead of the useless "Halo Map" or "Halo Map File" file kinds.

I'm also giving you a quick preview screenshot of the first file type I'm doing, the ACTR tag type in the HEK tag format:

Image
Image

About the interface layout, I started by having it all vertical, but then realized my dislike for having inner scroll views among outer scroll views, so I decided to have the layout horizontally for the outer scroll views. Here, I have the window maximized so you can see the overall layout, but the minimum view size is enough to show one block area at a time. I'm considering consolidating the two rightmost blocks so they are just one block now, but that would mean you wouldn't do as well with a screen size of 640x480... but 1024x768 would be alright, I think.
Either you are groping for answers, or you are asking God and listening to Jesus.

Locked

Who is online

Users browsing this forum: No registered users and 41 guests