Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
40 commits
Select commit Hold shift + click to select a range
8ccc171
🐧 Sharpmake linux entries
wobbier Nov 30, 2025
41b2874
🐧 Working with flake atm
wobbier Dec 11, 2025
16c60ee
🐧 Shaders/Textures compiling
wobbier Dec 11, 2025
486455f
🐧 IT'S ALIVE! I've gotta revert some of this shit though
wobbier Dec 11, 2025
3f1317c
🐧 Reverting some commented out stuff
wobbier Dec 11, 2025
5d3e20d
🏓 Fixing windows stuff
wobbier Dec 14, 2025
04111cb
🕸️ Fixing some cleanup code
wobbier Feb 7, 2026
b6ceb3c
📈 Updating BGFX and moving to cpp20
wobbier May 10, 2026
d7ce8d8
🔮 Fixing a crash with imgui
wobbier May 11, 2026
caf8963
🤝 Updating some texture flows
wobbier May 11, 2026
d0406f3
🧊 ICEMAN
wobbier May 15, 2026
3f424a7
🧊 Chrome Trace / Job Fixes
wobbier May 15, 2026
cb7807f
🤢 Updating BGFX for Windows
wobbier May 25, 2026
199c876
🎊 CPP 20 stuff
wobbier May 31, 2026
e827a04
📎Friendship ended withe MONO, DOTNET is my new best friend
wobbier Jun 3, 2026
661a2b5
🏳️‍⚧️ Fixing transform dirty caching
wobbier Jun 18, 2026
7160ea3
📦️ Fixing drag and drop payloads on linux
wobbier Jun 18, 2026
c5db528
🧠 Fixing 32bit entity ids
wobbier Jun 18, 2026
ebfd3b4
🌪️ Instanced rendering fixes
wobbier Jun 18, 2026
6dbba2a
⏳️ Capturing 10 frames on hotkey
wobbier Jun 18, 2026
b28088f
🧍‍♂️ Remaining UI work that WILL be deleted cause fuck ultralight's o…
wobbier Jun 18, 2026
c672490
💅 I lied, Ultralight for Linux updated to 1.4
wobbier Jun 19, 2026
047f57b
🥁 Drumsmith fixes
wobbier Jun 20, 2026
4e3e5a4
💈 dankbook changes
wobbier Jul 11, 2026
3e5543b
🚧 Linux github action
wobbier Jul 11, 2026
5eea60f
🏗️ ThirdParty building
wobbier Jul 11, 2026
694d923
💅 Bullet Libs
wobbier Jul 11, 2026
8154b7d
🤢 W*ndows Fixes
wobbier Jul 11, 2026
5917d63
👨‍💻 Steve Jobs
wobbier Jul 11, 2026
85a2871
🚮 Prozzak
wobbier Jul 11, 2026
630fc68
🫦 Fortnite Battle Pass
wobbier Jul 11, 2026
4f8f52c
🏆️ UL WIN
wobbier Jul 11, 2026
249748a
🔪 macOS Sharpmake
wobbier Jul 11, 2026
8df00df
📦️ UWP UL 💀
wobbier Jul 11, 2026
59f184b
🔪 Sympathy is a Knife
wobbier Jul 11, 2026
571b6b7
🐦️ Birds of a Feather
wobbier Jul 11, 2026
fe93a56
🍎 Slim Shady
wobbier Jul 11, 2026
76cb543
🌪️ Deja Vu
wobbier Jul 11, 2026
49db8af
❓️ Eat Randy
wobbier Jul 11, 2026
2581542
🚧 Updating flake inputs
wobbier Oct 8, 2026
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
  •  
  •  
  •  
81 changes: 81 additions & 0 deletions .github/workflows/Linux.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,81 @@
name: Linux

on:
push:
branches: [master, motivation]
pull_request:
branches: [master, motivation]

workflow_dispatch:

jobs:
build:
runs-on: ubuntu-latest
timeout-minutes: 120
env:
ENGINE_REF: ${{ github.head_ref || github.ref_name }}
strategy:
fail-fast: false
matrix:
buildconfig: [Editor, Game_linux]
configuration: [Debug, Release]
include:
- buildconfig: Editor
target: Havana
binary: Havana
- buildconfig: Game_linux
target: Game_EntryPoint
binary: Game_EntryPoint_x64

