Compare commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
1cc08a2241 | ||
|
|
054ae8a216 | ||
|
|
3e3197711e | ||
|
|
57d4e1fda2 | ||
|
|
5fa5f2bac5 | ||
|
|
2ba49b1e64 | ||
|
|
3fa66ee1d1 | ||
|
|
c6a904483e | ||
|
|
141c1dd414 | ||
|
|
471ba66b71 | ||
|
|
e1df3e98f6 | ||
|
|
087d735aa3 | ||
|
|
b17e9be7d0 | ||
|
|
822e0b57b2 | ||
|
|
4347b74e13 | ||
|
|
d61bc175b7 | ||
|
|
b20620c075 | ||
|
|
341bc7ca29 | ||
|
|
2230e44fa6 | ||
|
|
cfeaf5cbc6 | ||
|
|
f92b82a886 | ||
|
|
cd16f98021 | ||
|
|
7d2be498d6 | ||
|
|
8b3d2a2047 | ||
|
|
be5d76966f | ||
|
|
69e9be5f8f | ||
|
|
62446d47c4 | ||
|
|
6756c830fe | ||
|
|
6c6df2f5d3 | ||
|
|
ee001da0e9 | ||
|
|
7d55a0df8b | ||
|
|
334f279ec2 | ||
|
|
8d8f5864fd | ||
|
|
b110f8bbdb | ||
|
|
eb017da89e | ||
|
|
487a1f1faa | ||
|
|
f805077372 | ||
|
|
6d5b26a40d | ||
|
|
6db82462f0 | ||
|
|
8780f93c21 | ||
|
|
19ed82aa0d | ||
|
|
2f763df9a8 | ||
|
|
03b8daea35 | ||
|
|
5175f48eba | ||
|
|
a1d01f64b4 | ||
|
|
f9536c9419 | ||
|
|
60f53dccca | ||
|
|
53553bc1ca | ||
|
|
70ec82a022 | ||
|
|
ed36f30d2a | ||
|
|
e7f2f9176d | ||
|
|
0b087540c1 | ||
|
|
d415a6e8a3 | ||
|
|
e085b1c595 | ||
|
|
b5653dcdd1 | ||
|
|
bac57b2a4c | ||
|
|
cb4d36cc34 | ||
|
|
da15d51b10 | ||
|
|
301c6cddc6 | ||
|
|
f393070e5c | ||
|
|
96aac47c27 | ||
|
|
d78e822fb3 | ||
|
|
1d0dcb2ff4 | ||
|
|
9bc022b6da | ||
|
|
c0d67f1539 | ||
|
|
3d7e2d2c39 | ||
|
|
87aee63157 | ||
|
|
d0677d86bc | ||
|
|
f3fcf68e21 | ||
|
|
d9c1fb33ae | ||
|
|
b01b7febcf | ||
|
|
34e9c8c739 | ||
|
|
7d9f1b11ad | ||
|
|
4fca049f2e | ||
|
|
698701a501 | ||
|
|
0fd59f5e27 | ||
|
|
85d36694f4 | ||
|
|
48b2a77472 | ||
|
|
89134e1243 | ||
|
|
f4cbd67af8 | ||
|
|
afb21793dc | ||
|
|
826e8b7f0a | ||
|
|
60dfebcd0c | ||
|
|
05a96184e4 | ||
|
|
5b46515e5b | ||
|
|
f40b4df571 | ||
|
|
85a5f7d9df | ||
|
|
274455885d | ||
|
|
c4bbf48e0f | ||
|
|
638eac7ebe | ||
|
|
fb6434b8ad | ||
|
|
ff649ae863 | ||
|
|
c48f957920 | ||
|
|
050f4000fb | ||
|
|
d306ee9ec3 | ||
|
|
1ed64e3fda | ||
|
|
bfaccf0dc9 | ||
|
|
433923bdbd | ||
|
|
87ec99dd1e | ||
|
|
9b91dc1b80 | ||
|
|
a9fdf2510a | ||
|
|
c742c89601 | ||
|
|
79ccb61cfb | ||
|
|
0a4273bd1a | ||
|
|
926f7dd6ff | ||
|
|
74f313feec | ||
|
|
127d4f4cb4 | ||
|
|
40f0edf18e | ||
|
|
d1afc09577 | ||
|
|
4e04e5071b | ||
|
|
48a9b8ce84 | ||
|
|
338da5ced8 | ||
|
|
c9bff7098c | ||
|
|
603351d92b | ||
|
|
2e492032b5 | ||
|
|
606c0d0da1 | ||
|
|
f9ee6bdddb | ||
|
|
3ce478d1fd | ||
|
|
4787234621 | ||
|
|
473429d3ce | ||
|
|
602cf4c574 | ||
|
|
a71abb5772 | ||
|
|
673ed0d7fd | ||
|
|
d53b4a70ed | ||
|
|
0bdd66039c | ||
|
|
675f251ddd | ||
|
|
f8fe10bebf | ||
|
|
9feb12a5a1 | ||
|
|
ca3ce1a659 | ||
|
|
065b775e08 | ||
|
|
e76d11a5e6 | ||
|
|
eed73b744b | ||
|
|
cf7b871c56 | ||
|
|
054e9f4bf9 | ||
|
|
a3b99638af | ||
|
|
6cf7267078 | ||
|
|
86e526d553 | ||
|
|
8f5788109e | ||
|
|
a9dddbc4a5 | ||
|
|
e6a219c8cc | ||
|
|
9ccf971e58 | ||
|
|
2fcc73e387 | ||
|
|
589db1f26b | ||
|
|
f3f91a1d8e | ||
|
|
d93ed6c7db | ||
|
|
65de93f679 | ||
|
|
b8701fa703 | ||
|
|
62a59a74d7 | ||
|
|
92157c03e9 | ||
|
|
7fefeb61e7 | ||
|
|
b425be302a | ||
|
|
f30f6e646c | ||
|
|
0af3ab700d | ||
|
|
8248843722 | ||
|
|
5fa4bc458e | ||
|
|
40cce24b78 | ||
|
|
475dd9c49d | ||
|
|
c7f7a7dff0 | ||
|
|
cd24092161 | ||
|
|
98a5401f4b | ||
|
|
ff354d2b69 | ||
|
|
321a7d22f9 | ||
|
|
b16b463dad | ||
|
|
0035f9a506 | ||
|
|
968a001a36 | ||
|
|
180f6b2cfa | ||
|
|
46fe5a5645 | ||
|
|
11872c3fce | ||
|
|
a9638e1c42 | ||
|
|
8273af5a43 | ||
|
|
fcdfbd8f73 | ||
|
|
11b1017753 | ||
|
|
a9ada001f7 | ||
|
|
cc66469d30 | ||
|
|
12913b4f31 | ||
|
|
ad51619b4d | ||
|
|
f9b6c1461c | ||
|
|
90270b4a3d | ||
|
|
15c0d4fbf6 | ||
|
|
e98212b1cd | ||
|
|
bf78c62384 | ||
|
|
e45f1d8005 | ||
|
|
578603c584 | ||
|
|
f5c865fbe5 | ||
|
|
057e40baa6 | ||
|
|
6e1274d849 | ||
|
|
2ba056bfc5 | ||
|
|
1e58720c32 | ||
|
|
bb8cb6e428 | ||
|
|
c8e3a27044 | ||
|
|
c2d1b86c98 | ||
|
|
b68fb4f5de | ||
|
|
0c31cc29ee | ||
|
|
bd6e2129b8 | ||
|
|
ddd42ca004 | ||
|
|
9a6ca041e7 | ||
|
|
6b48a04cb8 | ||
|
|
60a2e4ca58 | ||
|
|
f0b0ad5e9d | ||
|
|
2f1d609b9d | ||
|
|
ddc9b3d314 | ||
|
|
3d3841b165 | ||
|
|
16d99812d0 | ||
|
|
7562357798 | ||
|
|
8f28b62494 | ||
|
|
a55b831c2e | ||
|
|
5a77f590c4 | ||
|
|
87286b68c0 | ||
|
|
6c7d5b3f1b | ||
|
|
fa46570337 | ||
|
|
b595d62486 | ||
|
|
bea3ca7fd8 | ||
|
|
539a5f8550 | ||
|
|
7bbb09aa43 | ||
|
|
aaaf633f58 | ||
|
|
8ec6f229aa | ||
|
|
354025211a | ||
|
|
414060eeb3 | ||
|
|
81612e2167 | ||
|
|
29496d7ab9 | ||
|
|
e443b1916d | ||
|
|
32c27dfb30 | ||
|
|
51b39de6d9 | ||
|
|
0542088c6e | ||
|
|
188674b64c | ||
|
|
33385ddd15 | ||
|
|
78ec82d953 | ||
|
|
f3fb40dc5e | ||
|
|
cc94633395 | ||
|
|
b3acc17685 | ||
|
|
f31813c9db | ||
|
|
38bb4848a5 | ||
|
|
7e1ccefeb5 | ||
|
|
7cf19cd186 | ||
|
|
fc5e73a87a | ||
|
|
96e618327f | ||
|
|
6eab783c23 | ||
|
|
3697177a41 | ||
|
|
dc11504c25 | ||
|
|
2673a04d27 | ||
|
|
50ab1605a6 | ||
|
|
f0d4ab3ffd | ||
|
|
5ecd641b13 | ||
|
|
405f362a73 | ||
|
|
8fc2d4de71 | ||
|
|
330aa69741 | ||
|
|
705f43c50a | ||
|
|
aeb77a3c25 | ||
|
|
f417661668 | ||
|
|
eb47d38047 | ||
|
|
d528967efc | ||
|
|
427ca3cb03 | ||
|
|
4d4a724d72 | ||
|
|
f168200b45 | ||
|
|
7288a1fdae | ||
|
|
8bcdb7a8e8 | ||
|
|
65036334d2 | ||
|
|
7d925ae0ec | ||
|
|
0062631472 | ||
|
|
9c44e56b19 | ||
|
|
320a760d82 | ||
|
|
567a7af392 | ||
|
|
082abad735 | ||
|
|
b40f7c94b8 | ||
|
|
4ab27ca8a6 | ||
|
|
9dfe5cfe42 | ||
|
|
a380fa16e5 | ||
|
|
6568703a7d | ||
|
|
d8513fc4a0 | ||
|
|
95415f5890 | ||
|
|
ce0fd00fba | ||
|
|
aa7cef2c25 | ||
|
|
3855c5ea9f | ||
|
|
a75e543fb8 | ||
|
|
d5121a6e8e | ||
|
|
de57ab82f6 | ||
|
|
851d5c241c | ||
|
|
9e1ccaf083 | ||
|
|
de17188ae4 | ||
|
|
dbbd0c2851 | ||
|
|
89fa9a3121 | ||
|
|
86aba3f004 | ||
|
|
0839f21e71 | ||
|
|
75a02413de | ||
|
|
32001dad2e | ||
|
|
303c9d14aa |
@@ -1,7 +0,0 @@
|
||||
# top-most EditorConfig file
|
||||
root = true
|
||||
|
||||
# Unix-style newlines with a newline ending every file
|
||||
[*]
|
||||
end_of_line = lf
|
||||
insert_final_newline = true
|
||||
@@ -1 +0,0 @@
|
||||
* text=auto eol=lf
|
||||
@@ -1,44 +0,0 @@
|
||||
---
|
||||
name: Bug Report
|
||||
about: Report a bug or critical performance issue
|
||||
title: 'Bug Report: [DESCRIBE YOUR BUG IN DETAIL HERE]'
|
||||
labels: bug
|
||||
---
|
||||
|
||||
[weed]: <> (FILL THIS ISSUE THING OUT AS MUCH AS POSSIBLE)
|
||||
[weed]: <> (OR ELSE YOUR ISSUE WILL BE LESS LIKELY TO BE SOLVED!)
|
||||
[weed]: <> (DO NOT POST ABOUT ISSUES FROM OTHER FNF MOD ENGINES! I CANNOT AND PROBABLY WON'T SOLVE THOSE!)
|
||||
[weed]: <> (GO TO THEIR RESPECTIVE GITHUB ISSUES AND REPORT THEM THERE LOL!)
|
||||
|
||||
[weed]: <> (ALSO MAKE SURE THAT YOU USE PROPER LABELS, IF YOU'RE RUNNING INTO COMPILER ISSUES, USE THE compiler issue LABEL!!!)
|
||||
|
||||
#### Please check for duplicates or similar issues, as well performing simple troubleshooting steps (such as clearing cookies, clearing AppData, trying another browser) before submitting an issue.
|
||||
### If you are playing the game in a browser, what site are you playing it from?
|
||||
|
||||
[weed]: <> (Put an X in the [ ] thingies to fill out checkbox!)
|
||||
[weed]: <> (something like [x] pretty much, don't screw up or you will look stupid)
|
||||
|
||||
- [ ] [Newgrounds](https://www.newgrounds.com/portal/view/770371)
|
||||
- [ ] [Itch.io](https://ninja-muffin24.itch.io/funkin)? Specify below
|
||||
- - [ ] Windows
|
||||
- - [ ] Mac
|
||||
- - [ ] Linux
|
||||
|
||||
### If you are playing the game in a browser, what browser are you using?
|
||||
|
||||
[weed]: <> (Again, put an x in the [ ] box!)
|
||||
|
||||
- [ ] Google Chrome (or chomium based like Brave, vivaldi, MS Edge)
|
||||
- [ ] Firefox
|
||||
- [ ] Safari
|
||||
|
||||
## What version of the game are you using? Look in the bottom left corner of the main menu. (ex: 0.2.7, 0.2.1, shit like that)
|
||||
|
||||
|
||||
## Have you identified any steps to reproduce the bug? If so, please describe them below in as much detail as possible. Use images if possible.
|
||||
|
||||
## Please describe your issue. Provide extensive detail and images if possible.
|
||||
|
||||
|
||||
|
||||
## If you're game is FROZEN and you're playing a web version, press F12 to open up browser dev window, and go to console, and copy-paste whatever red error you're getting
|
||||
@@ -1,25 +0,0 @@
|
||||
---
|
||||
name: Compiling help
|
||||
about: If you need help compiling the game, and you're running into issues. (Look through the 'compiling help' label in case it's been solved!)
|
||||
title: 'Compiling help: [BRIEF DESCRIPTION / ERROR MESSAGE OUTPUT]'
|
||||
labels: compiling help
|
||||
---
|
||||
|
||||
[weed]: <> (FILL THIS ISSUE THING OUT AS MUCH AS POSSIBLE)
|
||||
[weed]: <> (OR ELSE YOUR ISSUE WILL BE LESS LIKELY TO BE SOLVED!)
|
||||
[weed]: <> (DO NOT POST ABOUT ISSUES FROM OTHER FNF MOD ENGINES! I CANNOT AND PROBABLY WON'T SOLVE THOSE!)
|
||||
[weed]: <> (GO TO THEIR RESPECTIVE GITHUB ISSUES AND REPORT THEM THERE LOL!)
|
||||
|
||||
#### Please check for duplicates or similar compiler issues by filtering for 'compiler help'
|
||||
|
||||
[weed]: <> (Put an X in the [ ] thingies to fill out checkbox!)
|
||||
[weed]: <> (something like [x] pretty much, don't screw up or you will look stupid)
|
||||
|
||||
|
||||
- [ ] Windows
|
||||
- [ ] Mac
|
||||
- [ ] Linux
|
||||
- [ ] HTML5
|
||||
|
||||
## Please describe your issue. Provide extensive detail and images if possible.
|
||||
|
||||
@@ -1,8 +0,0 @@
|
||||
---
|
||||
name: Enhancement
|
||||
about: Suggest a new feature
|
||||
title: 'Enhancement: '
|
||||
labels: enhancement
|
||||
---
|
||||
#### Please check for duplicates or similar issues before creating this issue.
|
||||
## What is your suggestion, and why should it be implemented?
|
||||
@@ -1,12 +0,0 @@
|
||||
---
|
||||
name: Question
|
||||
about: Ask a general question
|
||||
title: 'Question: '
|
||||
labels: question
|
||||
---
|
||||
|
||||
[weed]: <> (This isn't a place for AMA type questions, if you want to ask any of the devs something, reach out to them on twitter prob )
|
||||
[weed]: <> (any biz bullshit can go to cameron.taylor.ninja@gmail.com)
|
||||
|
||||
#### Please check for duplicates or similar issues before asking your question.
|
||||
## What is your question?
|
||||
@@ -1,10 +0,0 @@
|
||||
---
|
||||
name: Bug Fix
|
||||
about: Fix a bug or critical performance issue
|
||||
title: 'Bug Fix: '
|
||||
labels: bug
|
||||
---
|
||||
#### Please check for duplicates or similar PRs before creating this issue.
|
||||
## Does this PR close any issue(s)? If so, link them below.
|
||||
|
||||
## Briefly describe the issue(s) fixed.
|
||||
@@ -1,10 +0,0 @@
|
||||
---
|
||||
name: Enhancement
|
||||
about: Add a new feature
|
||||
title: 'Enhancement: '
|
||||
labels: enhancement
|
||||
---
|
||||
#### Please check for duplicates or similar PRs before creating this issue.
|
||||
## Does this PR close any issue(s)? If so, link them below.
|
||||
|
||||
## What do your change(s) add, and why should they be implemented?
|
||||
@@ -1,144 +0,0 @@
|
||||
name: setup-haxeshit
|
||||
description: "sets up haxe shit, using HMM!"
|
||||
|
||||
inputs:
|
||||
haxe:
|
||||
description: 'Version of haxe to install'
|
||||
required: true
|
||||
default: '4.3.4'
|
||||
hxcpp-cache:
|
||||
description: 'Whether to use a shared hxcpp compile cache'
|
||||
required: true
|
||||
default: 'true'
|
||||
hxcpp-cache-path:
|
||||
description: 'Path to create hxcpp cache in'
|
||||
required: true
|
||||
default: ${{ runner.temp }}/hxcpp_cache
|
||||
targets:
|
||||
description: 'Targets we plan to compile to. Installs native dependencies needed.'
|
||||
required: true
|
||||
gh-token:
|
||||
description: 'GitHub secret for private repos as dependencies'
|
||||
|
||||
runs:
|
||||
using: "composite"
|
||||
steps:
|
||||
|
||||
- name: Setup timers
|
||||
shell: bash
|
||||
run: |
|
||||
echo "TIMER_HAXE=$(date +%s)" >> "$GITHUB_ENV"
|
||||
|
||||
- name: Install Haxe
|
||||
uses: funkincrew/ci-haxe@v3.1.0
|
||||
with:
|
||||
haxe-version: ${{ inputs.haxe }}
|
||||
|
||||
- name: Install native dependencies
|
||||
if: ${{ runner.os == 'Linux' }}
|
||||
shell: bash
|
||||
run: |
|
||||
ls -lah /usr/lib/x86_64-linux-gnu/
|
||||
apt-get update
|
||||
apt-get install -y \
|
||||
g++ \
|
||||
libx11-dev libxi-dev libxext-dev libxinerama-dev libxrandr-dev \
|
||||
libgl-dev libgl1-mesa-dev \
|
||||
libasound2-dev
|
||||
ln -s /usr/lib/x86_64-linux-gnu/libffi.so.8 /usr/lib/x86_64-linux-gnu/libffi.so.6 || true
|
||||
- name: Install linux-specific dependencies
|
||||
if: ${{ runner.os == 'Linux' && contains(inputs.targets, 'linux') }}
|
||||
shell: bash
|
||||
run: |
|
||||
apt-get install -y libvlc-dev libvlccore-dev
|
||||
|
||||
- name: Config haxelib
|
||||
shell: bash
|
||||
run: |
|
||||
echo "TIMER_HAXELIB=$(date +%s)" >> "$GITHUB_ENV"
|
||||
haxelib --debug --never install haxelib 4.1.0 --global
|
||||
haxelib --debug --never deleterepo || true
|
||||
haxelib --debug --never newrepo
|
||||
echo "HAXEPATH=$(haxelib config)" >> "$GITHUB_ENV"
|
||||
haxelib --debug --never git haxelib https://github.com/HaxeFoundation/haxelib.git master
|
||||
haxelib --debug --global install hmm
|
||||
echo "TIMER_DEPS=$(date +%s)" >> "$GITHUB_ENV"
|
||||
|
||||
- name: Restore cached dependencies
|
||||
id: cache-hmm
|
||||
uses: actions/cache@v4
|
||||
with:
|
||||
path: .haxelib
|
||||
key: haxe-hmm-${{ runner.os }}-${{ hashFiles('**/hmm.json') }}
|
||||
|
||||
- if: ${{ steps.cache-hmm.outputs.cache-hit != 'true' }}
|
||||
name: Prep git for dependency install
|
||||
uses: gacts/run-and-post-run@v1
|
||||
with:
|
||||
run: git config --global 'url.https://x-access-token:${{ inputs.gh-token }}@github.com/.insteadOf' https://github.com/
|
||||
post: git config --global --unset 'url.https://x-access-token:${{ inputs.gh-token }}@github.com/.insteadOf'
|
||||
|
||||
- if: ${{ steps.cache-hmm.outputs.cache-hit != 'true' }}
|
||||
name: Install dependencies
|
||||
shell: bash
|
||||
run: |
|
||||
haxelib --global run hmm install -q
|
||||
echo "TIMER_DONE=$(date +%s)" >> "$GITHUB_ENV"
|
||||
|
||||
# by default use a shared hxcpp cache
|
||||
- if: ${{ inputs.hxcpp-cache == 'true' }}
|
||||
name: Restore hxcpp cache
|
||||
uses: actions/cache@v4
|
||||
with:
|
||||
path: ${{ inputs.hxcpp-cache-path }}
|
||||
key: haxe-hxcpp-${{ runner.os }}-${{ github.ref_name }}-${{ github.sha }}
|
||||
restore-keys: haxe-hxcpp-${{ runner.os }}-${{ github.ref_name }}
|
||||
# export env for it to reuse in builds
|
||||
- if: ${{ inputs.hxcpp-cache == 'true' }}
|
||||
name: Persist env for hxcpp cache
|
||||
shell: bash
|
||||
run: |
|
||||
echo "HXCPP_COMPILE_CACHE=${{ inputs.hxcpp-cache-path }}" >> "$GITHUB_ENV"
|
||||
echo 'HXCPP_CACHE_MB="4096"' >> "$GITHUB_ENV"
|
||||
|
||||
# if it's explicitly disabled, still cache export/ since that then contains the builds
|
||||
- if: ${{ inputs.hxcpp-cache != 'true' }}
|
||||
name: Restore export cache
|
||||
uses: actions/cache@v4
|
||||
with:
|
||||
path: ${{ inputs.hxcpp-cache-path }}
|
||||
key: haxe-export-${{ runner.os }}-${{ github.ref_name }}-${{ github.sha }}
|
||||
restore-keys: haxe-export-${{ runner.os }}-${{ github.ref_name }}
|
||||
|
||||
- name: Print debug info
|
||||
shell: bash
|
||||
run: |
|
||||
cat << EOF
|
||||
runner:
|
||||
kernel: $(uname -a)
|
||||
haxe:
|
||||
version: $(haxe -version)
|
||||
which: $(which haxe)
|
||||
haxepath: $HAXEPATH
|
||||
took: $((TIMER_HAXELIB - TIMER_HAXE))s
|
||||
haxelib:
|
||||
version: $(haxelib version)
|
||||
which: $(which haxelib)
|
||||
local:
|
||||
config: $(haxelib config)
|
||||
path: $(haxelib path haxelib || true)
|
||||
global
|
||||
config: $(haxelib config --global)
|
||||
path: $(haxelib path haxelib --global || true)
|
||||
system
|
||||
version: $(haxelib --system version)
|
||||
local:
|
||||
config: $(haxelib --system config)
|
||||
global:
|
||||
config: $(haxelib --system config --global)
|
||||
took: $((TIMER_DEPS - TIMER_HAXELIB))s
|
||||
deps:
|
||||
took: $((TIMER_DONE - TIMER_DEPS))s
|
||||
hxcpp_cache: |
|
||||
$(haxelib run hxcpp cache list || true)
|
||||
EOF
|
||||
@@ -1,124 +0,0 @@
|
||||
name: upload-itch
|
||||
description: "installs Butler, and uploads to itch.io!"
|
||||
|
||||
inputs:
|
||||
butler-key:
|
||||
description: "Butler API secret key"
|
||||
required: true
|
||||
itch-repo:
|
||||
description: "Where to upload the game to"
|
||||
required: true
|
||||
default: "ninja-muffin24/funkin-secret"
|
||||
build-dir:
|
||||
description: "Directory of the game build"
|
||||
required: false
|
||||
target:
|
||||
description: "Target (html5, windows, linux, macos)"
|
||||
required: true
|
||||
|
||||
runs:
|
||||
using: "composite"
|
||||
steps:
|
||||
|
||||
# RUNNER_OS = Windows | macOS | Linux
|
||||
# TARGET_BUILD = windows | macos | linux
|
||||
# TARGET_ITCH = win | macos | linux
|
||||
# TARGET_BUTLER_DOWNLOAD = windows-amd64 | darwin-amd64 | linux-amd64
|
||||
- name: Setup variables
|
||||
shell: bash
|
||||
run: |
|
||||
TARGET_OS=${{ inputs.target }}
|
||||
RUNNER=${RUNNER_OS@L}
|
||||
TARGET=${TARGET_OS@L}
|
||||
case "$TARGET" in
|
||||
"windows")
|
||||
TARGET_ITCH=win
|
||||
;;
|
||||
*)
|
||||
TARGET_ITCH=$TARGET
|
||||
;;
|
||||
esac
|
||||
case "$RUNNER" in
|
||||
"macos")
|
||||
OS_NODE=darwin
|
||||
;;
|
||||
*)
|
||||
OS_NODE=$RUNNER
|
||||
;;
|
||||
esac
|
||||
BUTLER_PATH=$RUNNER_TEMP/butler
|
||||
|
||||
echo BUILD_DIR="export/release/$TARGET/bin" >> "$GITHUB_ENV"
|
||||
echo ITCH_TAG=${{ inputs.itch-repo }}:$TARGET_ITCH-$GITHUB_REF_NAME >> "$GITHUB_ENV"
|
||||
echo OS_AND_ARCH=$OS_NODE-amd64 >> "$GITHUB_ENV"
|
||||
echo BUTLER_API_KEY=${{ inputs.butler-key }} >> "$GITHUB_ENV"
|
||||
echo BUTLER_INSTALL_PATH=$BUTLER_PATH >> "$GITHUB_ENV"
|
||||
echo TIMER_BUTLER=$(date +%s) >> "$GITHUB_ENV"
|
||||
echo TARGET_ITCH=$TARGET_ITCH >> "$GITHUB_ENV"
|
||||
|
||||
echo "$BUTLER_PATH" >> "$GITHUB_PATH"
|
||||
|
||||
- name: Get latest butler version
|
||||
shell: bash
|
||||
run: |
|
||||
LATEST=$(curl -sfL https://broth.itch.ovh/butler/$OS_AND_ARCH/LATEST)
|
||||
echo BUTLER_LATEST=$LATEST >> "$GITHUB_ENV"
|
||||
|
||||
command -v butler \
|
||||
&& echo BUTLER_CURRENT=$(butler -V 2>&1 | cut -d ',' -f 1) >> "$GITHUB_ENV" \
|
||||
|| echo BUTLER_CURRENT=none >> "$GITHUB_ENV"
|
||||
|
||||
- name: Try to get butler from cache
|
||||
id: cache-butler
|
||||
uses: actions/cache@v4
|
||||
with:
|
||||
path: ${{ env.BUTLER_INSTALL_PATH }}
|
||||
key: butler-${{ runner.os }}-${{ env.BUTLER_LATEST }}
|
||||
|
||||
- if: steps.cache-butler.outputs.cache-hit == 'true'
|
||||
name: Make sure butler is executable
|
||||
shell: bash
|
||||
run: |
|
||||
chmod +x $BUTLER_INSTALL_PATH/butler
|
||||
|
||||
- if: steps.cache-butler.outputs.cache-hit != 'true'
|
||||
name: Install butler
|
||||
shell: bash
|
||||
run: |
|
||||
mkdir -p $BUTLER_INSTALL_PATH
|
||||
cd $BUTLER_INSTALL_PATH
|
||||
|
||||
curl -L -o butler.zip https://broth.itch.ovh/butler/$OS_AND_ARCH/LATEST/archive/default
|
||||
unzip butler.zip
|
||||
chmod +x butler
|
||||
|
||||
- name: Upload game to itch.io
|
||||
shell: bash
|
||||
run: |
|
||||
echo "TIMER_UPLOAD=$(date +%s)" >> "$GITHUB_ENV"
|
||||
butler login
|
||||
butler push $BUILD_DIR $ITCH_TAG
|
||||
echo "TIMER_DONE=$(date +%s)" >> "$GITHUB_ENV"
|
||||
|
||||
- name: Print debug info
|
||||
shell: bash
|
||||
run: |
|
||||
cat << EOF
|
||||
butler:
|
||||
version: $(
|
||||
if [[ "$BUTLER_CURRENT" == "$BUTLER_LATEST" ]]
|
||||
then
|
||||
echo $BUTLER_CURRENT
|
||||
else
|
||||
echo $BUTLER_CURRENT -> $BUTLER_LATEST
|
||||
fi
|
||||
)
|
||||
install:
|
||||
took: $(($TIMER_UPLOAD-$TIMER_BUTLER))s
|
||||
upload:
|
||||
tag: $TARGET_ITCH/$GITHUB_REF_NAME
|
||||
took: $(($TIMER_DONE-$TIMER_UPLOAD))s
|
||||
EOF
|
||||
cat << EOF >> "$GITHUB_STEP_SUMMARY"
|
||||
### open in launcher: [$TARGET_ITCH/$GITHUB_REF_NAME](https://run.funkin.me/$TARGET_ITCH/$GITHUB_REF_NAME)
|
||||
EOF
|
||||
@@ -1,5 +0,0 @@
|
||||
# Git Hooks
|
||||
These work even on Windows because of Git Bash.
|
||||
|
||||
## Setup
|
||||
`git config core.hooksPath .github/hooks`
|
||||
@@ -1,2 +0,0 @@
|
||||
#!/bin/sh
|
||||
git submodule update --init --recursive
|
||||
@@ -1,2 +0,0 @@
|
||||
#!/bin/sh
|
||||
git submodule update --init --recursive
|
||||
@@ -1,5 +0,0 @@
|
||||
#!/bin/sh
|
||||
if git diff --cached --submodule | grep -q "^+"; then
|
||||
echo "WARNING: You have unpushed changes in submodules."
|
||||
exit 1
|
||||
fi
|
||||
@@ -1,53 +0,0 @@
|
||||
name: Create and publish Docker image
|
||||
|
||||
on:
|
||||
workflow_dispatch:
|
||||
push:
|
||||
paths:
|
||||
- '**/Dockerfile'
|
||||
- '.github/workflows/build-docker-image.yml'
|
||||
|
||||
jobs:
|
||||
build-and-push-image:
|
||||
runs-on: build-set
|
||||
permissions:
|
||||
contents: read
|
||||
packages: write
|
||||
|
||||
steps:
|
||||
- name: Get checkout token
|
||||
uses: actions/create-github-app-token@v1
|
||||
id: app_token
|
||||
with:
|
||||
app-id: ${{ vars.APP_ID }}
|
||||
private-key: ${{ secrets.APP_PEM }}
|
||||
owner: ${{ github.repository_owner }}
|
||||
|
||||
- name: Checkout repo
|
||||
uses: funkincrew/ci-checkout@v6
|
||||
with:
|
||||
submodules: false
|
||||
token: ${{ steps.app_token.outputs.token }}
|
||||
|
||||
- name: Log into GitHub Container Registry
|
||||
uses: docker/login-action@v3.1.0
|
||||
with:
|
||||
registry: ghcr.io
|
||||
username: ${{ github.actor }}
|
||||
password: ${{ secrets.GITHUB_TOKEN }}
|
||||
|
||||
- name: Build and push Docker image
|
||||
uses: docker/build-push-action@v5.3.0
|
||||
with:
|
||||
context: ./build
|
||||
push: true
|
||||
tags: |
|
||||
ghcr.io/funkincrew/build-dependencies:latest
|
||||
ghcr.io/funkincrew/build-dependencies:${{ github.sha }}
|
||||
labels: |
|
||||
org.opencontainers.image.description=precooked haxe build-dependencies
|
||||
org.opencontainers.image.revision=${{ github.sha }}
|
||||
org.opencontainers.image.source=https://github.com/${{ github.repository }}
|
||||
org.opencontainers.image.title=${{ github.repository_owner }}/build-dependencies
|
||||
org.opencontainers.image.url=https://github.com/${{ github.repository }}
|
||||
org.opencontainers.image.version=${{ github.sha }}
|
||||
@@ -1,129 +0,0 @@
|
||||
name: Build and Upload nightly game builds
|
||||
|
||||
on:
|
||||
workflow_dispatch:
|
||||
push:
|
||||
paths-ignore:
|
||||
- '**/Dockerfile'
|
||||
- '.github/workflows/build-docker-image.yml'
|
||||
|
||||
jobs:
|
||||
|
||||
build-game-on-host:
|
||||
strategy:
|
||||
matrix:
|
||||
include:
|
||||
- target: windows
|
||||
- target: macos
|
||||
runs-on:
|
||||
- ${{ matrix.target }}
|
||||
defaults:
|
||||
run:
|
||||
shell: bash
|
||||
|
||||
steps:
|
||||
- name: Make git happy
|
||||
run: |
|
||||
git config --global --replace-all safe.directory $GITHUB_WORKSPACE
|
||||
|
||||
- name: Get checkout token
|
||||
uses: actions/create-github-app-token@v1
|
||||
id: app_token
|
||||
with:
|
||||
app-id: ${{ vars.APP_ID }}
|
||||
private-key: ${{ secrets.APP_PEM }}
|
||||
owner: ${{ github.repository_owner }}
|
||||
|
||||
- name: Checkout repo
|
||||
uses: funkincrew/ci-checkout@v6
|
||||
with:
|
||||
submodules: 'recursive'
|
||||
token: ${{ steps.app_token.outputs.token }}
|
||||
persist-credentials: false
|
||||
|
||||
- name: Setup build environment
|
||||
uses: ./.github/actions/setup-haxe
|
||||
with:
|
||||
gh-token: ${{ steps.app_token.outputs.token }}
|
||||
|
||||
- name: Build game
|
||||
if: ${{ matrix.target == 'windows' }}
|
||||
run: |
|
||||
haxelib run lime build windows -v -release -DGITHUB_BUILD
|
||||
timeout-minutes: 120
|
||||
- name: Build game
|
||||
if: ${{ matrix.target != 'windows' }}
|
||||
run: |
|
||||
haxelib run lime build ${{ matrix.target }} -v -release --times -DGITHUB_BUILD
|
||||
timeout-minutes: 120
|
||||
|
||||
- name: Upload build artifacts
|
||||
uses: ./.github/actions/upload-itch
|
||||
with:
|
||||
butler-key: ${{ secrets.BUTLER_API_KEY}}
|
||||
target: ${{ matrix.target }}
|
||||
|
||||
build-game-in-container:
|
||||
runs-on: build-set
|
||||
container: ghcr.io/funkincrew/build-dependencies:latest
|
||||
strategy:
|
||||
matrix:
|
||||
include:
|
||||
- target: linux
|
||||
- target: html5
|
||||
defaults:
|
||||
run:
|
||||
shell: bash
|
||||
|
||||
steps:
|
||||
- name: Get checkout token
|
||||
uses: actions/create-github-app-token@v1
|
||||
id: app_token
|
||||
with:
|
||||
app-id: ${{ vars.APP_ID }}
|
||||
private-key: ${{ secrets.APP_PEM }}
|
||||
owner: ${{ github.repository_owner }}
|
||||
|
||||
- name: Checkout repo
|
||||
uses: funkincrew/ci-checkout@v6
|
||||
with:
|
||||
submodules: 'recursive'
|
||||
token: ${{ steps.app_token.outputs.token }}
|
||||
persist-credentials: false
|
||||
|
||||
- name: Config haxelib
|
||||
run: |
|
||||
haxelib --never newrepo
|
||||
echo "HAXEPATH=$(haxelib config)" >> "$GITHUB_ENV"
|
||||
|
||||
- name: Restore cached dependencies
|
||||
id: cache-hmm
|
||||
uses: actions/cache@v4
|
||||
with:
|
||||
path: .haxelib
|
||||
key: haxe-hmm-${{ runner.os }}-${{ hashFiles('**/hmm.json') }}
|
||||
|
||||
- if: ${{ steps.cache-hmm.outputs.cache-hit != 'true' }}
|
||||
name: Install dependencies
|
||||
run: |
|
||||
git config --global 'url.https://x-access-token:${{ steps.app_token.outputs.token }}@github.com/.insteadOf' https://github.com/
|
||||
haxelib --global run hmm install -q
|
||||
|
||||
- if: ${{ matrix.target != 'html5' }}
|
||||
name: Restore hxcpp cache
|
||||
uses: actions/cache@v4
|
||||
with:
|
||||
path: /usr/share/hxcpp
|
||||
key: haxe-hxcpp-${{ runner.os }}-${{ github.ref_name }}-${{ github.sha }}
|
||||
restore-keys: haxe-hxcpp-${{ runner.os }}-${{ github.ref_name }}
|
||||
|
||||
- name: Build game
|
||||
run: |
|
||||
haxelib run lime build ${{ matrix.target }} -v -release --times -DGITHUB_BUILD
|
||||
timeout-minutes: 120
|
||||
|
||||
- name: Upload build artifacts
|
||||
uses: ./.github/actions/upload-itch
|
||||
with:
|
||||
butler-key: ${{ secrets.BUTLER_API_KEY}}
|
||||
target: ${{ matrix.target }}
|
||||
@@ -1,38 +0,0 @@
|
||||
name: Cancel queued workflows on PR merge
|
||||
|
||||
on:
|
||||
pull_request:
|
||||
types:
|
||||
- closed
|
||||
|
||||
jobs:
|
||||
|
||||
cancel_stuff:
|
||||
if: github.event.pull_request.merged == true
|
||||
runs-on: build-set
|
||||
permissions:
|
||||
actions: write
|
||||
|
||||
steps:
|
||||
- name: Cancel queued workflows for ${{ github.event.pull_request.head.ref }}
|
||||
uses: actions/github-script@v7
|
||||
with:
|
||||
result-encoding: string
|
||||
retries: 3
|
||||
script: |
|
||||
let branch_workflows = await github.rest.actions.listWorkflowRuns({
|
||||
owner: context.repo.owner,
|
||||
repo: context.repo.repo,
|
||||
workflow_id: "build-shit.yml",
|
||||
status: "queued",
|
||||
branch: "${{ github.event.pull_request.head.ref }}"
|
||||
});
|
||||
let runs = branch_workflows.data.workflow_runs;
|
||||
runs.forEach((run) => {
|
||||
github.rest.actions.cancelWorkflowRun({
|
||||
owner: context.repo.owner,
|
||||
repo: context.repo.repo,
|
||||
run_id: run.id
|
||||
});
|
||||
});
|
||||
console.log(runs);
|
||||
@@ -0,0 +1,10 @@
|
||||
jobs:
|
||||
build:
|
||||
runs-on: [ubuntu-latest, macos-latest]
|
||||
steps:
|
||||
- uses: krdlab/setup-haxe@v1
|
||||
with:
|
||||
haxe-version: 4.0.5
|
||||
- run: |
|
||||
haxe -version
|
||||
haxelib install hxnodejs
|
||||
@@ -1,15 +1,3 @@
|
||||
.DS_STORE
|
||||
.haxelib/
|
||||
.vs/
|
||||
APIStuff.hx
|
||||
dump/
|
||||
export/
|
||||
RECOVER_*.fla
|
||||
shitAudio/
|
||||
.build_time
|
||||
.swp
|
||||
|
||||
# Exclude JS stuff
|
||||
node_modules/
|
||||
package.json
|
||||
package-lock.json
|
||||
.vscode/
|
||||
APIStuff.hx
|
||||
@@ -1,6 +0,0 @@
|
||||
[submodule "assets"]
|
||||
path = assets
|
||||
url = https://github.com/FunkinCrew/funkin.assets
|
||||
[submodule "art"]
|
||||
path = art
|
||||
url = https://github.com/FunkinCrew/funkin.art
|
||||
@@ -1,13 +0,0 @@
|
||||
# Ignore artifacts
|
||||
export
|
||||
|
||||
# Ignore all JSONS in the images folder (including FlxAnimate JSONs)
|
||||
assets/preload/images
|
||||
assets/shared/images
|
||||
assets/weekend1/images
|
||||
|
||||
# Don't ignore data files
|
||||
# TODO: These don't work.
|
||||
!assets/preload/data/
|
||||
|
||||
assets/exclude/data/credits.json
|
||||
@@ -1,21 +0,0 @@
|
||||
/**
|
||||
* Configuration for JSON file formatting.
|
||||
*/
|
||||
module.exports = {
|
||||
// Line width before Prettier tries to add new lines.
|
||||
printWidth: 80,
|
||||
|
||||
// Indent with 2 spaces.
|
||||
tabs: false,
|
||||
useTabs: false,
|
||||
tabWidth: 2,
|
||||
|
||||
// Use double quotes.
|
||||
singleQuote: false,
|
||||
quoteProps: "preserve",
|
||||
parser: "json",
|
||||
|
||||
bracketSpacing: true, // Spacing between brackets in object literals.
|
||||
trailingComma: "none", // No trailing commas.
|
||||
semi: false, // No semicolons at ends of statements.
|
||||
};
|
||||
@@ -1,12 +0,0 @@
|
||||
{
|
||||
"recommendations": [
|
||||
"nadako.vshaxe", // Basic Haxe integration
|
||||
"wiggin77.codedox", // Haxe documentation
|
||||
"vshaxe.haxe-checkstyle", // Haxe code style and conventions
|
||||
"vshaxe.hxcpp-debugger", // CPP debugging
|
||||
"openfl.lime-vscode-extension", // Lime integration
|
||||
"esbenp.prettier-vscode", // JSON formatting
|
||||
"redhat.vscode-xml", // XML formatting
|
||||
"ryanluker.vscode-coverage-gutters" // Highlight code coverage
|
||||
]
|
||||
}
|
||||
@@ -1,34 +0,0 @@
|
||||
{
|
||||
"version": "0.2.0",
|
||||
"configurations": [
|
||||
{
|
||||
// Launch in native/CPP on Windows/OSX/Linux
|
||||
"name": "Lime",
|
||||
"type": "lime",
|
||||
"request": "launch"
|
||||
},
|
||||
{
|
||||
// Launch in browser
|
||||
"name": "HTML5 Debug",
|
||||
"type": "chrome",
|
||||
"request": "launch",
|
||||
"url": "http://127.0.0.1:3001",
|
||||
"sourceMaps": true,
|
||||
"webRoot": "${workspaceFolder}",
|
||||
"preLaunchTask": "debug: html"
|
||||
},
|
||||
{
|
||||
// Performs a build for debugging macros
|
||||
// Debugging is attached on the compilation rather than the game itself
|
||||
"name": "Haxe Eval",
|
||||
"type": "haxe-eval",
|
||||
"request": "launch"
|
||||
},
|
||||
{
|
||||
// Attaches the debugger to an already running game
|
||||
"name": "HXCPP - Attach",
|
||||
"type": "hxcpp",
|
||||
"request": "attach"
|
||||
}
|
||||
]
|
||||
}
|
||||
@@ -1,247 +0,0 @@
|
||||
{
|
||||
"[haxe]": {
|
||||
// Automatically keep Haxe files formatted.
|
||||
"editor.formatOnSave": true,
|
||||
"editor.formatOnPaste": true,
|
||||
"editor.codeActionsOnSave": {
|
||||
"source.organizeImports": "never"
|
||||
},
|
||||
"editor.defaultFormatter": "nadako.vshaxe",
|
||||
"editor.tabSize": 2
|
||||
},
|
||||
|
||||
"[json]": {
|
||||
// Automatically keep JSON files formatted.
|
||||
"editor.formatOnSave": true,
|
||||
"editor.formatOnPaste": true,
|
||||
"editor.defaultFormatter": "esbenp.prettier-vscode"
|
||||
},
|
||||
|
||||
"[jsonc]": {
|
||||
// Automatically keep JSONC files formatted.
|
||||
"editor.formatOnSave": true,
|
||||
"editor.formatOnPaste": true,
|
||||
"editor.defaultFormatter": "esbenp.prettier-vscode"
|
||||
},
|
||||
"prettier.tabWidth": 2,
|
||||
|
||||
// XML formatting style configuration
|
||||
"xml.format.enabled": true,
|
||||
"xml.format.legacy": false,
|
||||
"xml.format.emptyElements": "collapse",
|
||||
"xml.preferences.quoteStyle": "double",
|
||||
"xml.format.enforceQuoteStyle": "preferred",
|
||||
"xml.format.preserveAttributeLineBreaks": false,
|
||||
"xml.format.preservedNewlines": 0,
|
||||
"xml.format.splitAttributes": false,
|
||||
"xml.format.joinCDATALines": true,
|
||||
"xml.format.preserveEmptyContent": false,
|
||||
"xml.format.joinCommentLines": false,
|
||||
"xml.format.joinContentLines": false,
|
||||
"xml.format.spaceBeforeEmptyCloseTag": true,
|
||||
"xml.format.xsiSchemaLocationSplit": "onPair",
|
||||
"xml.format.splitAttributesIndentSize": 2,
|
||||
"xml.format.closingBracketNewLine": false,
|
||||
"xml.format.preserveSpace": [
|
||||
"xsl:text",
|
||||
"xsl:comment",
|
||||
"xsl:processing-instruction",
|
||||
"literallayout",
|
||||
"programlisting",
|
||||
"screen",
|
||||
"synopsis",
|
||||
"pre",
|
||||
"xd:pre"
|
||||
],
|
||||
"xml.format.maxLineWidth": 0,
|
||||
"xml.format.grammarAwareFormatting": true,
|
||||
|
||||
// Generic file formatting style configuration
|
||||
"files.insertFinalNewline": true,
|
||||
"files.trimFinalNewlines": false,
|
||||
"files.trimTrailingWhitespace": true,
|
||||
|
||||
// Automatically detect indentation.
|
||||
"editor.detectIndentation": true,
|
||||
"editor.insertSpaces": true,
|
||||
"editor.tabSize": 2,
|
||||
|
||||
// Automatically enforce Linux style line endings.
|
||||
"files.eol": "\n",
|
||||
|
||||
"haxe.displayPort": "auto",
|
||||
"haxe.enableCompilationServer": false,
|
||||
"haxe.enableServerView": true,
|
||||
"haxe.displayServer": {
|
||||
"arguments": ["-v"]
|
||||
},
|
||||
// Fix file associations for HScript.
|
||||
"files.associations": {
|
||||
"*.hxp": "haxe",
|
||||
"*.hscript": "haxe",
|
||||
"*.haxe": "haxe",
|
||||
"*.hxs": "haxe",
|
||||
"*.hxc": "haxe"
|
||||
},
|
||||
"projectManager.git.baseFolders": ["./"],
|
||||
|
||||
"haxecheckstyle.sourceFolders": ["src", "source"],
|
||||
"haxecheckstyle.externalSourceRoots": [],
|
||||
"haxecheckstyle.configurationFile": "checkstyle.json",
|
||||
"haxecheckstyle.codeSimilarityBufferSize": 100,
|
||||
|
||||
"lime.targetConfigurations": [
|
||||
{
|
||||
"label": "Windows / Debug",
|
||||
"target": "windows",
|
||||
"args": ["-debug", "-DFORCE_DEBUG_VERSION"]
|
||||
},
|
||||
{
|
||||
"label": "Linux / Debug",
|
||||
"target": "linux",
|
||||
"args": ["-debug", "-DFORCE_DEBUG_VERSION"]
|
||||
},
|
||||
{
|
||||
"label": "HashLink / Debug",
|
||||
"target": "hl",
|
||||
"args": ["-debug"]
|
||||
},
|
||||
{
|
||||
"label": "Windows / Debug (FlxAnimate Test)",
|
||||
"target": "windows",
|
||||
"args": ["-debug", "-DANIMATE", "-DFORCE_DEBUG_VERSION"]
|
||||
},
|
||||
{
|
||||
"label": "HashLink / Debug (FlxAnimate Test)",
|
||||
"target": "hl",
|
||||
"args": ["-debug", "-DANIMATE"]
|
||||
},
|
||||
{
|
||||
"label": "Windows / Debug (Straight to Freeplay)",
|
||||
"target": "windows",
|
||||
"args": ["-debug", "-DFREEPLAY", "-DFORCE_DEBUG_VERSION"]
|
||||
},
|
||||
{
|
||||
"label": "HashLink / Debug (Straight to Freeplay)",
|
||||
"target": "hl",
|
||||
"args": ["-debug", "-DFREEPLAY"]
|
||||
},
|
||||
{
|
||||
"label": "Windows / Debug (Straight to Play - Bopeebo Normal)",
|
||||
"target": "windows",
|
||||
"args": [
|
||||
"-debug",
|
||||
"-DSONG=bopeebo -DDIFFICULTY=normal",
|
||||
"-DFORCE_DEBUG_VERSION"
|
||||
]
|
||||
},
|
||||
{
|
||||
"label": "Windows / Debug (Straight to Play - 2hot)",
|
||||
"target": "windows",
|
||||
"args": ["-debug", "-DSONG=2hot", "-DFORCE_DEBUG_VERSION"]
|
||||
},
|
||||
{
|
||||
"label": "HashLink / Debug (Straight to Play - Bopeebo Normal)",
|
||||
"target": "hl",
|
||||
"args": ["-debug", "-DSONG=bopeebo -DDIFFICULTY=normal"]
|
||||
},
|
||||
{
|
||||
"label": "Windows / Debug (Conversation Test)",
|
||||
"target": "windows",
|
||||
"args": ["-debug", "-DDIALOGUE", "-DFORCE_DEBUG_VERSION"]
|
||||
},
|
||||
{
|
||||
"label": "HashLink / Debug (Conversation Test)",
|
||||
"target": "hl",
|
||||
"args": ["-debug", "-DDIALOGUE"]
|
||||
},
|
||||
{
|
||||
"label": "Windows / Debug (Straight to Chart Editor)",
|
||||
"target": "windows",
|
||||
"args": ["-debug", "-DCHARTING", "-DFORCE_DEBUG_VERSION"]
|
||||
},
|
||||
{
|
||||
"label": "HashLink / Debug (Straight to Chart Editor)",
|
||||
"target": "hl",
|
||||
"args": ["-debug", "-DCHARTING"]
|
||||
},
|
||||
{
|
||||
"label": "Windows / Debug (Straight to Animation Editor)",
|
||||
"target": "windows",
|
||||
"args": ["-debug", "-DANIMDEBUG", "-DFORCE_DEBUG_VERSION"]
|
||||
},
|
||||
{
|
||||
"label": "Windows / Debug (Debug hxCodec)",
|
||||
"target": "windows",
|
||||
"args": ["-debug", "-DHXC_LIBVLC_LOGGING", "-DFORCE_DEBUG_VERSION"]
|
||||
},
|
||||
{
|
||||
"label": "HashLink / Debug (Straight to Animation Editor)",
|
||||
"target": "hl",
|
||||
"args": ["-debug", "-DANIMDEBUG"]
|
||||
},
|
||||
{
|
||||
"label": "Windows / Debug (Latency Test)",
|
||||
"target": "windows",
|
||||
"args": ["-debug", "-DLATENCY", "-DFORCE_DEBUG_VERSION"]
|
||||
},
|
||||
{
|
||||
"label": "HashLink / Debug (Latency Test)",
|
||||
"target": "hl",
|
||||
"args": ["-debug", "-DLATENCY"]
|
||||
},
|
||||
{
|
||||
"label": "Windows / Debug (Waveform Test)",
|
||||
"target": "windows",
|
||||
"args": ["-debug", "-DWAVEFORM", "-DFORCE_DEBUG_VERSION"]
|
||||
},
|
||||
{
|
||||
"label": "Windows / Release",
|
||||
"target": "windows",
|
||||
"args": ["-release"]
|
||||
},
|
||||
{
|
||||
"label": "Windows / Release (GitHub Actions)",
|
||||
"target": "windows",
|
||||
"args": ["-release", "-DGITHUB_BUILD"]
|
||||
},
|
||||
{
|
||||
"label": "HashLink / Debug (Waveform Test)",
|
||||
"target": "hl",
|
||||
"args": ["-debug", "-DWAVEFORM"]
|
||||
},
|
||||
{
|
||||
"label": "HTML5 / Debug",
|
||||
"target": "html5",
|
||||
"args": ["-debug", "-DFORCE_DEBUG_VERSION"]
|
||||
},
|
||||
{
|
||||
"label": "HTML5 / Debug (Watch)",
|
||||
"target": "html5",
|
||||
"args": ["-debug", "-watch", "-DFORCE_DEBUG_VERSION"]
|
||||
},
|
||||
{
|
||||
"label": "macOS / Debug",
|
||||
"target": "mac",
|
||||
"args": ["-debug", "-DFORCE_DEBUG_VERSION"]
|
||||
},
|
||||
{
|
||||
"label": "macOS / Release",
|
||||
"target": "mac",
|
||||
"args": ["-release"]
|
||||
},
|
||||
{
|
||||
"label": "macOS / Release (GitHub Actions)",
|
||||
"target": "mac",
|
||||
"args": ["-release", "-DGITHUB_BUILD"]
|
||||
}
|
||||
],
|
||||
"cmake.configureOnOpen": false,
|
||||
"coverage-gutters.coverageFileNames": [
|
||||
"lcov.info",
|
||||
"cov.xml",
|
||||
"coverage.xml",
|
||||
"jacoco.xml",
|
||||
"coverage.cobertura.xml"
|
||||
]
|
||||
}
|
||||
@@ -1,13 +0,0 @@
|
||||
{
|
||||
"version": "2.0.0",
|
||||
"tasks": [
|
||||
{
|
||||
"type": "lime",
|
||||
"command": "test",
|
||||
"group": {
|
||||
"kind": "build",
|
||||
"isDefault": true
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
@@ -4,144 +4,6 @@ All notable changes will be documented in this file.
|
||||
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
|
||||
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
|
||||
|
||||
## [0.3.2] - 2024-05-03
|
||||
### Added
|
||||
- Added `,` and `.` keybinds to the Chart Editor. These place Focus Camera events at the playhead, for the opponent and player respectively.
|
||||
- Implemented a blacklist to prevent mods from calling system functions.
|
||||
- Added a couple utility functions to call useful stuff that got blacklisted.
|
||||
- Added an `onSongLoad` script event which allows for mutation of notes and events.
|
||||
- Added the current loaded modlist to crash logs.
|
||||
- Added the `visible` attribute to Level JSON data.
|
||||
- Enabled ZIP file system support for Polymod (make sure the metadata is in the root of the ZIP).
|
||||
### Changed
|
||||
- Songs in the mod folders will display in Freeplay without any extra scripting.
|
||||
- Story levels in the mod folders will display in Story without any extra scripting.
|
||||
- All audio should sound better in HTML5, less muddy
|
||||
### Fixed
|
||||
- Fixed a typo in the credits folder (`Custcene` -> `Cutscene`)
|
||||
- Fixed an issue where health icon transition animations would loop and never finish properly.
|
||||
- Fixed an issue where video cutscenes flagged as mid-song would crash the game when they finish.
|
||||
- Fixed an issue where some substate lifecycle events were not being dispatched.
|
||||
- Fixed a crash when trying to load into the Animation Offsets menu with an invalid character.
|
||||
- Fixed an issue where the preloader would spam the logs when it was complete and waiting for user input.
|
||||
- Should definitely have the fix for freeplay where it stops taking control of the main menu below it
|
||||
- Changed the code for the story menu difficulties so that "normal" doesn't overlap the arrows after leaving Weekend 1
|
||||
### Removed
|
||||
- Removed some unused `.txt` files in the `assets/data` folder.
|
||||
|
||||
## [0.3.1] - 2024-05-01
|
||||
### Changed
|
||||
- Ensure the Git commit hash always displays in the log files.
|
||||
- Added whether the local Git repo was modified to the log files.
|
||||
- Removed "PROTOTYPE" text on release builds only (it still shows on debug builds).
|
||||
- Added additional credits and special thanks.
|
||||
- Updated peepo in creds to peepo173
|
||||
### Fixed
|
||||
- Fix a crash when retrieving system specs while handing a crash.
|
||||
- Fix a crash triggered when pausing before the song started.
|
||||
- Fix a crash triggered when dying before the song started.
|
||||
- Fix a crash triggered when unloading certain graphics.
|
||||
- Pico game over confirm plays correctly
|
||||
- When exiting from a song into freeplay, main menu no longer takes inputs unintentionally (aka issues with merch links opening up when selecting songs)
|
||||
- Fix for arrow keys causing web browser page scroll
|
||||
|
||||
## [0.3.0] - 2024-04-30
|
||||
### Added
|
||||
- New Story Level: Weekend 1, starting Pico, Darnell, and Nene.
|
||||
- Beat the level in Story Mode to unlock the songs for Freeplay!
|
||||
- 12 new Erect remixes, featuring Kawai Sprite, Saruky, Kohta Takahashi, and Saster
|
||||
- Unlocked instantly in Freeplay
|
||||
- New visually enhanced Freeplay menu.
|
||||
- Sorting, favorites, and more.
|
||||
- New Results screen upon completing any song or story level.
|
||||
- New refactored Chart Editor prototype (accessible via `~` in the main menu or `7` in the Play State, rebindable). (VERY EARLY PROTOTYPE. EXPECT BUGS AND CRASHES)
|
||||
- Implemented a new scripting system using HScript (an interpreted language with Haxe-like syntax) for incredible flexibility.
|
||||
- All character-specific, stage-specific, or song-specific behaviors have been moved to HScript.
|
||||
- New song events system allows for simple customization of camera behavior.
|
||||
- Mods can implement custom song events via HScript, and new built-in song events will come in the future.
|
||||
- New credits menu to list all the dozens of people who contributed.
|
||||
### Changed
|
||||
- Completely refactored the game's input system for higher reliability and accuracy.
|
||||
- Reworked note rendering to massively reduce lag on larger charts.
|
||||
- Reworks to scoring and health gain.
|
||||
- Dedicated gamepad support with the ability to rebind buttons.
|
||||
- Improvements to video cutscenes and dialogue, allowing them to be easily skipped or restarted.
|
||||
- Updated Polymod by several major versions, allowing for fully dynamic asset replacement and support for scripted classes.
|
||||
- Completely refactored almost every part of the game's code for performance, stability, and extensibility.
|
||||
- This is not the Ludem Dare game held together with sticks and glue you played three years ago.
|
||||
- Characters, stages, songs, story levels, and dialogue are now built from JSON data registries rather than being hardcoded.
|
||||
- All of these also support attaching scripts for custom behavior, more documentation on this soon.
|
||||
- You can forcibly reload the game's JSON data and scripts by pressing F5.
|
||||
- Fully refactored the game's chart file format for extensibility and readability.
|
||||
- You can migrate old charts using the Import FNF Legacy option in the chart editor.
|
||||
- Various visual tweaks and improvements.
|
||||
### Fixed
|
||||
- 17 quadrillion bugs across hundreds of PRs.
|
||||
|
||||
## [0.2.8] - 2021-04-18 (note, this one is iffy cuz we slacked wit it lol!)
|
||||
### Added
|
||||
- TANKMAN! 3 NEW SONGS BY KAWAISPRITE (UGH, GUNS, STRESS)! Charting help by MtH!
|
||||
- Monster added into week 2, FINALLY (Charting help by MtH and ChaoticGamer!)
|
||||
- Can now change song difficulty mid-game.
|
||||
- Shows some song info on pause screen.
|
||||
- Cute little icons onto freeplay menu
|
||||
- Offset files for easier modification of characters
|
||||
### Changed
|
||||
- ASSET LOADING OVERHAUL, WAY FASTER LOAD TIMES ON WEB!!! (THANKS TO GEOKURELI WOKE KING)
|
||||
- Made difficulty selector on freeplay menu more apparent
|
||||
### Fixed
|
||||
- That one random note on Bopeebo
|
||||
|
||||
## [0.2.7.1] - 2021-02-14
|
||||
### Added
|
||||
- Easter eggs
|
||||
- readme's in desktop versions of the game
|
||||
### Changed
|
||||
- New icons, old one was placeholder since October woops!
|
||||
- Made the transitions between the story mode levels more seamless.
|
||||
- Offset of the Newgrounds logo on boot screen.
|
||||
- Made the changelog txt so it can be opened easier by normal people who don't have a markdown reader (most normal people);
|
||||
### Fixed
|
||||
- Fixed crashes on Week 6 story mode dialogue if spam too fast ([Thanks to Lotusotho for the Pull Request!](https://github.com/ninjamuffin99/Funkin/pull/357))
|
||||
- Should show intro credits on desktop versions of the game more consistently
|
||||
- Layering on Week 4 songs with GF and the LIMO LOL HOW TF I MISS THIS
|
||||
- Chart's and chart editor now support changeBPM, GOD BLESS MTH FOR THIS ONE I BEEN STRUGGLIN WIT THAT SINCE OCTOBER LMAO ([GOD BLESS MTH](https://github.com/ninjamuffin99/Funkin/pull/382))
|
||||
- Fixed sustain note trails ALSO THANKS TO MTH U A REAL ONE ([MTH VERY POWERFUL](https://github.com/ninjamuffin99/Funkin/pull/415))
|
||||
- Antialiasing on the skyscraper lights
|
||||
|
||||
## [0.2.7] - 2021-02-02
|
||||
### Added
|
||||
- PIXEL DAY UPDATE LOL 1 WEEK LATER
|
||||
- 3 New songs by Kawaisprite!
|
||||
- COOL CUTSCENES
|
||||
- WEEK 6 YOYOYOYOY
|
||||
- Swaggy pixel art by Moawling!
|
||||
### Changed
|
||||
- Made it so you lose sliiiightly more health when you miss a note.
|
||||
- Removed the default HaxeFlixel pause screen when the game window loses focus, can get screenshots of the game easier hehehe
|
||||
### Fixed
|
||||
- Idle animation bug with BF christmas and BF hair blow sprites ([Thanks to Injourn for the Pull Request!](https://github.com/ninjamuffin99/Funkin/pull/237))
|
||||
|
||||
## [0.2.6] - 2021-01-20
|
||||
### Added
|
||||
- 3 NEW CHRISTMAS SONGS. 2 BY KAWAISPRITE, 1 BY BASSETFILMS!!!!! BF WITH DRIP! SANTA HANGIN OUT!
|
||||
- Enemy icons change when they you are winning a lot ([Thanks to pahaze for the Pull Request!](https://github.com/ninjamuffin99/Funkin/pull/138))
|
||||
- Holding CTRL in charting editor places notes on both sides
|
||||
- Q and E changes sustain lengths in note editor
|
||||
- Other charting editor workflow improvements
|
||||
- More hair physics
|
||||
- Heads appear at top of chart editor to help show which side ur charting for
|
||||
### Changed
|
||||
- Tweaked code relating to inputs, hopefully making notes that are close together more fair to hit
|
||||
### Removed
|
||||
- Removed APE
|
||||
### Fixed
|
||||
- Maybe fixed double notes / jump notes. Need to tweak it for balance, but should open things up for cooler charts in the future.
|
||||
- Old Verison popup screen weirdness ([Thanks to gedehari for the Pull Request!](https://github.com/ninjamuffin99/Funkin/pull/155))
|
||||
- Song no longer loops when finishing the song. ([Thanks Injourn for the Pull Request!](https://github.com/ninjamuffin99/Funkin/pull/132))
|
||||
- Screen wipe being cut off in the limo/mom stage. Should fill the whole screen now.
|
||||
- Boyfriend animations on hold notes, and pressing on repeating notes should behave differently
|
||||
|
||||
## [0.2.5] - 2020-12-27
|
||||
### Added
|
||||
- MOMMY GF, 3 NEW ASS SONGS BY KAWAISPRITE, NEW ART BY PHANTOMARCADE,WOOOOOOAH!!!!
|
||||
@@ -150,7 +12,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
|
||||
- Clear section button to note editor
|
||||
- Swap button in note editor
|
||||
- a new boot text or two
|
||||
- automatic check for when you're on an old version of the game!
|
||||
- automatic check for when you're on an old version of the game!
|
||||
### Changed
|
||||
- Made Spookeez on Normal easier.
|
||||
- Mouse is now visible in note editor
|
||||
|
||||
@@ -1,32 +0,0 @@
|
||||
# Code Style Guide
|
||||
|
||||
Code style is enforced using Visual Studio Code extensions.
|
||||
|
||||
## .hx
|
||||
Formatting is handled by the `nadako.vshaxe` extension, which includes Haxe Formatter.
|
||||
Haxe Formatter automatically resolves issues such as intentation style and line breaks, and can be configured in `hxformat.json`.
|
||||
|
||||
Code Quality is handled by the `vshaxe.haxe-checkstyle` extension, which includes Haxe Checkstyle.
|
||||
|
||||
### Haxe Checkstyle Notes
|
||||
* Checks can be escalated to display as different serverities in the Problems window.
|
||||
* Checks can be disabled by setting the severity to `IGNORE`.
|
||||
* `IndentationCharacter` checks what is used to indent, `Indentation` checks how deep the intentation is.
|
||||
* `CommentedOutCode` check is in place because old code should be retrieved via Git history.
|
||||
* TODO items: Enable these one-by-one and fix them to improve the overall code quality.
|
||||
- Reconfigure `MethodLength`
|
||||
- Reconfigure `CyclomaticComplexity`
|
||||
- Re-enable `MagicNumber`
|
||||
- Re-configure `NestedControlFlow`
|
||||
- Re-configure `NestedIfDepth`
|
||||
- Figure out something for `Trace`
|
||||
- Fix bug and enable `DocCommentStyle`
|
||||
|
||||
## .json
|
||||
Formatting is handled by the `esbenp.prettier-vscode` extension, which includes Prettier.
|
||||
Prettier automatically handles formatting of JSON files, and can be configured in `.prettierrc.js`.
|
||||
|
||||
### Prettier Notes
|
||||
* Prettier will automatically attempt to place expressions on a single line if they fit, but will keep them multi-line if they are manually made multi-line.
|
||||
* This means that long singleline objects are automatically expanded, and short multiline objects aren't automatically collapsed.
|
||||
* You may want to use regex replacement to manually remove the first newline in short multi-line objects to convince Prettier to collapse them.
|
||||
@@ -1,212 +0,0 @@
|
||||
# Friday Night Funkin'
|
||||
|
||||
The Friday Night Funkin' source code is licensed under the Apache 2.0 license: (https://www.apache.org/licenses/LICENSE-2.0)
|
||||
|
||||
Friday Night Funkin' Copyright 2020-2024 The Funkin' Crew Inc.
|
||||
All Rights Reserved. "Friday Night Funkin'" and the "Friday Night Funkin'" logo are trademarks of The Funkin' Crew Inc.
|
||||
|
||||
You can view the `funkin-assets` license here: (https://github.com/FunkinCrew/funkin-assets/blob/main/LICENSE.md)
|
||||
|
||||
## Apache 2.0 License
|
||||
|
||||
Apache License
|
||||
Version 2.0, January 2004
|
||||
http://www.apache.org/licenses/
|
||||
|
||||
TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
|
||||
|
||||
1. Definitions.
|
||||
|
||||
"License" shall mean the terms and conditions for use, reproduction,
|
||||
and distribution as defined by Sections 1 through 9 of this document.
|
||||
|
||||
"Licensor" shall mean the copyright owner or entity authorized by
|
||||
the copyright owner that is granting the License.
|
||||
|
||||
"Legal Entity" shall mean the union of the acting entity and all
|
||||
other entities that control, are controlled by, or are under common
|
||||
control with that entity. For the purposes of this definition,
|
||||
"control" means (i) the power, direct or indirect, to cause the
|
||||
direction or management of such entity, whether by contract or
|
||||
otherwise, or (ii) ownership of fifty percent (50%) or more of the
|
||||
outstanding shares, or (iii) beneficial ownership of such entity.
|
||||
|
||||
"You" (or "Your") shall mean an individual or Legal Entity
|
||||
exercising permissions granted by this License.
|
||||
|
||||
"Source" form shall mean the preferred form for making modifications,
|
||||
including but not limited to software source code, documentation
|
||||
source, and configuration files.
|
||||
|
||||
"Object" form shall mean any form resulting from mechanical
|
||||
transformation or translation of a Source form, including but
|
||||
not limited to compiled object code, generated documentation,
|
||||
and conversions to other media types.
|
||||
|
||||
"Work" shall mean the work of authorship, whether in Source or
|
||||
Object form, made available under the License, as indicated by a
|
||||
copyright notice that is included in or attached to the work
|
||||
(an example is provided in the Appendix below).
|
||||
|
||||
"Derivative Works" shall mean any work, whether in Source or Object
|
||||
form, that is based on (or derived from) the Work and for which the
|
||||
editorial revisions, annotations, elaborations, or other modifications
|
||||
represent, as a whole, an original work of authorship. For the purposes
|
||||
of this License, Derivative Works shall not include works that remain
|
||||
separable from, or merely link (or bind by name) to the interfaces of,
|
||||
the Work and Derivative Works thereof.
|
||||
|
||||
"Contribution" shall mean any work of authorship, including
|
||||
the original version of the Work and any modifications or additions
|
||||
to that Work or Derivative Works thereof, that is intentionally
|
||||
submitted to Licensor for inclusion in the Work by the copyright owner
|
||||
or by an individual or Legal Entity authorized to submit on behalf of
|
||||
the copyright owner. For the purposes of this definition, "submitted"
|
||||
means any form of electronic, verbal, or written communication sent
|
||||
to the Licensor or its representatives, including but not limited to
|
||||
communication on electronic mailing lists, source code control systems,
|
||||
and issue tracking systems that are managed by, or on behalf of, the
|
||||
Licensor for the purpose of discussing and improving the Work, but
|
||||
excluding communication that is conspicuously marked or otherwise
|
||||
designated in writing by the copyright owner as "Not a Contribution."
|
||||
|
||||
"Contributor" shall mean Licensor and any individual or Legal Entity
|
||||
on behalf of whom a Contribution has been received by Licensor and
|
||||
subsequently incorporated within the Work.
|
||||
|
||||
2. Grant of Copyright License. Subject to the terms and conditions of
|
||||
this License, each Contributor hereby grants to You a perpetual,
|
||||
worldwide, non-exclusive, no-charge, royalty-free, irrevocable
|
||||
copyright license to reproduce, prepare Derivative Works of,
|
||||
publicly display, publicly perform, sublicense, and distribute the
|
||||
Work and such Derivative Works in Source or Object form.
|
||||
|
||||
3. Grant of Patent License. Subject to the terms and conditions of
|
||||
this License, each Contributor hereby grants to You a perpetual,
|
||||
worldwide, non-exclusive, no-charge, royalty-free, irrevocable
|
||||
(except as stated in this section) patent license to make, have made,
|
||||
use, offer to sell, sell, import, and otherwise transfer the Work,
|
||||
where such license applies only to those patent claims licensable
|
||||
by such Contributor that are necessarily infringed by their
|
||||
Contribution(s) alone or by combination of their Contribution(s)
|
||||
with the Work to which such Contribution(s) was submitted. If You
|
||||
institute patent litigation against any entity (including a
|
||||
cross-claim or counterclaim in a lawsuit) alleging that the Work
|
||||
or a Contribution incorporated within the Work constitutes direct
|
||||
or contributory patent infringement, then any patent licenses
|
||||
granted to You under this License for that Work shall terminate
|
||||
as of the date such litigation is filed.
|
||||
|
||||
4. Redistribution. You may reproduce and distribute copies of the
|
||||
Work or Derivative Works thereof in any medium, with or without
|
||||
modifications, and in Source or Object form, provided that You
|
||||
meet the following conditions:
|
||||
|
||||
(a) You must give any other recipients of the Work or
|
||||
Derivative Works a copy of this License; and
|
||||
|
||||
(b) You must cause any modified files to carry prominent notices
|
||||
stating that You changed the files; and
|
||||
|
||||
(c) You must retain, in the Source form of any Derivative Works
|
||||
that You distribute, all copyright, patent, trademark, and
|
||||
attribution notices from the Source form of the Work,
|
||||
excluding those notices that do not pertain to any part of
|
||||
the Derivative Works; and
|
||||
|
||||
(d) If the Work includes a "NOTICE" text file as part of its
|
||||
distribution, then any Derivative Works that You distribute must
|
||||
include a readable copy of the attribution notices contained
|
||||
within such NOTICE file, excluding those notices that do not
|
||||
pertain to any part of the Derivative Works, in at least one
|
||||
of the following places: within a NOTICE text file distributed
|
||||
as part of the Derivative Works; within the Source form or
|
||||
documentation, if provided along with the Derivative Works; or,
|
||||
within a display generated by the Derivative Works, if and
|
||||
wherever such third-party notices normally appear. The contents
|
||||
of the NOTICE file are for informational purposes only and
|
||||
do not modify the License. You may add Your own attribution
|
||||
notices within Derivative Works that You distribute, alongside
|
||||
or as an addendum to the NOTICE text from the Work, provided
|
||||
that such additional attribution notices cannot be construed
|
||||
as modifying the License.
|
||||
|
||||
You may add Your own copyright statement to Your modifications and
|
||||
may provide additional or different license terms and conditions
|
||||
for use, reproduction, or distribution of Your modifications, or
|
||||
for any such Derivative Works as a whole, provided Your use,
|
||||
reproduction, and distribution of the Work otherwise complies with
|
||||
the conditions stated in this License.
|
||||
|
||||
5. Submission of Contributions. Unless You explicitly state otherwise,
|
||||
any Contribution intentionally submitted for inclusion in the Work
|
||||
by You to the Licensor shall be under the terms and conditions of
|
||||
this License, without any additional terms or conditions.
|
||||
Notwithstanding the above, nothing herein shall supersede or modify
|
||||
the terms of any separate license agreement you may have executed
|
||||
with Licensor regarding such Contributions.
|
||||
|
||||
6. Trademarks. This License does not grant permission to use the trade
|
||||
names, trademarks, service marks, or product names of the Licensor,
|
||||
except as required for reasonable and customary use in describing the
|
||||
origin of the Work and reproducing the content of the NOTICE file.
|
||||
|
||||
7. Disclaimer of Warranty. Unless required by applicable law or
|
||||
agreed to in writing, Licensor provides the Work (and each
|
||||
Contributor provides its Contributions) on an "AS IS" BASIS,
|
||||
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
|
||||
implied, including, without limitation, any warranties or conditions
|
||||
of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
|
||||
PARTICULAR PURPOSE. You are solely responsible for determining the
|
||||
appropriateness of using or redistributing the Work and assume any
|
||||
risks associated with Your exercise of permissions under this License.
|
||||
|
||||
8. Limitation of Liability. In no event and under no legal theory,
|
||||
whether in tort (including negligence), contract, or otherwise,
|
||||
unless required by applicable law (such as deliberate and grossly
|
||||
negligent acts) or agreed to in writing, shall any Contributor be
|
||||
liable to You for damages, including any direct, indirect, special,
|
||||
incidental, or consequential damages of any character arising as a
|
||||
result of this License or out of the use or inability to use the
|
||||
Work (including but not limited to damages for loss of goodwill,
|
||||
work stoppage, computer failure or malfunction, or any and all
|
||||
other commercial damages or losses), even if such Contributor
|
||||
has been advised of the possibility of such damages.
|
||||
|
||||
9. Accepting Warranty or Additional Liability. While redistributing
|
||||
the Work or Derivative Works thereof, You may choose to offer,
|
||||
and charge a fee for, acceptance of support, warranty, indemnity,
|
||||
or other liability obligations and/or rights consistent with this
|
||||
License. However, in accepting such obligations, You may act only
|
||||
on Your own behalf and on Your sole responsibility, not on behalf
|
||||
of any other Contributor, and only if You agree to indemnify,
|
||||
defend, and hold each Contributor harmless for any liability
|
||||
incurred by, or claims asserted against, such Contributor by reason
|
||||
of your accepting any such warranty or additional liability.
|
||||
|
||||
END OF TERMS AND CONDITIONS
|
||||
|
||||
APPENDIX: How to apply the Apache License to your work.
|
||||
|
||||
To apply the Apache License to your work, attach the following
|
||||
boilerplate notice, with the fields enclosed by brackets "[]"
|
||||
replaced with your own identifying information. (Don't include
|
||||
the brackets!) The text should be enclosed in the appropriate
|
||||
comment syntax for the file format. We also recommend that a
|
||||
file or class name and description of purpose be included on the
|
||||
same "printed page" as the copyright notice for easier
|
||||
identification within third-party archives.
|
||||
|
||||
Copyright 2020-2024 The Funkin' Crew Inc.
|
||||
|
||||
Licensed under the Apache License, Version 2.0 (the "License");
|
||||
you may not use this file except in compliance with the License.
|
||||
You may obtain a copy of the License at
|
||||
|
||||
http://www.apache.org/licenses/LICENSE-2.0
|
||||
|
||||
Unless required by applicable law or agreed to in writing, software
|
||||
distributed under the License is distributed on an "AS IS" BASIS,
|
||||
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
See the License for the specific language governing permissions and
|
||||
limitations under the License.
|
||||
@@ -1,13 +0,0 @@
|
||||
# RIGHT NOW THE MODS FOLDER DOES NOT WORK ENTIRELY JUST YET!!!
|
||||
## THIS IS WORK IN PROGRESS!!!
|
||||
|
||||
# QUICK AND DIRTY MOD GUIDE
|
||||
|
||||
With the 0.2.6 update, I added a bit of a slightly nicer mod support backend.
|
||||
|
||||
It's POLYMOD, which is made by Lars Doucet: https://github.com/larsiusprime/polymod
|
||||
|
||||
You may have noticed that there's a new folder in the assets. MODS. Within it you will see 2 files. modList.txt, and a folder called introMod.
|
||||
modList.txt will load any folder into the game. Put the folder you want to load into a new line in modList.txt, and reboot the game.
|
||||
|
||||
Now you may be wondering, what do I put in the folder? Well later down it'll get a bit more complicated, especially as I'll make the IN-GAME mod loader nicer.
|
||||
@@ -0,0 +1,57 @@
|
||||
package ;
|
||||
|
||||
import flixel.system.FlxBasePreloader;
|
||||
import openfl.display.Sprite;
|
||||
import flash.display.Bitmap;
|
||||
import flash.display.BitmapData;
|
||||
import flash.display.BlendMode;
|
||||
import flash.display.Sprite;
|
||||
import flash.Lib;
|
||||
import flixel.FlxG;
|
||||
|
||||
@:bitmap("art/preloaderArt.png") class LogoImage extends BitmapData { }
|
||||
|
||||
class Preloader extends FlxBasePreloader
|
||||
{
|
||||
public function new(MinDisplayTime:Float=3, ?AllowedURLs:Array<String>)
|
||||
{
|
||||
super(MinDisplayTime, AllowedURLs);
|
||||
}
|
||||
|
||||
var logo:Sprite;
|
||||
|
||||
override function create():Void
|
||||
{
|
||||
this._width = Lib.current.stage.stageWidth;
|
||||
this._height = Lib.current.stage.stageHeight;
|
||||
|
||||
var ratio:Float = this._width / 2560; //This allows us to scale assets depending on the size of the screen.
|
||||
|
||||
logo = new Sprite();
|
||||
logo.addChild(new Bitmap(new LogoImage(0,0))); //Sets the graphic of the sprite to a Bitmap object, which uses our embedded BitmapData class.
|
||||
logo.scaleX = logo.scaleY = ratio;
|
||||
logo.x = ((this._width) / 2) - ((logo.width) / 2);
|
||||
logo.y = (this._height / 2) - ((logo.height) / 2);
|
||||
addChild(logo); //Adds the graphic to the NMEPreloader's buffer.
|
||||
|
||||
super.create();
|
||||
}
|
||||
|
||||
override function update(Percent:Float):Void
|
||||
{
|
||||
if(Percent < 69)
|
||||
{
|
||||
logo.scaleX += Percent / 1920;
|
||||
logo.scaleY += Percent / 1920;
|
||||
logo.x -= Percent * 0.6;
|
||||
logo.y -= Percent / 2;
|
||||
}else{
|
||||
logo.scaleX = this._width / 1280;
|
||||
logo.scaleY = this._width / 1280;
|
||||
logo.x = ((this._width) / 2) - ((logo.width) / 2);
|
||||
logo.y = (this._height / 2) - ((logo.height) / 2);
|
||||
}
|
||||
|
||||
super.update(Percent);
|
||||
}
|
||||
}
|
||||
@@ -1,265 +1,119 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<project>
|
||||
<!-- _________________________ Application Settings _________________________ -->
|
||||
<app title="Friday Night Funkin'" file="Funkin" packageName="com.funkin.fnf" package="com.funkin.fnf" main="Main" version="0.3.2" company="ninjamuffin99" />
|
||||
|
||||
<app title="Friday Night Funkin" file="Funkin" packageName="com.ninjamuffin99.funkin" main="Main" version="0.2.5" company="ninjamuffin99" />
|
||||
|
||||
<!--Switch Export with Unique ApplicationID and Icon-->
|
||||
<set name="APP_ID" value="0x0100f6c013bbc000" />
|
||||
|
||||
<!--
|
||||
Define the OpenFL sprite which displays the preloader.
|
||||
You can't replace the preloader's logic here, sadly, but you can extend it.
|
||||
Basic preloading logic is done by `openfl.display.Preloader`.
|
||||
-->
|
||||
<app preloader="funkin.ui.transition.preload.FunkinPreloader" />
|
||||
<!--The flixel preloader is not accurate in Chrome. You can use it regularly if you embed the swf into a html file
|
||||
or you can set the actual size of your file manually at "FlxPreloaderBase-onUpdate-bytesTotal"-->
|
||||
<!-- <app preloader="Preloader" resizable="true" /> -->
|
||||
<app preloader="flixel.system.FlxPreloader" />
|
||||
|
||||
<!--Minimum without FLX_NO_GAMEPAD: 11.8, without FLX_NO_NATIVE_CURSOR: 11.2-->
|
||||
<set name="SWF_VERSION" value="11.8" />
|
||||
|
||||
<!-- ____________________________ Window Settings ___________________________ -->
|
||||
|
||||
<!--These window settings apply to all targets-->
|
||||
<window width="1280" height="720" fps="60" background="#000000" hardware="true" vsync="false" />
|
||||
|
||||
<!--HTML5-specific-->
|
||||
<window if="html5" resizable="true" />
|
||||
|
||||
<!--Desktop-specific-->
|
||||
<window if="desktop" orientation="landscape" fullscreen="false" resizable="true" vsync="false" />
|
||||
<window if="desktop" orientation="landscape" fullscreen="false" resizable="true" />
|
||||
|
||||
<!--Mobile-specific-->
|
||||
<window if="mobile" orientation="landscape" fullscreen="true" width="0" height="0" resizable="false" />
|
||||
<window if="mobile" orientation="landscape" fullscreen="true" width="0" height="0" />
|
||||
|
||||
<!--Switch-specific-->
|
||||
<window if="switch" orientation="landscape" fullscreen="true" width="0" height="0" resizable="true" />
|
||||
|
||||
<!-- _____________________________ Path Settings ____________________________ -->
|
||||
|
||||
<set name="BUILD_DIR" value="export/debug" if="debug" />
|
||||
<set name="BUILD_DIR" value="export/release" unless="debug" />
|
||||
<set name="BUILD_DIR" value="export/32bit" if="32bit" />
|
||||
<classpath name="source" />
|
||||
<assets path="assets/preload" rename="assets" exclude="*.ogg|*.wav" if="web" />
|
||||
<assets path="assets/preload" rename="assets" exclude="*.mp3|*.wav" unless="web" />
|
||||
<define name="PRELOAD_ALL" unless="web" />
|
||||
<define name="NO_PRELOAD_ALL" unless="PRELOAD_ALL" />
|
||||
<section if="PRELOAD_ALL">
|
||||
<library name="songs" preload="true" />
|
||||
<library name="shared" preload="true" />
|
||||
<library name="tutorial" preload="true" />
|
||||
<library name="week1" preload="true" />
|
||||
<library name="week2" preload="true" />
|
||||
<library name="week3" preload="true" />
|
||||
<library name="week4" preload="true" />
|
||||
<library name="week5" preload="true" />
|
||||
<library name="week6" preload="true" />
|
||||
<library name="week7" preload="true" />
|
||||
<library name="weekend1" preload="true" />
|
||||
<library name="videos" preload="true" />
|
||||
</section>
|
||||
<section if="NO_PRELOAD_ALL">
|
||||
<library name="songs" preload="false" />
|
||||
<library name="shared" preload="false" />
|
||||
<library name="tutorial" preload="false" />
|
||||
<library name="week1" preload="false" />
|
||||
<library name="week2" preload="false" />
|
||||
<library name="week3" preload="false" />
|
||||
<library name="week4" preload="false" />
|
||||
<library name="week5" preload="false" />
|
||||
<library name="week6" preload="false" />
|
||||
<library name="week7" preload="false" />
|
||||
<library name="weekend1" preload="false" />
|
||||
<library name="videos" preload="false" />
|
||||
</section>
|
||||
<library name="art" preload="false" />
|
||||
<assets path="assets/songs" library="songs" exclude="*.fla|*.ogg|*.wav" if="web" />
|
||||
<assets path="assets/songs" library="songs" exclude="*.fla|*.mp3|*.wav" unless="web" />
|
||||
<!-- Videos go in their own library because web never needs to preload them, they can just be streamed. -->
|
||||
<assets path="assets/videos" library="videos" />
|
||||
<assets path="assets/shared" library="shared" exclude="*.fla|*.ogg|*.wav" if="web" />
|
||||
<assets path="assets/shared" library="shared" exclude="*.fla|*.mp3|*.wav" unless="web" />
|
||||
<assets path="assets/tutorial" library="tutorial" exclude="*.fla|*.ogg|*.wav" if="web" />
|
||||
<assets path="assets/tutorial" library="tutorial" exclude="*.fla|*.mp3|*.wav" unless="web" />
|
||||
<assets path="assets/week1" library="week1" exclude="*.fla|*.ogg|*.wav" if="web" />
|
||||
<assets path="assets/week1" library="week1" exclude="*.fla|*.mp3|*.wav" unless="web" />
|
||||
<assets path="assets/week2" library="week2" exclude="*.fla|*.ogg|*.wav" if="web" />
|
||||
<assets path="assets/week2" library="week2" exclude="*.fla|*.mp3|*.wav" unless="web" />
|
||||
<assets path="assets/week3" library="week3" exclude="*.fla|*.ogg|*.wav" if="web" />
|
||||
<assets path="assets/week3" library="week3" exclude="*.fla|*.mp3|*.wav" unless="web" />
|
||||
<assets path="assets/week4" library="week4" exclude="*.fla|*.ogg|*.wav" if="web" />
|
||||
<assets path="assets/week4" library="week4" exclude="*.fla|*.mp3|*.wav" unless="web" />
|
||||
<assets path="assets/week5" library="week5" exclude="*.fla|*.ogg|*.wav" if="web" />
|
||||
<assets path="assets/week5" library="week5" exclude="*.fla|*.mp3|*.wav" unless="web" />
|
||||
<assets path="assets/week6" library="week6" exclude="*.fla|*.ogg|*.wav" if="web" />
|
||||
<assets path="assets/week6" library="week6" exclude="*.fla|*.mp3|*.wav" unless="web" />
|
||||
<assets path="assets/week7" library="week7" exclude="*.fla|*.ogg|*.wav" if="web" />
|
||||
<assets path="assets/week7" library="week7" exclude="*.fla|*.mp3|*.wav" unless="web" />
|
||||
<assets path="assets/weekend1" library="weekend1" exclude="*.fla|*.ogg|*.wav" if="web" />
|
||||
<assets path="assets/weekend1" library="weekend1" exclude="*.fla|*.mp3|*.wav" unless="web" />
|
||||
<!-- <assets path='example_mods' rename='mods' embed='false'/> -->
|
||||
<!--
|
||||
AUTOMATICALLY MOVING EXAMPLE MODS INTO THE BUILD CAUSES ISSUES
|
||||
Currently, this line will add the mod files to the library manifest,
|
||||
which causes issues if the mod is not enabled.
|
||||
If we can exclude the `mods` folder from the manifest, we can re-enable this line.
|
||||
<assets path='example_mods' rename='mods' embed='false' exclude="*.md" />
|
||||
-->
|
||||
<assets path="art/readme.txt" rename="do NOT readme.txt" library="art"/>
|
||||
<assets path="CHANGELOG.md" rename="changelog.txt" library="art"/>
|
||||
<!-- NOTE FOR FUTURE SELF SINCE FONTS ARE ALWAYS FUCKY
|
||||
TO FIX ONE OF THEM, I CONVERTED IT TO OTF. DUNNO IF YOU NEED TO
|
||||
THEN UHHH I USED THE NAME OF THE FONT WITH SETFORMAT() ON THE TEXT!!!
|
||||
NOT USING A DIRECT THING TO THE ASSET!!!
|
||||
-->
|
||||
<assets path="assets/fonts" embed="true" />
|
||||
|
||||
<!-- If compiled via github actions, show debug version number. -->
|
||||
<define name="FORCE_DEBUG_VERSION" if="GITHUB_BUILD" />
|
||||
<define name="NO_REDIRECT_ASSETS_FOLDER" if="GITHUB_BUILD" />
|
||||
<define name="TOUCH_HERE_TO_PLAY" if="web" />
|
||||
<classpath name="source" />
|
||||
|
||||
<assets path="assets/images" />
|
||||
<assets path="assets/data" />
|
||||
|
||||
<!-- <library name="noPreload" preload='false'/> -->
|
||||
<!-- <library name="noPreload"/> -->
|
||||
<assets path="assets/music" include="*.mp3" if="web"/>
|
||||
<assets path="assets/music" include="*.ogg" unless="web"/>
|
||||
<assets path="assets/sounds" include="*.mp3" if="web" />
|
||||
<assets path="assets/sounds" include="*.ogg" unless="web" />
|
||||
|
||||
<assets path="CHANGELOG.md"/>
|
||||
|
||||
|
||||
<assets path="assets/fonts/vcr.ttf" embed="true" />
|
||||
|
||||
<!-- _______________________________ Libraries ______________________________ -->
|
||||
<haxelib name="lime" /> <!-- Game engine backend -->
|
||||
<haxelib name="openfl" /> <!-- Game engine backend -->
|
||||
<haxelib name="flixel" /> <!-- Game engine -->
|
||||
|
||||
<haxedev set="webgl" />
|
||||
<haxelib name="flixel" />
|
||||
<haxedev set='webgl' />
|
||||
|
||||
<haxelib name="flixel-addons" /> <!-- Additional utilities for Flixel -->
|
||||
<haxelib name="hscript" /> <!-- Scripting -->
|
||||
<haxelib name="flixel-ui" /> <!-- UI framework (DEPRECATED) -->
|
||||
<haxelib name="haxeui-core" /> <!-- UI framework -->
|
||||
<haxelib name="haxeui-flixel" /> <!-- Integrate HaxeUI with Flixel -->
|
||||
<haxelib name="flixel-text-input" /> <!-- Improved text field rendering for HaxeUI -->
|
||||
<haxelib name="polymod" /> <!-- Modding framework -->
|
||||
<haxelib name="flxanimate" /> <!-- Texture atlas rendering -->
|
||||
<haxelib name="hxCodec" if="desktop" unless="hl" /> <!-- Video playback -->
|
||||
<haxelib name="funkin.vis"/>
|
||||
<!--In case you want to use the addons package-->
|
||||
<haxelib name="flixel-addons" />
|
||||
<haxelib name="hscript" />
|
||||
|
||||
<!--In case you want to use the ui package-->
|
||||
<haxelib name="flixel-ui" />
|
||||
<haxelib name="newgrounds"/>
|
||||
<haxelib name="faxe" if='switch'/>
|
||||
|
||||
<haxelib name="json2object" /> <!-- JSON parsing -->
|
||||
<haxelib name="thx.semver" /> <!-- Version string handling -->
|
||||
<!-- <haxelib name="markdown" /> -->
|
||||
<!-- <haxelib name="HtmlParser" /> -->
|
||||
|
||||
<haxelib name="hxcpp-debug-server" if="desktop debug" /> <!-- VSCode debug support -->
|
||||
<!--In case you want to use nape with flixel-->
|
||||
<!--<haxelib name="nape-haxe4" />-->
|
||||
|
||||
<!-- ______________________________ Haxedefines _____________________________ -->
|
||||
|
||||
<!--Enable the Flixel core recording system-->
|
||||
<!--<haxedef name="FLX_RECORD" />-->
|
||||
|
||||
<!--Disable the right and middle mouse buttons-->
|
||||
<!-- <haxedef name="FLX_NO_MOUSE_ADVANCED" /> -->
|
||||
|
||||
<!--Disable the native cursor API on Flash-->
|
||||
<!--<haxedef name="FLX_NO_NATIVE_CURSOR" />-->
|
||||
|
||||
<!--Optimise inputs, be careful you will get null errors if you don't use conditionals in your game-->
|
||||
<haxedef name="FLX_NO_MOUSE" if="mobile" />
|
||||
<haxedef name="FLX_NO_KEYBOARD" if="mobile" />
|
||||
<haxedef name="FLX_NO_TOUCH" if="desktop" />
|
||||
<!--<haxedef name="FLX_NO_GAMEPAD" />-->
|
||||
|
||||
<!--Disable the Flixel core sound tray-->
|
||||
<!--<haxedef name="FLX_NO_SOUND_TRAY" />-->
|
||||
|
||||
<!--Disable the Flixel sound management code-->
|
||||
<!--<haxedef name="FLX_NO_SOUND_SYSTEM" />-->
|
||||
|
||||
<!--Disable the Flixel core focus lost screen-->
|
||||
<haxedef name="FLX_NO_FOCUS_LOST_SCREEN" />
|
||||
<!--<haxedef name="FLX_NO_FOCUS_LOST_SCREEN" />-->
|
||||
|
||||
<!--Disable the Flixel core debugger. Automatically gets set whenever you compile in release mode!-->
|
||||
<haxedef name="FLX_NO_DEBUG" unless="debug || FORCE_DEBUG_VERSION" />
|
||||
<haxedef name="FLX_NO_DEBUG" unless="debug" />
|
||||
|
||||
<!--Enable this for Nape release builds for a serious peformance improvement-->
|
||||
<haxedef name="NAPE_RELEASE_BUILD" unless="debug" />
|
||||
|
||||
<!--
|
||||
Hide deprecation warnings until they're fixed.
|
||||
TODO: REMOVE THIS!!!!
|
||||
<haxeflag name="-w" value="-WDeprecated" />
|
||||
-->
|
||||
|
||||
<!-- Haxe 4.3.0+: Enable pretty syntax errors and stuff. -->
|
||||
<haxedef name="message.reporting" value="pretty" />
|
||||
|
||||
<!-- _________________________________ Custom _______________________________ -->
|
||||
<!-- Disable trace() calls in release builds to bump up performance.
|
||||
<haxeflag name="- -no-traces" unless="debug" />-->
|
||||
<!-- HScript relies heavily on Reflection, which means we can't use DCE. -->
|
||||
<haxeflag name="-dce no" />
|
||||
<!-- Ensure all Funkin' classes are available at runtime. -->
|
||||
<haxeflag name="--macro" value="include('funkin')" />
|
||||
<!-- Ensure all UI components are available at runtime. -->
|
||||
<haxeflag name="--macro" value="include('haxe.ui.backend.flixel.components')" />
|
||||
<haxeflag name="--macro" value="include('haxe.ui.containers.dialogs')" />
|
||||
<haxeflag name="--macro" value="include('haxe.ui.containers.menus')" />
|
||||
<haxeflag name="--macro" value="include('haxe.ui.containers.properties')" />
|
||||
<haxeflag name="--macro" value="include('haxe.ui.core')" />
|
||||
<haxeflag name="--macro" value="include('haxe.ui.components')" />
|
||||
<haxeflag name="--macro" value="include('haxe.ui.containers')" />
|
||||
<!--
|
||||
Ensure additional class packages are available at runtime (some only really used by scripts).
|
||||
Ignore packages we can't include.
|
||||
-->
|
||||
<haxeflag name="--macro" value="include('flixel', true, [ 'flixel.addons.editors.spine.*', 'flixel.addons.nape.*', 'flixel.system.macros.*' ])" />
|
||||
<!-- Necessary to provide stack traces for HScript. -->
|
||||
<haxedef name="hscriptPos" />
|
||||
<haxedef name="safeMode"/>
|
||||
<haxedef name="HXCPP_CHECK_POINTER" />
|
||||
<haxedef name="HXCPP_STACK_LINE" />
|
||||
<haxedef name="HXCPP_STACK_TRACE" />
|
||||
<!-- This macro allows addition of new functionality to existing Flixel. -->
|
||||
<haxeflag name="--macro" value="addMetadata('@:build(funkin.util.macro.FlxMacro.buildFlxBasic())', 'flixel.FlxBasic')" />
|
||||
|
||||
<!--Place custom nodes like icons here (higher priority to override the HaxeFlixel icon)-->
|
||||
<icon path="art/icon16.png" size="16" />
|
||||
<icon path="art/icon32.png" size="32" />
|
||||
<icon path="art/icon64.png" size="64" />
|
||||
<icon path="art/iconOG.png" />
|
||||
<haxedef name="CAN_OPEN_LINKS" unless="switch" />
|
||||
<haxedef name="CAN_CHEAT" if="switch debug" />
|
||||
<!-- I don't remember what this is for. -->
|
||||
<haxedef name="haxeui_no_mouse_reset" />
|
||||
<!-- Clicking outside a dialog should deselect the current focused component. -->
|
||||
<haxedef name="haxeui_focus_out_on_click" />
|
||||
<!-- Required to use haxe.ui.backend.flixel.UIState with build macros. -->
|
||||
<haxedef name="haxeui_dont_impose_base_class" />
|
||||
<haxedef name="HARDCODED_CREDITS" />
|
||||
|
||||
<!-- Skip the Intro -->
|
||||
<section if="debug">
|
||||
<!-- Starts the game at the specified week, at the first song -->
|
||||
<!-- <haxedef name="week" value="1" if="debug"/> -->
|
||||
<!-- Starts the game at the specified song -->
|
||||
<!-- <haxedef name="song" value="bopeebo" if="debug"/> -->
|
||||
<!-- Difficulty, only used for week or song, defaults to 1 -->
|
||||
<!-- <haxedef name="dif" value="2" if="debug"/> -->
|
||||
</section>
|
||||
<section if="newgrounds">
|
||||
<!-- Enables Ng.core.verbose -->
|
||||
<!-- <haxedef name="NG_VERBOSE" /> -->
|
||||
<!-- Enables a NG debug session, so medals don't permently unlock -->
|
||||
<!-- <haxedef name="NG_DEBUG" /> -->
|
||||
<!-- pretends that the saved session Id was expired, forcing the reconnect prompt -->
|
||||
<!-- <haxedef name="NG_FORCE_EXPIRED_SESSION" if="debug" /> -->
|
||||
</section>
|
||||
|
||||
<!-- Uncomment this to wipe your input settings. -->
|
||||
<!-- <haxedef name="CLEAR_INPUT_SAVE"/> -->
|
||||
|
||||
<section if="debug" unless="NO_REDIRECT_ASSETS_FOLDER || html5 || GITHUB_BUILD">
|
||||
<!--
|
||||
Use the parent assets folder rather than the exported one
|
||||
No more will we accidentally undo our changes!
|
||||
-->
|
||||
<haxedef name="REDIRECT_ASSETS_FOLDER" />
|
||||
</section>
|
||||
<icon path="art/icon.png" />
|
||||
|
||||
|
||||
<section>
|
||||
<!--
|
||||
This flag enables the popup/crashlog error handler.
|
||||
However, it also messes with breakpoints on some platforms.
|
||||
-->
|
||||
<haxedef name="openfl-enable-handle-error" />
|
||||
</section>
|
||||
|
||||
<!-- Run a script before and after building. -->
|
||||
<prebuild haxe="source/Prebuild.hx"/> -->
|
||||
<postbuild haxe="source/Postbuild.hx"/> -->
|
||||
|
||||
<!-- Enable this on platforms which do not support dropping files onto the window. -->
|
||||
<haxedef name="FILE_DROP_UNSUPPORTED" if="mac" />
|
||||
<section unless="FILE_DROP_UNSUPPORTED">
|
||||
<haxedef name="FILE_DROP_SUPPORTED" />
|
||||
</section>
|
||||
|
||||
<!-- Enable this on platforms which do not support the edsior views. -->
|
||||
<haxedef name="CHART_EDITOR_UNSUPPORTED" if="web" />
|
||||
<haxedef name="CHART_EDITOR_SUPPORTED" unless="web"/>
|
||||
|
||||
<!-- Options for Polymod -->
|
||||
<section if="polymod">
|
||||
<!-- Turns on additional debug logging. -->
|
||||
<haxedef name="POLYMOD_DEBUG" value="true" if="debug" />
|
||||
<!-- The file extension to use for script files. -->
|
||||
<haxedef name="POLYMOD_SCRIPT_EXT" value=".hscript" />
|
||||
<!-- Which asset library to use for scripts. -->
|
||||
<haxedef name="POLYMOD_SCRIPT_LIBRARY" value="scripts" />
|
||||
<!-- The base path from which scripts should be accessed. -->
|
||||
<haxedef name="POLYMOD_ROOT_PATH" value="scripts/" />
|
||||
<!-- Determines the subdirectory of the mod folder used for file appending. -->
|
||||
<haxedef name="POLYMOD_APPEND_FOLDER" value="_append" />
|
||||
<!-- Determines the subdirectory of the mod folder used for file merges. -->
|
||||
<haxedef name="POLYMOD_MERGE_FOLDER" value="_merge" />
|
||||
<!-- Determines the file in the mod folder used for metadata. -->
|
||||
<haxedef name="POLYMOD_MOD_METADATA_FILE" value="_polymod_meta.json" />
|
||||
<!-- Determines the file in the mod folder used for the icon. -->
|
||||
<haxedef name="POLYMOD_MOD_ICON_FILE" value="_polymod_icon.png" />
|
||||
</section>
|
||||
<!-- <haxedef name="SKIP_TO_PLAYSTATE" if="debug" /> -->
|
||||
<haxedef name="NG_LOGIN" if="newgrounds" />
|
||||
|
||||
</project>
|
||||
|
||||
@@ -1,44 +1,65 @@
|
||||
# Friday Night Funkin'
|
||||
|
||||
Friday Night Funkin' is a rhythm game. Built using HaxeFlixel for Ludem Dare 47.
|
||||
|
||||
This game was made with love to Newgrounds and it's community. Extra love to Tom Fulp.
|
||||
|
||||
- [Playable web demo on Newgrounds!](https://www.newgrounds.com/portal/view/770371)
|
||||
- [Demo download builds for Windows, Mac, and Linux from Itch.io!](https://ninja-muffin24.itch.io/funkin)
|
||||
|
||||
# Getting Started
|
||||
|
||||
**PLEASE USE THE LINKS ABOVE IF YOU JUST WANT TO PLAY THE GAME**
|
||||
|
||||
To learn how to install the necessary dependencies and compile the game from source, please check out our [building the game](/docs/COMPILING.md) guide.
|
||||
|
||||
# Contributing
|
||||
|
||||
Please check out our [Contributor's guide](./CONTRIBUTORS.md) on how you can actively participate in the development of Friday Night Funkin'.
|
||||
|
||||
# Credits and Special Thanks
|
||||
|
||||
Full credits can be found in-game, or wherever the credits.json file is.
|
||||
|
||||
## Programming
|
||||
- [ninjamuffin99](https://twitter.com/ninja_muffin99) - Lead Programmer
|
||||
- [MasterEric](https://twitter.com/EliteMasterEric) - Programmer
|
||||
- [MtH](https://twitter.com/emmnyaa) - Charting and Additional Programming
|
||||
- [GeoKureli](https://twitter.com/Geokureli/) - Additional Programming
|
||||
- Our contributors on GitHub
|
||||
|
||||
## Art / Animation / UI
|
||||
- [PhantomArcade3K](https://twitter.com/phantomarcade3k) - Artist and Animator
|
||||
- [Evilsk8r](https://twitter.com/evilsk8r) - Art
|
||||
- [Moawling](https://twitter.com/moawko) - Week 6 Pixel Art
|
||||
- [IvanAlmighty](https://twitter.com/IvanA1mighty) - Misc UI Design
|
||||
|
||||
## Music
|
||||
- [Kawaisprite](https://twitter.com/kawaisprite) - Musician
|
||||
- [BassetFilms](https://twitter.com/Bassetfilms) - Music for "Monster", Additional Character Design
|
||||
|
||||
## Special Thanks
|
||||
- [Tom Fulp](https://twitter.com/tomfulp) - For being a great guy and for Newgrounds
|
||||
- [JohnnyUtah](https://twitter.com/JohnnyUtahNG/) - Voice of Tankman
|
||||
- [L0Litsmonica](https://twitter.com/L0Litsmonica) - Voice of Mommy Mearest
|
||||
# Friday Night Funkin
|
||||
|
||||
This is the repository for Friday Night Funkin, a game originally made for Ludum Dare 47 "Stuck In a Loop".
|
||||
|
||||
Play the Ludum Dare prototype here: https://ninja-muffin24.itch.io/friday-night-funkin
|
||||
Play the Newgrounds one here: https://www.newgrounds.com/portal/view/770371
|
||||
Support the project on the itch.io page: https://ninja-muffin24.itch.io/funkin
|
||||
|
||||
## Credits / shoutouts
|
||||
|
||||
- [ninjamuffin99 (me!)](https://twitter.com/ninja_muffin99) - Programmer
|
||||
- [PhantomArcade3K](https://twitter.com/phantomarcade3k) and [Evilsk8r](https://twitter.com/evilsk8r) - Art
|
||||
- [Kawaisprite](https://twitter.com/kawaisprite) - Musician
|
||||
|
||||
This game was made with love to Newgrounds and it's community. Extra love to Tom Fulp.
|
||||
|
||||
## Build instructions
|
||||
|
||||
### Installing shit
|
||||
|
||||
First you need to install Haxe and HaxeFlixel. I'm too lazy to write and keep updated with that setup (which is pretty simple).
|
||||
The link to that is on the [HaxeFlixel website](https://haxeflixel.com/documentation/getting-started/)
|
||||
|
||||
That should give you HaxeFlixel and all of it's setup and shit. If you run into issues, ask them in the #flixel channel in the Haxe discord server: https://discord.gg/5ybrNNWx9S
|
||||
|
||||
Other installations you'd need is the additional libraries, a fully updated list will be in `Project.xml`, but here are the one's I'm using as of writing.
|
||||
|
||||
```
|
||||
hscript
|
||||
flixel-ui
|
||||
newgrounds
|
||||
```
|
||||
|
||||
so for each of those type `haxelib install [library]` so shit like `haxelib install newgrounds`
|
||||
|
||||
### Ignored files
|
||||
|
||||
I gitignore the API keys for the game, so that no one can nab them and post fake highscores on the leaderboards. But because of that the game
|
||||
doesn't compile without it.
|
||||
|
||||
Just make a file in `/source` and call it `APIStuff.hx`, and copy paste this into it
|
||||
|
||||
```haxe
|
||||
package;
|
||||
|
||||
class APIStuff
|
||||
{
|
||||
public static var API:String = "";
|
||||
public static var EncKey:String = "";
|
||||
}
|
||||
|
||||
```
|
||||
|
||||
and you should be good to go there.
|
||||
|
||||
### Compiling game
|
||||
|
||||
Once you have all those installed, it's pretty easy to compile game! One that you can compile right off the bat is for HTML5,
|
||||
you just need to run `lime test html5 -debug` in your command prompt in the project root. (command prompt navigation guide can be found here: [https://ninjamuffin99.newgrounds.com/news/post/1090480](https://ninjamuffin99.newgrounds.com/news/post/1090480))
|
||||
|
||||
To run it for your desktop (Windows, Mac, Linux) it's a bit more complicated. I know for Windows you need to download Visual Studio Community 2017 or 2019 or something, and in the libraries download in that download somethin that says build tools LOL homie im too dumb idk how to do that shit most of the time.
|
||||
|
||||
### Additional guides
|
||||
|
||||
- [Command line basics](https://ninjamuffin99.newgrounds.com/news/post/1090480)
|
||||
|
||||
|
After Width: | Height: | Size: 9.5 KiB |
|
After Width: | Height: | Size: 8.6 KiB |
|
After Width: | Height: | Size: 3.0 MiB |
|
After Width: | Height: | Size: 3.0 MiB |
@@ -0,0 +1,11 @@
|
||||
@echo off
|
||||
color 0a
|
||||
cd ..
|
||||
@echo on
|
||||
echo BUILDING GAME
|
||||
lime build html5 -final
|
||||
echo UPLOADING TO ITCH
|
||||
butler push ./export/release/html5/bin ninja-muffin24/funkin:html5
|
||||
butler status ninja-muffin24/funkin:html5
|
||||
echo ITCH SHIT UPDATED LMAOOOOO
|
||||
pause
|
||||
@@ -0,0 +1,11 @@
|
||||
@echo off
|
||||
color 0a
|
||||
cd ..
|
||||
@echo on
|
||||
echo BUILDING GAME
|
||||
lime build html5 -debug
|
||||
echo UPLOADING TO ITCH
|
||||
butler push ./export/debug/html5/bin ninja-muffin24/funkin:html5
|
||||
butler status ninja-muffin24/funkin:html5
|
||||
echo ITCH SHIT UPDATED LMAOOOOO
|
||||
pause
|
||||
@@ -0,0 +1,15 @@
|
||||
@echo off
|
||||
color 0a
|
||||
cd ..
|
||||
@echo on
|
||||
echo BUILDING GAME
|
||||
lime build windows -final -clean
|
||||
echo UPLOADING 64 BIT VERSION TO ITCH
|
||||
butler push ./export/release/windows/bin ninja-muffin24/funkin:windows-64bit
|
||||
lime build windows -final -32
|
||||
echo UPLOADING 32 BIT VERSION TO ITCH
|
||||
butler push ./export/release/windows/bin ninja-muffin24/funkin:windows-32bit
|
||||
butler status ninja-muffin24/funkin:windows-32bit
|
||||
butler status ninja-muffin24/funkin:windows-64bit
|
||||
echo ITCH SHIT UPDATED LMAOOOOO
|
||||
pause
|
||||
@@ -0,0 +1,11 @@
|
||||
@echo off
|
||||
color 0a
|
||||
cd ..
|
||||
@echo on
|
||||
echo BUILDING GAME
|
||||
lime build windows -debug
|
||||
echo UPLOADING 64 BIT VERSION TO ITCH
|
||||
butler push ./export/debug/windows/bin ninja-muffin24/funkin:windows-secretBeta
|
||||
butler status ninja-muffin24/funkin:windows-secretBeta
|
||||
echo ITCH SHIT UPDATED LMAOOOOO
|
||||
pause
|
||||
@@ -0,0 +1,15 @@
|
||||
@echo off
|
||||
color 0a
|
||||
cd ..
|
||||
@echo on
|
||||
echo BUILDING GAME
|
||||
lime build windows -release
|
||||
echo UPLOADING 64 BIT VERSION TO ITCH
|
||||
butler push ./export/release/windows/bin ninja-muffin24/funkin:windows-64bit
|
||||
lime build windows -release -32
|
||||
echo UPLOADING 32 BIT VERSION TO ITCH
|
||||
butler push ./export/release/windows/bin ninja-muffin24/funkin:windows-32bit
|
||||
butler status ninja-muffin24/funkin:windows-32bit
|
||||
butler status ninja-muffin24/funkin:windows-64bit
|
||||
echo ITCH SHIT UPDATED LMAOOOOO
|
||||
pause
|
||||
@@ -0,0 +1,12 @@
|
||||
@echo off
|
||||
color 0a
|
||||
cd ..
|
||||
@echo on
|
||||
echo BUILDING GAME
|
||||
lime build html5 -final -Dng
|
||||
echo ZIPPING
|
||||
cd export
|
||||
7z a -tzip -r swag release\html5\bin
|
||||
start .
|
||||
start https://www.newgrounds.com/projects/games/1528775
|
||||
pause
|
||||
@@ -0,0 +1,27 @@
|
||||
@echo off
|
||||
cd ..
|
||||
@echo on
|
||||
echo REBUILDING LIME FOR EXPORT (VERBOSE)
|
||||
@echo off
|
||||
color 0b
|
||||
@echo on
|
||||
lime rebuild windows -clean -v
|
||||
@echo off
|
||||
color 0a
|
||||
@echo on
|
||||
lime rebuild switch -clean -v
|
||||
@echo off
|
||||
color 0e
|
||||
@echo on
|
||||
lime rebuild tools -clean -v
|
||||
echo HOPE AND PRAY...
|
||||
@echo off
|
||||
color 0a
|
||||
@echo on
|
||||
echo BUILDING GAME
|
||||
lime build switch -final -clean -v
|
||||
@echo off
|
||||
color 0b
|
||||
@echo on
|
||||
echo NSP FILE CREATED
|
||||
pause
|
||||
|
After Width: | Height: | Size: 38 KiB |
|
After Width: | Height: | Size: 530 KiB |
|
After Width: | Height: | Size: 132 KiB |
@@ -0,0 +1,32 @@
|
||||
shoutouts to tom fulp--lmao
|
||||
Ludum dare--extraordinaire
|
||||
cyberzone--coming soon
|
||||
love to thriftman--swag
|
||||
ultimate rhythm gaming--probably
|
||||
dope ass game--playstation magazine
|
||||
in loving memory of--henryeyes
|
||||
dancin--forever
|
||||
funkin--forever
|
||||
ritz dx--rest in peace lol
|
||||
rate five--pls no blam
|
||||
rhythm gaming--ultimate
|
||||
game of the year--forever
|
||||
you already know--we really out here
|
||||
rise and grind--love to luis
|
||||
like parappa--but cooler
|
||||
album of the year--chuckie finster
|
||||
free gitaroo man--with love to wandaboy
|
||||
better than geometry dash--fight me robtop
|
||||
kiddbrute for president--vote now
|
||||
play dead estate--on newgrounds
|
||||
this is a god damn prototype--we workin on it okay
|
||||
women are real--this is official
|
||||
too over exposed--newgrounds cant handle us
|
||||
Hatsune Miku--biggest inspiration
|
||||
too many people--my head hurts
|
||||
newgrounds--forever
|
||||
refined taste in music--if i say so myself
|
||||
his name isnt keith--dumb eggy lol
|
||||
his name isnt evan--silly tiktok
|
||||
stream chuckie finster--on spotify
|
||||
never forget to--pray to god
|
||||
@@ -0,0 +1,3 @@
|
||||
<vbox style="padding: 5px;">
|
||||
<button text="Click Me!" onclick="this.text='Thanks!'" style="font-size: 24px;" />
|
||||
</vbox>
|
||||