Skip to content

Releases: BigBang1112/gbx-net

GBX.NET 2.4.2

11 Apr 23:08
dfa94b9

Choose a tag to compare

  • Fixed write of LightmapCache when discovered
  • Fixed TMUnlimiter write in vanilla mode
  • Improved various ToStrings
  • Added checks for the number of nodes
  • Added more attributes to various properties
  • CGameCtnChallenge.Checkpoints is now List

Assets were automatically generated using the publish workflow.

GBX.NET 2.4.1

04 Apr 16:05
dfbe216

Choose a tag to compare

  • Fixed sample reading of TMF and older versions
  • Added TryCreateChunk
  • Implemented CControlList 0x007
  • Slightly reduced allocation size of BoundedStream
  • Fixed CCtnMediaBlockUiTMSimpleEvtsDisplay to inherit CGameCtnMediaBlockUi

Assets were automatically generated using the publish workflow.

GBX.NET 2.4.0

04 Apr 12:50
7ed798a

Choose a tag to compare

  • Added support for modifying ghost samples (CPlugEntRecordData and CGameGhost.Data classes)
    • Individual sample data is now stored as integers and bytes to avoid possible floating point issues
    • Previous values are directly mapped from those integers and bytes in real time (small performance cost of retrieving them)
    • To have an interface reaching the raw data, cast to CSceneVehicleCar.ISampleRawData or CSceneVehicleVis.IEntRecordDeltaRawData
    • Support ranges from roughly TMO to TM2020
  • Added TMUnlimiter support for all of its versions
    • The object tree is not 100% ideal yet, but it is working as expected
    • Some older TMUnlimiter tracks reexported in 2.0 may not work yet, that's expected and to be resolved later
    • Any tracks containing AngelScript bytecode cannot be parsed properly due to a mistake in the TMUnlimiter serializer not providing a length prefix, slim chances this is gonna get resolved
  • Added full Profile.Gbx support for ManiaPlanet and TM2020
    • CGamePlayerProfile recognizes all profile chunks
    • CGameUserProfile parses successfully for the latest TM2020 Gbx, but misses most of the namings
  • Added full CHmsLightMapCache support
    • In CGameCtnChallenge, it is thread-safe lazy-loaded upon accessing most of the lightmap properties
  • Removed all special explicit parse features (it is just a cast now)
    • This change reduces code size and makes CPlugFileGen parse possible for the cost of less trimming capabilities and a small performance cost
  • Implemented support of VehicleTunings.Gbx for TM2020
  • Refactored CompressedData to ZlibData
    • Newly has Exception property to track errors that aren't disastrous to the parse
    • Also includes Parsed, which is used to handle lazy-loading features
  • Added RawData, which works similarly to ZlibData but without compression tracking
    • Some raw encapsulated data is available: CGameCtnChallenge.ZoneGenealogyData, CGameCtnReplayRecord.ChallengeGbxData
  • CGameCtnChallenge.ZoneGenealogy is now lazy-loaded - improves initial parse speed for TM2+
  • Inputs from TMS, TMNESWC, and TMO have been moved from CGameCtnReplayRecord.Inputs to the first ghost's CGameCtnGhost.Inputs
    • CGameCtnReplayRecord.Inputs had to stay due to TM1.0 storing the whole binding configuration with it before the ghost is parsed
  • Reworked ChunkSet system to be more consistent and reliable
    • Internally, there's no sorting applied
    • Each added chunk is stored in multiple hashmaps
    • On external chunk addition, a comparer is applied, and the chunk is inserted at a binary-searched index
    • The comparer now considers base class IDs as it should
    • Many more methods have been added to CMwNod for interaction as it was in v1
  • Implemented data boundaries system
    • Data regions that include a length prefix (userdata, skippable chunks, larger byte arrays) are now wrapped into a special BoundedStream
    • It is designed to disallow reading past the defined length of the expected buffer without allocating larger byte arrays when possible
    • If the data can be sought, it simply calculates allowed positions and disallows reading further. If seeking is not allowed, then it behaves like a MemoryStream, reading all the bytes beforehand and working within this allocated buffer
    • This replaces the old wonky "limiter" that existed (only) in Gbx header reading
    • GBX.NET is now much safer to use on the web backend thanks to this
  • Added full support for Scores.Gbx (also including write)
  • Added CScriptTraitsPersistent support (ScriptCache.Gbx)
  • Added CGameCtnChallengeGroup 0x00A
  • Added CGameCtnBlockInfoClipHorizontal and CGameCtnBlockInfoClipVertical (by Zai)
  • Added weak support for CPlugFileGen
  • Added CGameCtnChallenge.ThumbnailRotationMatrix
  • Added Quat.Identity and Vec3.One
  • Added Gbx file extensions (as many as I could figure out)
  • Improved input parsing performance
  • Support for TMCP inputs v3 (by Tomashu)
  • Fixed many instances of improper stream reading, often appearing in network streaming or during zipping
  • Fixed various class ID remapping issues during write in main node, header chunks, and node references
  • Fixed CGameCtnCollection not writing icon file references properly
  • Fixed CGameCtnCampaign.CollectionId to be Id instead of string
  • Fixed CPlugBitmapAtlas not handling many Lagoon textures properly
  • Fixed CPlugSurface v5
  • Fixed CPlugSkel v20
  • Fixed systemtime type to read/write correct datetimes
  • Fixed Quat multiplication
  • Fixed CSystemConfig 0x057
  • Fixed CGameCtnZone decryption issue in TM2+ paks
  • Fixed CPlugVehiclePhyModel for TM2020
  • Fixed inheritance issues for adding AppliedWithChunk attributes
  • Class names now prefer the last provided name instead of the first one in ClassId.txt
  • Improved some ToStrings
  • Updated TmEssentials to 2.6.2

