Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Handle looping music, Indicate song with seamless loops in docs, automatic pre-releases #411

Draft
wants to merge 19 commits into
base: develop
Choose a base branch
from
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
96 changes: 47 additions & 49 deletions .github/workflows/build_and_test.yml
Original file line number Diff line number Diff line change
Expand Up @@ -22,25 +22,22 @@ concurrency:
cancel-in-progress: true

jobs:
# Get version number from ProjectSettings/ProjectSettings.asset -> PlayerSettings/bundleVersion
extractVersionNumber:
name: Extract project version number
setVersionNumber:
name: Set project version number
runs-on: ubuntu-latest
outputs:
version_number: ${{ steps.extractVersionNumber_job.outputs.version_number }}
version_number: ${{ steps.setVersionNumber_job.outputs.version_number }}
version_name: ${{ steps.setVersionNumber_job.outputs.version_name }}
steps:
- name: Checkout repository
uses: actions/checkout@v4

- name: Attempt extraction
id: extractVersionNumber_job
working-directory: unity-ggjj/
- name: Use run id
id: setVersionNumber_job
run: |
version_number=$(grep 'bundleVersion: ' ./ProjectSettings/ProjectSettings.asset)
version_number=${version_number:17}
echo "Version number: $version_number"
echo "version_number=$version_number" >> $GITHUB_OUTPUT

echo "version_number=$(date +'%Y.%m.%d')-$(echo $GITHUB_RUN_ID)" >> $GITHUB_OUTPUT
if [[ '${{ github.event.inputs.createRelease }}' == 'true' ]]; then
echo "version_name="Release v${{ needs.setVersionNumber.outputs.version_number }}" >> $GITHUB_OUTPUT
else
echo "version_name="Pre-release v${{ needs.setVersionNumber.outputs.version_number }}" >> $GITHUB_OUTPUT
fi
Comment on lines +35 to +40
Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The previous automation would've required us to set the version in Unity; now we just use a timestamp + GitHub Actions's unique run ID.

# Unity build
checkLicense:
name: Check if UNITY_SERIAL is set in github secrets
Expand Down Expand Up @@ -74,7 +71,7 @@ jobs:

unityBuild:
name: Build for ${{ matrix.targetPlatform.outputName }}
needs: [extractVersionNumber, checkLicense]
needs: [setVersionNumber, checkLicense]
if: needs.checkLicense.outputs.is_unity_serial_set == 'true'
strategy:
fail-fast: false
Expand Down Expand Up @@ -151,80 +148,81 @@ jobs:
# Releases
checkIfTagExists:
name: Check if tag exists
needs: [extractVersionNumber]
if: (github.event.inputs.createRelease == 'true' || (github.ref == 'refs/heads/master' && github.event_name == 'push'))
needs: [setVersionNumber]
if: (github.event.inputs.createRelease == 'true' || (github.ref == 'refs/heads/develop' && github.event_name == 'push'))
runs-on: ubuntu-latest
steps:
- name: Check if tag exists
uses: mukunku/tag-exists-action@v1.6.0
id: checkTag
with:
tag: ${{ needs.extractVersionNumber.outputs.version_number }}
tag: v${{ needs.setVersionNumber.outputs.version_number }}
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
- name: Fail if tag already exists
run: |
echo "Tag '${{ needs.extractVersionNumber.outputs.version_number }}' already exists: ${{ steps.checkTag.outputs.exists }}"
echo "Tag '${{ needs.setVersionNumber.outputs.version_number }}' already exists: ${{ steps.checkTag.outputs.exists }}"
exit $([ "${{ steps.checkTag.outputs.exists }}" = 'true' ] && echo 1 || echo 0)

