From 279c7c83b869e69e9c1bb75289235243c8b0855b Mon Sep 17 00:00:00 2001 From: frank Date: Wed, 24 Apr 2024 15:04:11 -0400 Subject: [PATCH] separate shaders for GLES and GL, add MacOS build --- .gitignore | 1 + Makefile | 53 +++++++++++++++++++++++++++-- Press_Kit.md | 19 +++++++++-- config.json | 16 ++++++--- lib/sb | 2 +- resource/icon.png | Bin 0 -> 2451 bytes src/Cakefoot.cpp | 18 ++++++---- src/Cakefoot.hpp | 2 ++ src/Character.hpp | 25 ++++++++------ src/Info.plist | 18 ++++++++++ src/config_wasm.json | 6 ++++ src/shaders/gl/shader.frag | 23 +++++++++++++ src/shaders/gl/shader.vert | 26 ++++++++++++++ src/shaders/{ => gles}/shader.frag | 2 +- src/shaders/{ => gles}/shader.vert | 2 +- src/steam_app_build.vdf | 42 ++++++++++++++--------- src/steam_build.sh | 3 ++ 17 files changed, 210 insertions(+), 48 deletions(-) create mode 100644 resource/icon.png create mode 100644 src/Info.plist create mode 100644 src/shaders/gl/shader.frag create mode 100644 src/shaders/gl/shader.vert rename src/shaders/{ => gles}/shader.frag (91%) rename src/shaders/{ => gles}/shader.vert (90%) diff --git a/.gitignore b/.gitignore index cd1224e..ad2aff9 100644 --- a/.gitignore +++ b/.gitignore @@ -18,3 +18,4 @@ storage/ Play_History.json press.html feed +test.html diff --git a/Makefile b/Makefile index d326b75..cb913f3 100644 --- a/Makefile +++ b/Makefile @@ -29,8 +29,8 @@ SDLGFX2_DIR := $(SB_LIB_DIR)/sdl2-gfx GLEW_DIR := $(SB_LIB_DIR)/glew # C and C++ compiler commands -CC := gcc-12 -CXX := g++-12 +CC := clang +CXX := clang++ # Location of SDL config program. See README.md for how to compile the SDL library and this utility. Define SDL_BIN_DIR when invoking # make to use an alternate SDL installation location. @@ -67,8 +67,9 @@ ARCADE_BUILD_DIR := $(BUILD_ROOT)/win32_arcade DEMO_BUILD_DIR := $(BUILD_ROOT)/win32_demo WIN64_BUILD_DIR := $(BUILD_ROOT)/win64 UBUNTU18_BUILD_DIR := $(BUILD_ROOT)/ubuntu18 +MACOS_BUILD_DIR := $(BUILD_ROOT)/macos 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) $(UBUNTU_BUILD_DIR) + $(WINDOWS_BUILD_DIR) $(ARCADE_BUILD_DIR) $(DEMO_BUILD_DIR) $(WIN64_BUILD_DIR) $(UBUNTU_BUILD_DIR) $(MACOS_BUILD_DIR) $(BUILD_DIRS): mkdir -p $@ @@ -289,6 +290,52 @@ cakefoot_coolmath.js : $(addprefix $(WASM_COOLMATH_BUILD_DIR)/, SDL2_rotozoom.o zip -r Cakefoot_coolmath.zip cakefoot_coolmath.data cakefoot_coolmath.js cakefoot_coolmath.wasm index.html && \ rm cakefoot_coolmath.data cakefoot_coolmath.js cakefoot_coolmath.wasm index.html && cd - +############### +# MacOS build # +############### + +# This is intended to build a signed MacOS universal (x86_64 and arm64 in one) application bundle on Linux using the cross-compiler +# project osxcross (https://github.com/tpoechtrager/osxcross). It could probably be edited to work with any MacOS compiler, though. +# The program rcodesign (https://gregoryszorc.com/docs/apple-codesign/0.27.0/apple_codesign_getting_started.html) is required for +# signing the application bundle along with a certificate generated through Apple's developer tools portal. + +MACOS_CROSS_ROOT = /media/gdrive/osxcross +MACOS_CROSS_FW = $(MACOS_CROSS_ROOT)/local/Frameworks +MACOS_CFLAGS = -Wall -Wextra -O3 -c -I$(SB_LIB_DIR) -I$(SB_SRC_DIR) -DGLEW_STATIC -F$(MACOS_CROSS_FW) \ + -I$(MACOS_CROSS_FW)/SDL2.framework/Headers -I$(MACOS_CROSS_FW)/SDL2_image.framework/Headers \ + -I$(MACOS_CROSS_FW)/SDL2_ttf.framework/Headers -I$(MACOS_CROSS_FW)/SDL2_mixer.framework/Headers -D__MACOS__ -D__APPLE__ +MACOS_CXXFLAGS = $(CFLAGS) --std=c++17 +MACOS_LFLAGS = -Wl,-rpath,@executable_path/../Frameworks -pthread -F$(MACOS_CROSS_FW) -framework SDL2 \ + -framework SDL2_image -framework SDL2_ttf -framework SDL2_mixer -framework OpenGL +MACOS_OBJ = $(addprefix $(MACOS_BUILD_DIR)/, glew.o SDL2_rotozoom.o SDL2_gfxPrimitives.o $(SB_O_FILES) $(SRC_O_FILES)) +MACOS_BUNDLE = $(MACOS_BUILD_DIR)/dmg/$@ +MACOS_BUNDLE_CONTENTS = $(MACOS_BUILD_DIR)/dmg/$@/Contents +MACOS_CROSS_BIN = $(MACOS_CROSS_ROOT)/target/bin +MACOS_CERTIFICATE = local/Cakefoot_MacOS_DeveloperID_Application.pem +MACOS_RCODESIGN = ~/ext/software/apple-codesign-0.27.0/rcodesign + +Cakefoot.app : CC = MACOSX_DEPLOYMENT_TARGET=11.3 PATH=$(PATH):$(MACOS_CROSS_BIN) o64-clang -arch arm64 -arch x86_64 +Cakefoot.app : CXX = MACOSX_DEPLOYMENT_TARGET=11.3 PATH=$(PATH):$(MACOS_CROSS_BIN) o64-clang++ -arch arm64 -arch x86_64 +Cakefoot.app : CFLAGS = $(MACOS_CFLAGS) +Cakefoot.app : CXXFLAGS = $(MACOS_CXXFLAGS) +Cakefoot.app : LFLAGS = $(MACOS_LFLAGS) +Cakefoot.app : $(MACOS_OBJ) + mkdir -p $(MACOS_BUNDLE_CONTENTS)/MacOS $(MACOS_BUNDLE_CONTENTS)/Frameworks $(MACOS_BUNDLE_CONTENTS)/Resources + cp src/Info.plist $(MACOS_BUNDLE_CONTENTS) + cp -r $(MACOS_CROSS_FW)/SDL2*.framework $(MACOS_BUNDLE_CONTENTS)/Frameworks + $(CXX) $^ $(LFLAGS) -o $(MACOS_BUNDLE_CONTENTS)/MacOS/$(basename $@) + rsync -arRL resource/ src/shaders/ config.json $(MACOS_BUNDLE_CONTENTS)/Resources + $(MACOS_RCODESIGN) sign --for-notarization --code-signature-flags runtime --pem-file $(MACOS_CERTIFICATE) $(MACOS_BUNDLE) + +notarize : + $(MACOS_RCODESIGN) notary-submit --api-key-file local/Cakefoot_App_Store_Connect_API_key.json --staple \ + $(MACOS_BUILD_DIR)/dmg/Cakefoot.app + cd $(MACOS_BUILD_DIR) && genisoimage -V Cakefoot -D -R -apple -no-pad -hide-rr-moved -o Cakefoot.dmg dmg && cd - + +# Use this to transfer the app folder with symbolic links to the emulator running at port 50922 +# +# rsync -Wav -e 'ssh -p 50922' --progress build/macos/dmg/Cakefoot.app frank@localhost:/Users/frank/ + ################# # Android build # ################# diff --git a/Press_Kit.md b/Press_Kit.md index 966b212..50d2aa4 100644 --- a/Press_Kit.md +++ b/Press_Kit.md @@ -14,8 +14,9 @@ | | [Cakefoot on IGDB](https://www.igdb.com/games/cakefoot) | | Genre | Action, Arcade, Rage, Minimalist, Single-button, Masocore | | Platforms | Web, PC, Mac, Linux, [Coolmathgames](https://coolmathgames.com) | -| Release | 📅 January 1st, 2024 (Early Access) | -| | 📅 May 10th, 2024 (Web, PC, Mac, Linux) | +| Release | 📅 1/1/2024 (Early Access) | +| | 📅 5/10/2024 (Web, PC, Mac, Linux) | +| | 📅 TBA (Android) | | Price | Free-to-play, Ad-supported (Web) | | | $2.99 (Downloadable) | | E-mail | 📧 cocktail.frank at dank.game | @@ -104,6 +105,18 @@ Gameplay video News ==== +### Cakefoot was reviewed in ### + +* [Fusion R Gamer](https://fusionrgamer.com/2024/04/17/cakefoot-ultrahard-avoid-em-up-heading-to-steam/) +* [Hardcore Gamers Unified](https://www.hgunified.com/home/preview-cakefoot-pc.html) + +### Steam curators have recommended Cakefoot ### + +* [INDIEstructible](https://store.steampowered.com/curator/41972991-INDIEstructible/) +* [linuxgamer](https://store.steampowered.com/curator/7014924-linuxgamer/) +* [Cue Review](https://store.steampowered.com/curator/6857352-Cue-Review/) +* [CSH Picone](https://store.steampowered.com/curator/27440015-CSH-Picone/) + ### Cake day ### Cakefoot will be playable at the [cake day event](https://www.instagram.com/p/C40yS-cOp4e/) for Boshi's Place in Brooklyn, NY on Saturday, April 6th, starting at 7pm! @@ -147,7 +160,7 @@ A custom game engine called [SPACE🪐BOX](https://open.shampoo.ooo/shampoo/spac Review Builds ============= -Download keys are available for the Steam version, send me a message at cocktail.frank at dank.game +Free keys are available for the Steam version, and free downloads are available for PC, MacOS, and Linux. Send me a message at cocktail.frank at dank.game! Logo ==== diff --git a/config.json b/config.json index e01da82..466765d 100644 --- a/config.json +++ b/config.json @@ -28,7 +28,7 @@ "hitbox": false, "use play button": false, "arcade only": false, - "use arcade prompt": false, + "use arcade prompt": true, "game over text": "GAME OVER", "game over display time": 2.5, "game over foreground": [255.0, 255.0, 255.0, 255.0], @@ -54,7 +54,7 @@ "scoreboard translation": [-0.4, 0.835], "scoreboard scale": [1.35, 0.14], "scoreboard wrap": 3000, - "qr display": false, + "qr display": true, "qr background display": true, "qr background texture": "resource/qr_background.png", "qr texture": "resource/qr.png", @@ -98,6 +98,12 @@ "social media click": false }, + "shader": + { + "vertex": "src/shaders/gl/shader.vert", + "fragment": "src/shaders/gl/shader.frag" + }, + "configuration": { "auto refresh": true, @@ -450,9 +456,9 @@ "demo": { - "active": false, - "idle timeout": 25.0, - "countdown display timeout": 5.0, + "active": true, + "idle timeout": 30.0, + "countdown display timeout": 10.0, "countdown message": "IDLE RESET IN ", "message translation": [0.0, 0.83], "message scale": [1.05, 0.14] diff --git a/lib/sb b/lib/sb index 87a946a..8498dfa 160000 --- a/lib/sb +++ b/lib/sb @@ -1 +1 @@ -Subproject commit 87a946a61eb1e126131c3d24fd87f28af2cbcb6e +Subproject commit 8498dfa00472431a6dd8a2ec588f0792a9e435dc diff --git a/resource/icon.png b/resource/icon.png new file mode 100644 index 0000000000000000000000000000000000000000..f2c12cf6a72f7c92692349d95a9c3c5691aa9fbf GIT binary patch literal 2451 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 0 && configuration()("demo", "active") && - idle_timer.elapsed() > configuration()("demo", "idle timeout")) + /* In demo mode, reset game if idle timeout elapsed, or reset idle timer if character is accelerating */ + if (level_index > 0 && configuration()("demo", "active") && idle_timer.elapsed() > configuration()("demo", "idle timeout")) { sb::Delegate::post("reset"); } + else if (character.accelerating) + { + idle_timer.reset(); + } /* Arcade scoring */ auto& maximum_distance = configuration()["progress"]["arcade max distance"].get_ref(); diff --git a/src/Cakefoot.hpp b/src/Cakefoot.hpp index 51e44df..7781314 100644 --- a/src/Cakefoot.hpp +++ b/src/Cakefoot.hpp @@ -17,7 +17,9 @@ #include #include #include +#if !defined(__MACOS__) #include +#endif #include #include diff --git a/src/Character.hpp b/src/Character.hpp index 755460e..9a6138f 100644 --- a/src/Character.hpp +++ b/src/Character.hpp @@ -41,9 +41,11 @@ private: sb::Animation walk; /*! - * A JSON object containing the fields: name, speed increment, speed decrement, max speed, increment mod, decrement mod, and animation frames. - * This will use the profile name set by Character::profile(const std::string&) to get the associated profile in Character::configuration at - * `character -> profile`. + * A JSON object containing the fields: name, speed increment, speed decrement, max speed, increment mod, decrement mod, and + * animation frames. + * + * This will use the profile name set by Character::profile(const std::string&) to get the associated profile in + * Character::configuration at `character -> profile`. * * @return JSON containing the currently selected profile name along with physics and texture values */ @@ -67,15 +69,15 @@ public: Character(const Configuration& configuration, std::map& audio); /*! - * Change the character's physics and texture by specifying a profile name. The name refers to a JSON profile stored in an array of profiles - * in `Character::configuration` at `character -> profile`. The JSON for each profile is expected to contain the following fields: name, speed - * increment, speed decrement, max speed, increment mod, decrement mod, and animation frames. + * Change the character's physics and texture by specifying a profile name. The name refers to a JSON profile stored in an array of + * profiles in `Character::configuration` at `character -> profile`. The JSON for each profile is expected to contain the following + * fields: name, speed increment, speed decrement, max speed, increment mod, decrement mod, and animation frames. * - * The character will refer to the given profile when accessing the profile in other calls. No physics values are directly modified by this - * function. This is done so external changes to the configuration can be registered automatically during runtime. + * The character will refer to the given profile when accessing the profile in other calls. No physics values are directly modified + * by this function. This is done so external changes to the configuration can be registered automatically during runtime. * - * However, the texture will be directly modified because re-reading the texture every frame is too slow. To automate re-reading the texture, - * insert a hook into the game's update loop that runs this function every time a configuration modification is detected. + * However, the texture will be directly modified because re-reading the texture every frame is too slow. To automate re-reading the + * texture, insert a hook into the game's update loop that runs this function every time a configuration modification is detected. * * @param name String in the name field of the chosen profile in the list of profiles at `character -> profile` */ @@ -162,5 +164,6 @@ public: * @param projection projection transformation matrix * @param texture_flag_uniform uniform location in the shader program of the boolean that turns texture drawing on or off */ - void draw(const Curve& curve, GLuint transformation_uniform, const glm::mat4& view, const glm::mat4& projection, GLuint texture_flag_uniform); + void draw(const Curve& curve, GLuint transformation_uniform, const glm::mat4& view, const glm::mat4& projection, + GLuint texture_flag_uniform); }; diff --git a/src/Info.plist b/src/Info.plist new file mode 100644 index 0000000..1e8fd21 --- /dev/null +++ b/src/Info.plist @@ -0,0 +1,18 @@ + + + + + CFBundleName + Cakefoot + CFBundleExecutable + Cakefoot + CFBundleIdentifier + com.dank.Cakefoot + CFBundleVersion + 1.0.0 + CFBundleIconFile + resource/icon.png + CFBundlePackageType + APPL + + diff --git a/src/config_wasm.json b/src/config_wasm.json index 5845b63..3bb0b41 100644 --- a/src/config_wasm.json +++ b/src/config_wasm.json @@ -9,6 +9,12 @@ "title": "Cakefoot 🍰😈 | Rage game | Wishlist now on Steam!" }, + "shader": + { + "vertex": "src/shaders/gles/shader.vert", + "fragment": "src/shaders/gles/shader.frag" + }, + "recording": { "enabled": false diff --git a/src/shaders/gl/shader.frag b/src/shaders/gl/shader.frag new file mode 100644 index 0000000..b60a9d6 --- /dev/null +++ b/src/shaders/gl/shader.frag @@ -0,0 +1,23 @@ +#version 150 + +/* https://open.shampoo.ooo/shampoo/cakefoot */ + +/* The precision declaration is required by OpenGL ES */ +precision mediump float; + +in vec2 fragment_uv; +in vec4 ex_color; + +uniform sampler2D model_texture; +uniform int uv_transformation; +uniform float coordinate_bound; +uniform bool texture_enabled; +uniform vec4 color_addition; + +out vec4 output_color; + +void main() +{ + output_color = float(texture_enabled) * (texture(model_texture, fragment_uv) + color_addition); + output_color += (1.0 - float(texture_enabled)) * (ex_color + color_addition); +} diff --git a/src/shaders/gl/shader.vert b/src/shaders/gl/shader.vert new file mode 100644 index 0000000..3946391 --- /dev/null +++ b/src/shaders/gl/shader.vert @@ -0,0 +1,26 @@ +#version 150 + +/* https://open.shampoo.ooo/shampoo/cakefoot */ + +/* The precision declaration is required by OpenGL ES */ +precision mediump float; + +in vec3 vertex_position; +in vec4 vertex_color; +in vec2 vertex_uv; + +uniform mat4 mvp; +uniform float time; + +out vec4 ex_color; +out vec2 fragment_uv; + +void main() +{ + gl_Position = vec4(vertex_position, 1); + gl_Position = mvp * gl_Position; + + /* passing to fragment program */ + ex_color = vertex_color; + fragment_uv = vertex_uv; +} diff --git a/src/shaders/shader.frag b/src/shaders/gles/shader.frag similarity index 91% rename from src/shaders/shader.frag rename to src/shaders/gles/shader.frag index 604390b..53710a9 100644 --- a/src/shaders/shader.frag +++ b/src/shaders/gles/shader.frag @@ -1,6 +1,6 @@ #version 300 es -/* https://foam.ooo/cakefoot */ +/* https://open.shampoo.ooo/shampoo/cakefoot */ /* The precision declaration is required by OpenGL ES */ precision mediump float; diff --git a/src/shaders/shader.vert b/src/shaders/gles/shader.vert similarity index 90% rename from src/shaders/shader.vert rename to src/shaders/gles/shader.vert index 732ab4d..40aa1f6 100644 --- a/src/shaders/shader.vert +++ b/src/shaders/gles/shader.vert @@ -1,6 +1,6 @@ #version 300 es -/* https://foam.ooo/cakefoot */ +/* https://open.shampoo.ooo/shampoo/cakefoot */ /* The precision declaration is required by OpenGL ES */ precision mediump float; diff --git a/src/steam_app_build.vdf b/src/steam_app_build.vdf index 4daf20a..b62bb15 100644 --- a/src/steam_app_build.vdf +++ b/src/steam_app_build.vdf @@ -1,40 +1,50 @@ "AppBuild" { - "AppID" "2869020" // your AppID - "Desc" "Cakefoot on Windows, MacOS, and Linux for Steam" // internal description for this build + "AppID" "2869020" // AppID + "Desc" "Cakefoot on Windows, MacOS, and Linux for Steam" // internal description for this build - "ContentRoot" "../dist/protected/" // root content folder, relative to location of this file - "BuildOutput" "../local/steam-sdk-output/" // build output folder for build logs and build cache files + "ContentRoot" "../dist/protected/" // 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 + "2869022" // DepotID { "FileMapping" { - "LocalPath" "Cakefoot-linux/*" // all files from contentroot folder - "DepotPath" "." // mapped into the root of the depot - "recursive" "1" // include all subfolders + "LocalPath" "Cakefoot-linux/*" // all files from contentroot folder + "DepotPath" "." // mapped into the root of the depot + "recursive" "1" // include all subfolders } } - "2869023" // your DepotID + "2869023" // DepotID { "FileMapping" { - "LocalPath" "Cakefoot-win64/*" // all files from contentroot folder - "DepotPath" "." // mapped into the root of the depot - "recursive" "1" // include all subfolders + "LocalPath" "Cakefoot-win64/*" // all files from contentroot folder + "DepotPath" "." // mapped into the root of the depot + "recursive" "1" // include all subfolders } } - "2869024" // your DepotID + "2869024" // DepotID { "FileMapping" { - "LocalPath" "Cakefoot-win32/*" // all files from contentroot folder - "DepotPath" "." // mapped into the root of the depot - "recursive" "1" // include all subfolders + "LocalPath" "Cakefoot-win32/*" // all files from contentroot folder + "DepotPath" "." // mapped into the root of the depot + "recursive" "1" // include all subfolders + } + } + + "2869025" // DepotID + { + "FileMapping" + { + "LocalPath" "dmg/*" // 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 index 07a9a4a..db96e42 100644 --- a/src/steam_build.sh +++ b/src/steam_build.sh @@ -3,8 +3,11 @@ unzip -d dist/protected/ dist/protected/Cakefoot-linux.zip unzip -d dist/protected/ dist/protected/Cakefoot-win32.zip unzip -d dist/protected/ dist/protected/Cakefoot-win64.zip +mkdir -p dist/protected/dmg +7z x -odist/protected/dmg/ dist/protected/Cakefoot.dmg 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/protected/Cakefoot-linux /tmp && rm -rf /tmp/Cakefoot-linux mv dist/protected/Cakefoot-win32 /tmp && rm -rf /tmp/Cakefoot-win32 mv dist/protected/Cakefoot-win64 /tmp && rm -rf /tmp/Cakefoot-win64 +mv dist/protected/dmg /tmp && rm -rf /tmp/dmg