Welcome to Open Carnage

A resource for gamers and technology enthusiasts, with unique means of rewarding content creation and support. Have a wander to see why we're worth the time!

Sign in to follow this  
Followers 0
002

Halo in 60 FPS

Members of Open Carnage never see off-site ads.

8 hours ago, Skeezix the Cat said:

Just curious, how is campaign function changed by this?

Some biped animations completely break. Since the tick rate has been doubled, scripts that rely on a set number of ticks for functioning also break. This is noticeable when you play levels such as the Silent Cartographer as you get dropped into the middle of the ocean.

 

Basically, it's unplayable. You'd need to recompile all of the campaign scripts to use the new tick system.


status.png?customhost=ProtonNebula.com:1
competent.png

Share this post


Link to post
Share on other sites

Please don't take this the wrong way, as I did just register to comment on this and by no means want to shit on what you are doing, but this method while looks good in videos is problematic in that it severely bloats the map.

 

For SP, you are faced with the tradeoff of less content and possible stability (depending on what methods you are using), while MP's already highly restrictive content thresholds make it a problem for people who want to do more than the stock tagset 60fps'd up. 

 

That said, it is super cool that with this method you can literally just plop in a 60 FPS version of a map, and play it with no sort of user interaction to enable it. I suppose you need a way to set the game speed back to 1 after you quit, so I will keep this in mind for whenever a new version of the UUI is released, and the community should be vigilant in informing the creators of any new UI's in development to set it back to game speed 1 as well.

 

If you are ever interested in seeing how far this can be pushed, I can spin you off a private version of the SPV3 tagset and see if any of the more challenging maps could possibly be ported to 60 FPS. I do wonder though how AI logic would translate over, I remember looking into it at one point and being put off by something in it. 

Tucker933 likes this

Share this post


Link to post
Share on other sites
2 hours ago, Masterz1337 said:

Please don't take this the wrong way, as I did just register to comment on this and by no means want to shit on what you are doing, but this method while looks good in videos is problematic in that it severely bloats the map.

 

For SP, you are faced with the tradeoff of less content and possible stability (depending on what methods you are using), while MP's already highly restrictive content thresholds make it a problem for people who want to do more than the stock tagset 60fps'd up. 

 

That said, it is super cool that with this method you can literally just plop in a 60 FPS version of a map, and play it with no sort of user interaction to enable it. I suppose you need a way to set the game speed back to 1 after you quit, so I will keep this in mind for whenever a new version of the UUI is released, and the community should be vigilant in informing the creators of any new UI's in development to set it back to game speed 1 as well.

 

If you are ever interested in seeing how far this can be pushed, I can spin you off a private version of the SPV3 tagset and see if any of the more challenging maps could possibly be ported to 60 FPS. I do wonder though how AI logic would translate over, I remember looking into it at one point and being put off by something in it. 

There are far more problems than just stability in terms of the single player map due to scripts depending on tick rate for timing, which means things will occur twice as fast unless the original scripts are modified.

 

The AI logic works fairly well, actually. Covenant biped animations get wonky though, but I suspect that's due to the limitations of doubling animations frames programmatically without recompiling the animation tag rather than using native 60 FPS animations.

 

