Hey, DeadHamster. I want to answer your questions now because it's impolite to keep you waiting for answers... but this regards prospective goals, not what I already did here as of today. In fact, I'm taking a few days for chores I did not complete because of time spent on this project instead.
"Any compatibility for PC users?"
I plan to go back and take another swing at a C# application once this Objective-C application is useful.
"This program edits the tags in Guerilla format? What alternative is there for mac users to Tool for compiling these assets?"
I thought about storing tags in maps rather than as thousands of files in a directory tree. I consider the HEK tag format to be the genuine format for tags; I design silence to show all bytes in a file. It does not currently validate data, although it should already be easy to see in the user interface when something "doesn't look right", such as when an opened tag file is of incorrect length or has some weird metadata entry value. If you open a tag, then save it again without changing anything, the tag data is actually parsed and reconstructed, not simply duplicated in whole, which is why the binary equivalency indicates correct writing to disk functionality when starting with the parsed amount of bytes. When you start a new tag in silence, the correct header is provided, and the CRC32 is calculated. The goal is to let you modify and save to disk whatever bytes you want, as you specify them. When you open a tag, nothing is changed outright -- the future feature of "fixing" broken tags to make them able to be opened by Guerilla would not require you to see the tag data in a window, but would be a deliberate menu action to process all tags in a specified directory. (I can use my C structs for that, which makes it much faster!)
Correcting tag data would include generating the correct tag header (which is something other community-designed programs might neglect to do, and even some of the default HEK tags have incorrect header data), limiting the chunk array entry counts to their maximums supported by Guerilla, fixing dependency tag pathname string lengths, and whatever else you would need in order to be able to actually open the tag in Guerilla. Early considerations of a simple heuristics system for metadata value integrity I maintain while developing features; for example, floats (singles) are 24-bit, so the maximum and minimum number ranges for floats are +- 1 << 24 , which means that anything outside that range is obviously not intended to be a float value, giving a demarkation of probable data corruption or additional consideration for data parsing. (Like if you have an array count of 5 but there are only 2 entries.) I also consider the byte-alignment padding bytes, so that any confirmed padding bytes parsed that are non-zero bytes would also possibly trigger a metadata integrity heuristics function. Of course, it wouldn't check for data integrity using a pattern of heuristics if a tag format has a fixed number of bytes and the same number of bytes is present in the file. Instead, you could simply see that the entries were weird. But something like having C strings in a tag that do not include null terminating bytes would definitely trigger a heuristics correction, to an extent, including the fact that only up to the maximum supported string length (255 bytes) would be a "possible string" while in the heuristics I would probably break at the first non-ASCII character, even though it's working with UTF-8, and I would also negotiate that to try to fit the bytes into the expected tag file length and also coordinated with heuristics issues parsing adjacent bytes.
But if you just use silence, you will never have tag data corruption problems caused by using community-designed applications. (The HEK+ is valuable today, but antiquating applications are being designed. Silence will antiquate the HEK and HEK+, and probably every other Halo modding application I've seen. That is the goal: to do it correctly, and better than has been done.)
The program is designed modularly, so the speed of its development increases. In fact, I might spend only another day or two to design chunk display, then another day for finishing the interface strings plist file, then another day for finishing the object definitions -- or sooner, if I use grep. So I'd say less than a week of development time until all the tag files are supported. But as I said, I have other chores to accomplish before I get back to this software design.
The HEK works on Mac, and you can see that I use Guerilla with WINE. Tool can be used with Wine Staging. Simply cd to the directory where Tool is located, then issue "wine tool.exe <commands>". Sapien needs some extra consideration to work properly with WINE; I haven't gone and done that. Silence will not use Tool unless I have to throw in the towel. Instead, it will contain all the functionality of the HEK and more, as you can already see in the first beta test release.
I'd also like to mention that some other people are working on a different project to produce .scenario tags straight from 3DS Max. I think that's a cool project. In any case, silence will let you also view and modify .scenario tags similarly to Sapien. I haven't gotten into the OpenGL rendering yet, but I dabbled during Zeus. Others in the community have much more experience with Halo and 3D rendering, but I know this has been an independent learning experience.
That should also answer all your related questions.
More information:DiscordMac Gaming Mods forum topicBatch tag file correction, a map file containing every commercial Halo tag (similar to my old Incyclopedia map files that I generated using Eschaton for the MGM community), and consequently, a single file and directory download as a resource for all commercial Halo tags, are expectable features.
This is my immediate goal for this project: to provide definitive, working tags so that you can literally just "file -> save as" a map functionally equivalent to each Halo PC campaign map, so you don't have to futz with borked tags or maps, or use Pearl or Harbinger or some other application to convert a map between Halo Custom Edition and Halo PC / HaloMD and Halo Trial / Halo Demo formats.
"But we can do everything already just fine!"
Tell that to the person who sees red open edge errors. Tell that to the person waiting days for their light maps to finish baking. Tell that to the person newly-interested in modding but who doesn't want to, or can't figure out how to, use the HEK. And none of what we have now is as simple as "file -> save as" to make a Halo map. No more Tool errors, anyone? ;-)
I know some of you will be wondering why I'm doing this now rather than doing it as my old Zeus project as I originally released back in 2013
, and wondering why I waited so long
. Well, it's been all these years and nobody else came out with a definitive application like I said I would be doing with Zeus, so here it is
!this is all part of my larger project to remake the game engine, which is especially relevant to Mac users because Apple does not want to support 32-bit processes anymore. and did you know that holding down the scroll bar in a Halo dedicated server console window lags the server? what's up with that? so silly how it only uses one thread for everything. but shhh... don't spoil the surprise... I haven't told anyone else yet.Edited by sparky on May 10, 2018 at 11:33 AM