# GitHub Releases
createGitHubRelease:
name: Create GitHub Release
needs: [extractVersionNumber, checkIfTagExists, unityBuild]
if: (github.event.inputs.createRelease == 'true' || (github.ref == 'refs/heads/master' && github.event_name == 'push'))
needs: [setVersionNumber, checkIfTagExists, unityBuild]
if: (github.event.inputs.createRelease == 'true' || (github.ref == 'refs/heads/develop' && github.event_name == 'push'))
runs-on: ubuntu-latest
steps:
- name: Download macOS
uses: actions/download-artifact@v4
with:
name: macOS-v${{ needs.extractVersionNumber.outputs.version_number }}
path: build/macOS-v${{ needs.extractVersionNumber.outputs.version_number }}
name: macOS-v${{ needs.setVersionNumber.outputs.version_number }}
path: build/macOS-v${{ needs.setVersionNumber.outputs.version_number }}
- name: Download Windows-x86
uses: actions/download-artifact@v4
with:
name: Windows-x86-v${{ needs.extractVersionNumber.outputs.version_number }}
path: build/Windows-x86-v${{ needs.extractVersionNumber.outputs.version_number }}
name: Windows-x86-v${{ needs.setVersionNumber.outputs.version_number }}
path: build/Windows-x86-v${{ needs.setVersionNumber.outputs.version_number }}
- name: Download Windows-x64
uses: actions/download-artifact@v4
with:
name: Windows-x64-v${{ needs.extractVersionNumber.outputs.version_number }}
path: build/Windows-x64-v${{ needs.extractVersionNumber.outputs.version_number }}
name: Windows-x64-v${{ needs.setVersionNumber.outputs.version_number }}
path: build/Windows-x64-v${{ needs.setVersionNumber.outputs.version_number }}
- name: Download Linux-x64
uses: actions/download-artifact@v4
with:
name: Linux-x64-v${{ needs.extractVersionNumber.outputs.version_number }}
path: build/Linux-x64-v${{ needs.extractVersionNumber.outputs.version_number }}
name: Linux-x64-v${{ needs.setVersionNumber.outputs.version_number }}
path: build/Linux-x64-v${{ needs.setVersionNumber.outputs.version_number }}
- name: Download WebGL
uses: actions/download-artifact@v4
with:
name: WebGL-v${{ needs.extractVersionNumber.outputs.version_number }}
path: build/WebGL-v${{ needs.extractVersionNumber.outputs.version_number }}
name: WebGL-v${{ needs.setVersionNumber.outputs.version_number }}
path: build/WebGL-v${{ needs.setVersionNumber.outputs.version_number }}

- name: Zip macOS
run: zip -r "build/macOS-v${{ needs.extractVersionNumber.outputs.version_number }}.zip" "build/macOS-v${{ needs.extractVersionNumber.outputs.version_number }}"
run: zip -r "build/macOS-v${{ needs.setVersionNumber.outputs.version_number }}.zip" "build/macOS-v${{ needs.setVersionNumber.outputs.version_number }}"
- name: Zip Windows-x86
run: zip -r "build/Windows-x86-v${{ needs.extractVersionNumber.outputs.version_number }}.zip" "build/Windows-x86-v${{ needs.extractVersionNumber.outputs.version_number }}"
run: zip -r "build/Windows-x86-v${{ needs.setVersionNumber.outputs.version_number }}.zip" "build/Windows-x86-v${{ needs.setVersionNumber.outputs.version_number }}"
- name: Zip Windows-x64
run: zip -r "build/Windows-x64-v${{ needs.extractVersionNumber.outputs.version_number }}.zip" "build/Windows-x64-v${{ needs.extractVersionNumber.outputs.version_number }}"
run: zip -r "build/Windows-x64-v${{ needs.setVersionNumber.outputs.version_number }}.zip" "build/Windows-x64-v${{ needs.setVersionNumber.outputs.version_number }}"
- name: Zip Linux-x64
run: zip -r "build/Linux-x64-v${{ needs.extractVersionNumber.outputs.version_number }}.zip" "build/Linux-x64-v${{ needs.extractVersionNumber.outputs.version_number }}"
run: zip -r "build/Linux-x64-v${{ needs.setVersionNumber.outputs.version_number }}.zip" "build/Linux-x64-v${{ needs.setVersionNumber.outputs.version_number }}"
- name: Zip WebGL
run: zip -r "build/WebGL-v${{ needs.extractVersionNumber.outputs.version_number }}.zip" "build/WebGL-v${{ needs.extractVersionNumber.outputs.version_number }}"
run: zip -r "build/WebGL-v${{ needs.setVersionNumber.outputs.version_number }}.zip" "build/WebGL-v${{ needs.setVersionNumber.outputs.version_number }}"

