mirror of
https://github.com/RYDE-WORK/ballistica.git
synced 2026-01-19 21:37:57 +08:00
Merge branch 'master' into master
This commit is contained in:
commit
9dac95222a
128
.efrocachemap
generated
128
.efrocachemap
generated
@ -421,7 +421,7 @@
|
||||
"build/assets/ba_data/audio/zoeOw.ogg": "74befe45a8417e95b6a2233c51992a26",
|
||||
"build/assets/ba_data/audio/zoePickup01.ogg": "48ab8cddfcde36a750856f3f81dd20c8",
|
||||
"build/assets/ba_data/audio/zoeScream01.ogg": "2b468aedfa8741090247f04eb9e6df55",
|
||||
"build/assets/ba_data/data/langdata.json": "7e73466677344c1722aebe94003360d5",
|
||||
"build/assets/ba_data/data/langdata.json": "b83c9445922f68152c5d0efa1f0fe608",
|
||||
"build/assets/ba_data/data/languages/arabic.json": "05040616cb7585e3cce2e9acba96aa75",
|
||||
"build/assets/ba_data/data/languages/belarussian.json": "3d5523d0004293aa2df02f3f6f3b84f8",
|
||||
"build/assets/ba_data/data/languages/chinese.json": "2f67c6b127ae85492ac552af1a91e95a",
|
||||
@ -432,21 +432,21 @@
|
||||
"build/assets/ba_data/data/languages/dutch.json": "b0900d572c9141897d53d6574c471343",
|
||||
"build/assets/ba_data/data/languages/english.json": "9754e816d3bc3214b7e809950d642309",
|
||||
"build/assets/ba_data/data/languages/esperanto.json": "0e397cfa5f3fb8cef5f4a64f21cda880",
|
||||
"build/assets/ba_data/data/languages/filipino.json": "9c04219ceeb065b3bc751e6ab3731def",
|
||||
"build/assets/ba_data/data/languages/french.json": "ee2a81129519d7030a617308da8c9195",
|
||||
"build/assets/ba_data/data/languages/filipino.json": "aa8c94a49dec96d050be2329c3b6dcba",
|
||||
"build/assets/ba_data/data/languages/french.json": "b7d11199756f0eb4f1a745ceee652b2a",
|
||||
"build/assets/ba_data/data/languages/german.json": "198b9860c5b9df7b8e3e30b03d8755cb",
|
||||
"build/assets/ba_data/data/languages/gibberish.json": "3e68d809bd6ede3b9e2c57c147737e42",
|
||||
"build/assets/ba_data/data/languages/greek.json": "ad3c0d38f34d809824892d6f22808dbf",
|
||||
"build/assets/ba_data/data/languages/hindi.json": "bb3548531daf7bc7fee4a28d48228c32",
|
||||
"build/assets/ba_data/data/languages/hungarian.json": "6b08fea24b72cc805ed0dc59e11c4cd6",
|
||||
"build/assets/ba_data/data/languages/indonesian.json": "9103845242b572aa8ba48e24f81ddb68",
|
||||
"build/assets/ba_data/data/languages/indonesian.json": "ed9038bf4b9216f93eb73e753e162706",
|
||||
"build/assets/ba_data/data/languages/italian.json": "e1d69eb1eec31442bf981121c7cfaf17",
|
||||
"build/assets/ba_data/data/languages/korean.json": "4e3524327a0174250aff5e1ef4c0c597",
|
||||
"build/assets/ba_data/data/languages/malay.json": "f6ce0426d03a62612e3e436ed5d1be1f",
|
||||
"build/assets/ba_data/data/languages/persian.json": "c209f8f6d3b3dd40d5ca9d36fe0721fe",
|
||||
"build/assets/ba_data/data/languages/polish.json": "59ff98adfb4f515f00769d1ec229c232",
|
||||
"build/assets/ba_data/data/languages/portuguese.json": "615a59bd03f84659158d9f2608a4ab21",
|
||||
"build/assets/ba_data/data/languages/romanian.json": "b3e46efd6f869dbd78014570e037c290",
|
||||
"build/assets/ba_data/data/languages/romanian.json": "ef68520f749cf3641d4e4225a6166349",
|
||||
"build/assets/ba_data/data/languages/russian.json": "41e06eda170fb5960393dd6b58d046e1",
|
||||
"build/assets/ba_data/data/languages/serbian.json": "d7452dd72ac0e51680cb39b5ebaa1c69",
|
||||
"build/assets/ba_data/data/languages/slovak.json": "3c08c748c96c71bd9e1d7291fb8817b6",
|
||||
@ -455,7 +455,7 @@
|
||||
"build/assets/ba_data/data/languages/tamil.json": "b9fcc523639f55e05c7f4e7914f3321a",
|
||||
"build/assets/ba_data/data/languages/thai.json": "1d665629361f302693dead39de8fa945",
|
||||
"build/assets/ba_data/data/languages/turkish.json": "fe4c7354ca6e657c2645969325af574a",
|
||||
"build/assets/ba_data/data/languages/ukrainian.json": "76ad64cb4911c8d5a3e4815b865ce5bd",
|
||||
"build/assets/ba_data/data/languages/ukrainian.json": "3f9ee9567a068b760bbf25433177db89",
|
||||
"build/assets/ba_data/data/languages/venetian.json": "96e7607b0aa79b7eb48cac8df77e8e65",
|
||||
"build/assets/ba_data/data/languages/vietnamese.json": "b175cd0f01d0433355f144aeaa333409",
|
||||
"build/assets/ba_data/data/maps/big_g.json": "1dd301d490643088a435ce75df971054",
|
||||
@ -945,11 +945,11 @@
|
||||
"build/assets/ba_data/meshes/zoeTorso.bob": "26a1007e98902178d8c62fd7069d5da5",
|
||||
"build/assets/ba_data/meshes/zoeUpperArm.bob": "a8a881010ac1ee9ec5ca872d5c5e853a",
|
||||
"build/assets/ba_data/meshes/zoeUpperLeg.bob": "95b2502f74c70f934927f67cd505c3ad",
|
||||
"build/assets/ba_data/python-site-packages/certifi/__init__.py": "98360d9e66de68a618eed6098a65405b",
|
||||
"build/assets/ba_data/python-site-packages/certifi/__init__.py": "c935c5aee4052f1c76954ace35723dfe",
|
||||
"build/assets/ba_data/python-site-packages/certifi/__main__.py": "ef02e73f8581609df189a9f61aca365b",
|
||||
"build/assets/ba_data/python-site-packages/certifi/cacert.pem": "4e587dca9ab75057ffef6658ed385ff2",
|
||||
"build/assets/ba_data/python-site-packages/certifi/cacert.pem": "47f35c87a8abc6ace093db7c215f1eab",
|
||||
"build/assets/ba_data/python-site-packages/certifi/core.py": "c1b8c102093ea26587619677c7ec6016",
|
||||
"build/assets/ba_data/python-site-packages/typing_extensions.py": "f1af94a03caf6fc79be0aedc8ab03090",
|
||||
"build/assets/ba_data/python-site-packages/typing_extensions.py": "1f6b4db70adb7ca05dff2b74f6cde8aa",
|
||||
"build/assets/ba_data/textures/achievementBoxer.dds": "5b5c461e67f3a92105b56fe264a7dd28",
|
||||
"build/assets/ba_data/textures/achievementBoxer.ktx": "1055e009423ea1d0bc3b172f9d7328bb",
|
||||
"build/assets/ba_data/textures/achievementBoxer.pvr": "48f212189a6d83d29be410613b4f0005",
|
||||
@ -3038,16 +3038,16 @@
|
||||
"build/assets/pylib-apple/_pylong.py": "e057ab3c9eea264704dff2af204884f8",
|
||||
"build/assets/pylib-apple/_sitebuiltins.py": "8b5e3f6e73917962fa014ad2c4a55e61",
|
||||
"build/assets/pylib-apple/_strptime.py": "ed6521fd413f31f0de7be162af8db9f5",
|
||||
"build/assets/pylib-apple/_sysconfigdata__darwin_darwin.py": "bc494dcb0239846f92c26622e84fb99d",
|
||||
"build/assets/pylib-apple/_sysconfigdata__ios_iphoneos-arm64.py": "f073b8cdfe4179236abb923d538e7fbe",
|
||||
"build/assets/pylib-apple/_sysconfigdata__ios_iphonesimulator-arm64.py": "2c3a1b46d9966d740b226d0d603a392a",
|
||||
"build/assets/pylib-apple/_sysconfigdata__tvos_appletvos-arm64.py": "df1d00e8a7b529d64e600c8113d872d7",
|
||||
"build/assets/pylib-apple/_sysconfigdata__tvos_appletvsimulator-arm64.py": "f9b8d515e7a6619fea32ab77c341b294",
|
||||
"build/assets/pylib-apple/_sysconfigdata_d_darwin_darwin.py": "bd1f109ca34c52afd95632f7ae64171f",
|
||||
"build/assets/pylib-apple/_sysconfigdata_d_ios_iphoneos-arm64.py": "178d3dc412e56aeaa211c8f5237f9462",
|
||||
"build/assets/pylib-apple/_sysconfigdata_d_ios_iphonesimulator-arm64.py": "fc568dd0c36d2253993b9a48f53535d6",
|
||||
"build/assets/pylib-apple/_sysconfigdata_d_tvos_appletvos-arm64.py": "50e50f852dc4f6acd785fa83c2e6530b",
|
||||
"build/assets/pylib-apple/_sysconfigdata_d_tvos_appletvsimulator-arm64.py": "5e2dd0675c1364fb20fb7777c4c0eeb0",
|
||||
"build/assets/pylib-apple/_sysconfigdata__darwin_darwin.py": "0cf2ec75dca64a6fd736fbf0d7cf21d7",
|
||||
"build/assets/pylib-apple/_sysconfigdata__ios_iphoneos-arm64.py": "00f4ef0ea2ae8fa7994813bca8972016",
|
||||
"build/assets/pylib-apple/_sysconfigdata__ios_iphonesimulator-arm64.py": "4a3f247c7dfc903e89fda0bd20ef48fb",
|
||||
"build/assets/pylib-apple/_sysconfigdata__tvos_appletvos-arm64.py": "6a817c7dcc35197e965ef4d1be6a5c94",
|
||||
"build/assets/pylib-apple/_sysconfigdata__tvos_appletvsimulator-arm64.py": "d3adfa519698ddd824b4ef721c3460b7",
|
||||
"build/assets/pylib-apple/_sysconfigdata_d_darwin_darwin.py": "776b50a7ff9d04c04a73df196b556848",
|
||||
"build/assets/pylib-apple/_sysconfigdata_d_ios_iphoneos-arm64.py": "6700b08928d64c1c1eac4412c377e86e",
|
||||
"build/assets/pylib-apple/_sysconfigdata_d_ios_iphonesimulator-arm64.py": "4fd4334d6c43fe9f65ae83905c6b8a33",
|
||||
"build/assets/pylib-apple/_sysconfigdata_d_tvos_appletvos-arm64.py": "ad79fe9e0594bbc43adf53c96a4a81dc",
|
||||
"build/assets/pylib-apple/_sysconfigdata_d_tvos_appletvsimulator-arm64.py": "18829d0bbee15874cd46cbe8d85e36e8",
|
||||
"build/assets/pylib-apple/_threading_local.py": "4a9688e3987d7d692db46feb9214945e",
|
||||
"build/assets/pylib-apple/_weakrefset.py": "e4fa8532ace46dfbc35149c41ea497f7",
|
||||
"build/assets/pylib-apple/abc.py": "a0daa1ed187eee8690c1e8438b97da90",
|
||||
@ -3445,7 +3445,7 @@
|
||||
"build/assets/pylib-apple/typing.py": "a5996aa02b21708d88c67946dabd529e",
|
||||
"build/assets/pylib-apple/urllib/__init__.py": "340c83beff7dcff8f5c7b87cd43cedaf",
|
||||
"build/assets/pylib-apple/urllib/error.py": "b7dde0483ff647eb87162d6e19c04fa0",
|
||||
"build/assets/pylib-apple/urllib/parse.py": "112c518e8857be22f75ef4cd668fe5b4",
|
||||
"build/assets/pylib-apple/urllib/parse.py": "8fa7882c3e97acfde85cb4486a0ceedf",
|
||||
"build/assets/pylib-apple/urllib/request.py": "2a9f2ec22765c9959240f559bcb2fca3",
|
||||
"build/assets/pylib-apple/urllib/response.py": "c8537707a4b1e493c0ec4489ab523c93",
|
||||
"build/assets/pylib-apple/urllib/robotparser.py": "5a7616bdf398c166f953ad48c25506eb",
|
||||
@ -4038,50 +4038,50 @@
|
||||
"build/assets/windows/Win32/ucrtbased.dll": "2def5335207d41b21b9823f6805997f1",
|
||||
"build/assets/windows/Win32/vc_redist.x86.exe": "b08a55e2e77623fe657bea24f223a3ae",
|
||||
"build/assets/windows/Win32/vcruntime140d.dll": "865b2af4d1e26a1a8073c89acb06e599",
|
||||
"build/prefab/full/linux_arm64_gui/debug/ballisticakit": "0c51eee4af632ca8e9132edfea6c5ef5",
|
||||
"build/prefab/full/linux_arm64_gui/release/ballisticakit": "d086ea46307e571d6278a1ac00e7199f",
|
||||
"build/prefab/full/linux_arm64_server/debug/dist/ballisticakit_headless": "4119ef59158a5572098c997a01988d42",
|
||||
"build/prefab/full/linux_arm64_server/release/dist/ballisticakit_headless": "6f59df95b4c858986852123b779ea70c",
|
||||
"build/prefab/full/linux_x86_64_gui/debug/ballisticakit": "62505635f81cb7ed9804ec5b0eb43c5a",
|
||||
"build/prefab/full/linux_x86_64_gui/release/ballisticakit": "8e493b1b5c987401daa7cda81e7faeb9",
|
||||
"build/prefab/full/linux_x86_64_server/debug/dist/ballisticakit_headless": "bb97152641a4ce2c41722ef4da314086",
|
||||
"build/prefab/full/linux_x86_64_server/release/dist/ballisticakit_headless": "843f0dfcd9bdc2b6886cdd1ac6ba0fc2",
|
||||
"build/prefab/full/mac_arm64_gui/debug/ballisticakit": "76fff737c7e5e513aa0c55d6dbe179a4",
|
||||
"build/prefab/full/mac_arm64_gui/release/ballisticakit": "4e81fe4c953d35f96c81ec19f93525d3",
|
||||
"build/prefab/full/mac_arm64_server/debug/dist/ballisticakit_headless": "33d430a5730d2c226765a11f86dd0599",
|
||||
"build/prefab/full/mac_arm64_server/release/dist/ballisticakit_headless": "6cd4a729aacbb3838ea020bdfc7d67d2",
|
||||
"build/prefab/full/mac_x86_64_gui/debug/ballisticakit": "2b5f1112f0328d69f3863fb2e06a730d",
|
||||
"build/prefab/full/mac_x86_64_gui/release/ballisticakit": "b051c7642dfcf446dcd1657c121eac21",
|
||||
"build/prefab/full/mac_x86_64_server/debug/dist/ballisticakit_headless": "dc8e5d62bcfc1a645c028a7df7ecb738",
|
||||
"build/prefab/full/mac_x86_64_server/release/dist/ballisticakit_headless": "4548c17cdfe8998aa8ecb31ad973ae74",
|
||||
"build/prefab/full/windows_x86_gui/debug/BallisticaKit.exe": "333d8035d9233fee2e2b09c158c720e6",
|
||||
"build/prefab/full/windows_x86_gui/release/BallisticaKit.exe": "3f4453380fd5d175c8fb18d8ca3ece4f",
|
||||
"build/prefab/full/windows_x86_server/debug/dist/BallisticaKitHeadless.exe": "8d19f198e01491a98bede19987b8cc8f",
|
||||
"build/prefab/full/windows_x86_server/release/dist/BallisticaKitHeadless.exe": "2270da9585ffdca2c0eab77196c3f7d4",
|
||||
"build/prefab/lib/linux_arm64_gui/debug/libballisticaplus.a": "bb11ac758712a51791340d19121b9791",
|
||||
"build/prefab/lib/linux_arm64_gui/release/libballisticaplus.a": "c47ac1d2e839e4e3b701a7c59080dd09",
|
||||
"build/prefab/lib/linux_arm64_server/debug/libballisticaplus.a": "bb11ac758712a51791340d19121b9791",
|
||||
"build/prefab/lib/linux_arm64_server/release/libballisticaplus.a": "c47ac1d2e839e4e3b701a7c59080dd09",
|
||||
"build/prefab/lib/linux_x86_64_gui/debug/libballisticaplus.a": "9cb1b5b345dd00b58992913677a4ad7e",
|
||||
"build/prefab/lib/linux_x86_64_gui/release/libballisticaplus.a": "8a961e945aeb0120d924ec06a162fb55",
|
||||
"build/prefab/lib/linux_x86_64_server/debug/libballisticaplus.a": "9cb1b5b345dd00b58992913677a4ad7e",
|
||||
"build/prefab/lib/linux_x86_64_server/release/libballisticaplus.a": "8a961e945aeb0120d924ec06a162fb55",
|
||||
"build/prefab/lib/mac_arm64_gui/debug/libballisticaplus.a": "5fcc0e89141d36e5b152095bfcc21fa1",
|
||||
"build/prefab/lib/mac_arm64_gui/release/libballisticaplus.a": "1b63b3daeff198825740a426fe5f7a9f",
|
||||
"build/prefab/lib/mac_arm64_server/debug/libballisticaplus.a": "5fcc0e89141d36e5b152095bfcc21fa1",
|
||||
"build/prefab/lib/mac_arm64_server/release/libballisticaplus.a": "1b63b3daeff198825740a426fe5f7a9f",
|
||||
"build/prefab/lib/mac_x86_64_gui/debug/libballisticaplus.a": "e86e8adff4bf043e2c3796ed499ca134",
|
||||
"build/prefab/lib/mac_x86_64_gui/release/libballisticaplus.a": "2fddab497b60617bcaa467a458e5534c",
|
||||
"build/prefab/lib/mac_x86_64_server/debug/libballisticaplus.a": "b21ff6427895bcd8628ea55a3c2d8609",
|
||||
"build/prefab/lib/mac_x86_64_server/release/libballisticaplus.a": "2fddab497b60617bcaa467a458e5534c",
|
||||
"build/prefab/lib/windows/Debug_Win32/BallisticaKitGenericPlus.lib": "4594d3bdd6f0d5103da725b67c442ca5",
|
||||
"build/prefab/lib/windows/Debug_Win32/BallisticaKitGenericPlus.pdb": "37f0e4fef1e9106835c572a12f8a0354",
|
||||
"build/prefab/lib/windows/Debug_Win32/BallisticaKitHeadlessPlus.lib": "660139dfa55cdbc071bf43526504823b",
|
||||
"build/prefab/lib/windows/Debug_Win32/BallisticaKitHeadlessPlus.pdb": "a1961b9730c58599ef326b6af9da7f93",
|
||||
"build/prefab/lib/windows/Release_Win32/BallisticaKitGenericPlus.lib": "f534609cbfc3b2743a07c0aafb380f4b",
|
||||
"build/prefab/lib/windows/Release_Win32/BallisticaKitGenericPlus.pdb": "fd05e46d0f3acbf9dfa6a6d3b7f75926",
|
||||
"build/prefab/lib/windows/Release_Win32/BallisticaKitHeadlessPlus.lib": "db3a41fe7b3b22c90229b3ecdeb2e5ec",
|
||||
"build/prefab/lib/windows/Release_Win32/BallisticaKitHeadlessPlus.pdb": "9b21b94333a5f61d45c40bcb94a53a53",
|
||||
"build/prefab/full/linux_arm64_gui/debug/ballisticakit": "1f69ddeb02931a14350dca8c9f57d7f1",
|
||||
"build/prefab/full/linux_arm64_gui/release/ballisticakit": "4ef2017d98434d78fc6d16121220241e",
|
||||
"build/prefab/full/linux_arm64_server/debug/dist/ballisticakit_headless": "9c131cc99b84ead5c6c4ca62167cff9b",
|
||||
"build/prefab/full/linux_arm64_server/release/dist/ballisticakit_headless": "d24cf6110773ef8b4814d666e8c0c435",
|
||||
"build/prefab/full/linux_x86_64_gui/debug/ballisticakit": "831b1526ece045decbf1e0de5af24052",
|
||||
"build/prefab/full/linux_x86_64_gui/release/ballisticakit": "e20c0e2216583337f0f1b6529d0ba11f",
|
||||
"build/prefab/full/linux_x86_64_server/debug/dist/ballisticakit_headless": "75a8601f7e9f82af46d93ffc8a256a7b",
|
||||
"build/prefab/full/linux_x86_64_server/release/dist/ballisticakit_headless": "b6dd5a6381c76da06d4e3f28b9ae26d7",
|
||||
"build/prefab/full/mac_arm64_gui/debug/ballisticakit": "dd1829cd7953bffed20763c27e4808e2",
|
||||
"build/prefab/full/mac_arm64_gui/release/ballisticakit": "68a9183674846903f4dec83d94023498",
|
||||
"build/prefab/full/mac_arm64_server/debug/dist/ballisticakit_headless": "370ae7af55f55c44ec97cae1713eaf44",
|
||||
"build/prefab/full/mac_arm64_server/release/dist/ballisticakit_headless": "f346ea68ff1614e64b5555c5fed60618",
|
||||
"build/prefab/full/mac_x86_64_gui/debug/ballisticakit": "5b3b46d00315fd42f919e881c9db9751",
|
||||
"build/prefab/full/mac_x86_64_gui/release/ballisticakit": "e1e54514c6322544a41f53c84e441967",
|
||||
"build/prefab/full/mac_x86_64_server/debug/dist/ballisticakit_headless": "88c3f1d881df02bfc82bd7b228301cab",
|
||||
"build/prefab/full/mac_x86_64_server/release/dist/ballisticakit_headless": "6712b886792057c5cac6bfcbbf93fa6f",
|
||||
"build/prefab/full/windows_x86_gui/debug/BallisticaKit.exe": "b2334c71efedceb6c3d996a2d3923ac5",
|
||||
"build/prefab/full/windows_x86_gui/release/BallisticaKit.exe": "b010230a5dece5a69b3fe02bef3da05d",
|
||||
"build/prefab/full/windows_x86_server/debug/dist/BallisticaKitHeadless.exe": "36809929a0ad003aae6c96c19a447bc5",
|
||||
"build/prefab/full/windows_x86_server/release/dist/BallisticaKitHeadless.exe": "c65becdb22959fb4144bf51cb567ab13",
|
||||
"build/prefab/lib/linux_arm64_gui/debug/libballisticaplus.a": "c471e06d03862e91a2a949806803efbd",
|
||||
"build/prefab/lib/linux_arm64_gui/release/libballisticaplus.a": "4f7b8eed54eb4c7d2b6400aaa4dfa37c",
|
||||
"build/prefab/lib/linux_arm64_server/debug/libballisticaplus.a": "c471e06d03862e91a2a949806803efbd",
|
||||
"build/prefab/lib/linux_arm64_server/release/libballisticaplus.a": "4f7b8eed54eb4c7d2b6400aaa4dfa37c",
|
||||
"build/prefab/lib/linux_x86_64_gui/debug/libballisticaplus.a": "ec5f39fe33f753cace45ecda7b78e376",
|
||||
"build/prefab/lib/linux_x86_64_gui/release/libballisticaplus.a": "5ca18c2abecb1b369ddd7ff43880baa0",
|
||||
"build/prefab/lib/linux_x86_64_server/debug/libballisticaplus.a": "ec5f39fe33f753cace45ecda7b78e376",
|
||||
"build/prefab/lib/linux_x86_64_server/release/libballisticaplus.a": "5ca18c2abecb1b369ddd7ff43880baa0",
|
||||
"build/prefab/lib/mac_arm64_gui/debug/libballisticaplus.a": "789b8d5e80d66c74af1ff0b978301704",
|
||||
"build/prefab/lib/mac_arm64_gui/release/libballisticaplus.a": "4fa185d99e799027b324704de3925aca",
|
||||
"build/prefab/lib/mac_arm64_server/debug/libballisticaplus.a": "789b8d5e80d66c74af1ff0b978301704",
|
||||
"build/prefab/lib/mac_arm64_server/release/libballisticaplus.a": "4fa185d99e799027b324704de3925aca",
|
||||
"build/prefab/lib/mac_x86_64_gui/debug/libballisticaplus.a": "3b9db190dc436e7bfd4521b94d9b5974",
|
||||
"build/prefab/lib/mac_x86_64_gui/release/libballisticaplus.a": "cd5c91eecddb1da4e8204e3496466a07",
|
||||
"build/prefab/lib/mac_x86_64_server/debug/libballisticaplus.a": "9adc2dc1c5c3cdc1ca6fc98fc76644c5",
|
||||
"build/prefab/lib/mac_x86_64_server/release/libballisticaplus.a": "cd5c91eecddb1da4e8204e3496466a07",
|
||||
"build/prefab/lib/windows/Debug_Win32/BallisticaKitGenericPlus.lib": "361f36182c514f52fe7f9f426c0f3b74",
|
||||
"build/prefab/lib/windows/Debug_Win32/BallisticaKitGenericPlus.pdb": "9c4b2bd8d013f5e0691eed115cbd0835",
|
||||
"build/prefab/lib/windows/Debug_Win32/BallisticaKitHeadlessPlus.lib": "d9ec65598b3906a3e4455278386bab00",
|
||||
"build/prefab/lib/windows/Debug_Win32/BallisticaKitHeadlessPlus.pdb": "2784af0e825434a01b85115631049789",
|
||||
"build/prefab/lib/windows/Release_Win32/BallisticaKitGenericPlus.lib": "24ca3020d1a3cde8d5fcc2e11cd887ae",
|
||||
"build/prefab/lib/windows/Release_Win32/BallisticaKitGenericPlus.pdb": "d0a2cb5f0b300a08f72112597b01a26a",
|
||||
"build/prefab/lib/windows/Release_Win32/BallisticaKitHeadlessPlus.lib": "75c4c1f4fcf25e35faf1de9819e2cec1",
|
||||
"build/prefab/lib/windows/Release_Win32/BallisticaKitHeadlessPlus.pdb": "215729acfa24d9d0010293aba6a1e06a",
|
||||
"src/assets/ba_data/python/babase/_mgen/__init__.py": "f885fed7f2ed98ff2ba271f9dbe3391c",
|
||||
"src/assets/ba_data/python/babase/_mgen/enums.py": "5548f407d97e380069f6c596c4e36cd7",
|
||||
"src/ballistica/base/mgen/pyembed/binding_base.inc": "efa61468cf098f77cc6a234461d8b86d",
|
||||
|
||||
15
CHANGELOG.md
15
CHANGELOG.md
@ -1,4 +1,4 @@
|
||||
### 1.7.35 (build 21884, api 8, 2024-06-12)
|
||||
### 1.7.35 (build 21888, api 8, 2024-06-16)
|
||||
- Fixed an issue where the engine would block at exit on some version of Linux
|
||||
until Ctrl-D was pressed in the calling terminal.
|
||||
- V2 accounts have been around for a while now, so the old V1 device login
|
||||
@ -47,19 +47,6 @@
|
||||
two forms. Now it is possible to provide both.
|
||||
- Spaz classes now have a `default_hitpoints` which makes customizing that
|
||||
easier (Thanks rabbitboom!)
|
||||
- (WORK IN PROGRESS) As of this version, servers are *required* to be accessible
|
||||
via ipv4 to appear in the public listing. So they may need to provide an ipv4
|
||||
address in their config if the automatically detected one is ipv6. This should
|
||||
reduce the confusion of ipv6-only servers appearing greyed out for lots of
|
||||
ipv4-only people. Pretty much everyone can connect to ipv4.
|
||||
- (WORK IN PROGRESS) There is now more personalized error feedback for the
|
||||
connectivity checks when poking `Make My Party Public` or when launching the
|
||||
command line server. Hopefully this will help navigate the new dual ipv4/ipv6
|
||||
situation.
|
||||
- (WORK IN PROGRESS) The low level `ConnectionToHostUDP` class can now accept
|
||||
multiple `SockAddr`s; it will attempt to contact the host on all of them and
|
||||
use whichever responds first. This allows us to pass both ipv4 and ipv6
|
||||
addresses when available and transparently use whichever is more performant.
|
||||
- Added `docker-gui-release`, `docker-gui-debug`, `docker-server-release`, `docker-server-debug`, `docker-clean` and `docker-save` targets
|
||||
to Makefile.
|
||||
- Fixed an issue in Assault where being teleported back to base with a sticky
|
||||
|
||||
87
Makefile
87
Makefile
@ -31,7 +31,7 @@ help: env
|
||||
# Set env-var BA_ENABLE_COMPILE_COMMANDS_DB=1 to enable creating/updating a
|
||||
# cmake compile-commands database for use with things like clangd.
|
||||
ifeq ($(BA_ENABLE_COMPILE_COMMANDS_DB),1)
|
||||
PREREQ_COMPILE_COMMANDS_DB = .cache/compile_commands_db/compile_commands.json
|
||||
ENV_COMPILE_COMMANDS_DB = .cache/compile_commands_db/compile_commands.json
|
||||
endif
|
||||
|
||||
# pcommandbatch can be much faster when running hundreds or thousands of
|
||||
@ -46,19 +46,19 @@ else
|
||||
PCOMMANDBATCH = $(PCOMMAND)
|
||||
endif
|
||||
|
||||
# Prereq targets that should be safe to run anytime; even if project-files
|
||||
# Env targets that should be safe to run anytime; even if project-files
|
||||
# are out of date.
|
||||
ENV_REQS_SAFE = .cache/checkenv $(PCOMMANDBATCHBIN) .dir-locals.el .mypy.ini \
|
||||
.pyrightconfig.json .pylintrc .clang-format \
|
||||
ballisticakit-cmake/.clang-format .editorconfig tools/cloudshell \
|
||||
tools/bacloud
|
||||
.pyrightconfig.json .pylintrc .clang-format \
|
||||
ballisticakit-cmake/.clang-format .editorconfig tools/cloudshell \
|
||||
tools/bacloud tools/pcommand
|
||||
|
||||
# Prereq targets that may break if the project needs updating should go here.
|
||||
# Env targets that may break if the project needs updating should go here.
|
||||
# An example is compile-command-databases; these might try to run cmake and
|
||||
# fail if the CMakeList files don't match what's on disk. If such a target was
|
||||
# included in ENV_REQS_SAFE it would try to build *before* project updates
|
||||
# which would leave us stuck in a broken state.
|
||||
ENV_REQS_POST_UPDATE_ONLY = $(PREREQ_COMPILE_COMMANDS_DB)
|
||||
ENV_REQS_POST_UPDATE_ONLY = $(ENV_COMPILE_COMMANDS_DB)
|
||||
|
||||
# Target that should be built before building almost any other target. This
|
||||
# installs tool config files, sets up the Python virtual environment, etc.
|
||||
@ -1261,30 +1261,30 @@ CHECK_CLEAN_SAFETY = $(PCOMMAND) check_clean_safety
|
||||
# Some tool configs that need filtering (mainly injecting projroot path).
|
||||
TOOL_CFG_INST = $(PCOMMAND) tool_config_install
|
||||
|
||||
# Anything that affects tool-config generation.
|
||||
# Anything required for tool-config generation.
|
||||
TOOL_CFG_SRC = tools/efrotools/toolconfig.py config/projectconfig.json \
|
||||
.venv/.efro_venv_complete tools/pcommand
|
||||
tools/pcommand
|
||||
|
||||
# Anything that should trigger an environment-check when changed.
|
||||
ENV_SRC = tools/batools/build.py .venv/.efro_venv_complete tools/pcommand
|
||||
ENV_SRC = tools/batools/build.py .venv/.efro_venv_complete
|
||||
|
||||
# Generate a pcommand script hard-coded to use our virtual environment.
|
||||
# This is a prereq dependency so should not itself depend on env.
|
||||
tools/pcommand: tools/efrotools/genwrapper.py tools/efrotools/pyver.py
|
||||
# This is an env dependency so should not itself depend on env.
|
||||
tools/pcommand: tools/efrotools/genwrapper.py .venv/.efro_venv_complete
|
||||
@echo Generating tools/pcommand...
|
||||
@PYTHONPATH=tools python3 -m \
|
||||
efrotools.genwrapper pcommand batools.pcommandmain tools/pcommand
|
||||
|
||||
# Generate a cloudshell script hard-coded to use our virtual environment.
|
||||
# This is a prereq dependency so should not itself depend on env.
|
||||
tools/cloudshell: tools/efrotools/genwrapper.py tools/efrotools/pyver.py
|
||||
# This is an env dependency so should not itself depend on env.
|
||||
tools/cloudshell: tools/efrotools/genwrapper.py .venv/.efro_venv_complete
|
||||
@echo Generating tools/cloudshell...
|
||||
@PYTHONPATH=tools python3 -m \
|
||||
efrotools.genwrapper cloudshell efrotoolsinternal.cloudshell tools/cloudshell
|
||||
|
||||
# Generate a bacloud script hard-coded to use our virtual environment.
|
||||
# This is a prereq dependency so should not itself depend on env.
|
||||
tools/bacloud: tools/efrotools/genwrapper.py tools/efrotools/pyver.py
|
||||
# This is an env dependency so should not itself depend on env.
|
||||
tools/bacloud: tools/efrotools/genwrapper.py .venv/.efro_venv_complete
|
||||
@echo Generating tools/bacloud...
|
||||
@PYTHONPATH=tools python3 -m \
|
||||
efrotools.genwrapper bacloud batools.bacloud tools/bacloud
|
||||
@ -1316,40 +1316,54 @@ SKIP_ENV_CHECKS ?= 0
|
||||
VENV_PYTHON ?= python3.12
|
||||
|
||||
# Increment this to force all downstream venvs to fully rebuild. Useful after
|
||||
# removing requirements since upgrading in place will never uninstall stuff.
|
||||
# removing requirements since upgrading venvs in place will never uninstall
|
||||
# stuff.
|
||||
VENV_STATE = 1
|
||||
|
||||
# Rebuild our virtual environment whenever reqs, Python version, or explicit
|
||||
# state number changes. This is a dependency of env so it should not itself
|
||||
# depend on env. Note that we list pcommand as a requirement but can't use it
|
||||
# in here until the end when the venv is up. Also note that we try to update
|
||||
# venvs in place when possible, but when Python version or venv-state changes
|
||||
# we blow it away and start over to be safe.
|
||||
.venv/.efro_venv_complete: tools/pcommand config/requirements.txt \
|
||||
tools/efrotools/pyver.py
|
||||
# Update our virtual environment whenever reqs changes, Python version
|
||||
# changes, our venv's Python symlink breaks (can happen for minor Python
|
||||
# updates), or explicit state number changes. This is a dependency of env so
|
||||
# should not itself depend on env.
|
||||
.venv/.efro_venv_complete: \
|
||||
config/requirements.txt \
|
||||
tools/efrotools/pyver.py \
|
||||
.venv/bin/$(VENV_PYTHON) \
|
||||
.venv/.efro_venv_state_$(VENV_STATE)
|
||||
# Update venv in place when possible; otherwise create from scratch.
|
||||
@[ -f .venv/bin/$(VENV_PYTHON) ] \
|
||||
&& [ -f .venv/.efro_venv_state_$(VENV_STATE) ] \
|
||||
&& echo Updating existing $(VENV_PYTHON) virtual environment in \'.venv\'... \
|
||||
|| (echo Creating new $(VENV_PYTHON) virtual environment in \'.venv\'... \
|
||||
&& rm -rf .venv)
|
||||
$(VENV_PYTHON) -m venv .venv
|
||||
&& rm -rf .venv && $(VENV_PYTHON) -m venv .venv \
|
||||
&& touch .venv/.efro_venv_state_$(VENV_STATE))
|
||||
.venv/bin/pip install --upgrade pip
|
||||
.venv/bin/pip install -r config/requirements.txt
|
||||
touch .venv/.efro_venv_state_$(VENV_STATE) \
|
||||
.venv/.efro_venv_complete # Done last to enforce fully-built venvs.
|
||||
@$(PCOMMAND) echo \
|
||||
GRN Project virtual environment for BLD $(VENV_PYTHON) RST GRN \
|
||||
at BLD .venv RST GRN is ready to use.
|
||||
@touch .venv/.efro_venv_complete # Done last to signal fully-built venv.
|
||||
@echo Project virtual environment for $(VENV_PYTHON) at .venv is ready to use.
|
||||
|
||||
.cache/checkenv: $(ENV_SRC)
|
||||
# We don't actually create anything with this target, but its existence allows
|
||||
# .efro_venv_complete to run when these bits don't exist, and that target
|
||||
# *does* recreate this stuff. Note to self: previously I tried splitting
|
||||
# things up more and recreating the venv in this target, but that led to
|
||||
# unintuitive dependency behavior. For example, a python update could cause
|
||||
# the .venv/bin/$(VENV_PYTHON) symlink to break, which would cause that target
|
||||
# to blow away and rebuild the venv, but then the reestablished symlink might
|
||||
# have an old modtime (since modtime is that of python itself) which could
|
||||
# cause .efro_venv_complete to think it was already up to date and not run,
|
||||
# leaving us with a half-built venv. So the way we do it now ensures the venv
|
||||
# update always happens in full and seems mostly foolproof.
|
||||
.venv/bin/$(VENV_PYTHON) .venv/.efro_venv_state_$(VENV_STATE):
|
||||
|
||||
.cache/checkenv: $(ENV_SRC) $(PCOMMAND)
|
||||
@if [ $(SKIP_ENV_CHECKS) -ne 1 ]; then \
|
||||
$(PCOMMAND) checkenv && mkdir -p .cache && touch .cache/checkenv; \
|
||||
fi
|
||||
|
||||
$(PCOMMANDBATCHBIN): src/tools/pcommandbatch/pcommandbatch.c \
|
||||
PCOMMANDBATCHSRC = src/tools/pcommandbatch/pcommandbatch.c \
|
||||
src/tools/pcommandbatch/cJSON.c
|
||||
@$(MAKE) tools/pcommand
|
||||
@$(PCOMMAND) build_pcommandbatch $^ $@
|
||||
|
||||
$(PCOMMANDBATCHBIN): $(PCOMMANDBATCHSRC) $(PCOMMAND)
|
||||
@$(PCOMMAND) build_pcommandbatch $(PCOMMANDBATCHSRC) $(PCOMMANDBATCHBIN)
|
||||
|
||||
# CMake build-type lowercase
|
||||
CM_BT_LC = $(shell echo $(CMAKE_BUILD_TYPE) | tr A-Z a-z)
|
||||
@ -1384,6 +1398,7 @@ ballisticakit-cmake/.clang-format: .clang-format
|
||||
# compile commands for all files; lets try to keep it up to date
|
||||
# whenever CMakeLists changes.
|
||||
.cache/compile_commands_db/compile_commands.json: \
|
||||
$(PCOMMANDBATCH) \
|
||||
ballisticakit-cmake/CMakeLists.txt
|
||||
@$(PCOMMANDBATCH) echo BLU Updating compile commands db...
|
||||
@mkdir -p .cache/compile_commands_db
|
||||
|
||||
@ -1,14 +1,14 @@
|
||||
cpplint==1.6.1
|
||||
dmgbuild==1.6.1
|
||||
filelock==3.14.0
|
||||
filelock==3.15.1
|
||||
furo==2024.5.6
|
||||
mypy==1.10.0
|
||||
pbxproj==4.1.0
|
||||
pdoc==14.5.0
|
||||
pur==7.3.1
|
||||
pylint==3.2.2
|
||||
pur==7.3.2
|
||||
pylint==3.2.3
|
||||
pylsp-mypy==0.6.8
|
||||
pytest==8.2.1
|
||||
pytest==8.2.2
|
||||
python-daemon==3.0.1
|
||||
python-lsp-black==2.0.0
|
||||
python-lsp-server==1.11.0
|
||||
@ -17,5 +17,5 @@ Sphinx==7.3.7
|
||||
tomlkit==0.12.5
|
||||
types-certifi==2021.10.8.3
|
||||
types-filelock==3.2.7
|
||||
types-requests==2.32.0.20240523
|
||||
typing_extensions==4.12.0
|
||||
types-requests==2.32.0.20240602
|
||||
typing_extensions==4.12.2
|
||||
|
||||
@ -52,7 +52,7 @@ if TYPE_CHECKING:
|
||||
|
||||
# Build number and version of the ballistica binary we expect to be
|
||||
# using.
|
||||
TARGET_BALLISTICA_BUILD = 21884
|
||||
TARGET_BALLISTICA_BUILD = 21888
|
||||
TARGET_BALLISTICA_VERSION = '1.7.35'
|
||||
|
||||
|
||||
|
||||
@ -64,8 +64,8 @@ auto BasePlatform::GetPublicDeviceUUID() -> std::string {
|
||||
// We used to plug version in directly here, but that caused uuids to
|
||||
// shuffle too rapidly during periods of rapid development. This
|
||||
// keeps it more constant.
|
||||
// __last_rand_uuid_component_shuffle_date__ 2024 6 12
|
||||
auto rand_uuid_component{"WI5XDVM7QQBD4G6O0GS2DW6IPJ4VQT9X"};
|
||||
// __last_rand_uuid_component_shuffle_date__ 2024 6 13
|
||||
auto rand_uuid_component{"1URRE62C7234VP9L1BUPJ1P7QT7Q8YW3"};
|
||||
|
||||
inputs.emplace_back(rand_uuid_component);
|
||||
auto gil{Python::ScopedInterpreterLock()};
|
||||
|
||||
@ -39,7 +39,7 @@ auto main(int argc, char** argv) -> int {
|
||||
namespace ballistica {
|
||||
|
||||
// These are set automatically via script; don't modify them here.
|
||||
const int kEngineBuildNumber = 21884;
|
||||
const int kEngineBuildNumber = 21888;
|
||||
const char* kEngineVersion = "1.7.35";
|
||||
const int kEngineApiVersion = 8;
|
||||
|
||||
|
||||
@ -73,9 +73,9 @@ class RemoteError(Exception):
|
||||
occurs remotely. The error string can consist of a remote stack
|
||||
trace or a simple message depending on the context.
|
||||
|
||||
Communication systems should raise more specific error types locally
|
||||
when more introspection/control is needed; this is intended somewhat
|
||||
as a catch-all.
|
||||
Communication systems should aim to communicate specific errors
|
||||
gracefully as standard message responses when specific details are
|
||||
needed; this is intended more as a catch-all.
|
||||
"""
|
||||
|
||||
def __init__(self, msg: str, peer_desc: str):
|
||||
|
||||
@ -45,7 +45,7 @@ class MessageProtocol:
|
||||
forward_communication_errors: bool = False,
|
||||
forward_clean_errors: bool = False,
|
||||
remote_errors_include_stack_traces: bool = False,
|
||||
log_remote_errors: bool = True,
|
||||
log_errors_on_receiver: bool = True,
|
||||
) -> None:
|
||||
"""Create a protocol with a given configuration.
|
||||
|
||||
@ -62,8 +62,8 @@ class MessageProtocol:
|
||||
|
||||
When an exception is not covered by the optional forwarding
|
||||
mechanisms above, it will come across as efro.error.RemoteError
|
||||
and the exception will be logged on the receiver
|
||||
end - at least by default (see details below).
|
||||
and the exception will be logged on the receiver end - at least
|
||||
by default (see details below).
|
||||
|
||||
If 'remote_errors_include_stack_traces' is True, stringified
|
||||
stack traces will be returned with efro.error.RemoteError
|
||||
@ -77,8 +77,8 @@ class MessageProtocol:
|
||||
goal is usually to avoid returning opaque RemoteErrors and to
|
||||
instead return something meaningful as part of the expected
|
||||
response type (even if that value itself represents a logical
|
||||
error state). If 'log_remote_errors' is False, however, such
|
||||
exceptions will not be logged on the receiver. This can be
|
||||
error state). If 'log_errors_on_receiver' is False, however, such
|
||||
exceptions will *not* be logged on the receiver. This can be
|
||||
useful in combination with 'remote_errors_include_stack_traces'
|
||||
and 'forward_clean_errors' in situations where all error
|
||||
logging/management will be happening on the sender end. Be
|
||||
@ -168,7 +168,7 @@ class MessageProtocol:
|
||||
self.remote_errors_include_stack_traces = (
|
||||
remote_errors_include_stack_traces
|
||||
)
|
||||
self.log_remote_errors = log_remote_errors
|
||||
self.log_errors_on_receiver = log_errors_on_receiver
|
||||
|
||||
@staticmethod
|
||||
def encode_dict(obj: dict) -> str:
|
||||
@ -219,7 +219,7 @@ class MessageProtocol:
|
||||
),
|
||||
error_type=ErrorSysResponse.ErrorType.REMOTE,
|
||||
),
|
||||
self.log_remote_errors,
|
||||
self.log_errors_on_receiver,
|
||||
)
|
||||
|
||||
def _to_dict(
|
||||
|
||||
@ -38,6 +38,7 @@ class MessageReceiver:
|
||||
|
||||
# MyMessageReceiver fills out handler() overloads to ensure all
|
||||
# registered handlers have valid types/return-types.
|
||||
|
||||
@receiver.handler
|
||||
def handle_some_message_type(self, message: SomeMsg) -> SomeResponse:
|
||||
# Deal with this message type here.
|
||||
@ -47,7 +48,7 @@ class MessageReceiver:
|
||||
obj.receiver.handle_raw_message(some_raw_data)
|
||||
|
||||
Any unhandled Exception occurring during message handling will result in
|
||||
an Exception being raised on the sending end.
|
||||
an efro.error.RemoteError being raised on the sending end.
|
||||
"""
|
||||
|
||||
is_async = False
|
||||
|
||||
@ -20,22 +20,33 @@ if TYPE_CHECKING:
|
||||
|
||||
class MessageSender:
|
||||
"""Facilitates sending messages to a target and receiving responses.
|
||||
This is instantiated at the class level and used to register unbound
|
||||
class methods to handle raw message sending.
|
||||
|
||||
These are instantiated at the class level and used to register unbound
|
||||
class methods to handle raw message sending. Generally this class is not
|
||||
used directly, but instead autogenerated subclasses which provide type
|
||||
safe overloads are used instead.
|
||||
|
||||
Example:
|
||||
(In this example, MyMessageSender is an autogenerated class that
|
||||
inherits from MessageSender).
|
||||
|
||||
class MyClass:
|
||||
msg = MyMessageSender(some_protocol)
|
||||
msg = MyMessageSender()
|
||||
|
||||
@msg.send_method
|
||||
def send_raw_message(self, message: str) -> str:
|
||||
# Actually send the message here.
|
||||
|
||||
# MyMessageSender class should provide overloads for send(), send_async(),
|
||||
# etc. to ensure all sending happens with valid types.
|
||||
obj = MyClass()
|
||||
obj.msg.send(SomeMessageType())
|
||||
|
||||
# The MyMessageSender generated class would provides overloads for
|
||||
# send(), send_async(), etc. to provide type-safety for message types
|
||||
# and their associated response types.
|
||||
# Thus, given the statement below, a type-checker would know that
|
||||
# 'response' is a SomeResponseType or whatever is associated with
|
||||
# SomeMessageType.
|
||||
response = obj.msg.send(SomeMessageType())
|
||||
|
||||
"""
|
||||
|
||||
def __init__(self, protocol: MessageProtocol) -> None:
|
||||
|
||||
@ -480,6 +480,17 @@ def apple_patch(python_dir: str) -> None:
|
||||
"""New test."""
|
||||
patch_modules_setup(python_dir, 'apple')
|
||||
|
||||
# Filter an instance of 'itms-services' that appeared in Python3.12
|
||||
# and which was getting me rejected from the app store.
|
||||
fname = os.path.join(python_dir, 'Lib', 'urllib', 'parse.py')
|
||||
ftxt = readfile(fname)
|
||||
ftxt = replace_exact(
|
||||
ftxt,
|
||||
"'wss', 'itms-services']",
|
||||
"'wss', 'i!t!m!s!-!s!e!r!v!i!c!e!s'.replace('!', '')]",
|
||||
)
|
||||
writefile(fname, ftxt)
|
||||
|
||||
|
||||
def patch_modules_setup(python_dir: str, baseplatform: str) -> None:
|
||||
"""Muck with the Setup.* files Python uses to build modules."""
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user