Files
ProjectEleri/BuildGame.bat

177 lines
4.9 KiB
Batchfile

@echo off
setlocal enabledelayedexpansion
echo ===================================
echo Eleri - Build, Upload and Notify
echo ===================================
:: ---- CONFIG - edit these ----
set UE_VERSION=5.8
set PROJECT_PATH=C:\Projects\ProjectEleri\ProjectEleri.uproject
set PROJECT_NAME=Eleri
set OUTPUT_DIR=C:\Projects\ProjectEleri\BUILD
set MAX_BUILDS=10
set UAT_PATH=C:\Program Files\Epic Games\UE_%UE_VERSION%\Engine\Build\BatchFiles\RunUAT.bat
:: ---- STEAM CONFIG - edit these ----
set STEAMCMD_PATH=C:\Users\adnan\Downloads\steamworks_sdk_161\sdk\tools\ContentBuilder\builder\steamcmd.exe
set STEAM_USERNAME=adodev
set STEAM_APP_ID=3528720
:: Only Shipping gets uploaded to Steam - DebugGame builds are local-only
set STEAM_DEPOT_SHIPPING=3528721
:: Folder where generated Steam VDF scripts will be written (temp working files, safe to keep in OUTPUT_DIR)
set STEAM_VDF_DIR=%OUTPUT_DIR%\steam_vdf
:: ---- ARGUMENTS ----
set BUILD_VERSION=%1
set CHANGELOG=%~2
:: ---- PROMPT IF MISSING ----
if "%BUILD_VERSION%"=="" set /p BUILD_VERSION="Build version (e.g. 1.0.0-build.42): "
if "%CHANGELOG%"=="" set /p CHANGELOG="Changelog / notes (optional, press Enter to skip): "
:: ---- STEP SELECTION ----
echo.
echo Which steps would you like to run?
echo 1 - Build only
echo 2 - Build + Upload to Steam
echo.
set /p RUN_STEPS="Enter choice (1-2): "
if "%RUN_STEPS%"=="" set RUN_STEPS=1
if "%RUN_STEPS%" LSS "1" set RUN_STEPS=1
if "%RUN_STEPS%" GTR "2" set RUN_STEPS=1
:: ---- CONFIG SELECTION ----
echo.
echo Which configuration(s) would you like to build?
echo 1 - DebugGame
echo 2 - Shipping
echo 3 - Both
echo.
set /p CFG_CHOICE="Enter choice (1-3): "
if "%CFG_CHOICE%"=="" set CFG_CHOICE=1
if "%CFG_CHOICE%"=="1" set CONFIGS=DebugGame
if "%CFG_CHOICE%"=="2" set CONFIGS=Shipping
if "%CFG_CHOICE%"=="3" set CONFIGS=DebugGame Shipping
if not defined CONFIGS set CONFIGS=DebugGame
echo.
echo Running steps 1 through %RUN_STEPS% for configuration(s): %CONFIGS%
echo.
:: ====================================
:: MAIN LOOP - one pass per selected config
:: ====================================
for %%C in (%CONFIGS%) do (
call :build_one_config %%C
if !errorlevel! neq 0 (
echo ERROR: Pipeline failed for config %%C.
pause
exit /b 1
)
)
echo.
echo ===================================
echo All done! (ran steps 1-%RUN_STEPS% for: %CONFIGS%)
echo ===================================
pause
exit /b 0
:: ====================================
:: SUBROUTINE - build/upload a single config
:: %1 = config name (DebugGame or Shipping)
:: ====================================
:build_one_config
set THIS_CONFIG=%~1
set BUILD_OUTPUT=%OUTPUT_DIR%\%BUILD_VERSION%\%THIS_CONFIG%
:: ---- STEP 1: BUILD ----
echo.
echo [1/2] Building %PROJECT_NAME% in %THIS_CONFIG% mode...
echo.
call "%UAT_PATH%" BuildCookRun ^
-project="%PROJECT_PATH%" ^
-noP4 ^
-platform=Win64 ^
-clientconfig=%THIS_CONFIG% ^
-cook ^
-build ^
-stage ^
-pak ^
-archive ^
-archivedirectory="%BUILD_OUTPUT%" ^
-prereqs ^
-nodebuginfo
set BUILD_EXIT=%errorlevel%
echo.
echo UAT exited with code: %BUILD_EXIT%
if %BUILD_EXIT% neq 0 (
echo ERROR: Build failed for %THIS_CONFIG%!
exit /b 1
)
echo Build succeeded for %THIS_CONFIG%!
echo Build folder: %BUILD_OUTPUT%
if %RUN_STEPS% EQU 1 exit /b 0
:: ---- STEP 2: UPLOAD TO STEAM ----
if /I "%THIS_CONFIG%"=="DebugGame" (
echo.
echo DebugGame is local-only - skipping Steam upload for this config.
exit /b 0
)
echo.
echo [2/2] Uploading %THIS_CONFIG% build to Steam...
set STEAM_DEPOT=%STEAM_DEPOT_SHIPPING%
if "%STEAM_DEPOT%"=="" (
echo ERROR: No Steam depot ID configured for Shipping. Skipping upload.
exit /b 1
)
if not exist "%STEAM_VDF_DIR%" mkdir "%STEAM_VDF_DIR%"
set APP_VDF=%STEAM_VDF_DIR%\app_build_%THIS_CONFIG%.vdf
set DEPOT_VDF=%STEAM_VDF_DIR%\depot_build_%THIS_CONFIG%.vdf
:: Generate depot script - points at the build output directly
(
echo "DepotBuildConfig"
echo {
echo "DepotID" "%STEAM_DEPOT%"
echo "ContentRoot" "%BUILD_OUTPUT%\Windows"
echo "FileMapping"
echo {
echo "LocalPath" "*"
echo "DepotPath" "."
echo "recursive" "1"
echo }
echo }
) > "%DEPOT_VDF%"
:: Generate app build script
(
echo "AppBuild"
echo {
echo "AppID" "%STEAM_APP_ID%"
echo "Desc" "%PROJECT_NAME% %BUILD_VERSION% [%THIS_CONFIG%] - %CHANGELOG%"
echo "ContentRoot" "%BUILD_OUTPUT%\Windows"
echo "BuildOutput" "%STEAM_VDF_DIR%\output_%THIS_CONFIG%"
echo "Depots"
echo {
echo "%STEAM_DEPOT%" "%DEPOT_VDF%"
echo }
echo }
) > "%APP_VDF%"
"%STEAMCMD_PATH%" +login %STEAM_USERNAME% +run_app_build "%APP_VDF%" +quit
set STEAM_EXIT=%errorlevel%
if %STEAM_EXIT% neq 0 (
echo ERROR: Steam upload failed for %THIS_CONFIG% ^(exit code %STEAM_EXIT%^).
exit /b 1
)
echo Steam upload succeeded for %THIS_CONFIG%!
exit /b 0