steps:
- name: Install Nix
uses: cachix/install-nix-action@v31
with:
github_access_token: ${{ secrets.GITHUB_TOKEN }}
extra_nix_config: |
experimental-features = nix-command flakes

- name: Grab the project setup file
run: curl -fsSLO "https://raw.githubusercontent.com/wobbier/MitchEngine/${ENGINE_REF}/Tools/NewProjectSetup.sh"

- name: Generate a new project
run: bash NewProjectSetup.sh EmptyProject "$ENGINE_REF"

- name: Compile Tools
if: ${{ matrix.buildconfig == 'Game_linux' }}
run: nix develop --command make -f EmptyProject.make Havana config=editor_release -j"$(nproc)"

- name: Compile Project
run: |
config=$(echo "${{ matrix.buildconfig }}_${{ matrix.configuration }}" | tr '[:upper:]' '[:lower:]')
nix develop --command make -f EmptyProject.make "${{ matrix.target }}" config="$config" -j"$(nproc)"

- name: Copy Assets
run: bash CopyAssets.sh "${{ matrix.buildconfig }}_${{ matrix.configuration }}"

- name: Cook Assets
if: ${{ matrix.buildconfig == 'Game_linux' }}
continue-on-error: true
timeout-minutes: 20
run: |
sudo apt-get update -q && sudo apt-get install -yq xvfb
bash CopyAssets.sh Editor_Release
# The cook resolves Engine/Tools/linux/shaderc relative to its
# working directory and expects texturec on PATH.
mkdir -p .build/Editor_Release/Engine/Tools
cp -a Engine/Tools/linux .build/Editor_Release/Engine/Tools/
nix develop --command bash -c 'cd .build/Editor_Release && PATH="$PWD/Engine/Tools/linux:$PATH" LIBGL_ALWAYS_SOFTWARE=1 xvfb-run -a ./Havana -CompileAssets'

- name: Copy Cooked Assets
if: ${{ matrix.buildconfig == 'Game_linux' }}
continue-on-error: true
run: cp -a .build/Editor_Release/Assets/. ".build/Game_linux_${{ matrix.configuration }}/Assets/"

- name: Package
run: nix develop --command bash Engine/Tools/PackageLinuxBuild.sh "${{ matrix.buildconfig }}_${{ matrix.configuration }}" "${{ matrix.binary }}"

- name: Archive Build
uses: actions/upload-artifact@v4
with:
name: EmptyProject v${{ github.run_number }} - ${{ matrix.buildconfig }}_${{ matrix.configuration }} (Linux)
path: ${{ matrix.buildconfig }}_${{ matrix.configuration }}.tar.gz
219 changes: 175 additions & 44 deletions .github/workflows/UWP.yml
Original file line number Diff line number Diff line change
Expand Up @@ -3,104 +3,235 @@ name: UWP
on:
push:
branches: [master, motivation]

pull_request:
branches: [master, motivation]

workflow_dispatch:

jobs:
build:
runs-on: ${{ matrix.os }}
runs-on: windows-2022

strategy:
fail-fast: false
matrix:
os: [windows-2022]
configuration:
- Debug
- Release
- Retail
type:
- Game_UWP
include:
- os: windows-2022
shell: cmd
compiler: cl
target: Windows

steps:
- name: Add MSBuild to PATH
uses: microsoft/setup-msbuild@v2
with:
msbuild-architecture: x64

- name: Install Mono
shell: cmd
run: choco install mono --ignore-checksums
run: choco install mono --ignore-checksums --no-progress

- name: Setup dotnet
uses: actions/setup-dotnet@v4
- name: Setup .NET 8
id: setup-dotnet
uses: actions/setup-dotnet@v5
with:
dotnet-version: "5.0.100"
dotnet-version: "8.0.x"

- uses: suisei-cn/actions-download-file@818d6b7dc8fe73f2f924b6241f2b1134ca1377d9 # 1.6.0
- name: Pin .NET SDK
shell: pwsh
run: |
@"
{
"sdk": {
"version": "${{ steps.setup-dotnet.outputs.dotnet-version }}",
"rollForward": "latestPatch",
"allowPrerelease": false
}
}
"@ | Set-Content -Path global.json -Encoding utf8