- name: Create GitHub Release
uses: ncipollo/release-action@v1.14.0
with:
# glob-files need to be escaped
artifacts: |
build/macOS-v${{ needs.extractVersionNumber.outputs.version_number }}.zip,
build/Windows-x86-v${{ needs.extractVersionNumber.outputs.version_number }}.zip,
build/Windows-x64-v${{ needs.extractVersionNumber.outputs.version_number }}.zip,
build/Linux-x64-v${{ needs.extractVersionNumber.outputs.version_number }}.zip,
build/WebGL-v${{ needs.extractVersionNumber.outputs.version_number }}.zip
build/macOS-v${{ needs.setVersionNumber.outputs.version_number }}.zip,
build/Windows-x86-v${{ needs.setVersionNumber.outputs.version_number }}.zip,
build/Windows-x64-v${{ needs.setVersionNumber.outputs.version_number }}.zip,
build/Linux-x64-v${{ needs.setVersionNumber.outputs.version_number }}.zip,
build/WebGL-v${{ needs.setVersionNumber.outputs.version_number }}.zip
artifactErrorsFailBuild: true
tag: ${{ needs.extractVersionNumber.outputs.version_number }}
name: "Release #${{ needs.extractVersionNumber.outputs.version_number }}"
tag: v${{ needs.setVersionNumber.outputs.version_number }}
name: ${{ needs.setVersionNumber.outputs.version_name }}
token: ${{ secrets.GITHUB_TOKEN }}
prerelease: ${{ github.event.inputs.createRelease != 'true' }}

# itch.io uploader
checkItchIO:
Expand All @@ -241,7 +239,7 @@ jobs:

createItchIORelease:
name: Create/update itch.io for ${{ matrix.platforms.outputName }}
needs: [extractVersionNumber, checkIfTagExists, unityBuild, checkItchIO]
needs: [setVersionNumber, checkIfTagExists, unityBuild, checkItchIO]
if: (github.event.inputs.createRelease == 'true' || (github.ref == 'refs/heads/master' && github.event_name == 'push')) && needs.checkItchIO.outputs.is_ITCHIO_set == 'true'
runs-on: ubuntu-latest
strategy:
Expand All @@ -258,14 +256,14 @@ jobs:
- name: Download ${{ matrix.platforms.outputName }}
uses: actions/download-artifact@v4
with:
name: ${{ matrix.platforms.outputName }}-v${{ needs.extractVersionNumber.outputs.version_number }}
path: build/${{ matrix.platforms.outputName }}-v${{ needs.extractVersionNumber.outputs.version_number }}
name: ${{ matrix.platforms.outputName }}-v${{ needs.setVersionNumber.outputs.version_number }}
path: build/${{ matrix.platforms.outputName }}-v${{ needs.setVersionNumber.outputs.version_number }}
- name: Create itch.io '${{ matrix.platforms.itchIOChannel }}' Release
uses: josephbmanley/butler-publish-itchio-action@master
env:
BUTLER_CREDENTIALS: ${{ secrets.ITCHIO_APIKEY }}
CHANNEL: ${{ matrix.platforms.itchIOChannel }}
ITCH_GAME: ${{ secrets.ITCHIO_PROJECTNAME }}
ITCH_USER: ${{ secrets.ITCHIO_USERNAME }}
PACKAGE: build/${{ matrix.platforms.outputName }}-v${{ needs.extractVersionNumber.outputs.version_number }}
VERSION: ${{ needs.extractVersionNumber.outputs.version_number }}
PACKAGE: build/${{ matrix.platforms.outputName }}-v${{ needs.setVersionNumber.outputs.version_number }}
VERSION: ${{ needs.setVersionNumber.outputs.version_number }}
26 changes: 26 additions & 0 deletions .github/workflows/generate_docs.yml
Original file line number Diff line number Diff line change
Expand Up @@ -21,6 +21,32 @@ jobs:
uses: actions/setup-dotnet@v4
with:
dotnet-version: '8.0.x'

