diff --git a/.env.example b/.env.example new file mode 100644 index 0000000..e3389d2 --- /dev/null +++ b/.env.example @@ -0,0 +1 @@ +ROBLOXSECURITY="_|WARNING:-DO-NOT-SHARE-THIS.--Sharing-this-will-allow-someone-to-log-in-as-you-and-to-steal-your-ROBUX-and-items.|youReallyThoughtBuddy" \ No newline at end of file diff --git a/.github/workflows/deploy.yml b/.github/workflows/deploy.yml new file mode 100644 index 0000000..f1232c9 --- /dev/null +++ b/.github/workflows/deploy.yml @@ -0,0 +1,37 @@ +name: Deploy +on: + pull_request: + push: + +jobs: + build: + name: Deploy + runs-on: ubuntu-latest + steps: + - name: Checkout repo + uses: actions/checkout@v3 + + - name: Set Node.js 16.x + uses: actions/setup-node@v3 + with: + node-version: 16.x + + - name: Run install + uses: borales/actions-yarn@v4 + with: + cmd: install # will run `yarn install` command + + - name: Install aftman + uses: ok-nick/setup-aftman@v0.3.0 + + - name: Build + uses: borales/actions-yarn@v4 + with: + cmd: build # will run `yarn build` command + + - name: Deploy project + run: mantle deploy -e default + env: + ROBLOSECURITY: ${{ secrets.ROBLOSECURITY }} + MANTLE_AWS_ACCESS_KEY_ID: ${{ secrets.MANTLE_AWS_ACCESS_KEY_ID }} + MANTLE_AWS_SECRET_ACCESS_KEY: ${{ secrets.MANTLE_AWS_SECRET_ACCESS_KEY }} \ No newline at end of file diff --git a/.gitignore b/.gitignore index 514e65b..f7722cf 100644 --- a/.gitignore +++ b/.gitignore @@ -12,4 +12,10 @@ build.rbxl /__MACOSX # logs -*.log \ No newline at end of file +*.log + +# my secrets 😍😎 +.env + +# we use remote stuff now +.mantle-state.yml \ No newline at end of file diff --git a/aftman.toml b/aftman.toml index bf4433e..4446b13 100644 --- a/aftman.toml +++ b/aftman.toml @@ -4,4 +4,5 @@ # To add a new tool, add an entry to this table. [tools] rojo = "rojo-rbx/rojo@7.3.0" -run-in-roblox = "rojo-rbx/run-in-roblox@0.3.0" \ No newline at end of file +run-in-roblox = "rojo-rbx/run-in-roblox@0.3.0" +mantle = "blake-mealey/mantle@0.11.9" \ No newline at end of file diff --git a/mantle.yml b/mantle.yml new file mode 100644 index 0000000..ead3b5c --- /dev/null +++ b/mantle.yml @@ -0,0 +1,29 @@ +environments: + - label: default + +target: + experience: + icon: marketing/gameIcon.jpg + thumbnails: + - marketing/gameThumbnailDefault.jpg + configuration: + genre: fps + playableDevices: [computer] + privateServers: + price: 50 + enableStudioAccessToApis: true + avatarType: r6 + places: + start: + file: build.rbxl + configuration: + name: Goopler + description: |- + Read my github repo reidlabwastaken/goopler if u can hahaha + maxPlayerCount: 100 + +state: + remote: + region: us-west-2 + bucket: goopler-mantle-states + key: goopler \ No newline at end of file diff --git a/marketing/gameIcon.jpg b/marketing/gameIcon.jpg new file mode 100644 index 0000000..421e826 Binary files /dev/null and b/marketing/gameIcon.jpg differ diff --git a/marketing/gameThumbnailDefault.jpg b/marketing/gameThumbnailDefault.jpg new file mode 100644 index 0000000..df0d667 Binary files /dev/null and b/marketing/gameThumbnailDefault.jpg differ diff --git a/package.json b/package.json index 733491e..ff9bb45 100644 --- a/package.json +++ b/package.json @@ -20,14 +20,15 @@ "watch": "rbxtsc -w --rojo default.project.json --verbose", "lint": "eslint src tests --max-warnings 0", "serve": "rojo serve default.project.json", - "test": "yarn run build && run-in-roblox --place build.rbxl --script out/tests/runners/run.server.lua" + "test": "yarn run build && run-in-roblox --place build.rbxl --script out/tests/runners/run.server.lua", + "deploy": "yarn run build && mantle deploy -e default" }, "devDependencies": { "@rbxts/compiler-types": "^2.1.1-types.0", "@rbxts/types": "^1.0.707", "@typescript-eslint/eslint-plugin": "^6.2.0", "@typescript-eslint/parser": "^6.2.0", - "eslint": "^8.42.0", + "eslint": "^8.46.0", "eslint-plugin-roblox-ts": "^0.0.35", "typescript": "^5.1.3" }, diff --git a/readme.md b/readme.md index f91ab30..a501a21 100644 --- a/readme.md +++ b/readme.md @@ -7,17 +7,29 @@ An in-dev game that I plan to make a shooter game out of. — reidlab +# Setup +### Installing +`yarn install` +### Using +`yarn watch` and `yarn serve`, followed by a connection to Rojo. +### Deployment +When you first setup this repository, you probably want to add your `.ROBLOSECURITY` cookie along with `MANTLE_AWS_ACCESS_KEY_ID` and `MANTLE_AWS_SECRET_ACCESS_KEY` into the `.env` file for automatic deployment with [Mantle](https://mantledeploy.vercel.app/). You should also change the bucket names in [`./github/workflows/deploy.yml`](./github/workflows/deploy.yml). The thing is, your `.ROBLOSECURITY` cookie is locked to your region, so depending on what country you get from github actions, your deployment will fail. I recommend adding a self-hosted runner. + # Hacks * I get a strange error about private identifiers in [`./src/ReplicatedStorage/ecs/state.ts`](./src/ReplicatedStorage/ecs/state.ts) * I decided to omit the "TS" folder from [`./default.project.json:40`](./default.project.json) due to the script override not working in Health.server.ts in StarterCharacterScripts. # Todo ### High priority +* Fix automatic deployment. `.ROBLOSECURITY` is region locked, so we have to change our region somehow. In the morning, I'm gonna follow this guide: https://github.com/reidlabwastaken/goopler/settings/actions/runners/new?arch=arm64&os=linux, and do this shit with my raspberry pi * Add tests * Add guns. Try it in default roblox-ts and slowly reimplement it into our component system #### Medium priority * Crouching * Animations +* Change remote state to a provider where I dont have to worry about money +* Seperate dev&prod environments (maybe later??? the game is very early stage so idk) +* Migrate todo to somewhere else like the issues tab ##### Low priority * Camera bobble * Add the bound tags in [`./src/ReplicatedStorage/ecs/boundTags.ts`](./src/ReplicatedStorage/ecs/boundTags.ts) diff --git a/src/Workspace/NotABasePart.rbxmx b/src/Workspace/NotABasePart.rbxmx new file mode 100644 index 0000000..93a1d9c --- /dev/null +++ b/src/Workspace/NotABasePart.rbxmx @@ -0,0 +1,118 @@ + + true + null + nil + + + false + + -0.5 + 0.5 + 0 + 0 + -0.5 + 0.5 + 0 + 0 + + 19 + 2.00000119 + 22 + 1 + 0 + 0 + 0 + 1 + 0 + 0 + 0 + 1 + + true + true + true + true + Default + 0 + 4288914085 + + false + + false + -0.5 + 0.5 + 0 + 0 + -0.5 + 0.5 + 0 + 0 + false + false + 256 + + NotABasePart + + 0 + 0 + 0 + 1 + 0 + 0 + 0 + 1 + 0 + 0 + 0 + 1 + + 0 + -0.5 + 0.5 + 0 + 0 + 0 + + 0 + 0 + 0 + + -1 + RXhhbXBsZQ== + -0.5 + 0.5 + 0 + 0 + 0 + + 0 + 0 + 0 + + 1 + 1 + + 4 + 4 + 4 + + + + + + + 1 + 1 + 1 + + 5 + Remilia Scarlet deka fumo + 9961773472 + + http://www.roblox.com/asset/?id=9961773438 + 0 + 1 + + + + \ No newline at end of file diff --git a/yarn.lock b/yarn.lock index e087f5d..cb73d01 100644 --- a/yarn.lock +++ b/yarn.lock @@ -14,15 +14,15 @@ dependencies: eslint-visitor-keys "^3.3.0" -"@eslint-community/regexpp@^4.4.0", "@eslint-community/regexpp@^4.5.1": - version "4.6.0" - resolved "https://registry.yarnpkg.com/@eslint-community/regexpp/-/regexpp-4.6.0.tgz#5b63f0df5528a44e28aa8578d393de908cc3d4d0" - integrity sha512-uiPeRISaglZnaZk8vwrjQZ1CxogZeY/4IYft6gBOTqu1WhVXWmCmZMWxUv2Q/pxSvPdp1JPaO62kLOcOkMqWrw== +"@eslint-community/regexpp@^4.5.1", "@eslint-community/regexpp@^4.6.1": + version "4.6.2" + resolved "https://registry.yarnpkg.com/@eslint-community/regexpp/-/regexpp-4.6.2.tgz#1816b5f6948029c5eaacb0703b850ee0cb37d8f8" + integrity sha512-pPTNuaAG3QMH+buKyBIGJs3g/S5y0caxw0ygM3YyE6yJFySwiGGSzA+mM3KJ8QQvzeLh3blwgSonkFjgQdxzMw== -"@eslint/eslintrc@^2.1.0": - version "2.1.0" - resolved "https://registry.yarnpkg.com/@eslint/eslintrc/-/eslintrc-2.1.0.tgz#82256f164cc9e0b59669efc19d57f8092706841d" - integrity sha512-Lj7DECXqIVCqnqjjHMPna4vn6GJcMgul/wuS0je9OZ9gsL0zzDpKPVtcG1HaDVc+9y+qgXneTeUMbCqXJNpH1A== +"@eslint/eslintrc@^2.1.1": + version "2.1.1" + resolved "https://registry.yarnpkg.com/@eslint/eslintrc/-/eslintrc-2.1.1.tgz#18d635e24ad35f7276e8a49d135c7d3ca6a46f93" + integrity sha512-9t7ZA7NGGK8ckelF0PQCfcxIUzs1Md5rrO6U/c+FIQNanea5UZC0wqKXH4vHBccmu4ZJgZ2idtPeW7+Q2npOEA== dependencies: ajv "^6.12.4" debug "^4.3.2" @@ -34,10 +34,10 @@ minimatch "^3.1.2" strip-json-comments "^3.1.1" -"@eslint/js@8.44.0": - version "8.44.0" - resolved "https://registry.yarnpkg.com/@eslint/js/-/js-8.44.0.tgz#961a5903c74139390478bdc808bcde3fc45ab7af" - integrity sha512-Ag+9YM4ocKQx9AarydN0KY2j0ErMHNIocPDrVo8zAE44xLTjEtz81OdR68/cydGtk6m6jDb5Za3r2useMzYmSw== +"@eslint/js@^8.46.0": + version "8.46.0" + resolved "https://registry.yarnpkg.com/@eslint/js/-/js-8.46.0.tgz#3f7802972e8b6fe3f88ed1aabc74ec596c456db6" + integrity sha512-a8TLtmPi8xzPkCbp/OGFUo5yhRkHM2Ko9kOWP4znJr0WAhWyThaw3PnwX4vOTWOAMsV2uRt32PPDcEz63esSaA== "@humanwhocodes/config-array@^0.11.10": version "0.11.10" @@ -310,7 +310,7 @@ acorn@^8.9.0: resolved "https://registry.yarnpkg.com/acorn/-/acorn-8.10.0.tgz#8be5b3907a67221a81ab23c7889c4c5526b62ec5" integrity sha512-F0SAmZ8iUtS//m8DmCTA0jlh6TDKkHQyK6xc6V4KDTyZKA9dnvX9/3sRTVQrWm79glUAZbnmmNcdYwUIHWVybw== -ajv@^6.10.0, ajv@^6.12.4: +ajv@^6.12.4: version "6.12.6" resolved "https://registry.yarnpkg.com/ajv/-/ajv-6.12.6.tgz#baf5a62e802b07d977034586f8c3baf5adf26df4" integrity sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g== @@ -506,40 +506,40 @@ eslint-scope@^5.1.1: esrecurse "^4.3.0" estraverse "^4.1.1" -eslint-scope@^7.2.0: - version "7.2.1" - resolved "https://registry.yarnpkg.com/eslint-scope/-/eslint-scope-7.2.1.tgz#936821d3462675f25a18ac5fd88a67cc15b393bd" - integrity sha512-CvefSOsDdaYYvxChovdrPo/ZGt8d5lrJWleAc1diXRKhHGiTYEI26cvo8Kle/wGnsizoCJjK73FMg1/IkIwiNA== +eslint-scope@^7.2.2: + version "7.2.2" + resolved "https://registry.yarnpkg.com/eslint-scope/-/eslint-scope-7.2.2.tgz#deb4f92563390f32006894af62a22dba1c46423f" + integrity sha512-dOt21O7lTMhDM+X9mB4GX+DZrZtCUJPL/wlcTqxyrx5IvO0IYtILdtrQGQp+8n5S0gwSVmOf9NQrjMOgfQZlIg== dependencies: esrecurse "^4.3.0" estraverse "^5.2.0" -eslint-visitor-keys@^3.3.0, eslint-visitor-keys@^3.4.1: - version "3.4.1" - resolved "https://registry.yarnpkg.com/eslint-visitor-keys/-/eslint-visitor-keys-3.4.1.tgz#c22c48f48942d08ca824cc526211ae400478a994" - integrity sha512-pZnmmLwYzf+kWaM/Qgrvpen51upAktaaiI01nsJD/Yr3lMOdNtq0cxkrrg16w64VtisN6okbs7Q8AfGqj4c9fA== +eslint-visitor-keys@^3.3.0, eslint-visitor-keys@^3.4.1, eslint-visitor-keys@^3.4.2: + version "3.4.2" + resolved "https://registry.yarnpkg.com/eslint-visitor-keys/-/eslint-visitor-keys-3.4.2.tgz#8c2095440eca8c933bedcadf16fefa44dbe9ba5f" + integrity sha512-8drBzUEyZ2llkpCA67iYrgEssKDUu68V8ChqqOfFupIaG/LCVPUT+CoGJpT77zJprs4T/W7p07LP7zAIMuweVw== -eslint@^8.42.0: - version "8.45.0" - resolved "https://registry.yarnpkg.com/eslint/-/eslint-8.45.0.tgz#bab660f90d18e1364352c0a6b7c6db8edb458b78" - integrity sha512-pd8KSxiQpdYRfYa9Wufvdoct3ZPQQuVuU5O6scNgMuOMYuxvH0IGaYK0wUFjo4UYYQQCUndlXiMbnxopwvvTiw== +eslint@^8.46.0: + version "8.46.0" + resolved "https://registry.yarnpkg.com/eslint/-/eslint-8.46.0.tgz#a06a0ff6974e53e643acc42d1dcf2e7f797b3552" + integrity sha512-cIO74PvbW0qU8e0mIvk5IV3ToWdCq5FYG6gWPHHkx6gNdjlbAYvtfHmlCMXxjcoVaIdwy/IAt3+mDkZkfvb2Dg== dependencies: "@eslint-community/eslint-utils" "^4.2.0" - "@eslint-community/regexpp" "^4.4.0" - "@eslint/eslintrc" "^2.1.0" - "@eslint/js" "8.44.0" + "@eslint-community/regexpp" "^4.6.1" + "@eslint/eslintrc" "^2.1.1" + "@eslint/js" "^8.46.0" "@humanwhocodes/config-array" "^0.11.10" "@humanwhocodes/module-importer" "^1.0.1" "@nodelib/fs.walk" "^1.2.8" - ajv "^6.10.0" + ajv "^6.12.4" chalk "^4.0.0" cross-spawn "^7.0.2" debug "^4.3.2" doctrine "^3.0.0" escape-string-regexp "^4.0.0" - eslint-scope "^7.2.0" - eslint-visitor-keys "^3.4.1" - espree "^9.6.0" + eslint-scope "^7.2.2" + eslint-visitor-keys "^3.4.2" + espree "^9.6.1" esquery "^1.4.2" esutils "^2.0.2" fast-deep-equal "^3.1.3" @@ -562,7 +562,7 @@ eslint@^8.42.0: strip-ansi "^6.0.1" text-table "^0.2.0" -espree@^9.6.0: +espree@^9.6.0, espree@^9.6.1: version "9.6.1" resolved "https://registry.yarnpkg.com/espree/-/espree-9.6.1.tgz#a2a17b8e434690a5432f2f8018ce71d331a48c6f" integrity sha512-oruZaFkjorTpF32kDSI5/75ViwGeZginGGy2NoOSg3Q9bnwlnmDm4HLnkl0RE3n+njDXR037aY1+x58Z/zFdwQ==