Compare commits

...

6 Commits

11 changed files with 322 additions and 201 deletions

View File

@ -0,0 +1,21 @@
name: Choreography Problem
about: A template for discussing choreography problems
title: "[Chapter XX]: "
labels:
- bug
- "help wanted"
body:
- type: input
id: where
attributes:
label: On what line did this bug occour?
placeholder: "I \"This shit fucks and sucks!\""
validations:
required: true
- type: textarea
id: what
attributes:
label: "What happened?"
placeholder: "The expression \"Inco Sad\" was used at a time when it shouldn't have been used."
validations:
required: true

View File

@ -0,0 +1,58 @@
name: CI Build
on:
push:
tags:
- '*'
env:
RenpyVersion: "8.3.7"
RenkitVersion: "6.0.0"
JAVA_HOME: "/usr/lib/jvm/java-21-openjdk-amd64"
jobs:
build-and-archive:
runs-on: ubuntu-latest
steps:
- name: Checkout code
uses: actions/checkout@v4
with:
repository: ${{ gitea.repository }}
fetch-depth: 1
- name: Install Dependencies
run: |
sudo apt update
sudo apt install git libgl1 openjdk-21-jdk golang-go -y
JAVA_HOME="/usr/lib/jvm/open-jdk"
- name: Update Internal Build Name
run: |
sed -i -e "s/INTERNAL-BUILD/${{ gitea.ref_name }}/g" game/options.rpy
sed -i -e "s/INTERNAL-BUILD/${{ gitea.ref_name }}/g" android.json
- name: Build With Renkit
run: |
mkdir dist
sed -i -e "s/VERSION/${{ env.RenpyVersion }}/g" renconstruct-gitea.toml # This is so we can control the renpy version just from this script
wget -q "https://github.com/kobaltcore/renkit/releases/download/v${{ env.RenkitVersion }}/renkit-x86_64-unknown-linux-gnu.tar.xz" -O renkit.tar.xz
tar -xJf renkit.tar.xz -C /tmp/
rm renkit.tar.xz
/tmp/renkit-x86_64-unknown-linux-gnu/renconstruct build -c "./renconstruct-gitea.toml" "." dist/
mkdir "dist/android"
mv dist/*.apk "dist/android"
- name: Upload Release
uses: https://gitea.com/actions/release-action@main
with:
files: dist/*
api_key: '${{ secrets.RELEASE_SMITH_TOKEN }}'
#
# - name: Nextcloud Artifact
# uses: trympet/nextcloud-artifacts-action@v2
# with:
# name: 'Wani' # Name of the artifact
# path: 'dist/**' # Globbing supported
# nextcloud-url: 'https://cloud.dev.cavemanon.xyz/remote.php/dav/files/ReleaseSmith/Wani/Internal%20Builds/SOMETHING/' # Nextcloud URL
# nextcloud-username: "ReleaseSmith"
# nextcloud-password: ${{ secrets.RELEASE_SMITH_NEXTCLOUD_PASSWORD }}

View File

@ -1,88 +0,0 @@
clone:
git:
image: woodpeckerci/plugin-git
settings:
depth: 1
steps:
changelog:
image: debian
commands:
- apt update
- apt install git -y
- mkdir dist
- git log --oneline --decorate --since="7.days" --pretty="## %s%n%an%n%aD%n%b" > dist/README.md || echo "Could not write changelog!" >> dist/README.md #Get that changelog
version-tag:
image: debian
commands:
- sed -i -e "s/INTERNAL-BUILD/${CI_COMMIT_TAG}/g" game/options.rpy #Change the internal build name to the tagged version
- sed -i -e "s/INTERNAL-BUILD/${CI_COMMIT_TAG}/g" android.json
when:
- event: tag
version-cron:
image: debian
commands:
- sed -i -e "s/INTERNAL-BUILD/${CI_COMMIT_SHA}/g" game/options.rpy #if no tag, make it the commit num
- sed -i -e "s/INTERNAL-BUILD/${CI_COMMIT_SHA}/g" android.json
when:
- event: cron
build:
image: openjdk:21-jdk-bookworm
commands:
- apt update
- apt install libgl1 patch -y
- sed -i -e "s/VERSION/${RenpyVersion}/g" game/options.rpy #Change the renpy version to the woodpecker reuqested one.
#Get Renkit
- wget -qO- "https://github.com/kobaltcore/renkit/releases/download/v${RenkitVersion}/renkit-x86_64-unknown-linux-gnu.tar.xz" | tar -Jax --directory=/tmp/
- /tmp/renkit-x86_64-unknown-linux-gnu/renconstruct build "." dist/
- mkdir "dist/android"
- mv dist/*.apk "dist/android"
- cd /tmp/
archival-sha:
image: debian
commands:
- apt update
- apt install curl bash -y
- curl https://git.cavemanon.xyz/Cavemanon/Woodpecker-Webdav/raw/branch/master/push.sh > /tmp/push.sh ## I'd use a proper docker container, but dockerhub is owned by the CIA and I refuse to deal with that (also I don't care to maintain it or set it up). #TODO: merge this script as apart of the file so we don't make unnecessary network requests every time we build.
- chmod +x /tmp/push.sh
- PLUGIN_USERNAME=$RELEASESMITHNEXTCLOUDUSERNAME PLUGIN_PASSWORD=$RELEASESMITHNEXTCLOUDPASSWORD PLUGIN_DESTINATION=https://cloud.dev.cavemanon.xyz/remote.php/dav/files/ReleaseSmith/Snoot%20Game/Internal%20Builds/nightly-${CI_COMMIT_SHA}/ PLUGIN_MAKE_FOLDER_AT=https://cloud.dev.cavemanon.xyz/remote.php/dav/files/ReleaseSmith/Snoot%20Game/Internal%20Builds/nightly-${CI_COMMIT_SHA}/ PLUGIN_FILE_GLOB=dist/* /tmp/push.sh #sovl
- rm -rf "dist"
secrets: [ releasesmithnextcloudusername, releasesmithnextcloudpassword ]
when:
- event: cron
cron: "nightly"
archival-tag:
image: debian
commands:
- apt update
- apt install curl bash -y
- curl https://git.cavemanon.xyz/Cavemanon/Woodpecker-Webdav/raw/branch/master/push.sh > /tmp/push.sh ## I'd use a proper docker container, but dockerhub is owned by the CIA and I refuse to deal with that (also I don't care to maintain it or set it up). #TODO: merge this script as apart of the file so we don't make unnecessary network requests every time we build.
- chmod +x /tmp/push.sh
- PLUGIN_USERNAME=$RELEASESMITHNEXTCLOUDUSERNAME PLUGIN_PASSWORD=$RELEASESMITHNEXTCLOUDPASSWORD PLUGIN_DESTINATION=https://cloud.dev.cavemanon.xyz/remote.php/dav/files/ReleaseSmith/Snoot%20Game/Internal%20Builds/release-${CI_COMMIT_TAG}/ PLUGIN_MAKE_FOLDER_AT=https://cloud.dev.cavemanon.xyz/remote.php/dav/files/ReleaseSmith/Snoot%20Game/Internal%20Builds/release-${CI_COMMIT_TAG}/ PLUGIN_FILE_GLOB=dist/* /tmp/push.sh #sovl
- rm -rf "dist"
secrets: [ releasesmithnextcloudusername, releasesmithnextcloudpassword ]
when:
- event: tag
release:
image: woodpeckerci/plugin-gitea-release:latest
settings:
base_url: https://git.cavemanon.xyz
api_key:
from_secret: releasesmithapikey
files: "*-dists/*"
prerelease: true
title: "${CI_COMMIT_TAG}"
when:
- event: tag
matrix:
RenpyVersion:
- "8.3.4"
RenkitVersion:
- "4.4.0"

View File

@ -73,6 +73,9 @@ define gui.name_text_font = "gui/FallingSky.otf"
## The font used for out-of-game text.
define gui.interface_text_font = "gui/FallingSky.otf"
## This is so when switching from Thai, the system font gets reset
define gui.system_font = "DejaVuSans.ttf"
## The size of normal dialogue text.
define gui.text_size = 42
#define gui.text_outlines = [ (absolute(0.5), gui.text_color_outline, 0, 0) ]
@ -360,9 +363,9 @@ define config.history_length = 250
## The height of a history screen entry, or None to make the height variable at
## the cost of performance.
define gui.history_height = 210
define gui.history_height = None
define gui.history_spacing = 0
define gui.history_spacing = 50
## The position, width, and alignment of the label giving the name of the
## speaking character.
@ -372,9 +375,9 @@ define gui.history_name_width = 233
define gui.history_name_xalign = 1.0
## The position, width, and alignment of the dialogue text.
define gui.history_text_xpos = 255
define gui.history_text_xpos = 248
define gui.history_text_ypos = 3
define gui.history_text_width = 1110
define gui.history_text_width = 1112
define gui.history_text_xalign = 0.0
@ -451,9 +454,9 @@ init python:
gui.text_size = 44
gui.name_text_size = 46
gui.notify_text_size = 38
gui.interface_text_size = 45
gui.interface_text_size = 40
gui.button_text_size = 45
gui.label_text_size = 51
gui.label_text_size = 45
## Namebox
gui.name_xpos = 395
@ -473,8 +476,8 @@ init python:
gui.navigation_spacing = 30
gui.pref_button_spacing = 15
gui.history_height = 285
gui.history_text_width = 1035
gui.history_spacing = 75
gui.history_text_width = 1012
gui.quick_button_text_size = 30

View File

@ -230,17 +230,19 @@ init python:
build.classify('**/#**', None)
build.classify('**/thumbs.db', None)
# Do not include mod folders as part of the build process
build.classify('game/mods/*/', None)
# Do not include dev folders on distribution
build.classify('game/dev/', None)
build.classify('README.md', None)
#Development files need not apply
build.classify('README.md', None)
build.classify('renconstruct.toml', None)
build.classify('renconstruct*', None)
build.classify('bundle.keystore', None)
build.classify('android.keystore', None)
build.classify('bundle.keystore.original', None)
build.classify('android.keystore.original', None)
build.classify('*dist/*', None)
build.classify('patch*', None)
build.classify('dist/', None)
build.classify('cache/', None)
## To archive files, classify them as 'archive'.