GBX.NET.PAK 2.4.2

  • Added Pak.CheckIsGbx

GBX.NET.Crypto 1.2.1

  • Added more guard clauses

GBX.NET.LZO 2.1.5

  • Added more decompression checks

GBX.NET.Templates 0.2.1

  • Added 404.html to GbxBlazorWasmApp
  • Removed CRC32 features from templates

Gbx Explorer

  • Game version is automatically determined from the remembered Gbx parameters (checkbox for older games is no longer available)
    • This has some rare issues at times, for example, when exporting the Challenge node from older TM replay, but other than that, it's very reliable
  • All byte[] now include the Export button, which saves all the bytes into a file (can be used on ChallengeGbxData.Data for example)
  • Added support for trace logs (shows chunk parse speeds)
  • Brought back file extensions with a few improvements
  • Fixed [Flags] to display individual values - improves GameVersion display
  • Fixed a crash when modifying an immutable object that doesn't apply readonly

Assets were automatically generated using the publish workflow.

GBX.NET 1.2.13

18 Mar 22:50
ce96a14

Choose a tag to compare

  • Competition Patch 2 updates by Tomashu:
    • Support TMCP 2.0 inputs format v3
    • Do not output inputs after finish
  • Fixed CPlugEntRecordData v11 to use correct sample times

GBX.NET 2.3.4

19 Feb 23:36
65ba239

Choose a tag to compare

  • Expanded support for SystemConfig.Gbx to all Nadeo games
  • Added Solid and SolidRef to CGameObjectVisModel
  • CRC32 implementation is now directly part of the main GBX.NET library and enabled by default
    • GBX.NET.Hashing will soon be deprecated
  • Fixed compressed Gbx reading in networking/zipping scenarios

GBX.NET.PAK 2.4.1

  • Made Pak6 public
  • Disabled automatic processing of file tree for MP3 title packs to avoid a key-less crash
  • Fixed GbxHeadersStart to be uint

GBX.NET.Crypto 1.2.0

  • Added Blowfish.Encrypt with IV and Blowfish.EncryptHexa
  • Completed RSAExtensions with stable PublicDecrypt and PrivateEncrypt

Assets were automatically generated using the publish workflow.

GBX.NET 2.3.3

06 Feb 15:09
596443d