- name: Create LFS file list
shell: bash
run: git lfs ls-files -l | cut -d' ' -f1 | sort > .lfs-assets-id

- name: Restore LFS cache
uses: actions/cache@v4
id: lfs-cache
with:
path: .git/lfs
key: ${{ runner.os }}-lfs-${{ hashFiles('.lfs-assets-id') }}

- name: Git LFS Pull
shell: bash
run: |
git lfs pull
git add .
git reset --hard

- name: Restore Library cache
uses: actions/cache@v4
with:
path: unity-ggjj/Library
key: Library-${{ hashFiles('unity-ggjj/Assets/**', 'unity-ggjj/Packages/**', 'unity-ggjj/ProjectSettings/**') }}
restore-keys: |
unity-ggjj/Library-

- name: Build docs generator
working-directory: ./docs_generator
Expand Down
22 changes: 11 additions & 11 deletions docs/constants.md
Original file line number Diff line number Diff line change
Expand Up @@ -100,11 +100,11 @@
- ConfessionPatrol
- CongratulationsInTheShower
- CoolPatrolMasterTemp
- CorneredbutSexyNinjaParty
- CorneredbutSexyNinjaParty (🔁)
- DannyDontYouKnowTurnaboutSisters
- DragonObjection
- FightThroughRhinoOrPumaForTheTruth
- FindTheWayToTheTruth
- DragonObjection (🔁)
- FightThroughRhinoorPumafortheTruth (🔁)
- FindTheWaytoTheTruth (🔁)
- FyiIWannaXYourExaminationAllegro
- FyiIWannaXYourExaminationModerato
- GameGrumpsJointJustice
Expand Down Expand Up @@ -133,19 +133,19 @@
- LogicAndTrains
- MisunderstoodCreativity
- NinjaSexPursuit
- ObjectingInItaly
- ObjectingInItaly (🔁)
- ObjectingThePayload
- ObjectionDefense
- ObjectionDesireVictory
- ObjectionDesireVictory (🔁)
- ObjectsOfVictory
- Prelude6969
- PrologueInPMinor
- PursuitCornered
- RapBattleOfFateDraft2
- RordonSaysItSRAW
- RordonSaysItsRAW (🔁)
- SAMURAIABANNOUNCE
- SearchTheKraken
- SeptictailJig
- SeptictailJig (🔁)
- SexTraining
- SimplePlotOfInvestigation
- StarlightObjection
Expand All @@ -157,12 +157,12 @@
- TrialFinal
- TrialObjectOrPress
- TriviaBoyTragicallyGenericReminiscenceTheme
- TurnaboutGrumpsters
- TurnaboutGrumpsters (🔁)
- TurnaboutPowerHourPrologue
- TutorialBoysTragicallyGenericReminiscence
- WelcomeTotheSuspenseHouse
- WelcomeToTheSuspenseHouse (🔁)
- WendySThemeYourChoice
- WhenIMeetYouInConversation
- WhenIMeetYouInConversation (🔁)

## DynamicSongAssetName
- YouBurgieBurgie
Expand Down
4 changes: 2 additions & 2 deletions docs/methods/Actor.md
Original file line number Diff line number Diff line change
Expand Up @@ -51,7 +51,7 @@ Examples:

⏲ Instant

Sets the target sub-position of the current bg-scene to have the target actor.
Places an actor in the specified slot in the scene

Examples:
- `&SET_ACTOR_POSITION:1,Arin`
- `&SET_ACTOR_POSITION:Defense,Arin`
1 change: 1 addition & 0 deletions docs_generator/Scanner.csproj
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,7 @@

<ItemGroup>
<PackageReference Include="Microsoft.CodeAnalysis.CSharp" Version="4.11.0" />
<PackageReference Include="NVorbis" Version="0.10.5" />
<PackageReference Include="YamlDotNet" Version="16.0.0" />
</ItemGroup>

