From 4033b3623d6e01cd97c4477d9fc590fa5128f6f9 Mon Sep 17 00:00:00 2001 From: reidlab Date: Fri, 28 Jul 2023 00:02:39 -0700 Subject: [PATCH 1/8] fix deploy.yml & fix readme --- .github/workflows/deploy.yml | 2 +- readme.md | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/deploy.yml b/.github/workflows/deploy.yml index 4215f99..f1232c9 100644 --- a/.github/workflows/deploy.yml +++ b/.github/workflows/deploy.yml @@ -5,7 +5,7 @@ on: jobs: build: - name: Build + name: Deploy runs-on: ubuntu-latest steps: - name: Checkout repo diff --git a/readme.md b/readme.md index 9122218..20d52fc 100644 --- a/readme.md +++ b/readme.md @@ -8,7 +8,7 @@ An in-dev game that I plan to make a shooter game out of. — reidlab # Setup -When you first setup this repository, you probably want to add your `.ROBLOSECURITY` cookie into the `.env` file for automatic deployment with [Mantle](https://mantledeploy.vercel.app/). You also should change the ID of the game. +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 also should change the ID of the game. # Hacks * I get a strange error about private identifiers in [`./src/ReplicatedStorage/ecs/state.ts`](./src/ReplicatedStorage/ecs/state.ts) From ce1ba7098714f224b18b470613d7501166d8aa93 Mon Sep 17 00:00:00 2001 From: reidlab Date: Fri, 28 Jul 2023 00:05:25 -0700 Subject: [PATCH 2/8] update todo --- readme.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/readme.md b/readme.md index 20d52fc..dc57de0 100644 --- a/readme.md +++ b/readme.md @@ -16,7 +16,7 @@ When you first setup this repository, you probably want to add your `.ROBLOSECUR # Todo ### High priority -* Fix automatic deployment. Its fixed itself, but its broken again. By the time this commit goes through I bet it will work again. Honestly super weird. Just make it consistant +* Fix automatic deployment. `.ROBLOSECURITY` is region locked, so we have to change our region somehow. * Add tests * Add guns. Try it in default roblox-ts and slowly reimplement it into our component system #### Medium priority From cd846dc7f845f271956bf4b471f5030def2d4421 Mon Sep 17 00:00:00 2001 From: reidlab Date: Fri, 28 Jul 2023 00:29:03 -0700 Subject: [PATCH 3/8] update todo --- readme.md | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/readme.md b/readme.md index dc57de0..a501a21 100644 --- a/readme.md +++ b/readme.md @@ -8,7 +8,12 @@ An in-dev game that I plan to make a shooter game out of. — reidlab # Setup -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 also should change the ID of the game. +### 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) @@ -16,7 +21,7 @@ When you first setup this repository, you probably want to add your `.ROBLOSECUR # Todo ### High priority -* Fix automatic deployment. `.ROBLOSECURITY` is region locked, so we have to change our region somehow. +* 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 From 7f365dc45c42afefcee600dedfdb9d7da1a59de1 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Fri, 28 Jul 2023 16:46:13 +0000 Subject: [PATCH 4/8] Bump eslint from 8.45.0 to 8.46.0 Bumps [eslint](https://github.com/eslint/eslint) from 8.45.0 to 8.46.0. - [Release notes](https://github.com/eslint/eslint/releases) - [Changelog](https://github.com/eslint/eslint/blob/main/CHANGELOG.md) - [Commits](https://github.com/eslint/eslint/compare/v8.45.0...v8.46.0) --- updated-dependencies: - dependency-name: eslint dependency-type: direct:development update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] --- package.json | 2 +- yarn.lock | 66 ++++++++++++++++++++++++++-------------------------- 2 files changed, 34 insertions(+), 34 deletions(-) diff --git a/package.json b/package.json index c0b5efd..ff9bb45 100644 --- a/package.json +++ b/package.json @@ -28,7 +28,7 @@ "@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/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== From a7ff3796fed78c6ba1b7550b2e38d74eb415072c Mon Sep 17 00:00:00 2001 From: reidlab <45904911+reidlabwastaken@users.noreply.github.com> Date: Fri, 28 Jul 2023 14:39:09 -0700 Subject: [PATCH 5/8] Revert "Bump eslint from 8.45.0 to 8.46.0" --- .env.example | 1 - .github/workflows/deploy.yml | 37 --------- .gitignore | 8 +- aftman.toml | 3 +- mantle.yml | 29 ------- marketing/gameIcon.jpg | Bin 19603 -> 0 bytes marketing/gameThumbnailDefault.jpg | Bin 57940 -> 0 bytes package.json | 5 +- readme.md | 12 --- src/Workspace/NotABasePart.rbxmx | 118 ----------------------------- yarn.lock | 66 ++++++++-------- 11 files changed, 37 insertions(+), 242 deletions(-) delete mode 100644 .env.example delete mode 100644 .github/workflows/deploy.yml delete mode 100644 mantle.yml delete mode 100644 marketing/gameIcon.jpg delete mode 100644 marketing/gameThumbnailDefault.jpg delete mode 100644 src/Workspace/NotABasePart.rbxmx diff --git a/.env.example b/.env.example deleted file mode 100644 index e3389d2..0000000 --- a/.env.example +++ /dev/null @@ -1 +0,0 @@ -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 deleted file mode 100644 index f1232c9..0000000 --- a/.github/workflows/deploy.yml +++ /dev/null @@ -1,37 +0,0 @@ -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 f7722cf..514e65b 100644 --- a/.gitignore +++ b/.gitignore @@ -12,10 +12,4 @@ build.rbxl /__MACOSX # logs -*.log - -# my secrets 😍😎 -.env - -# we use remote stuff now -.mantle-state.yml \ No newline at end of file +*.log \ No newline at end of file diff --git a/aftman.toml b/aftman.toml index 4446b13..bf4433e 100644 --- a/aftman.toml +++ b/aftman.toml @@ -4,5 +4,4 @@ # 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" -mantle = "blake-mealey/mantle@0.11.9" \ No newline at end of file +run-in-roblox = "rojo-rbx/run-in-roblox@0.3.0" \ No newline at end of file diff --git a/mantle.yml b/mantle.yml deleted file mode 100644 index ead3b5c..0000000 --- a/mantle.yml +++ /dev/null @@ -1,29 +0,0 @@ -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 deleted file mode 100644 index 421e8260c5c6708cf2a56c700fb426aa5189b753..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 19603 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 diff --git a/marketing/gameThumbnailDefault.jpg b/marketing/gameThumbnailDefault.jpg deleted file mode 100644 index df0d6675ab54bb8b14ec110646b73eda29bae212..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 57940 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 - 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 cb73d01..e087f5d 100644 --- a/yarn.lock +++ b/yarn.lock @@ -14,15 +14,15 @@ dependencies: eslint-visitor-keys "^3.3.0" -"@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-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/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== +"@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== 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.46.0": - version "8.46.0" - resolved "https://registry.yarnpkg.com/@eslint/js/-/js-8.46.0.tgz#3f7802972e8b6fe3f88ed1aabc74ec596c456db6" - integrity sha512-a8TLtmPi8xzPkCbp/OGFUo5yhRkHM2Ko9kOWP4znJr0WAhWyThaw3PnwX4vOTWOAMsV2uRt32PPDcEz63esSaA== +"@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== "@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.12.4: +ajv@^6.10.0, 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.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== +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== dependencies: esrecurse "^4.3.0" estraverse "^5.2.0" -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-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@^8.46.0: - version "8.46.0" - resolved "https://registry.yarnpkg.com/eslint/-/eslint-8.46.0.tgz#a06a0ff6974e53e643acc42d1dcf2e7f797b3552" - integrity sha512-cIO74PvbW0qU8e0mIvk5IV3ToWdCq5FYG6gWPHHkx6gNdjlbAYvtfHmlCMXxjcoVaIdwy/IAt3+mDkZkfvb2Dg== +eslint@^8.42.0: + version "8.45.0" + resolved "https://registry.yarnpkg.com/eslint/-/eslint-8.45.0.tgz#bab660f90d18e1364352c0a6b7c6db8edb458b78" + integrity sha512-pd8KSxiQpdYRfYa9Wufvdoct3ZPQQuVuU5O6scNgMuOMYuxvH0IGaYK0wUFjo4UYYQQCUndlXiMbnxopwvvTiw== dependencies: "@eslint-community/eslint-utils" "^4.2.0" - "@eslint-community/regexpp" "^4.6.1" - "@eslint/eslintrc" "^2.1.1" - "@eslint/js" "^8.46.0" + "@eslint-community/regexpp" "^4.4.0" + "@eslint/eslintrc" "^2.1.0" + "@eslint/js" "8.44.0" "@humanwhocodes/config-array" "^0.11.10" "@humanwhocodes/module-importer" "^1.0.1" "@nodelib/fs.walk" "^1.2.8" - ajv "^6.12.4" + ajv "^6.10.0" 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.2" - eslint-visitor-keys "^3.4.2" - espree "^9.6.1" + eslint-scope "^7.2.0" + eslint-visitor-keys "^3.4.1" + espree "^9.6.0" esquery "^1.4.2" esutils "^2.0.2" fast-deep-equal "^3.1.3" @@ -562,7 +562,7 @@ eslint@^8.46.0: strip-ansi "^6.0.1" text-table "^0.2.0" -espree@^9.6.0, espree@^9.6.1: +espree@^9.6.0: version "9.6.1" resolved "https://registry.yarnpkg.com/espree/-/espree-9.6.1.tgz#a2a17b8e434690a5432f2f8018ce71d331a48c6f" integrity sha512-oruZaFkjorTpF32kDSI5/75ViwGeZginGGy2NoOSg3Q9bnwlnmDm4HLnkl0RE3n+njDXR037aY1+x58Z/zFdwQ== From 03d336e177586abf0fe4164e980afbdce64aec81 Mon Sep 17 00:00:00 2001 From: reidlab Date: Fri, 28 Jul 2023 14:44:42 -0700 Subject: [PATCH 6/8] update ci/cd --- .github/workflows/build.yml | 6 ++++++ .github/workflows/lint.yml | 6 ++++++ 2 files changed, 12 insertions(+) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 636edaa..8994951 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -1,7 +1,13 @@ name: Build on: pull_request: + paths: + - "./src" + - "./tests" push: + paths: + - "./src" + - "./tests" jobs: build: diff --git a/.github/workflows/lint.yml b/.github/workflows/lint.yml index 000284a..deb1228 100644 --- a/.github/workflows/lint.yml +++ b/.github/workflows/lint.yml @@ -1,7 +1,13 @@ name: Lint on: pull_request: + paths: + - "./src" + - "./tests" push: + paths: + - "./src" + - "./tests" jobs: build: From eee186175272f124e74a54a20b8b3af55bad2d93 Mon Sep 17 00:00:00 2001 From: reidlab Date: Fri, 28 Jul 2023 14:46:01 -0700 Subject: [PATCH 7/8] Update some grammar --- .gitignore | 8 ++++---- readme.md | 6 +++--- 2 files changed, 7 insertions(+), 7 deletions(-) diff --git a/.gitignore b/.gitignore index 514e65b..08f78e7 100644 --- a/.gitignore +++ b/.gitignore @@ -1,15 +1,15 @@ -# builds +# Builds /out build.rbxl *.tsbuildinfo -# deps +# Deps /node_modules /include -# mac users.. stop making these files or im gonna get mad 😡😡😡 +# Mac junk .DS_Store /__MACOSX -# logs +# Logs *.log \ No newline at end of file diff --git a/readme.md b/readme.md index f91ab30..7907ef1 100644 --- a/readme.md +++ b/readme.md @@ -14,18 +14,18 @@ An in-dev game that I plan to make a shooter game out of. # Todo ### High priority * Add tests -* Add guns. Try it in default roblox-ts and slowly reimplement it into our component system +* Add guns. Try it in default roblox-ts and slowly reimplement it into our component system. #### Medium priority * Crouching * Animations ##### Low priority * Camera bobble * Add the bound tags in [`./src/ReplicatedStorage/ecs/boundTags.ts`](./src/ReplicatedStorage/ecs/boundTags.ts) -* Cooler sprinting!! (Tween fov and speed) +* Cooler sprinting! (Tween fov and speed) * Crouching? # Fixes ### High Priority -* Currently, when resetting, sometimes your health goes back up. This is due to the reconciliation of health. Simply put, your health is not being set to zero inside of our entity component system, due to us not having the reset event currently like that. See it here: [StarterGui.SetCore](https://create.roblox.com/docs/reference/engine/classes/StarterGui#SetCore) It uses BindableEvents and stuff idk +* Currently, when resetting, sometimes your health goes back up. This is due to the reconciliation of health. Simply put, your health is not being set to zero inside of our entity component system, due to us not having the reset event currently like that. See it here: [StarterGui.SetCore](https://create.roblox.com/docs/reference/engine/classes/StarterGui#SetCore) It uses BindableEvents. #### Medium priority ##### Low priority \ No newline at end of file From add6db3bb6dcc65fdef32060191317e7f08c0c33 Mon Sep 17 00:00:00 2001 From: reidlab Date: Thu, 10 Aug 2023 03:43:05 -0700 Subject: [PATCH 8/8] remove github, add logger --- .github/dependabot.yml | 6 --- .github/workflows/build.yml | 42 ----------------- .github/workflows/lint.yml | 33 -------------- package.json | 1 + src/ReplicatedStorage/ecs/index.ts | 4 +- src/ReplicatedStorage/ecs/replication.ts | 32 ++++++------- src/ReplicatedStorage/ecs/state.ts | 45 ++++++++++++++++--- src/ReplicatedStorage/ecs/tags.ts | 8 ++-- .../ecs/systems/server/replication.ts | 5 ++- src/ServerScriptService/main.server.ts | 10 ++++- .../StarterPlayerScripts/main.client.ts | 17 +++++-- yarn.lock | 12 +++++ 12 files changed, 99 insertions(+), 116 deletions(-) delete mode 100644 .github/dependabot.yml delete mode 100644 .github/workflows/build.yml delete mode 100644 .github/workflows/lint.yml diff --git a/.github/dependabot.yml b/.github/dependabot.yml deleted file mode 100644 index 94154ee..0000000 --- a/.github/dependabot.yml +++ /dev/null @@ -1,6 +0,0 @@ -version: 2 -updates: - - package-ecosystem: "npm" # See documentation for possible values - directory: "/" # Location of package manifests - schedule: - interval: "daily" diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml deleted file mode 100644 index 8994951..0000000 --- a/.github/workflows/build.yml +++ /dev/null @@ -1,42 +0,0 @@ -name: Build -on: - pull_request: - paths: - - "./src" - - "./tests" - push: - paths: - - "./src" - - "./tests" - -jobs: - build: - name: Build - 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: Upload Artifact - uses: actions/upload-artifact@v3 - with: - name: goopler - path: build.rbxl \ No newline at end of file diff --git a/.github/workflows/lint.yml b/.github/workflows/lint.yml deleted file mode 100644 index deb1228..0000000 --- a/.github/workflows/lint.yml +++ /dev/null @@ -1,33 +0,0 @@ -name: Lint -on: - pull_request: - paths: - - "./src" - - "./tests" - push: - paths: - - "./src" - - "./tests" - -jobs: - build: - name: ESLint - 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: Lint - uses: borales/actions-yarn@v4 - with: - cmd: lint # will run `yarn lint` command diff --git a/package.json b/package.json index 733491e..34f11bf 100644 --- a/package.json +++ b/package.json @@ -33,6 +33,7 @@ }, "dependencies": { "@rbxts/character-promise": "^1.0.2", + "@rbxts/log": "^0.6.3", "@rbxts/matter": "^0.6.2-ts.6", "@rbxts/plasma": "^0.4.1-ts.1", "@rbxts/rewire": "^0.3.0", diff --git a/src/ReplicatedStorage/ecs/index.ts b/src/ReplicatedStorage/ecs/index.ts index 1854ea9..6c51ee9 100644 --- a/src/ReplicatedStorage/ecs/index.ts +++ b/src/ReplicatedStorage/ecs/index.ts @@ -45,9 +45,9 @@ export function start(host: Host, state: S): [World, S] { }) if (host === Host.All || host === Host.Server) { - const _ServerState = state as serverState + const ServerState = state as serverState - startTags(world, tags) + startTags(world, tags, ServerState) } if (host === Host.All || host === Host.Client) { diff --git a/src/ReplicatedStorage/ecs/replication.ts b/src/ReplicatedStorage/ecs/replication.ts index e299a8d..6b2184b 100644 --- a/src/ReplicatedStorage/ecs/replication.ts +++ b/src/ReplicatedStorage/ecs/replication.ts @@ -6,27 +6,17 @@ import { clientState } from "./state" type ComponentNames = keyof typeof Components type ComponentConstructors = (typeof Components)[ComponentNames] -const DEBUG_SPAWN = "Spawn %ds%d with %s" -const DEBUG_DESPAWN = "Despawn %ds%d" -const DEBUG_MODIFY = "Modify %ds%d adding %s, removing %s" - let connection: RBXScriptConnection | undefined /** * Starts the replication receiver. * * @param world - The world to replicate components in - * @param ClientState - The client state for the ECS + * @param client - The client state for the ECS */ -export function start(world: World, ClientState: clientState): void { +export function start(world: World, client: clientState): void { if (connection) return - function debugPrint(message: string, args: () => (string | number)[]): void { - if (ClientState.debugEnabled) { - print("ECS Replication>", string.format(message, ...args())) - } - } - const replicationEvent = waitForEvent("EcsReplication") const serverToClientEntity = new Map() @@ -38,7 +28,11 @@ export function start(world: World, ClientState: clientState): void { if (clientId !== undefined && next(componentMap)[0] === undefined) { world.despawn(clientId) serverToClientEntity.delete(serverId) - debugPrint(DEBUG_DESPAWN, () => [clientId, serverId]) + client.logger.Debug( + "ECS Replication> Despawn {@clientId}s{@serverId}", + clientId, + serverId + ) continue } @@ -72,7 +66,12 @@ export function start(world: World, ClientState: clientState): void { if (clientId === undefined) { const clientId = world.spawn(...componentsToInsert) serverToClientEntity.set(serverId, clientId) - debugPrint(DEBUG_SPAWN, () => [clientId, serverId, insertNames.join(",")]) + client.logger.Debug( + "ECS Replication> Spawn {@clientId}s{@serverId} with {@insertNames}", + clientId, + serverId, + insertNames.join(",") + ) } else { if (componentsToInsert.size() > 0) { world.insert(clientId, ...componentsToInsert) @@ -82,12 +81,13 @@ export function start(world: World, ClientState: clientState): void { world.remove(clientId, ...componentsToRemove) } - debugPrint(DEBUG_MODIFY, () => [ + client.logger.Debug( + "ECS Replication> Modify {@clientId}s{serverId} adding {@insertNames}, removing {@removeNames}", clientId, serverId, insertNames.size() > 0 ? insertNames.join(", ") : "nothing", removeNames.size() > 0 ? removeNames.join(", ") : "nothing" - ]) + ) } } } diff --git a/src/ReplicatedStorage/ecs/state.ts b/src/ReplicatedStorage/ecs/state.ts index 625362e..7bc0c5f 100644 --- a/src/ReplicatedStorage/ecs/state.ts +++ b/src/ReplicatedStorage/ecs/state.ts @@ -1,23 +1,54 @@ /* eslint-disable roblox-ts/no-private-identifier */ import { CharacterRigR6 } from "@rbxts/character-promise" +import { Logger } from "@rbxts/log" import { InputKind } from "ReplicatedStorage/inputKind" /** * The client ECS state. */ export class clientState { - [index: string]: unknown - character?: CharacterRigR6 - player?: Player - debugEnabled = false - isRunning = false + constructor( + player: Player, + character: CharacterRigR6, + debugEnabled: boolean, + isRunning: boolean, + // lastProcessedCommand: Inputkind, + + logger: Logger + ) { + this.character = character + this.player = player + this.debugEnabled = debugEnabled + this.isRunning = isRunning + // this.lastProcessedCommand = lastProcessedCommand + + this.logger = logger + } + + player: Player + character: CharacterRigR6 + debugEnabled: boolean + isRunning: boolean lastProcessedCommand?: InputKind + + logger: Logger } /** * The server ECS state. */ export class serverState { - [index: string]: unknown -} \ No newline at end of file + constructor( + logger: Logger + ) { + this.logger = logger + } + + logger: Logger +} + +/** + * The shared ECS state. + */ +export type sharedState = serverState & clientState \ No newline at end of file diff --git a/src/ReplicatedStorage/ecs/tags.ts b/src/ReplicatedStorage/ecs/tags.ts index 291b540..c71047c 100644 --- a/src/ReplicatedStorage/ecs/tags.ts +++ b/src/ReplicatedStorage/ecs/tags.ts @@ -2,6 +2,7 @@ import { AnyEntity, Component, World } from "@rbxts/matter" import { CollectionService } from "@rbxts/services" import { getIdAttribute } from "ReplicatedStorage/idAttribute" import { Model, Transform } from "./components" +import { serverState } from "./state" export type ComponentConstructor = () => Component @@ -15,7 +16,8 @@ const connections: RBXScriptConnection[] = [] */ export function start( world: World, - bound: ReadonlyMap> + bound: ReadonlyMap>, + server: serverState ): void { function spawnBound( instance: Instance, @@ -26,13 +28,13 @@ export function start( if (instance.PrimaryPart) { primaryPart = instance.PrimaryPart } else { - warn("Attempted to tag a model that has no primary part:", instance) + server.logger.Warn("Attempted to tag a model that has no primary part: {@instance}", instance) return } } else if (instance.IsA("BasePart")) { primaryPart = instance } else { - warn("Attempted to tag an instance that is not a Model or BasePart:", instance) + server.logger.Warn("Attempted to tag an instance that is not a Model or BasePart: {@instance}", instance) return } diff --git a/src/ServerScriptService/ecs/systems/server/replication.ts b/src/ServerScriptService/ecs/systems/server/replication.ts index 23db406..aaba13e 100644 --- a/src/ServerScriptService/ecs/systems/server/replication.ts +++ b/src/ServerScriptService/ecs/systems/server/replication.ts @@ -1,6 +1,7 @@ import { useEvent, World } from "@rbxts/matter" import { Players } from "@rbxts/services" import * as Components from "ReplicatedStorage/ecs/components" +import { serverState } from "ReplicatedStorage/ecs/state" import { getEvent } from "ReplicatedStorage/remotes" type ComponentName = keyof typeof Components @@ -20,7 +21,7 @@ const replicatedComponents: ReadonlySet = REPLICATED_COMPO getEvent("EcsReplication") -function replication(world: World): void { +function replication(world: World, server: serverState): void { const replicationEvent = getEvent("EcsReplication") let payload: Map> | undefined @@ -43,7 +44,7 @@ function replication(world: World): void { } } - print("Sending initial payload to", player) + server.logger.Debug("Sending initial payload to {@player}", player) replicationEvent.FireClient(player, payload) } diff --git a/src/ServerScriptService/main.server.ts b/src/ServerScriptService/main.server.ts index e1e4051..bd6fcdb 100644 --- a/src/ServerScriptService/main.server.ts +++ b/src/ServerScriptService/main.server.ts @@ -1,3 +1,4 @@ +import Log, { Logger } from "@rbxts/log" import { start } from "ReplicatedStorage/ecs" import { serverState } from "ReplicatedStorage/ecs/state" import { Host } from "ReplicatedStorage/hosts" @@ -6,7 +7,14 @@ import { getEvent } from "ReplicatedStorage/remotes" const HOST = Host.Server -const ServerState = new serverState() +const serverLogger = Logger.configure() + .EnrichWithProperty("Roblox-TS Version", _VERSION) + .WriteTo(Log.RobloxOutput()) + .Create() + +const ServerState = new serverState( + serverLogger +) // We only do this here at the moment to create a dummy event for replication. // In the future this will be created by the replication system. diff --git a/src/StarterPlayer/StarterPlayerScripts/main.client.ts b/src/StarterPlayer/StarterPlayerScripts/main.client.ts index 36dc015..aef73c6 100644 --- a/src/StarterPlayer/StarterPlayerScripts/main.client.ts +++ b/src/StarterPlayer/StarterPlayerScripts/main.client.ts @@ -1,4 +1,5 @@ import { CharacterRigR6 } from "@rbxts/character-promise" +import Log, { Logger } from "@rbxts/log" import { Players } from "@rbxts/services" import { start } from "ReplicatedStorage/ecs" import { clientState } from "ReplicatedStorage/ecs/state" @@ -7,11 +8,19 @@ import { setEnvironment } from "ReplicatedStorage/idAttribute" const HOST = Host.Client -const ClientState = new clientState() +const clientLogger = Logger.configure() + .EnrichWithProperty("Roblox-TS Version", _VERSION) + .WriteTo(Log.RobloxOutput()) + .Create() -const player = Players.LocalPlayer -ClientState.character = (player.Character || player.CharacterAdded.Wait()[0]) as CharacterRigR6 -ClientState.player = player +const ClientState = new clientState( + Players.LocalPlayer, + (Players.LocalPlayer.Character || Players.LocalPlayer.CharacterAdded.Wait()[0]) as CharacterRigR6, + false, + false, + + clientLogger +) setEnvironment(HOST) start(HOST, ClientState) \ No newline at end of file diff --git a/yarn.lock b/yarn.lock index e087f5d..248ac04 100644 --- a/yarn.lock +++ b/yarn.lock @@ -91,11 +91,23 @@ resolved "https://registry.yarnpkg.com/@rbxts/compiler-types/-/compiler-types-2.1.1-types.0.tgz#a1f02b57402dffec474dd6656ec1d8a897b9756b" integrity sha512-wBRma9MgPbOxvCaQEUvraHLHAmLFGW9R6fT65+MBu3uCYM6vUNWj8l4dHRxgkUK8lnGYdGWxsr/sZFk8sdvwog== +"@rbxts/log@^0.6.3": + version "0.6.3" + resolved "https://registry.yarnpkg.com/@rbxts/log/-/log-0.6.3.tgz#65b51a897a2d646457db95b563ade3313e08d0be" + integrity sha512-YZpDvjL7yif9aYuNAkuM9vnegcwQmOwX0CfvGfWvrzCpmARY4Ey2pTMhoEgxKo36HcdPPi3aLxmcuvn0NHrPPg== + dependencies: + "@rbxts/message-templates" "^0.3.1" + "@rbxts/matter@^0.6.2-ts.6": version "0.6.4" resolved "https://registry.yarnpkg.com/@rbxts/matter/-/matter-0.6.4.tgz#49ff6ce56bada1ce7c5e2715a05daaa3fb7615e6" integrity sha512-84naXqNpUfb5aCEcKf99wdqNnNAuwXh4B73GMQBzrUGiF70m0EWTdmm0qHihdlghGPrCRBSFeYK5esMJvKs/SQ== +"@rbxts/message-templates@^0.3.1": + version "0.3.2" + resolved "https://registry.yarnpkg.com/@rbxts/message-templates/-/message-templates-0.3.2.tgz#85169980cf73f659282aa9846290ceaf06967167" + integrity sha512-79onYskH3pgrBT73Zs+biQ31vAVvupKQaxGNWGjyGsxwNhO2YaN/qkut0bvOshaGa+ZzqAXApRVrN8ifIMPiMQ== + "@rbxts/plasma@^0.4.1-ts.1": version "0.4.1-ts.1" resolved "https://registry.yarnpkg.com/@rbxts/plasma/-/plasma-0.4.1-ts.1.tgz#3d8db367c3220e6b6953cdddbf8af9f087165392"