diff --git a/.efrocachemap b/.efrocachemap index 4a41a71a..b406d953 100644 --- a/.efrocachemap +++ b/.efrocachemap @@ -4064,26 +4064,26 @@ "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": "71d6137c5b76b2b3303843f75b133309", - "build/prefab/full/linux_arm64_gui/release/ballisticakit": "4a8365954ce522fbf4b88806556c05c6", - "build/prefab/full/linux_arm64_server/debug/dist/ballisticakit_headless": "34f6f72380e8ddd78381720a3318cdfb", - "build/prefab/full/linux_arm64_server/release/dist/ballisticakit_headless": "b0018db87173b93897a4b0784080617f", - "build/prefab/full/linux_x86_64_gui/debug/ballisticakit": "1f64b93ef8c96c1a08c8dd9df0ce59b6", - "build/prefab/full/linux_x86_64_gui/release/ballisticakit": "9215dd53e512b8b72cec42be17f7ad76", - "build/prefab/full/linux_x86_64_server/debug/dist/ballisticakit_headless": "156e9fb1070dbeb23b7ef2b23a42696f", - "build/prefab/full/linux_x86_64_server/release/dist/ballisticakit_headless": "d577b91ba57cfc3f5853174c086891d0", - "build/prefab/full/mac_arm64_gui/debug/ballisticakit": "dec2bc68a0e5ee7d3f7ac34173b9c1d9", - "build/prefab/full/mac_arm64_gui/release/ballisticakit": "d59d87a16bb17e8a82a4046a5d58bce9", - "build/prefab/full/mac_arm64_server/debug/dist/ballisticakit_headless": "79670d43aabde710aebd07abd5281d2f", - "build/prefab/full/mac_arm64_server/release/dist/ballisticakit_headless": "b1d683392bccd43eaad266e89fd074ab", - "build/prefab/full/mac_x86_64_gui/debug/ballisticakit": "c17244b60db5205dcfb17f4b6673c1db", - "build/prefab/full/mac_x86_64_gui/release/ballisticakit": "9316816cd78ad2ee634b7fb169aee793", - "build/prefab/full/mac_x86_64_server/debug/dist/ballisticakit_headless": "cd07ee0273ed4698ce36d3abc4aa05cc", - "build/prefab/full/mac_x86_64_server/release/dist/ballisticakit_headless": "c8de3a1c97598e3c9bc5c44049d9a867", - "build/prefab/full/windows_x86_gui/debug/BallisticaKit.exe": "40c86fd1dd657312e326ab80f436e883", - "build/prefab/full/windows_x86_gui/release/BallisticaKit.exe": "a51f70b0a5e0d9d569b0ece5bed123a1", - "build/prefab/full/windows_x86_server/debug/dist/BallisticaKitHeadless.exe": "550c619dd2a26fa1bb77cd7129b0c32a", - "build/prefab/full/windows_x86_server/release/dist/BallisticaKitHeadless.exe": "5a336fcd1d396d34607c58ebb9a0c61f", + "build/prefab/full/linux_arm64_gui/debug/ballisticakit": "95166586256dc94f679d3f15cf570ed8", + "build/prefab/full/linux_arm64_gui/release/ballisticakit": "820f8a69f86434ff6dab9cc23e675708", + "build/prefab/full/linux_arm64_server/debug/dist/ballisticakit_headless": "70903ec2f476fbc5908cc52522f69e0c", + "build/prefab/full/linux_arm64_server/release/dist/ballisticakit_headless": "442f2bdde3c176d9a4431c9fdcca892e", + "build/prefab/full/linux_x86_64_gui/debug/ballisticakit": "5354821ede7348ba9bb90bee8fe5ccb7", + "build/prefab/full/linux_x86_64_gui/release/ballisticakit": "ab0cb59c874beb50e554d3d7c552565e", + "build/prefab/full/linux_x86_64_server/debug/dist/ballisticakit_headless": "dec2c09bd136aa413b9b94729f7d6d2e", + "build/prefab/full/linux_x86_64_server/release/dist/ballisticakit_headless": "a5c43eb8befc810d693ec9c9f83fcba4", + "build/prefab/full/mac_arm64_gui/debug/ballisticakit": "091ee6cb6bb2cd6ff6c28a1a487488df", + "build/prefab/full/mac_arm64_gui/release/ballisticakit": "d6a10e3a6bc1a07609598f962439c6c8", + "build/prefab/full/mac_arm64_server/debug/dist/ballisticakit_headless": "c3f9f9b30a84a3d93cefdac1efc6bb4c", + "build/prefab/full/mac_arm64_server/release/dist/ballisticakit_headless": "231bd6e18145b06028e4f90fd7de106c", + "build/prefab/full/mac_x86_64_gui/debug/ballisticakit": "7af10f955a2a010332fa67daf9971e3b", + "build/prefab/full/mac_x86_64_gui/release/ballisticakit": "4586629e8f114c1b5a22444ae26b5917", + "build/prefab/full/mac_x86_64_server/debug/dist/ballisticakit_headless": "b6bc12d306e0a7c40f0f8d676dff1736", + "build/prefab/full/mac_x86_64_server/release/dist/ballisticakit_headless": "518c529a7133d5ea41d730d12ae156c4", + "build/prefab/full/windows_x86_gui/debug/BallisticaKit.exe": "bc2734437901fc1e2f236a10000dadbf", + "build/prefab/full/windows_x86_gui/release/BallisticaKit.exe": "91e559906c51edd86def448b36341f4c", + "build/prefab/full/windows_x86_server/debug/dist/BallisticaKitHeadless.exe": "ccb3e7da1cfe95ed2038635e65d493c0", + "build/prefab/full/windows_x86_server/release/dist/BallisticaKitHeadless.exe": "35adf9afb9a8e2e28ac73e2480328078", "build/prefab/lib/linux_arm64_gui/debug/libballisticaplus.a": "a3607fd941915ab11503f82acfc392b5", "build/prefab/lib/linux_arm64_gui/release/libballisticaplus.a": "b5a129d83796c9e7015ab5e319d2c22f", "build/prefab/lib/linux_arm64_server/debug/libballisticaplus.a": "a3607fd941915ab11503f82acfc392b5", @@ -4100,14 +4100,14 @@ "build/prefab/lib/mac_x86_64_gui/release/libballisticaplus.a": "c5c40967e63471c9c4abd6dfbef892df", "build/prefab/lib/mac_x86_64_server/debug/libballisticaplus.a": "d34c0a142e7d391a109a33ea3cc77c08", "build/prefab/lib/mac_x86_64_server/release/libballisticaplus.a": "c5c40967e63471c9c4abd6dfbef892df", - "build/prefab/lib/windows/Debug_Win32/BallisticaKitGenericPlus.lib": "5af6712fe9a5ea3e85c6471785026ddb", - "build/prefab/lib/windows/Debug_Win32/BallisticaKitGenericPlus.pdb": "0bcc48dc4d3ba34a1f8e21cf384505e7", - "build/prefab/lib/windows/Debug_Win32/BallisticaKitHeadlessPlus.lib": "c9449a8c9d43c3f34f9eceb2db4bab47", - "build/prefab/lib/windows/Debug_Win32/BallisticaKitHeadlessPlus.pdb": "d2e4d17f9b2e0cc1c0dfef3e91c20a4e", - "build/prefab/lib/windows/Release_Win32/BallisticaKitGenericPlus.lib": "4d7a8a9a6b6a4e9aebd15570451bbccd", - "build/prefab/lib/windows/Release_Win32/BallisticaKitGenericPlus.pdb": "5b4b09bb552bf1439987117fc1a229df", - "build/prefab/lib/windows/Release_Win32/BallisticaKitHeadlessPlus.lib": "012e1f7c2a2fe0dedfc881bca725b8d4", - "build/prefab/lib/windows/Release_Win32/BallisticaKitHeadlessPlus.pdb": "6f93943644b62161accb42457f76005b", + "build/prefab/lib/windows/Debug_Win32/BallisticaKitGenericPlus.lib": "f2e326710ed9b4d60b776cc466dcd6ef", + "build/prefab/lib/windows/Debug_Win32/BallisticaKitGenericPlus.pdb": "cf3eda1d6dde5e2940d3c95c189b81c7", + "build/prefab/lib/windows/Debug_Win32/BallisticaKitHeadlessPlus.lib": "34c74a370208dcb7c04895faf5663f44", + "build/prefab/lib/windows/Debug_Win32/BallisticaKitHeadlessPlus.pdb": "a2e89d0e98d234e55eb0cbe3aa3fdeb2", + "build/prefab/lib/windows/Release_Win32/BallisticaKitGenericPlus.lib": "07437d8692539b74468b6d5603bc6a84", + "build/prefab/lib/windows/Release_Win32/BallisticaKitGenericPlus.pdb": "c85405193970b0c2ce78b1ec06016cbf", + "build/prefab/lib/windows/Release_Win32/BallisticaKitHeadlessPlus.lib": "534b291ceec828449a9fabbefe131b43", + "build/prefab/lib/windows/Release_Win32/BallisticaKitHeadlessPlus.pdb": "4ede5778fde3aba2392d89226aaad032", "src/assets/ba_data/python/babase/_mgen/__init__.py": "f885fed7f2ed98ff2ba271f9dbe3391c", "src/assets/ba_data/python/babase/_mgen/enums.py": "f8cd3af311ac63147882590123b78318", "src/ballistica/base/mgen/pyembed/binding_base.inc": "ad347097a38e0d7ede9eb6dec6a80ee9", diff --git a/CHANGELOG.md b/CHANGELOG.md index f4390f8f..6bcb9d98 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,4 +1,4 @@ -### 1.7.28 (build 21298, api 8, 2023-09-01) +### 1.7.28 (build 21299, api 8, 2023-09-01) - Added some high level functionality for copying and deleting feature-sets to the `tools/spinoff` tool. For example, to create your own `poo` feature-set, diff --git a/src/assets/ba_data/python/baenv.py b/src/assets/ba_data/python/baenv.py index 4c5c12d7..d7f58102 100644 --- a/src/assets/ba_data/python/baenv.py +++ b/src/assets/ba_data/python/baenv.py @@ -52,7 +52,7 @@ if TYPE_CHECKING: # Build number and version of the ballistica binary we expect to be # using. -TARGET_BALLISTICA_BUILD = 21298 +TARGET_BALLISTICA_BUILD = 21299 TARGET_BALLISTICA_VERSION = '1.7.28' diff --git a/src/ballistica/shared/ballistica.cc b/src/ballistica/shared/ballistica.cc index 3540e08f..4c0ebb4e 100644 --- a/src/ballistica/shared/ballistica.cc +++ b/src/ballistica/shared/ballistica.cc @@ -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 = 21298; +const int kEngineBuildNumber = 21299; const char* kEngineVersion = "1.7.28"; const int kEngineApiVersion = 8; diff --git a/tools/efrotools/efrocache.py b/tools/efrotools/efrocache.py index 84601a86..42899a2f 100644 --- a/tools/efrotools/efrocache.py +++ b/tools/efrotools/efrocache.py @@ -303,15 +303,15 @@ def update_cache(makefile_dirs: list[str]) -> None: cpus = multiprocessing.cpu_count() - # Build a list of files going into our starter cache, files going - # into our headless starter cache, and all files. + # Build lists of all cached paths as well as the subsets going into + # our starter caches. fnames_starter_gui: list[str] = [] fnames_starter_server: list[str] = [] fnames_all: list[str] = [] # If a path contains any of these substrings it will be included in # the server starter cache. - server_starter_paths = { + add_to_server_starter_paths = { 'build/assets/ba_data/fonts', 'build/assets/ba_data/data', 'build/assets/ba_data/python', @@ -319,6 +319,23 @@ def update_cache(makefile_dirs: list[str]) -> None: 'build/assets/ba_data/meshes', } + # Never add binaries to starter caches since those are specific to + # one platform/architecture; we should always download those + # as-needed. + never_add_to_starter_endings = { + '.a', + '.dll', + '.lib', + '.exe', + '.pdb', + '.so', + '.pyd', + } + + # We do include model dirs for server starters but want to filter out + # display meshes there. + never_add_to_starter_endings_server = {'.bob'} + for path in makefile_dirs: cdp = f'cd {path} && ' if path else '' @@ -348,31 +365,47 @@ def update_cache(makefile_dirs: list[str]) -> None: f'(absolute paths not allowed): {rawpath}' ) - # Break these into 2 lists, one of which will be included in the - # starter-cache. for rawpath in rawpaths: fullpath = _project_centric_path(os.path.join(path, rawpath)) - # The main reason for starter caches is to reduce overhead - # for downloading individual tiny files, so let's include - # small files only in starter lists. For larger stuff, a - # request per file shouldn't be too inefficient. Also, - # prebuilt binaries tend to be larger and we don't want to - # include a bunch of binaries for other platforms that we - # won't use. - if os.path.getsize(fullpath) < 200_000: - # Gui starter gets everything. - fnames_starter_gui.append(fullpath) - - # For server starter, limit to a few key dirs. - if any(p in fullpath for p in server_starter_paths): - # We include the meshes dir but we only want - # collision meshes; not display ones. - if not fullpath.endswith('.bob'): - fnames_starter_server.append(fullpath) - + # Always add to our full list. fnames_all.append(fullpath) + # Now selectively add to starter cache lists. + + # Always keep certain file types out of starter caches. + if any( + fullpath.endswith(ending) + for ending in never_add_to_starter_endings + ): + continue + + # Keep big files out of starter caches. The main benefits of + # the cache is that we can reduce the overhead for + # downloading individual tiny files by grabbing them all at + # once, but that advantage diminishes as the files get + # bigger. And not all platforms will use all files, so it + # generally more efficient to grab bigger ones as needed. + if os.path.getsize(fullpath) > 300_000: + continue + + # Gui starter gets everything that made it this far. + fnames_starter_gui.append(fullpath) + + # For server starter, limit to a few key dirs. + if not any(p in fullpath for p in add_to_server_starter_paths): + continue + + # Also exclude some endings from server starters. + if any( + fullpath.endswith(ending) + for ending in never_add_to_starter_endings_server + ): + continue + + # Ok this one qualifies for the server starter too. + fnames_starter_server.append(fullpath) + # Ok, we've got a big list of filenames we need to cache in the # cloud. First, however, let's do a big hash of everything and if # everything is exactly the same as last time we can skip this step.