View File

@ -866,26 +866,17 @@ screen preferences():
hbox:
box_wrap True
if renpy.variant("pc") or renpy.variant("web"):
vbox:
style_prefix "radio"
label _("Display")
textbutton _("Window") activate_sound "audio/ui/uiOptionOn.wav" action Preference("display", "any window")
textbutton _("Fullscreen") activate_sound "audio/ui/uiOptionOn.wav" action Preference("display", "fullscreen")
vbox:
style_prefix "radio"
label _("Display")
textbutton _("Window") activate_sound "audio/ui/uiOptionOn.wav" action Preference("display", "any window")
textbutton _("Fullscreen") activate_sound "audio/ui/uiOptionOn.wav" action Preference("display", "fullscreen")
vbox:
style_prefix "check"
label _("Requires Restart")
textbutton _("Enable Forward-Scroll Movement") action [Function(onclick_audio, persistent.scroll), ToggleVariable("persistent.scroll", True, False)]
vbox:
style_prefix "check"
label _("Requires Restart")
textbutton _("Enable Forward-Scroll Movement") action [Function(onclick_audio, persistent.scroll), ToggleVariable("persistent.scroll", True, False)]
if renpy.variant(["mobile", "steam_deck"]):
vbox:
style_prefix "radio"
label _("Rollback Side")
textbutton _("Disable") activate_sound "audio/ui/uiOptionOn.wav" action Preference("rollback side", "disable")
textbutton _("Left") activate_sound "audio/ui/uiOptionOn.wav" action Preference("rollback side", "left")
textbutton _("Right") activate_sound "audio/ui/uiOptionOn.wav" action Preference("rollback side", "right")
vbox:
style_prefix "check"
label _("Naughty Stuff")
@ -917,11 +908,10 @@ screen preferences():
textbutton _("Show Mod Screenshots") action [Function(onclick_audio, persistent.show_mod_screenshots), ToggleVariable("persistent.show_mod_screenshots", True, False)]
textbutton _("Enable New Mods") action [Function(onclick_audio, persistent.newmods_default_state), ToggleVariable("persistent.newmods_default_state", True, False)]
if renpy.variant(["mobile", "steam_deck"]):
vbox:
style_prefix "check"
label _("Gallery")
textbutton _("Enable Edgescrolling") action [Function(onclick_audio, persistent.gallery_edgescroll), ToggleVariable("persistent.gallery_edgescroll", True, False)]
vbox:
style_prefix "check"
label _("Gallery")
textbutton _("Enable Edgescrolling") action [Function(onclick_audio, persistent.gallery_edgescroll), ToggleVariable("persistent.gallery_edgescroll", True, False)]
if renpy.seen_image("big ending"):
vbox:
@ -1195,16 +1185,19 @@ screen extrasnavigation():
add "gui/sneedgame.png"
else:
add "gui/snootgame.png"
$ multi = persistent.enable_chapter_select + renpy.variant("pc")
vbox:
spacing 10
xpos 1885
ypos (1269 if persistent.enable_chapter_select else 1130)
ypos 991 + (139 * multi)
$ main_menu_button_img = "gui/button/menubuttons/template_idle_epilogue.png" if persistent.use_epilogue_menu else "gui/button/menubuttons/template_idle.png"
use main_menu_buttons(main_menu_button_img,
[
[ _("Help"), ShowMenu("help") ],
*([(_("Help"), ShowMenu("help"))] if not renpy.variant("mobile") else []),
[ _("About"), ShowMenu("about") ],
[ _("Gallery"), ShowMenu("cg_gallery") ],
*([(_("Chapter Select{#MainMenu}"), Start("chapter_select"))] if persistent.enable_chapter_select else []),
@ -1366,7 +1359,7 @@ screen gamepad_help():
label _("Y/Top Button")
text _("Hides the user interface.")
textbutton _("Calibrate") action GamepadCalibrate()
textbutton _("Calibrate") action GamepadCalibrate() xalign 0.3 ypos 50
#this bit is might need trimming or rework
style help_button is gui_button
@ -1459,6 +1452,39 @@ style confirm_button_text:
properties gui.text_properties("confirm_button")
## OK Prompt ##############################################################
##
## Apes from the confirm screen to give a similar screen, but only having an OK button
##
## https://www.renpy.org/doc/html/screen_special.html#confirm
screen OkPrompt(message, action=Hide()):
modal True
zorder 200
style_prefix "confirm"
add "gui/overlay/confirm.png"
frame:
vbox:
xalign .5
yalign .5
spacing 30
label _(message):
style "confirm_prompt"
xalign 0.5
hbox:
xalign 0.5
spacing 100
textbutton _("OK") activate_sound "audio/ui/snd_ui_click.wav" action action
## Skip indicator screen #######################################################
##
## The skip_indicator screen is displayed to indicate that skipping is in
@ -1766,8 +1792,8 @@ define bubble.expand_area = {
################################################################################
style pref_vbox:
variant "medium"
xsize 675
variant ["mobile", "steam_deck"]
xsize 600
## Since a mouse may not be present, we replace the quick menu with a version
## that uses fewer and bigger buttons that are easier to touch.
@ -1801,6 +1827,137 @@ screen quick_menu():
[ _("Menu"), ShowMenu(), NullAction() ] \
] )
screen preferences():
variant "mobile"
tag menu
use game_menu(_("Options"), scroll="viewport"):
vbox:
hbox:
box_wrap True
vbox:
style_prefix "radio"
label _("Rollback Side")
textbutton _("Disable") activate_sound "audio/ui/uiOptionOn.wav" action Preference("rollback side", "disable")
textbutton _("Left") activate_sound "audio/ui/uiOptionOn.wav" action Preference("rollback side", "left")
textbutton _("Right") activate_sound "audio/ui/uiOptionOn.wav" action Preference("rollback side", "right")
vbox:
style_prefix "check"
label _("Naughty Stuff")
textbutton _("Enable Lewd Images") action [Function(onclick_audio, persistent.lewd), ToggleVariable("persistent.lewd", True, False)]
vbox:
style_prefix "check"
label _("Skip")
textbutton _("Unseen Text") action [Function(onclick_audio, preferences.skip_unseen), ToggleVariable("preferences.skip_unseen", True, False)]
textbutton _("After Choices") action [Function(onclick_audio, preferences.skip_after_choices), ToggleVariable("preferences.skip_after_choices", True, False)]
textbutton _("Transitions") action [Function(onclick_audio, preferences.transitions, True), ToggleVariable("preferences.transitions", 0, 2)]
vbox:
style_prefix "check"
label _("Developer Tools")
textbutton _("Enable Debug Scores") action ToggleVariable("persistent.enable_debug_scores", True, False)
textbutton _("Enable Chapter Select") action ToggleVariable("persistent.enable_chapter_select", True, False)
if not main_menu:
if persistent.enable_debug_scores:
$ debug_story_variables(False)
$ debug_story_variables(True)
else:
$ debug_story_variables(False)
vbox:
style_prefix "check"
label _("Mods")
textbutton _("Show Mod Screenshots") action [Function(onclick_audio, persistent.show_mod_screenshots), ToggleVariable("persistent.show_mod_screenshots", True, False)]
textbutton _("Enable New Mods") action [Function(onclick_audio, persistent.newmods_default_state), ToggleVariable("persistent.newmods_default_state", True, False)]
if renpy.seen_image("big ending"):
vbox:
style_prefix "radio"
label _("Menu Style")
textbutton _("Original") activate_sound "audio/ui/uiOptionOn.wav" action SetVariable("persistent.use_epilogue_menu", False)
textbutton _("Epilogue") activate_sound "audio/ui/uiOptionOn.wav" action SetVariable("persistent.use_epilogue_menu", True)
vbox:
xsize 676
style_prefix "check"
label _("Language")
vpgrid:
rows len(languages)
cols 1
mousewheel True
draggable True
xsize 570
ysize 300
if len(languages)>4:
scrollbars "vertical"
for lang in languages:
fixed:
ysize 80
use lang_button(lang)
## Additional vboxes of type "radio_pref" or "check_pref" can be
## added here, to add additional creator-defined preferences.
null height (4 * gui.pref_spacing)
hbox:
style_prefix "slider"
vbox:
label _("Text Speed")
bar value Preference("text speed")
label _("Auto-Forward Time{#Mobile}")
bar value Preference("auto-forward time")
vbox:
if config.has_music:
label _("Music Volume")
hbox:
bar value Preference("music volume") #yalign 0.5
textbutton _("Reset{#Mobile}"):
action Function(preferences.set_mixer, 'music', config.default_music_volume)
if config.has_sound:
label _("Sound Volume")
hbox:
bar value Preference("sfx volume") #yalign 0.5
textbutton _("Reset{#Mobile}"):
action Function(preferences.set_mixer, 'sfx', config.default_sfx_volume)
if config.sample_sound:
textbutton _("Test") action Play("sound", config.sample_sound)
label _("UI Sounds Volume")
hbox:
bar value Preference("ui volume") #yalign 0.5
textbutton _("Reset{#Mobile}"):
yalign 0.5
action Function(preferences.set_mixer, 'ui', config.default_sfx_volume)
if config.has_voice:
label _("Voice Volume")
hbox:
bar value Preference("voice volume") #yalign 0.5
textbutton _("Reset{#Mobile}"):
yalign 0.5
action Function(preferences.set_mixer, 'voice', config.default_voice_volume)
if config.sample_voice:
textbutton _("Test") action Play("voice", config.sample_voice)
if config.has_music or config.has_sound or config.has_voice:
null height gui.pref_spacing
textbutton _("Mute All"):
action Preference("all mute", "toggle")
style "mute_all_button"
style radio_button:
variant "mobile"
foreground "gui/phone/button/radio_[prefix_]foreground.png"
@ -1871,4 +2028,8 @@ style slider_pref_vbox:
style slider_pref_slider:
variant "mobile"
xsize 900
xsize 600
style slider_vbox:
variant ["mobile", "steam_deck"]
xsize 600

View File

@ -1057,10 +1057,10 @@ screen mod_menu():
action Start(mod_metadata["Label"])
activate_sound "audio/ui/uiClick.wav"
showif not persistent.seenModWarning:
use OkPrompt(_("Installing mods is dangerous since you are running unknown code in your computer. Only install mods from sources that you trust.\n\nIf you have problems with installed mods, check the README.md in the root of the mods folder."), \
ToggleVariable("persistent.seenModWarning"))
if not persistent.seenModWarning:
$ persistent.seenModWarning = True
use OkPrompt(_("Installing mods is dangerous since you are running unknown code in your computer. Only install mods from sources that you trust.\n\nIf you have problems with installed mods, check the README.md in the root of the mods folder."), False)
style mod_menu_text:
size 34

View File

@ -1,59 +1,5 @@
init offset = -1
screen OkPrompt(message, go_menu):
modal True
zorder 200
style_prefix "confirm"
add "gui/overlay/confirm.png"
frame:
vbox:
xalign .5
yalign .5
spacing 30
label _(message):
style "confirm_prompt"
xalign 0.5
hbox:
xalign 0.5
spacing 100
textbutton _("OK") activate_sound "audio/ui/snd_ui_click.wav" action If(go_menu, true=MainMenu(False,False), false=[Hide(),Return()])
screen hiddenOkPrompt(message, go_menu):
modal True
zorder 200
style_prefix "confirm"
add "gui/overlay/confirm.png"
frame:
vbox:
xalign .5
yalign .5
spacing 30
label _(message):
style "confirm_prompt"
xalign 0.5
hbox:
xalign 0.5
spacing 100
textbutton _("OK") activate_sound "audio/ui/snd_ui_click.wav" action If(go_menu, true=MainMenu(False,False), false=Hide())
default persistent.seenWarning = []
default persistent.languaged_up = None
@ -139,7 +85,7 @@ screen lang_sel():
action If(languages[i]["value"] in persistent.seenWarning or languages[i]["value"] == 'en',
true = [Language(languages[i]["value"]), SetVariable("persistent.languaged_up", True), Return()],
# Important to change the language before calling notice. Otherwise it will be in english.
false = [Language(languages[i]["value"]), AddToSet(set=persistent.seenWarning, value=languages[i]["value"]), SetVariable("persistent.languaged_up", True), Show(screen="OkPrompt", message=notice, go_menu=False)]
false = [Language(languages[i]["value"]), AddToSet(set=persistent.seenWarning, value=languages[i]["value"]), SetVariable("persistent.languaged_up", True), Show(screen="OkPrompt", message=notice, action=[ Hide(), Return() ])]
)
at renpysdumb # Scales the imagebutton down. No, you can't just specify the zoom here. It has to be a defined transform.
else:
@ -154,9 +100,9 @@ screen lang_button(lang):
activate_sound "audio/ui/uiRollover.wav"
action If(lang["value"] in persistent.seenWarning or lang["value"] == 'en',
true = [Language(lang["value"])],
false = [Language(lang["value"]), AddToSet(set=persistent.seenWarning, value=lang["value"]), Show(screen="hiddenOkPrompt", message=notice, go_menu=False)]
false = [Language(lang["value"]), AddToSet(set=persistent.seenWarning, value=lang["value"]), Show(screen="OkPrompt", message=notice)]
)
if _preferences.language == lang["value"]:
add glowie(lang["image"]) at icon
else:
add darkie(lang["image"]) at icon
add darkie(lang["image"]) at icon

View File

@ -234,6 +234,9 @@ translate th strings:
old "Auto-Forward Time"
new "ระยะเวลาของตัวหนังสือเดินแบบออโต้"
old "Auto-Forward Time{#Mobile}"
new "{size=*0.75}ระยะเวลาของตัวหนังสือเดินแบบออโต้{/size}"
# game/screens.rpy:973
old "Music Volume"
new "เสียงเพลง"

20
renconstruct-gitea.toml Normal file
View File

@ -0,0 +1,20 @@
[tasks.keystore] # required if matching task is enabled
enabled = true
type="keystore"
priorities = { pre_build = 0 } # the priority that determines the orders tasks will run in, defaults to 0
on_builds = ["android_apk", "android_aab"] # builds this task should run for, defaults to all android builds
keystore_apk = "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" # the base-64 encoded binary keystore file for the APK bundles
keystore_aab = "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" # the base-64 encoded binary keystore file for the AAB bundles
[build] # required, at least one item must be 'true'
win = true
mac = true
linux = true
android_apk = true # Android Universal APK
[options]
clear_output_dir = false # whether to clear the output directory on startup
[renutil]
version = "VERSION" # the Ren'Py version to use (required)
registry = "/tmp/cache" # the directory to store installation files in

View File

@ -1,6 +1,6 @@
[tasks.keystore] # required if matching task is enabled
type="keystore"
enabled = true
type="keystore"
priorities = { pre_build = 0 } # the priority that determines the orders tasks will run in, defaults to 0
on_builds = ["android_apk", "android_aab"] # builds this task should run for, defaults to all android builds
keystore_apk = "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" # the base-64 encoded binary keystore file for the APK bundles
@ -8,19 +8,14 @@
[build] # required, at least one item must be 'true'
# pc = true # windows + linux
win = true # windows
linux = true # linux
mac = true # macos
# web = false # web
# steam = false # steam
# market = false # multiple markets (i.e. itch.io)
win = true
mac = true
linux = true
android_apk = true # Android Universal APK
# android_aab = false # Android Play Store Bundle
[options]
clear_output_dir = false # whether to clear the output directory on startup
[renutil]
version = "8.3.4" # the Ren'Py version to use (required)
registry = "/tmp/cache" # the directory to store installation files in
version = "8.3.7" # the Ren'Py version to use (required)
registry = "./cache" # the directory to store installation files in