Expand Down
17 changes: 17 additions & 0 deletions docs_generator/XMLDocParser.cs
Original file line number Diff line number Diff line change
Expand Up @@ -22,6 +22,7 @@ public class PathItem
private static readonly Dictionary<string, Func<string, Dictionary<string, string>, string, List<PathItem>>> FiletypeOverrides = new()
{
{ "controller", AnimationControllerParser.ConvertToPathItem },
{ "ogg", SongParser.ConvertToPathItem },
{ "asset", AssetParser.ConvertToPathItem }
};

Expand All @@ -37,6 +38,22 @@ public static List<PathItem> Generate(string absolutePathToAssetsDirectory, Dict
}
}

internal abstract class SongParser
{
public static List<PathItem> ConvertToPathItem(string absolutePathToAssetsDirectory, Dictionary<string, string> pathsByGUID, string relativeFileName)
{
using var vorbis = new NVorbis.VorbisReader(new MemoryStream(File.ReadAllBytes(Path.Join(absolutePathToAssetsDirectory, relativeFileName))));
var loopStart = vorbis.Tags.GetTagSingle("LOOP_START");
var loopEnd = vorbis.Tags.GetTagSingle("LOOP_END");
if (string.IsNullOrEmpty(loopStart) || string.IsNullOrEmpty(loopEnd))
{
return [new PathItem() { Item = Path.GetFileNameWithoutExtension(relativeFileName) }];
}
return [new PathItem() { Item = Path.GetFileNameWithoutExtension(relativeFileName) + " (🔁)" }];

}
}

internal static class AssetParser
{
public static List<PathItem> ConvertToPathItem(string absolutePathToAssetsDirectory, Dictionary<string, string> pathsByGUID, string relativeFileName)
Expand Down
24 changes: 23 additions & 1 deletion unity-ggjj/Assets/GameAudioMixer.mixer
Original file line number Diff line number Diff line change
Expand Up @@ -196,6 +196,7 @@ AudioMixerGroupController:
m_Send: 00000000000000000000000000000000
m_Effects:
- {fileID: 7993815557869872331}
- {fileID: 8633813763435302153}
m_UserColorIndex: 0
m_Mute: 0
m_Solo: 0
Expand Down Expand Up @@ -284,9 +285,10 @@ AudioMixerSnapshotController:
ab757a938ebba418e887d17b3e76470a: 4.9
f5ae07a319b9f466c86f0a6cb7fa32a7: -15.2
b91e8125358b38a40a3309685cd0021f: -0.70451987
80c3a0462813b4089a7cc3a992b389d3: 97
0c7323e67e82bf8419c9e697ae175ffc: 1.25
b81f04079e35941179d274e1f5b7f1e9: 0
fc4fbe883c366d1428f347280169d937: -6.5566154
fc4fbe883c366d1428f347280169d937: -24.900742
cbe339f82bee99249af71ff23c553ab2: 1
2669045b531a837448b6695349d8c9d2: -26.4
7c60e26bfd18d1d42830a508698ae373: -45.8
Expand Down Expand Up @@ -518,6 +520,26 @@ AudioMixerEffectController:
m_SendTarget: {fileID: 0}
m_EnableWetMix: 0
m_Bypass: 0
--- !u!244 &8633813763435302153
AudioMixerEffectController:
m_ObjectHideFlags: 3
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_Name:
m_EffectID: da9e5d1adfd2a49ae8adb49cb7a00d00
m_EffectName: Normalize
m_MixLevel: 2bdd51a1531194155932993e5657c60a
m_Parameters:
- m_ParameterName: Fade in time
m_GUID: 80c3a0462813b4089a7cc3a992b389d3
- m_ParameterName: Lowest volume
m_GUID: f04561bb86f9d4c18b1bbe921a1b5bed
- m_ParameterName: Maximum amp
m_GUID: b50dc28a466f147dcabbac33ca213180
m_SendTarget: {fileID: 0}
m_EnableWetMix: 0
m_Bypass: 0
--- !u!244 &9064187327706237731
AudioMixerEffectController:
m_ObjectHideFlags: 3
Expand Down

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

3 changes: 3 additions & 0 deletions unity-ggjj/Assets/Plugins/NVorbis/NVorbis.dll
Git LFS file not shown
Loading
Loading