Write-Host "global.json:"
Get-Content global.json

Write-Host "`nSelected .NET SDK:"
dotnet --version

Write-Host "`nInstalled .NET SDKs:"
dotnet --list-sdks

- name: Download project setup
uses: suisei-cn/actions-download-file@818d6b7dc8fe73f2f924b6241f2b1134ca1377d9
id: downloadfile
name: Grab the project setup file
with:
url: "https://raw.githubusercontent.com/wobbier/MitchEngine/${{github.ref_name}}/Tools/NewProjectSetup.bat"
url: "https://raw.githubusercontent.com/${{ github.event.pull_request.head.repo.full_name || github.repository }}/${{ github.event.pull_request.head.sha || github.sha }}/Tools/NewProjectSetup.bat"
target: ./

- name: Generate a new project
shell: cmd
run: call NewProjectSetup.bat EmptyProject ${{github.ref_name}}
- name: Verify project setup
shell: pwsh
run: |
if (!(Test-Path "NewProjectSetup.bat")) {
throw "NewProjectSetup.bat was not downloaded."
}

$contents = Get-Content "NewProjectSetup.bat" -Raw

if ($contents -match '^404:') {
throw "NewProjectSetup.bat download returned a GitHub 404 response."
}

- name: Generate a new project
Get-Content "NewProjectSetup.bat" -TotalCount 5

- name: Generate project
shell: cmd
run: cd Project && call GenerateSolution.bat && cd ../
run: call NewProjectSetup.bat EmptyProject "${{ github.head_ref || github.ref_name }}"

- name: Verify generated solution
shell: pwsh
run: |
if (!(Test-Path "EmptyProject.sln")) {
throw "EmptyProject.sln was not generated."
}

$sharpmakeProject = Get-ChildItem `
-Path ".tmp\project" `
-Filter "SharpmakeProject_Win64.csproj" `
-Recurse `
-ErrorAction SilentlyContinue |
Select-Object -First 1

if (!$sharpmakeProject) {
throw "SharpmakeProject_Win64.csproj was not generated."
}

Write-Host "Generated solution:"
Resolve-Path "EmptyProject.sln"

Write-Host "`nGenerated Sharpmake project:"
Write-Host $sharpmakeProject.FullName

- name: Restore generated Sharpmake project
shell: pwsh
run: |
$sharpmakeProject = Get-ChildItem `
-Path ".tmp\project" `
-Filter "SharpmakeProject_Win64.csproj" `
-Recurse |
Select-Object -First 1

if (!$sharpmakeProject) {
throw "Could not locate SharpmakeProject_Win64.csproj."
}

dotnet restore $sharpmakeProject.FullName --verbosity minimal

if ($LASTEXITCODE -ne 0) {
throw "Sharpmake project restore failed with exit code $LASTEXITCODE."
}

$assetsFile = Join-Path $sharpmakeProject.DirectoryName "obj\project.assets.json"

if (!(Test-Path $assetsFile)) {
throw "Restore completed without generating $assetsFile."
}

Write-Host "Generated NuGet assets file:"
Write-Host $assetsFile

- name: Compile Tools
shell: cmd
run: msbuild EmptyProject.sln /property:Configuration="Editor_Release"

- name: Compile Project
run: >
msbuild EmptyProject.sln
/restore
/m
/property:Configuration="Editor_Release"
/verbosity:minimal

- name: Compile UWP Project
shell: cmd
run: msbuild EmptyProject.sln /property:Configuration="${{matrix.type}}_${{matrix.configuration}}"
run: >
msbuild EmptyProject.sln
/restore
/m
/property:Configuration="${{ matrix.type }}_${{ matrix.configuration }}"
/verbosity:minimal

- name: Copy Assets
shell: cmd
run: call CopyAssets.bat

- name: Copy Editor Assets
shell: pwsh
continue-on-error: true
run: |
robocopy ".build/Release/Assets" ".build\\Editor_Release\\Assets" *.* /w:0 /r:1 /v /E ; if ($lastexitcode -lt 8) { $global:LASTEXITCODE = $null }
robocopy "Engine/Tools" ".build\\Editor_Release\\Tools" Optick.exe /w:0 /r:1 /v /E ; if ($lastexitcode -lt 8) { $global:LASTEXITCODE = $null }
robocopy "Engine/Tools/Win64" ".build\\Editor_Release\\Tools\\Win64" *.* /w:0 /r:1 /v /E ; if ($lastexitcode -lt 8) { $global:LASTEXITCODE = $null }
robocopy `
".build\Release\Assets" `
".build\Editor_Release\Assets" `
*.* /w:0 /r:1 /v /E

