From 7f87756b6c812a829d8a0ec131d695a46e9e3732 Mon Sep 17 00:00:00 2001 From: frank Date: Sun, 14 Apr 2024 01:30:10 -0400 Subject: [PATCH] - added Steam build configuration file and shell script - added Windows 64 bit build target - added a distributable ZIP to the Linux build target - added demo build config - made arcade prompt compatible with demo mode --- Makefile | 131 ++++++++++++++++++++++++++++---------- Press_Kit.md | 5 +- config.json | 8 +-- index.html | 21 +----- lib/sb | 2 +- resource/Demo_message.png | Bin 17261 -> 49259 bytes src/Cakefoot.cpp | 13 ++-- src/config_demo.json | 5 +- src/steam_app_build.vdf | 41 ++++++++++++ src/steam_build.sh | 10 +++ 10 files changed, 168 insertions(+), 68 deletions(-) create mode 100644 src/steam_app_build.vdf create mode 100644 src/steam_build.sh diff --git a/Makefile b/Makefile index 1dcd99f..5c76511 100644 --- a/Makefile +++ b/Makefile @@ -21,8 +21,8 @@ SDLGFX2_DIR := $(SB_LIB_DIR)/sdl2-gfx GLEW_DIR := $(SB_LIB_DIR)/glew # C and C++ compiler commands -CC := clang -CXX := clang++ +CC := gcc-12 +CXX := g++-12 # Location of SDL config program. See README.md for how to compile the SDL library and this utility. SDLCONFIG := $(HOME)/local/sdl/bin/sdl2-config @@ -48,15 +48,17 @@ SRC_O_FILES := $(notdir $(patsubst %.cpp, %.o, $(wildcard $(addprefix $(SRC_DIR) ########################################################## BUILD_ROOT := build -X86_64_DEBUG_BUILD_DIR := $(BUILD_ROOT)/x86_64_debug -X86_64_BUILD_DIR := $(BUILD_ROOT)/x86_64 +X64_DEBUG_BUILD_DIR := $(BUILD_ROOT)/x64_debug +X64_BUILD_DIR := $(BUILD_ROOT)/x64 WASM_BUILD_DIR := $(BUILD_ROOT)/wasm WASM_DEBUG_BUILD_DIR := $(BUILD_ROOT)/wasm_debug WASM_COOLMATH_BUILD_DIR := $(BUILD_ROOT)/wasm_coolmath WINDOWS_BUILD_DIR := $(BUILD_ROOT)/win32 ARCADE_BUILD_DIR := $(BUILD_ROOT)/win32_arcade -BUILD_DIRS := $(X86_64_BUILD_DIR) $(X86_64_DEBUG_BUILD_DIR) $(WASM_BUILD_DIR) $(WASM_DEBUG_BUILD_DIR) $(WASM_COOLMATH_BUILD_DIR) \ - $(WINDOWS_BUILD_DIR) $(ARCADE_BUILD_DIR) +DEMO_BUILD_DIR := $(BUILD_ROOT)/win32_demo +WIN64_BUILD_DIR := $(BUILD_ROOT)/win64 +BUILD_DIRS := $(X64_BUILD_DIR) $(X64_DEBUG_BUILD_DIR) $(WASM_BUILD_DIR) $(WASM_DEBUG_BUILD_DIR) $(WASM_COOLMATH_BUILD_DIR) \ + $(WINDOWS_BUILD_DIR) $(ARCADE_BUILD_DIR) $(DEMO_BUILD_DIR) $(WIN64_BUILD_DIR) $(BUILD_DIRS): mkdir -p $@ @@ -185,21 +187,40 @@ $(addsuffix /Cakefoot.o, $(BUILD_DIRS)): $(SRC_DIR)/Cakefoot.cpp $(SRC_H_FILES) LINUX_CFLAGS = -c -I$(SB_LIB_DIR) -I$(SB_SRC_DIR) $(SDL_CFLAGS) -DGLEW_STATIC LINUX_CXXFLAGS = $(CFLAGS) --std=c++17 -LINUX_LFLAGS = $(SDL_LFLAGS) -Wl/,--enable-new-dtags -lpthread -lGL -lGLESv2 -lSDL2_image -lSDL2_ttf -lSDL2_mixer -lstdc++fs -LINUX_OBJ = $(addprefix $(X86_64_BUILD_DIR)/, glew.o SDL2_rotozoom.o SDL2_gfxPrimitives.o $(SB_O_FILES) $(SRC_O_FILES)) -LINUX_DEBUG_OBJ = $(addprefix $(X86_64_DEBUG_BUILD_DIR)/, glew.o SDL2_rotozoom.o SDL2_gfxPrimitives.o $(SB_O_FILES) $(SRC_O_FILES)) +# LINUX_LFLAGS = $(SDL_LFLAGS) -Wl/,--enable-new-dtags -lpthread -lGL -lGLESv2 -lSDL2_image -lSDL2_ttf -lSDL2_mixer -lstdc++fs +# LINUX_LFLAGS = $(SDL_LFLAGS) -lpthread -lGL -lGLESv2 -lSDL2_image -lSDL2_ttf -lSDL2_mixer -lstdc++fs +LINUX_LFLAGS = $(SDL_LFLAGS) -lpthread -lGL -lGLESv2 -lSDL2_image -lSDL2_ttf -lSDL2_mixer -lstdc++fs -static-libstdc++ -static-libgcc +LINUX_OBJ = $(addprefix $(X64_BUILD_DIR)/, glew.o SDL2_rotozoom.o SDL2_gfxPrimitives.o $(SB_O_FILES) $(SRC_O_FILES)) +LINUX_DEBUG_OBJ = $(addprefix $(X64_DEBUG_BUILD_DIR)/, glew.o SDL2_rotozoom.o SDL2_gfxPrimitives.o $(SB_O_FILES) $(SRC_O_FILES)) +X64_BUILD_LIB_DIR = lib/ -Cakefoot-linux.x86_64 : CFLAGS = $(LINUX_CFLAGS) -O3 -Cakefoot-linux.x86_64 : CXXFLAGS = $(LINUX_CXXFLAGS) -Cakefoot-linux.x86_64 : LFLAGS = $(LINUX_LFLAGS) -Cakefoot-linux.x86_64 : $(LINUX_OBJ) - $(CXX) $^ $(LFLAGS) -D__LINUX__ -o $(X86_64_BUILD_DIR)/$@ +Cakefoot-linux.x64 : CC = $(HOME)/ext/software/zig-linux-x86_64-0.12.0-dev.3644+05d975576/zig cc +Cakefoot-linux.x64 : CXX = $(HOME)/ext/software/zig-linux-x86_64-0.12.0-dev.3644+05d975576/zig c++ +Cakefoot-linux.x64 : CFLAGS = $(LINUX_CFLAGS) -O3 +Cakefoot-linux.x64 : CXXFLAGS = $(LINUX_CXXFLAGS) +Cakefoot-linux.x64 : LFLAGS = $(LINUX_LFLAGS) -Wl,-rpath $(X64_BUILD_LIB_DIR) +Cakefoot-linux.x64 : $(LINUX_OBJ) + $(CXX) $^ $(LFLAGS) -D__LINUX__ -o $(X64_BUILD_DIR)/$@ -Cakefoot-linux_debug.x86_64 : CFLAGS = $(LINUX_CFLAGS) -g -Wall -Wextra -O0 -fsanitize=undefined -Cakefoot-linux_debug.x86_64 : CXXFLAGS = $(LINUX_CXXFLAGS) -Cakefoot-linux_debug.x86_64 : LFLAGS = $(LINUX_LFLAGS) -fsanitize=undefined -Cakefoot-linux_debug.x86_64 : $(LINUX_DEBUG_OBJ) - $(CXX) $^ $(LFLAGS) -D__LINUX__ -o $(X86_64_DEBUG_BUILD_DIR)/$@ +# Build a distributable archive + + mkdir -p ${basename $@}/$(X64_BUILD_LIB_DIR) + cp $$(ldd $(X64_BUILD_DIR)/$@ | grep libSDL2-2.0 | cut -d" " -f3) \ + $$(ldd $(X64_BUILD_DIR)/$@ | grep libSDL2_image | cut -d" " -f3) \ + $$(ldd $(X64_BUILD_DIR)/$@ | grep libSDL2_ttf | cut -d" " -f3) \ + $$(ldd $(X64_BUILD_DIR)/$@ | grep libSDL2_mixer | cut -d" " -f3) ${basename $@}/$(X64_BUILD_LIB_DIR) + rsync -arRL resource/ src/shaders/ config.json ${basename $@} + cp $(X64_BUILD_DIR)/$@ ${basename $@} + zip -r ${@:x64=zip} ${basename $@} + mv ${@:x64=zip} $(X64_BUILD_DIR) + mv ${basename $@} /tmp + rm -rf /tmp/${basename $@} + +Cakefoot-linux_debug.x64 : CFLAGS = $(LINUX_CFLAGS) -g -Wall -Wextra -O0 -fsanitize=undefined +Cakefoot-linux_debug.x64 : CXXFLAGS = $(LINUX_CXXFLAGS) +Cakefoot-linux_debug.x64 : LFLAGS = $(LINUX_LFLAGS) -fsanitize=undefined +Cakefoot-linux_debug.x64 : $(LINUX_DEBUG_OBJ) + $(CXX) $^ $(LFLAGS) -D__LINUX__ -o $(X64_DEBUG_BUILD_DIR)/$@ ############# # Web build # @@ -316,20 +337,21 @@ $(ANDROID_BUILD_DIR)/app-debug.apk: $(ANDROID_BUILD_DIR) $(ANDROID_BUILD_DIR)/$( # Set the paths to the directories for the SDL MinGW libraries +WIN_ARCH := i686 SDL_MINGW_ROOT := $(HOME)/ext/software/SDL2-mingw -SDL_MINGW := $(SDL_MINGW_ROOT)/SDL2-2.24.2/i686-w64-mingw32 -SDL_IMG_MINGW := $(SDL_MINGW_ROOT)/SDL2_image-2.5.2/i686-w64-mingw32 -SDL_TTF_MINGW := $(SDL_MINGW_ROOT)/SDL2_ttf-2.0.15/i686-w64-mingw32 -SDL_MIXER_MINGW := $(SDL_MINGW_ROOT)/SDL2_mixer-2.5.2/i686-w64-mingw32 -WINDOWS_CFLAGS := -Wall -Wextra -O3 -c -I$(SB_LIB_DIR) -I$(SB_SRC_DIR) -DGLEW_STATIC -I$(SDL_MINGW)/include/SDL2 \ +SDL_MINGW = $(SDL_MINGW_ROOT)/SDL2-2.24.2/$(WIN_ARCH)-w64-mingw32 +SDL_IMG_MINGW = $(SDL_MINGW_ROOT)/SDL2_image-2.5.2/$(WIN_ARCH)-w64-mingw32 +SDL_TTF_MINGW = $(SDL_MINGW_ROOT)/SDL2_ttf-2.0.15/$(WIN_ARCH)-w64-mingw32 +SDL_MIXER_MINGW = $(SDL_MINGW_ROOT)/SDL2_mixer-2.5.2/$(WIN_ARCH)-w64-mingw32 +WINDOWS_CFLAGS = -Wall -Wextra -O3 -c -I$(SB_LIB_DIR) -I$(SB_SRC_DIR) -DGLEW_STATIC -I$(SDL_MINGW)/include/SDL2 \ -I$(SDL_IMG_MINGW)/include/SDL2 -I$(SDL_TTF_MINGW)/include/SDL2 -I$(SDL_MIXER_MINGW)/include/SDL2 -WINDOWS_LFLAGS := -lpthread -lstdc++fs -L$(SDL_MINGW)/lib -L$(SDL_IMG_MINGW)/lib -L$(SDL_TTF_MINGW)/lib -L$(SDL_MIXER_MINGW)/lib \ - -lmingw32 -lSDL2_image -lSDL2_ttf -lSDL2_mixer -lSDL2main -lSDL2 -lopengl32 -static-libstdc++ -static-libgcc +WINDOWS_LFLAGS = -lpthread -lstdc++fs -L$(SDL_MINGW)/lib -L$(SDL_IMG_MINGW)/lib -L$(SDL_TTF_MINGW)/lib -L$(SDL_MIXER_MINGW)/lib \ + -lmingw32 -lSDL2_image -lSDL2_ttf -lSDL2_mixer -lSDL2main -lSDL2 -lopengl32 -static-libstdc++ -static-libgcc -mwindows # Set the compiler to the MinGW compilers -Cakefoot-win32.exe: CC = i686-w64-mingw32-gcc-posix -Cakefoot-win32.exe: CXX = i686-w64-mingw32-g++-posix +Cakefoot-win32.exe: CC = $(WIN_ARCH)-w64-mingw32-gcc-posix +Cakefoot-win32.exe: CXX = $(WIN_ARCH)-w64-mingw32-g++-posix Cakefoot-win32.exe: CFLAGS = $(WINDOWS_CFLAGS) Cakefoot-win32.exe: CXXFLAGS = $(CFLAGS) --std=c++17 Cakefoot-win32.exe: LFLAGS = $(WINDOWS_LFLAGS) @@ -338,7 +360,7 @@ Cakefoot-win32.exe: $(addprefix $(WINDOWS_BUILD_DIR)/, glew.o SDL2_rotozoom.o SD $(CXX) $(filter-out config.json, $^) $(LFLAGS) -o $(WINDOWS_BUILD_DIR)/$@ mkdir ${basename $@} cp $(SDL_MINGW)/bin/*.dll $(SDL_IMG_MINGW)/bin/*.dll $(SDL_TTF_MINGW)/bin/*.dll $(SDL_MIXER_MINGW)/bin/*.dll ${basename $@} - cp /usr/i686-w64-mingw32/lib/libwinpthread-1.dll ${basename $@} + cp /usr/$(WIN_ARCH)-w64-mingw32/lib/libwinpthread-1.dll ${basename $@} rsync -arRL resource/ src/shaders/ config.json ${basename $@} cp $(WINDOWS_BUILD_DIR)/$@ ${basename $@} zip -r ${@:exe=zip} ${basename $@} @@ -346,8 +368,27 @@ Cakefoot-win32.exe: $(addprefix $(WINDOWS_BUILD_DIR)/, glew.o SDL2_rotozoom.o SD rm -rf /tmp/${basename $@} mv ${@:exe=zip} $(WINDOWS_BUILD_DIR) -Cakefoot-win32-ARCADE_ONLY.exe: CC = i686-w64-mingw32-gcc-posix -Cakefoot-win32-ARCADE_ONLY.exe: CXX = i686-w64-mingw32-g++-posix +Cakefoot-win64.exe: WIN_ARCH = x86_64 +Cakefoot-win64.exe: CC = $(WIN_ARCH)-w64-mingw32-gcc-posix +Cakefoot-win64.exe: CXX = $(WIN_ARCH)-w64-mingw32-g++-posix +Cakefoot-win64.exe: CFLAGS = $(WINDOWS_CFLAGS) +Cakefoot-win64.exe: CXXFLAGS = $(CFLAGS) --std=c++17 +Cakefoot-win64.exe: LFLAGS = $(WINDOWS_LFLAGS) +Cakefoot-win64.exe: $(addprefix $(WIN64_BUILD_DIR)/, glew.o SDL2_rotozoom.o SDL2_gfxPrimitives.o $(SB_O_FILES) $(SRC_O_FILES)) \ + config.json + $(CXX) $(filter-out config.json, $^) $(LFLAGS) -o $(WIN64_BUILD_DIR)/$@ + mkdir ${basename $@} + cp $(SDL_MINGW)/bin/*.dll $(SDL_IMG_MINGW)/bin/*.dll $(SDL_TTF_MINGW)/bin/*.dll $(SDL_MIXER_MINGW)/bin/*.dll ${basename $@} + cp /usr/$(WIN_ARCH)-w64-mingw32/lib/libwinpthread-1.dll ${basename $@} + rsync -arRL resource/ src/shaders/ config.json ${basename $@} + cp $(WIN64_BUILD_DIR)/$@ ${basename $@} + zip -r ${@:exe=zip} ${basename $@} + mv ${basename $@} /tmp + rm -rf /tmp/${basename $@} + mv ${@:exe=zip} $(WIN64_BUILD_DIR) + +Cakefoot-win32-ARCADE_ONLY.exe: CC = $(WIN_ARCH)-w64-mingw32-gcc-posix +Cakefoot-win32-ARCADE_ONLY.exe: CXX = $(WIN_ARCH)-w64-mingw32-g++-posix Cakefoot-win32-ARCADE_ONLY.exe: CFLAGS = $(WINDOWS_CFLAGS) -D__ARCADE_ONLY__ Cakefoot-win32-ARCADE_ONLY.exe: CXXFLAGS = $(CFLAGS) --std=c++17 Cakefoot-win32-ARCADE_ONLY.exe: LFLAGS = $(WINDOWS_LFLAGS) -D__ARCADE_ONLY__ @@ -356,7 +397,7 @@ Cakefoot-win32-ARCADE_ONLY.exe: $(addprefix $(ARCADE_BUILD_DIR)/, glew.o SDL2_ro $(CXX) $(filter-out config.json src/config_arcade.json, $^) $(LFLAGS) -o $(ARCADE_BUILD_DIR)/$@ mkdir ${basename $@} cp $(SDL_MINGW)/bin/*.dll $(SDL_IMG_MINGW)/bin/*.dll $(SDL_TTF_MINGW)/bin/*.dll $(SDL_MIXER_MINGW)/bin/*.dll ${basename $@} - cp /usr/i686-w64-mingw32/lib/libwinpthread-1.dll ${basename $@} + cp /usr/$(WIN_ARCH)-w64-mingw32/lib/libwinpthread-1.dll ${basename $@} rsync -arRL resource/ src/shaders/ src/config_arcade.json config.json ${basename $@} mv $(ARCADE_BUILD_DIR)/$@ ${basename $@} zip -r ${@:exe=zip} ${basename $@} @@ -364,6 +405,24 @@ Cakefoot-win32-ARCADE_ONLY.exe: $(addprefix $(ARCADE_BUILD_DIR)/, glew.o SDL2_ro rm -rf /tmp/${basename $@} mv ${@:exe=zip} $(ARCADE_BUILD_DIR) +Cakefoot-win32-DEMO.exe: CC = $(WIN_ARCH)-w64-mingw32-gcc-posix +Cakefoot-win32-DEMO.exe: CXX = $(WIN_ARCH)-w64-mingw32-g++-posix +Cakefoot-win32-DEMO.exe: CFLAGS = $(WINDOWS_CFLAGS) -D__DEMO__ +Cakefoot-win32-DEMO.exe: CXXFLAGS = $(CFLAGS) --std=c++17 +Cakefoot-win32-DEMO.exe: LFLAGS = $(WINDOWS_LFLAGS) -D__DEMO__ +Cakefoot-win32-DEMO.exe: $(addprefix $(DEMO_BUILD_DIR)/, glew.o SDL2_rotozoom.o SDL2_gfxPrimitives.o $(SB_O_FILES) \ + $(SRC_O_FILES)) config.json src/config_demo.json + $(CXX) $(filter-out config.json src/config_demo.json, $^) $(LFLAGS) -o $(DEMO_BUILD_DIR)/$@ + mkdir ${basename $@} + cp $(SDL_MINGW)/bin/*.dll $(SDL_IMG_MINGW)/bin/*.dll $(SDL_TTF_MINGW)/bin/*.dll $(SDL_MIXER_MINGW)/bin/*.dll ${basename $@} + cp /usr/$(WIN_ARCH)-w64-mingw32/lib/libwinpthread-1.dll ${basename $@} + rsync -arRL resource/ src/shaders/ src/config_demo.json config.json ${basename $@} + mv $(DEMO_BUILD_DIR)/$@ ${basename $@} + zip -r ${@:exe=zip} ${basename $@} + mv ${basename $@} /tmp + rm -rf /tmp/${basename $@} + mv ${@:exe=zip} $(DEMO_BUILD_DIR) + ############# # Press kit # ############# @@ -378,8 +437,8 @@ press : # Make all builds # ################### -all : Cakefoot-linux.x86_64 Cakefoot-linux_debug.x86_64 cakefoot.js cakefoot_debug.html cakefoot_coolmath.js Cakefoot-win32.exe \ - Cakefoot-win32-ARCADE_ONLY.exe press +all : Cakefoot-linux.x64 Cakefoot-linux_debug.x64 cakefoot.js cakefoot_debug.html cakefoot_coolmath.js Cakefoot-win32.exe \ + Cakefoot-win64.exe Cakefoot-win32-ARCADE_ONLY.exe Cakefoot-win32-DEMO.exe press ######################### # Clean up object files # @@ -397,5 +456,7 @@ clean : # renamed, or the compilation flags change. The generated database is based on the Linux build. PATH_TO_COMPILEDB = $(HOME)/ext/software/compiledb/bin/compiledb +compiledb: CC = clang-16 +compiledb: CXX = clang++-16 compiledb : - -$(PATH_TO_COMPILEDB) -n make Cakefoot-linux_debug.x86_64 -k + -$(PATH_TO_COMPILEDB) -n make Cakefoot-linux_debug.x64 -k diff --git a/Press_Kit.md b/Press_Kit.md index 313f343..e3265a6 100644 --- a/Press_Kit.md +++ b/Press_Kit.md @@ -20,7 +20,7 @@ | | $2.99 (Downloadable) | | E-mail | 📧 cocktail.frank at dank.game | -_Cakefoot_ is a challenging, single-button dodge 'em up on rails. Pilot a walking cake -- hold to accelerate, let go to drift back, and avoid enemy patterns. Featuring an epic 22-level quest, arcade mode, unlockables, and high scores, _Cakefoot_ is endlessly replayable, and impossible to defeat. +Fork it up! _Cakefoot_ is a challenging, single-button dodge 'em up on rails. Pilot a walking cake -- hold to accelerate, let go to drift back -- and survive against all odds. Featuring 22 epic levels, arcade mode, unlockables, and high scores, _Cakefoot_ is endlessly replayable, and impossible to defeat. Features ======== @@ -35,7 +35,7 @@ Features * Supports mouse, keyboard, and gamepad * Can run fullscreen, and can be displayed on any monitor in a multi-monitor setup * Dynamically resize the window to any dimension -* Simple JSON syntax for creating and sharing new levels and skins +* Simple JSON syntax for creating and sharing custom levels and skins * Modifiable [source code](https://open.shampoo.ooo/shampoo/cakefoot) Trailer @@ -131,7 +131,6 @@ Upcoming conventions, festivals, and events Weekly livestreams of Cakefoot, played by the developer, occasionally featuring guest players -* [Fork it up: Cakefoot Live on Twitch](https://twitch.tv/dankd0tgame) (Wed. 4/10 @ 8-11pm EST) * [Fork it up: Cakefoot Live on Twitch](https://twitch.tv/dankd0tgame) (Wed. 4/17 @ 8-11pm EST) * [Fork it up: Cakefoot Live on Twitch](https://twitch.tv/dankd0tgame) (Wed. 4/24 @ 8-11pm EST) * [Fork it up: Cakefoot Live on Twitch](https://twitch.tv/dankd0tgame) (Wed. 5/1 @ 8-11pm EST) diff --git a/config.json b/config.json index 717afaa..e01da82 100644 --- a/config.json +++ b/config.json @@ -143,8 +143,8 @@ "log": { - "enabled": true, - "output-directory": "/var/log/sb/", + "enabled": false, + "output-directory": "log", "debug-to-stdout": false, "debug-to-file": true, "info-file-name": "cakefoot_info.log", @@ -451,8 +451,8 @@ "demo": { "active": false, - "idle timeout": 20.0, - "countdown display timeout": 11.0, + "idle timeout": 25.0, + "countdown display timeout": 5.0, "countdown message": "IDLE RESET IN ", "message translation": [0.0, 0.83], "message scale": [1.05, 0.14] diff --git a/index.html b/index.html index be8252f..aced47f 100644 --- a/index.html +++ b/index.html @@ -193,23 +193,6 @@ - -
✨️  @@ -362,7 +345,7 @@ * https://emscripten.org/docs/api_reference/module.html#Module.locateFile */ if (path.endsWith(".data")) { - return "build/wasm/" + path; + return "dist/wasm/" + path; } else { @@ -373,6 +356,6 @@ - + diff --git a/lib/sb b/lib/sb index 5fa063a..6fdfa67 160000 --- a/lib/sb +++ b/lib/sb @@ -1 +1 @@ -Subproject commit 5fa063ac6ffdff9b8de5e42ee115ad8dc99e4ef1 +Subproject commit 6fdfa67c4181b023925b6a1e86950b6fb1378959 diff --git a/resource/Demo_message.png b/resource/Demo_message.png index 890787b37133bd6051f88f484a424b1f2d08e3af..16e4979012d056835068b9155fb6e2389516ddf4 100644 GIT binary patch literal 49259 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, configuration()("button", name + " translation"), scale, dimensions.y / dimensions.x}; } - /* Replace start text texture with arcade prompt image in arcade-only mode */ - if (configuration()("display", "arcade only")) + /* Replace start text texture with arcade prompt image if requested in config */ + if (configuration()("display", "use arcade prompt")) { sb::Texture arcade_prompt_texture {configuration()("button", "start alt texture").get()}; arcade_prompt_texture.load(); @@ -2848,7 +2848,7 @@ void Cakefoot::update(float timestamp) if (level_index == 0) { /* Flash play button */ - if (!configuration()("display", "arcade only")) + if (!configuration()("display", "use arcade prompt")) { glUniform4fv(uniform.at("color addition"), 1, &rotating_hue.normal()[0]); } @@ -2861,8 +2861,8 @@ void Cakefoot::update(float timestamp) glUniform4fv(uniform.at("color addition"), 1, &glm::vec4(0)[0]); } - /* Disable spinners in arcade-only mode */ - if (!configuration()("display", "arcade only")) + /* Disable spinners if arcade prompt displayed */ + if (!configuration()("display", "use arcade prompt")) { /* Draw spinner buttons */ for (const std::string& name : { @@ -3175,6 +3175,9 @@ int main() #if defined(__ARCADE_ONLY__) /* Merge the arcade-only configuration */ Cakefoot game = Cakefoot({"src/config_arcade.json"}); +#elif defined(__DEMO__) + /* Merge the demo configuration */ + Cakefoot game = Cakefoot({"src/config_demo.json"}); #elif defined(__COOLMATH__) /* Merge config specific to the coolmath WASM build */ Cakefoot game = Cakefoot({"src/config_coolmath.json"}); diff --git a/src/config_demo.json b/src/config_demo.json index 83abea4..f237ff6 100644 --- a/src/config_demo.json +++ b/src/config_demo.json @@ -1,7 +1,10 @@ { "display": { - "qr display": true + "dimensions": [1920, 1080], + "fullscreen": true, + "qr display": true, + "use arcade prompt": true }, "demo": { diff --git a/src/steam_app_build.vdf b/src/steam_app_build.vdf new file mode 100644 index 0000000..bf06cf9 --- /dev/null +++ b/src/steam_app_build.vdf @@ -0,0 +1,41 @@ +"AppBuild" +{ + "AppID" "2869020" // your AppID + "Desc" "Cakefoot on Windows, MacOS, and Linux for Steam" // internal description for this build + + "ContentRoot" "../dist/" // root content folder, relative to location of this file + "BuildOutput" "../local/steam-sdk-output/" // build output folder for build logs and build cache files + + "Depots" + { + "2869022" // your DepotID + { + "FileMapping" + { + "LocalPath" "Cakefoot-linux/*" // all files from contentroot folder + "DepotPath" "." // mapped into the root of the depot + "recursive" "1" // include all subfolders + } + } + + "2869023" // your DepotID + { + "FileMapping" + { + "LocalPath" "Cakefoot-win64/*" // all files from contentroot folder + "DepotPath" "." // mapped into the root of the depot + "recursive" "1" // include all subfolders + } + } + + "2869024" // your DepotID + { + "FileMapping" + { + "LocalPath" "Cakefoot-win32/*" // all files from contentroot folder + "DepotPath" "." // mapped into the root of the depot + "recursive" "1" // include all subfolders + } + } + } +} diff --git a/src/steam_build.sh b/src/steam_build.sh new file mode 100644 index 0000000..67847c6 --- /dev/null +++ b/src/steam_build.sh @@ -0,0 +1,10 @@ +#!/bin/bash + +unzip -d dist/ dist/Cakefoot-linux.zip +unzip -d dist/ dist/Cakefoot-win32.zip +unzip -d dist/ dist/Cakefoot-win64.zip +bash $HOME/ext/software/steamworks/sdk/tools/ContentBuilder/builder_linux/steamcmd.sh +login tarecontrol +run_app_build \ + $(pwd)/src/steam_app_build.vdf +quit +mv dist/Cakefoot-linux /tmp && rm -rf /tmp/Cakefoot-linux +mv dist/Cakefoot-win32 /tmp && rm -rf /tmp/Cakefoot-win32 +mv dist/Cakefoot-win64 /tmp && rm -rf /tmp/Cakefoot-win64