Choose a tag to compare

  • Added Gbx.IsGbxAsync
  • Fixed IsGbx throwing when it shouldn't
  • Fixed TM2020 macroblocks that included skinnable items
  • Fixed TM2020 CScriptTraitsMetadata for arrays inside structs

GBX.NET.Crypto 1.1.0

  • Added custom implementation of Blowfish (little-endian, little-endian Pak 18, and big-endian tricks)
  • Added DecryptHexa replica
  • Added an extension RSA.PublicDecrypt (experimental)

GBX.NET.PAK 2.4.0

  • Added computeKey which runs the key hashing trick
    • If true, base key is expected, if false, the final key is expected
    • PakList reflects that and returns the base keys
    • All current Pak solutions need to be updated to use base keys or opt out of computeKey
  • Switched to use the Blowfish implementation from GBX.NET.Crypto
  • Title packs can now display folders and files without providing a key (data still needs the key)
  • The library is now MIT licensed

GBX.NET.Templates 0.2.0

  • Added GBX.NET Blazor WebAssembly App template
  • Updated dependencies

Assets were automatically generated using the publish workflow.

GBX.NET 2.3.2

31 Jan 21:33
9ddf511

Choose a tag to compare

  • Added Gbx.IsGbx for quick Gbx checking without throwing exceptions
  • CGameItemModel:
    • Added VFX and MaterialModifier
    • Fixed EntityModelEdition if it included a file
  • Added CPlugBitmapDecals.MatterId
  • Implemented CPlugImageArray
  • Attempt to implement CPlugCurveSimpleNod
  • Fixed CPlugEntRecordData v11 to use correct sample times
  • Fixed CPlugVisual 0x00F
  • Fixed CSceneLayout 0x01C

GBX.NET.PAK 2.3.0

  • Transformed the parsing API to require only one key (either PakList-resolved key or the ManiaPlanet base key)
  • Made the parsing fully support async (except for individual files) to allow efficient client-side parsing on WebAssembly
  • Slightly improved bruteforcing to catch some parent folders
  • Moved some Pak6 parts to the Pak class

Assets were automatically generated using the publish workflow.

GBX.NET 2.3.1

28 Jan 22:33
0f6e684

Choose a tag to compare

  • Added new collection IDs: RedIsland, GreenCoast, BlueBay, WhiteShore
  • CGameCtnChallenge:
    • Added read-only ExpectedEmbeddedItemModels for verifying packaged content (it doesn't have to match the modified zip)
    • Added HasClones and updated CreateHeaderXml to reflect this
  • CGameCtnChallengeParameters: Added support for the new RaceValidateGhost in TM2020
  • CGameCtnReplayRecord:
    • Added ChallengeParameters (wtf? it's in the map file already)
    • Implemented chunks 0x026, 0x027, 0x028
  • CGameCtnCollection:
    • Added VehicleTransform_..., BlockSkins_Default_..., and GlobalMaterialModifier members
    • Fixed various chunks
  • Fixed CPlugEntRecordData v11 that now uses new delta encoding
    • The sample times might be off still, this will be resolved soon in a later update
  • Fixed CGameItemModel 0x01F
  • Fixed CGameCtnGhost.GetDisplayableInputs to handle TM2 and TMT properly

GBX.NET.LZO 2.1.4

  • Updated to NativeSharpLzo 0.3.5
  • Improved locking mechanism for parallelism

GBX.NET.PAK 2.2.2

  • Updated to NativeSharpLzo 0.3.5
  • Updated to NativeSharpZlib 0.2.9

Full Changelog: v2.3.0...v2.3.1

Assets were automatically generated using the publish workflow.

GBX.NET 1.2.12

28 Jan 22:08
c7b5154

Choose a tag to compare

  • Fixed CPlugEntRecordData v11 that now uses new delta encoding
    • The sample times might be off still, this will be resolved soon only on v2 in a later update

GBX.NET 1.2.11

12 Jan 20:47
938fcea

Choose a tag to compare

  • Fixed CGameCtnGhost.GetDisplayableInputs to handle TM2 and TMT properly and added a missing version constraint to it.

This is a rare GBX.NET v1 update as Clip Input still runs on v1.