if ($LASTEXITCODE -ge 8) {
throw "Copying editor assets failed with robocopy exit code $LASTEXITCODE."
}

$global:LASTEXITCODE = 0

robocopy `
"Engine\Tools" `
".build\Editor_Release\Tools" `
Optick.exe /w:0 /r:1 /v

if ($LASTEXITCODE -ge 8) {
throw "Copying Optick failed with robocopy exit code $LASTEXITCODE."
}

$global:LASTEXITCODE = 0

robocopy `
"Engine\Tools\Win64" `
".build\Editor_Release\Tools\Win64" `
*.* /w:0 /r:1 /v /E

if ($LASTEXITCODE -ge 8) {
throw "Copying Win64 tools failed with robocopy exit code $LASTEXITCODE."
}

$global:LASTEXITCODE = 0

- name: Cook Assets
shell: cmd
run: |
cd ".build/Editor_Release/"
cd ".build\Editor_Release"
call Havana.exe -CompileAssets
cd ../../
cd ..\..

- name: Copy Cooked Assets
shell: pwsh
continue-on-error: true
run: |
robocopy ".build/Editor_Release/Assets" ".build\\${{matrix.type}}_${{matrix.configuration}}\\Assets" *.* /w:0 /r:1 /v /E ; if ($lastexitcode -lt 8) { $global:LASTEXITCODE = $null }
robocopy `
".build\Editor_Release\Assets" `
".build\${{ matrix.type }}_${{ matrix.configuration }}\Assets" `
*.* /w:0 /r:1 /v /E

if ($LASTEXITCODE -ge 8) {
throw "Copying cooked assets failed with robocopy exit code $LASTEXITCODE."
}

$global:LASTEXITCODE = 0

- name: Archive Build
uses: actions/upload-artifact@v4
with:
name: Heap v${{github.run_number}} - ${{matrix.type}} - ${{matrix.configuration}}
name: EmptyProject v${{ github.run_number }} - ${{ matrix.type }}_${{ matrix.configuration }}
if-no-files-found: error
path: |
.build/${{matrix.type}}_${{matrix.configuration}}
.build/${{matrix.type}}_${{matrix.configuration}}/Assets
!.build/${{matrix.type}}_${{matrix.configuration}}/*.lib
!.build/${{matrix.type}}_${{matrix.configuration}}/*.pdb
!.build/${{matrix.type}}_${{matrix.configuration}}/*.exp
!.build/${{matrix.type}}_${{matrix.configuration}}/*.log
!.build/${{matrix.type}}_${{matrix.configuration}}/**/*.png
!.build/${{matrix.type}}_${{matrix.configuration}}/**/*.jpg
!.build/${{matrix.type}}_${{matrix.configuration}}/**/*.frag
!.build/${{matrix.type}}_${{matrix.configuration}}/**/*.vert
!.build/${{matrix.type}}_${{matrix.configuration}}/**/*.var
!.build/${{matrix.type}}_${{matrix.configuration}}/**/*.sh
.build/${{ matrix.type }}_${{ matrix.configuration }}
!.build/${{ matrix.type }}_${{ matrix.configuration }}/*.lib
!.build/${{ matrix.type }}_${{ matrix.configuration }}/*.pdb
!.build/${{ matrix.type }}_${{ matrix.configuration }}/*.exp
!.build/${{ matrix.type }}_${{ matrix.configuration }}/*.log
!.build/${{ matrix.type }}_${{ matrix.configuration }}/**/*.png
!.build/${{ matrix.type }}_${{ matrix.configuration }}/**/*.jpg
!.build/${{ matrix.type }}_${{ matrix.configuration }}/**/*.frag
!.build/${{ matrix.type }}_${{ matrix.configuration }}/**/*.vert
!.build/${{ matrix.type }}_${{ matrix.configuration }}/**/*.var
!.build/${{ matrix.type }}_${{ matrix.configuration }}/**/*.sh
Loading
Loading