The game's allocated memory can hold up to 22.75 MiB of tag data (almost 24 million bytes), including the currently loaded BSP (only one is loaded at a time fortunately). While I can't change this without changing how Halo works, I can allow for tag data to be managed by something other than Halo as demonstrated in my Sapphire extension for HaloMD which allows most Custom Edition maps to run on the Mac version of Halo without modification to the map file (meant to be used in conjunction with Samuco's Halo+ extension which allows the Mac version of Halo to join Halo Custom Edition games). What Sapphire does mostly emulates what Halo Custom Edition does - it loads tag data from bitmaps.map, sounds.map, and loc.map then references them in the tag's memory offsets located in the tag array, though Sapphire has the added effect of also resolving English Custom Edition bitmaps and sounds offsets to the English version of Halo PC's offsets.

 

game_speed doesn't really work in multiplayer servers likely due to the same networking issues experienced when manually changing the tick rate. Instead, I had to change the game's internal 30.0 constant to get this to work successfully. This means Halo is running at 60 ticks per second x 1.0 rather than 30 ticks per second x 2.0. This allows things like detonation timers that use seconds rather than tick rate to work normally.

 

And yes, it does bloat the map, and by a metric fuck ton, which is unfortunately another problem. Stock Halo PC's Blood Gulch's file size increases from 13.7 MiB to 17.6 MiB (approximately 22.2%), with the tag data usage increasing from 6.829 MiB (including the BSP) to 9.793 MiB, leaving you with only 12.957 MiB (56%) of remaining space for your tag data. On Custom Edition, you do save a couple megabytes thanks to stock bitmaps, sounds, unicode string tags, and a few other tags not being loaded from the map file. Custom assets could far more easily come close to meeting this limit.

Tucker933, Skeezix the Cat and WaeV like this

status.png?customhost=ProtonNebula.com:1
competent.png

Share this post


Link to post
Share on other sites

What kind of animation problems do you have? It also occurs to me that no recorded animations would successfully work with this method too. 

 

The games memory constraints change on what can be loaded depending on if it's SP, MP or UI. Bitmap data does not get "counted" when a single player map is compiled in tool, while it will in MP. UI is also weird in that the memory limits can be bypassed without crashing, but maybe that's due to the minuscule size of the BSPs.

 

Unfortunately, it doesn't like there are to many walls up against this to make it a feasible process for map designers going forward. 

Share this post


Link to post
Share on other sites
2 hours ago, Masterz1337 said:

What kind of animation problems do you have? It also occurs to me that no recorded animations would successfully work with this method too. 

 

The games memory constraints change on what can be loaded depending on if it's SP, MP or UI. Bitmap data does not get "counted" when a single player map is compiled in tool, while it will in MP. UI is also weird in that the memory limits can be bypassed without crashing, but maybe that's due to the minuscule size of the BSPs.

 

Unfortunately, it doesn't like there are to many walls up against this to make it a feasible process for map designers going forward. 

Sometimes the animations won't play or they'll explode into fire. Some overlay animations will no longer function properly, which is why I don't have it working for overlay animations. I am considering a ticket bounty for 60 FPS animations on a tag-by-tag basis, however.

 

Some recorded animations work, but some sequences will result in a game freeze or other glitches. One time, A10.map has Cortana repeatedly saying "No one could have missed the hole we tore in subspace." Having proper 60 FPS animations and scripts will fix this. However, few people will actually be willing to go and redo the campaign animations, so for the foreseeable future, I'm not going to consider campaign a priority.

 

I could fill any map all the way to 384 MiB, the maximum size for a cache file before Halo gives up on it, with bitmaps and sounds and it will still work regardless of multiplayer, single player, or UI.map, and this is due to the fact that bitmaps and sounds aren't mapped into the 0x40440000 - 0x41B00000 region. I can even disable the 384 MiB limit and load a map file all the way to 2 GiB before Halo can no longer load it properly, and it'll probably still open. The issue here is the small region we get for tag data which is that 0x40440000 - 0x41B00000 region in memory.


status.png?customhost=ProtonNebula.com:1
competent.png

Share this post


Link to post
Share on other sites
4 hours ago, 002 said:

Sometimes the animations won't play or they'll explode into fire. Some overlay animations will no longer function properly, which is why I don't have it working for overlay animations. I am considering a ticket bounty for 60 FPS animations on a tag-by-tag basis, however.

 

Some recorded animations work, but some sequences will result in a game freeze or other glitches. One time, A10.map has Cortana repeatedly saying "No one could have missed the hole we tore in subspace." Having proper 60 FPS animations and scripts will fix this. However, few people will actually be willing to go and redo the campaign animations, so for the foreseeable future, I'm not going to consider campaign a priority.

 

I could fill any map all the way to 384 MiB, the maximum size for a cache file before Halo gives up on it, with bitmaps and sounds and it will still work regardless of multiplayer, single player, or UI.map, and this is due to the fact that bitmaps and sounds aren't mapped into the 0x40440000 - 0x41B00000 region. I can even disable the 384 MiB limit and load a map file all the way to 2 GiB before Halo can no longer load it properly, and it'll probably still open. The issue here is the small region we get for tag data which is that 0x40440000 - 0x41B00000 region in memory.

 

You've actually filled one up to 2gb? For SPV3 I believe our largest is like 300mb with our bitmaps.map being just about a gig, and sounds being around 400 iirc. 

 

As far as campaign goes, there is a new campaign project in the works which wouldn't be reliant on existing animations and recorded animations, so if you do get it working I know that group would love to do it all at 60 FPS. 

Share this post


Link to post
Share on other sites
2 hours ago, Masterz1337 said:

You've actually filled one up to 2gb? For SPV3 I believe our largest is like 300mb with our bitmaps.map being just about a gig, and sounds being around 400 iirc. 

 

As far as campaign goes, there is a new campaign project in the works which wouldn't be reliant on existing animations and recorded animations, so if you do get it working I know that group would love to do it all at 60 FPS. 

I suppose bitmaps.map, sounds.map, and loc.map aren't cache files and thus they aren't subjected to the same file size limitations that a cache file would be.

 

Making Halo run in 60 ticks per second requires some changes to the map (I wrote a tool which fixes all of these things in a map file except for 60 FPS animations):

  • Halve vehicle velocity and reduce acceleration to 25%, flipping velocity, and powered seats
  • Halve projectile's velocity (initial velocity is how far the projectile travels when it's spawned then is immediately set to the final velocity, effectively making initial velocity a hitscan)
  • Halve player velocity and reduce acceleration to 25%
  • Halve weapon heat loss per second - this is affected by the tick rate for some reason
  • Halve grenade velocity, flying velocity (25% for acceleration), jump height, and fall damage velocities (there are four floats - soft landing, hard landing minimum, hard landing maximum, and death)
  • Use 60 FPS animations

 

Making Halo run in 60 ticks per second requires a couple changes to the engine:

  • Change Halo's tick rate to 60. Networking breaks down if you make Halo run faster at 35 ticks per second or higher, which is a problem I've yet to fully solve
  • Reduce Halo's gravity to 25%.

 

Basically, all functions of velocities have to be reduced to 50%. All accelerations, because they're velocities of velocities, have to be reduced to 25%.


status.png?customhost=ProtonNebula.com:1
competent.png

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.