Welcome to Open Carnage

A resource for Halo Custom Edition and MCC modding, with unique means of rewarding content creation and support. Have a wander to see why we're worth the time! - EST. 2012

Sign in to follow this  
Followers 0
ST34MF0X

TiaraCE

41 posts in this topic

Tiddy-bits:

Quick update! I've listed a few of the people in our task list/road map. This should better indicate progress to the public. Link is in the original post. 

Tucker933 likes this

Founder and current project lead of the TiaraCE project.

Share this post


Link to post
Share on other sites

Here are a few changes since the last time I posted in this topic:

  • .scenario_structure_bsp tags are now parsed (as much as what Guerilla's tag data reveals; I may go back and look for hidden values later)
  • Compressed Xbox maps are now supported. The map data will be decompressed (inflated) upon being opened.
WaeV and ST34MF0X like this

Share this post


Link to post
Share on other sites

New features:

  • To go along with being able to decompress Xbox maps, you can now compress cache files using the TiaraMap::compress() function, which then it returns a std::vector<char> with the compressed map. Because the Xbox version of Halo uses the DEFLATE algorithm, you can expect a similar filesize reduction as if you compressed it in a .gz or .zip file, and you can also specify a compression level (-1 [default (6)]; 0 [no compression; fastest] - 9 [best compression; slowest]).
    • This function will also work for Halo PC maps, but neither the retail nor Custom Edition versions of the game support compressed cache files and will result in an exception error should you try to load such a map. However, this map parser should load such maps.
  • I've added a function for calculating the CRC32 checksum of maps. Knowing the CRC32 is required for the Halo Custom Edition netcode in order to join servers. This function does not currently work with Xbox maps and will throw a TiaraMapUnimplementedException() if you use it with one.
     

More changes:

  • There is no longer a separate function for loading Xbox maps. The same constructor is used as the PC map.
  • TiaraMap::get_tag() now returns a reference instead of a pointer, and the tag parsing functions now use this instead of pointers.
  • I've made some minor changes to the functions. TiaraMap::cache_file_header() and the TiaraMap::tag_data_header_*() functions now return const pointers and are const functions, similar to TiaraTag::tag_header().
  • I've corrected some issues that were preventing the map parser from building on clang without warnings. Although I've always tested the repository regularly with these flags: "-Wall -Werror -Wextra -pedantic-errors", I've only been using gcc. It seems clang can be a bit more strict for some things, so I'm now using both toolchains.
  • Internally, the TiaraMap function now uses smart pointers instead of raw pointers. Before, I used raw pointers to allow the caller to manage the memory themselves, potentially improving performance. However, giving this level of control is highly unsafe, and some features won't even work (decompression, for instance, requires allocating a separate buffer).
ST34MF0X, Tucker933 and WaeV like this

Share this post


Link to post
Share on other sites

So as far as modding existing maps go, would everything be done similarly to regular Custom Edition?  How about exception errors?  I'd imagine they would still be a thing because any engine can be broken, but would it be possible to get more information on what exactly is going wrong?

ST34MF0X likes this

oVoXWXc.png

Share this post


Link to post
Share on other sites
22 hours ago, Skeezix the Cat said:

So as far as modding existing maps go, would everything be done similarly to regular Custom Edition?  How about exception errors?  I'd imagine they would still be a thing because any engine can be broken, but would it be possible to get more information on what exactly is going wrong?

Great questions! 

Yes, the editing will be somewhat similar to how things already worked, but just a bit more streamlined and less limited. As for exceptions 002 has already implemented far better exception handling than stock Halo CE has. Basically, if you were playing using the client and an exception occurs, the game will jump to the UI map instead of outright crashing. 

Skeezix the Cat likes this

Founder and current project lead of the TiaraCE project.

Share this post


Link to post
Share on other sites
On 11/27/2017 at 8:55 AM, Skeezix the Cat said:

So as far as modding existing maps go, would everything be done similarly to regular Custom Edition?  How about exception errors?  I'd imagine they would still be a thing because any engine can be broken, but would it be possible to get more information on what exactly is going wrong?

Stock Halo crashes when it gets a segmentation fault due to a broken map. This is easy to happen with Halo because it trusts that the map isn't broken and that everything maps perfectly in memory (hence the name "cache file"). I understand this gets to be a broken system when you start throwing in modding.

 

One of the goals with the map parser is to prevent segmentation faults from occurring. Therefore, it will not map the cache files to memory but interpret pointers into offsets. This is a lot slower, but it's also a lot safer, because access violations can be handled before they would have begun. Therefore, if a map would normally crash or not load properly, TiaraCE can simply handle the error, then clean everything up and quit to the main menu rather than crash.

 

Some exception errors may not be more useful than just saying the type of exception, but some errors, such as the TiaraReflexiveChunkOutOfBounds error which occurs when trying to access an invalid chunk, may be able to provide information about what tag was improperly accessed, which TiaraCE can then output into an error log while it's handling the error.

Skeezix the Cat and ST34MF0X like this

Share this post


Link to post
Share on other sites
4 hours ago, Skeezix the Cat said:

Awesome :) also, just curious but will you make new modding tools?  If not full replacements, then just something that can help take advantage of new engine features? 

Since TiaraCE is an open-source project, the codebase can be used by the community to create anything they wish. This includes a whole new generation of modding and mapping tools. We could even open a repository for these tools and call it the Tiara Editing Kit, or TEK for short.

Pfhunkie and Skeezix the Cat like this

Founder and current project lead of the TiaraCE project.

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!


Register a new account

Sign in

Already have an account? Sign in here.


Sign In Now
Sign in to follow this  
Followers 0
  • Recently Browsing   0 members

    No registered users viewing this page.