build.sh 9.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277
  1. #!/bin/bash
  2. #
  3. # Copyright (c) Contributors to the Open 3D Engine Project.
  4. # For complete copyright and license terms please see the LICENSE at the root of this distribution.
  5. #
  6. # SPDX-License-Identifier: Apache-2.0 OR MIT
  7. #
  8. PROJECT_NAME=MultiplayerSample
  9. BUILD_ROOT=$WORKSPACE/build
  10. ###############################################################################
  11. # Clone and bootstrap O3DE
  12. ###############################################################################
  13. echo "Cloning o3de from $O3DE_REPO/$O3DE_BRANCH into $O3DE_ROOT"
  14. git clone --single-branch -b $O3DE_BRANCH $O3DE_REPO $O3DE_ROOT && \
  15. git -C $O3DE_ROOT lfs install && \
  16. git -C $O3DE_ROOT lfs pull && \
  17. git -C $O3DE_ROOT reset --hard $O3DE_COMMIT
  18. if [ $? -ne 0 ]
  19. then
  20. echo "Error cloning o3de from $O3DE_REPO"
  21. exit 1
  22. fi
  23. $O3DE_ROOT/python/get_python.sh && \
  24. $O3DE_ROOT/scripts/o3de.sh register -ep $O3DE_ROOT
  25. if [ $? -ne 0 ]
  26. then
  27. echo "Error bootstrapping O3DE from $O3DE_REPO"
  28. exit 1
  29. fi
  30. ###############################################################################
  31. # Clone and register o3de-extras
  32. ###############################################################################
  33. echo "Cloning o3de-extras from $O3DE_EXTRAS_REPO/$O3DE_EXTRAS_BRANCH into $O3DE_EXTRAS_ROOT"
  34. git clone --single-branch -b $O3DE_EXTRAS_BRANCH $O3DE_EXTRAS_REPO $O3DE_EXTRAS_ROOT && \
  35. git -C $O3DE_EXTRAS_ROOT lfs install && \
  36. git -C $O3DE_EXTRAS_ROOT lfs pull && \
  37. git -C $O3DE_EXTRAS_ROOT reset --hard $O3DE_EXTRAS_COMMIT
  38. if [ $? -ne 0 ]
  39. then
  40. echo "Error cloning o3de-extras from $O3DE_EXTRAS_REPO"
  41. exit 1
  42. fi
  43. $O3DE_ROOT/scripts/o3de.sh register --all-gems-path $O3DE_EXTRAS_ROOT/Gems
  44. if [ $? -ne 0 ]
  45. then
  46. echo "Unable to register o3de-extras Gems"
  47. exit 1
  48. fi
  49. ###############################################################################
  50. # Clone and register o3de-multiplayersample-assets
  51. ###############################################################################
  52. echo "Cloning o3de-multiplayersample-assets from $O3DE_MPS_ASSETS_REPO/$O3DE_MPS_ASSETS_BRANCH into $O3DE_MPS_ASSETS_ROOT"
  53. git clone --single-branch -b $O3DE_MPS_ASSETS_BRANCH $O3DE_MPS_ASSETS_REPO $O3DE_MPS_ASSETS_ROOT && \
  54. git -C $O3DE_MPS_ASSETS_ROOT lfs install && \
  55. git -C $O3DE_MPS_ASSETS_ROOT lfs pull && \
  56. git -C $O3DE_MPS_ASSETS_ROOT reset --hard $O3DE_MPS_ASSETS_COMMIT && \
  57. git -C $O3DE_MPS_ASSETS_ROOT submodule update --init --recursive
  58. if [ $? -ne 0 ]
  59. then
  60. echo "Unable to clone o3de-multiplayersample-assets from $O3DE_MPS_ASSETS_REPO"
  61. exit 1
  62. fi
  63. $O3DE_ROOT/scripts/o3de.sh register --all-gems-path $O3DE_MPS_ASSETS_ROOT/Gems
  64. if [ $? -ne 0 ]
  65. then
  66. echo "Unable to register o3de-multiplayersample-assets Gems"
  67. exit 1
  68. fi
  69. ###############################################################################
  70. # Clone and register o3de-multiplayersample
  71. ###############################################################################
  72. echo "Cloning o3de-multiplayersample from $O3DE_MPS_REPO/$O3DE_MPS_BRANCH into $O3DE_MPS_ROOT"
  73. git clone --single-branch -b $O3DE_MPS_BRANCH $O3DE_MPS_REPO $O3DE_MPS_ROOT && \
  74. git -C $O3DE_MPS_ROOT lfs install && \
  75. git -C $O3DE_MPS_ROOT lfs pull && \
  76. git -C $O3DE_MPS_ROOT reset --hard $O3DE_MPS_COMMIT
  77. if [ $? -ne 0 ]
  78. then
  79. echo "Unable to clone o3de-multiplayersample from $O3DE_MPS_REPO"
  80. exit 1
  81. fi
  82. $O3DE_ROOT/scripts/o3de.sh register -pp $O3DE_MPS_ROOT
  83. if [ $? -ne 0 ]
  84. then
  85. echo "Unable to register the o3de-multiplayersample project"
  86. exit 1
  87. fi
  88. ###############################################################################
  89. # Track the git commits from all the repos
  90. ###############################################################################
  91. echo -e "\n\
  92. Repository | Commit \n\
  93. ------------------------------+-----------------------------------------\n\
  94. o3de | $O3DE_REPO/tree/$(git -C $WORKSPACE/o3de rev-parse HEAD)\n\
  95. o3de-extras | $O3DE_EXTRAS_REPO/tree/$(git -C $WORKSPACE/o3de-extras rev-parse HEAD) ) \n\
  96. o3de-multiplayersample-assets | $O3DE_MPS_ASSETS_REPO/tree/$(git -C $WORKSPACE/o3de-multiplayersample-assets rev-parse HEAD) ) \n\
  97. o3de-multiplayersample | $O3DE_MPS_REPO/tree/$(git -C $WORKSPACE/o3de-multiplayersample rev-parse HEAD) ) \n\
  98. \n\
  99. " >> $WORKSPACE/git_commit.txt
  100. ###############################################################################
  101. # Build O3DE tools for asset processing and asset bundling
  102. ###############################################################################
  103. cmake -B $O3DE_MPS_ROOT/build/tools \
  104. -S $O3DE_MPS_ROOT \
  105. -G "Ninja Multi-Config" \
  106. -DLY_DISABLE_TEST_MODULES=ON \
  107. -DLY_STRIP_DEBUG_SYMBOLS=ON
  108. if [ $? -ne 0 ]
  109. then
  110. echo "Error generating O3DE tools projects"
  111. exit 1
  112. fi
  113. cmake --build $O3DE_MPS_ROOT/build/tools \
  114. --config profile \
  115. --target AssetProcessorBatch AssetBundlerBatch
  116. if [ $? -ne 0 ]
  117. then
  118. echo "Error building the O3DE tools projects"
  119. exit 1
  120. fi
  121. ###############################################################################
  122. # Build the assets for the Multiplayer Sample
  123. ###############################################################################
  124. pushd $O3DE_MPS_ROOT/build/tools/bin/profile
  125. # Initial run to process the assets
  126. ./AssetProcessorBatch
  127. # Secondary run to re-process ones that missed dependencies
  128. ./AssetProcessorBatch
  129. popd
  130. ###############################################################################
  131. # Bundle the assets for ROSCon2023Demo
  132. ###############################################################################
  133. WORKSPACE_BUNDLE_FOLDER=$WORKSPACE/bundles
  134. if [ "$PACKAGE_TYPE" = "server" ]
  135. then
  136. PACKAGE_FOLDER=$WORKSPACE/MPS_SERVER
  137. LAUNCHER_TARGET=ServerLauncher
  138. elif [ "$PACKAGE_TYPE" = "headless" ]
  139. then
  140. PACKAGE_FOLDER=$WORKSPACE/MPS_HEADLESS_SERVER
  141. LAUNCHER_TARGET=HeadlessServerLauncher
  142. elif [ "$PACKAGE_TYPE" = "game" ]
  143. then
  144. PACKAGE_FOLDER=$WORKSPACE/MPS_LAUNCHER
  145. LAUNCHER_TARGET=GameLauncher
  146. elif [ "$PACKAGE_TYPE" = "unified" ]
  147. then
  148. PACKAGE_FOLDER=$WORKSPACE/MPS_UNIFIED_LAUNCHER
  149. LAUNCHER_TARGET=UnifiedLauncher
  150. else
  151. echo "Invalid package type: $PACKAGE_TYPE"
  152. exit 1
  153. fi
  154. mkdir -p $WORKSPACE_BUNDLE_FOLDER
  155. mkdir -p $PACKAGE_FOLDER/Cache/linux
  156. ###############################################################################
  157. # Generate the bundles
  158. ###############################################################################
  159. pushd $O3DE_MPS_ROOT/build/tools/bin/profile
  160. echo "Creating the game assetList ..."
  161. ./AssetBundlerBatch assetLists \
  162. --assetListFile $WORKSPACE_BUNDLE_FOLDER/game_linux.assetList \
  163. --platform linux \
  164. --project-path $O3DE_MPS_ROOT \
  165. --seedlistFile $O3DE_MPS_ROOT/AssetBundling/SeedLists/BasePopcornFxSeedList.seed \
  166. --seedlistFile $O3DE_MPS_ROOT/AssetBundling/SeedLists/GameSeedList.seed \
  167. --seedlistFile $O3DE_MPS_ROOT/AssetBundling/SeedLists/VFXSeedList.seed \
  168. --allowOverwrites
  169. if [ $? -ne 0 ]
  170. then
  171. echo "Error generating asset list from $WORKSPACE/RosConDemoSeedList.seed"
  172. exit 1
  173. fi
  174. echo "Creating the engine assetList ..."
  175. ./AssetBundlerBatch assetLists \
  176. --assetListFile $WORKSPACE_BUNDLE_FOLDER/engine_linux.assetList \
  177. --platform linux \
  178. --project-path $O3DE_MPS_ROOT \
  179. --addDefaultSeedListFiles \
  180. --allowOverwrites
  181. if [ $? -ne 0 ]
  182. then
  183. echo "Error generating default engine asset list"
  184. exit 1
  185. fi
  186. echo "Creating the game asset bundle (pak) ..."
  187. ./AssetBundlerBatch bundles \
  188. --platform linux \
  189. --project-path $O3DE_MPS_ROOT \
  190. --allowOverwrites \
  191. --assetListFile $WORKSPACE_BUNDLE_FOLDER/game_linux.assetList \
  192. --outputBundlePath $PACKAGE_FOLDER/Cache/linux/game_linux.pak
  193. if [ $? -ne 0 ]
  194. then
  195. echo "Error bundling generating game pak"
  196. exit 1
  197. fi
  198. echo "Creating the engine asset bundle (pak) ..."
  199. ./AssetBundlerBatch bundles \
  200. --platform linux \
  201. --project-path $O3DE_MPS_ROOT \
  202. --allowOverwrites \
  203. --assetListFile $WORKSPACE_BUNDLE_FOLDER/engine_linux.assetList \
  204. --outputBundlePath $PACKAGE_FOLDER/Cache/linux/engine_linux.pak
  205. if [ $? -ne 0 ]
  206. then
  207. echo "Error bundling generating engine pak"
  208. exit 1
  209. fi
  210. # Build the game launcher monolithically
  211. echo "Building the ${PROJECT_NAME}.${LAUNCHER_TARGET}."
  212. cmake -B $O3DE_MPS_ROOT/build/game \
  213. -S $O3DE_MPS_ROOT \
  214. -G "Ninja Multi-Config" \
  215. -DLY_DISABLE_TEST_MODULES=ON \
  216. -DLY_STRIP_DEBUG_SYMBOLS=ON \
  217. -DLY_MONOLITHIC_GAME=ON \
  218. -DALLOW_SETTINGS_REGISTRY_DEVELOPMENT_OVERRIDES=0 \
  219. && cmake --build $O3DE_MPS_ROOT/build/game \
  220. --config profile \
  221. --target ${PROJECT_NAME}.${LAUNCHER_TARGET}
  222. if [ $? -ne 0 ]
  223. then
  224. echo "Error bundling ${PROJECT_NAME}.${LAUNCHER_TARGET}"
  225. exit 1
  226. fi
  227. cp $O3DE_MPS_ROOT/build/game/bin/profile/${PROJECT_NAME}.${LAUNCHER_TARGET} $PACKAGE_FOLDER/
  228. cp $O3DE_MPS_ROOT/build/game/bin/profile/*.json $PACKAGE_FOLDER/
  229. cp $O3DE_MPS_ROOT/build/game/bin/profile/*.so $PACKAGE_FOLDER
  230. echo Cleaning up data
  231. rm -rf $WORKSPACE/o3de
  232. rm -rf $WORKSPACE/o3de-extras
  233. rm -rf $WORKSPACE/o3de-multiplayersample
  234. rm -rf $WORKSPACE/o3de-multiplayersample-assets
  235. rm -rf $HOME/.o3de
  236. rm -rf $HOME/O3DE
  237. rm -rf $WORKSPACE_BUNDLE_FOLDER
  238. echo -e "Docker image built from the following repo information\n\n"
  239. cat $WORKSPACE/git_commit.txt
  240. exit 0