From d1c7d4d0da853886c74fd3b445211b6fc775d381 Mon Sep 17 00:00:00 2001 From: MasterGordon Date: Fri, 18 Oct 2024 18:12:02 +0200 Subject: [PATCH 1/3] fixed rng --- bun.lockb | Bin 246358 -> 247463 bytes package.json | 8 +++++--- src/components/Board.tsx | 6 ++++-- 3 files changed, 9 insertions(+), 5 deletions(-) diff --git a/bun.lockb b/bun.lockb index 9aa0d04c076d71deda6e602ce78164c9a9694507..80697141d7516de801f85011033d542dc121ee95 100755 GIT binary patch delta 47219 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 DXUog+ delta 46214 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
    Eoz@AUuT()l-r_eC4A`ZFxv5~BY$ zoZ`y2Rc}HUCMQ1{AH$M!QyTT}1=qtgx?r*6Q52i%z*Qj)hnOxbSr_!-Zd;o&q6ea>gTWw&0u z*xY7yEG~d}JjbK6c4=2m(bw9E&vxJ>^Q66ycH-(F3E!Pk6KP(kh=(aH4;5>6q6@c& zs@0u%-thScxsTS{s6TPRAvXspynk%{(Qn`89bTJcgR7zP!z#ngQ1JuuI=zAikMN(Y ze|@p`Np<=;&f{?pL7t1;pzM>Jb3kgIX|TKw9i+iSUrB~AfCd*w^T=UJAM-N z?ecOR_g1xfxFUtucW0*;^KUmPf5n>8OtjdAaq9>N_WhXmEc>TVez?}^Fc2vWENr~7 zWB52ono-p+mJMNLrJe-rQ)lS8#-7A349d6SZ!3e)B-&g^MNGX!7-Nb+#Wg zWo@)M^M1B+C~U?fkwJ^tJf zKXT)bPo#FqAARG{066m4g{8iuhZwY5@{m62Ar|bG zp89>=Q!O&HQJ;l%_qJ$O$@mEv&e+>PuF7fqQ<8E6F8fqsG(No9D(ES8@4*j~MnF~<;zP{WS-sRJHP^2ndv}}9k!BnSlz>UM5-A*_+)~{{yL%%~ zSW~w55?z@0gy!M!@}+n8vwksFk1I&wz^`#?eDL%8L;6@#9`+Kek=N-pJgUIMu4E|H?fUc?d&cb2!UU0naM z!Sz;K-Nz$^$JV^83e`V$zu(oGvM5p{Ag}X!EpNi0^?zK+JP=~_*dHm@vGjBBcnf9R zU6K4_R`4%}tRB~q!l9UBvpsg8ee(&{l!8d{7Q)uXC#{RpeN zfe0j6gwfh8%#tx5VJ6xRR5y))r<1#ut1vsy2G;{Lya^r_A%&a8-amf$v2?YwZq}66 z;t0y~8vq9$j)F^t4;wq@%uuVtc%@V&Ogn z))x+py!>~0-VJ~M^mnVnc%<-FZ_e0v>U}$>gPk>H*&y)^1KR@+26iXJ&GuRAHXmC( z@&<_t`z0TzO2gGnsZ^KApP`}XzaI;*?Qk&xj?%&5V*7sVl_!Ub zLFa%MhKrl9{oY)_brj7W&7X5EIlIeQTP!C0u${L`zYZ5(2XGayBpRH+1r-oX-VP6IBj_?e)UBNgMDcm{5x-Wu6^=w1EIp~z0aq1$E_$t4_TQ$QbDSM9cKwvu9!%qSst z9FvAig#)DwgO3y!Cx#x!@=1;pD}ly_;?v_;Rch-UByCPOhhVhK=%<>}cLTy7KgPQo z%6MYNY3rkKmDJjLN2j1*RWyxiR_?e`2VPzK3|7d0)fUWODkQmkWHVWZU} zXzyc>O{=dza#wPAd->xI{Uqtpf14D_amzZuUnx0L_~>k z_e3>{E{#sCcRYKt5~9$S#F2?&`zchboq7CrVZe9@cg)Q+f19yu8$7uHF$^D0QiGTo z{Do7;i@EKQqCFt`Y?AOgjg~YMlTRazms8X=Jb&o2?89H5!D^=;dfiZZs=9~FE>(X` z=MB5Ly7?%m8QyQ6Dqf$KK9s(nCO-TG2bMR_o2S!+l#31CE=_IhHrJ^2FEjqAqm-pI zwwmagixc2xIB@hImUVF~Gu_QcX^G-6B3;Zx5!gTX<>Cpux?r52%uoxwROZg$$+Bk- z{4r8I?iK5H(Ve@sb)06O!TLza5Kl2Qe-${2;6|!nV2W+?%0A(!Z~o3F*-eOAf7^}s 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 JOpjFi{tIUk2#5dx diff --git a/package.json b/package.json index ec66b90..70e190b 100644 --- a/package.json +++ b/package.json @@ -40,6 +40,7 @@ "pixi.js": "^7.0.0", "pixi.js-legacy": "^7.4.2", "prom-client": "^15.1.3", + "random-seed": "^0.3.0", "react": "^18.3.1", "react-confetti-boom": "^1.0.0", "react-dom": "^18.3.1", @@ -49,11 +50,11 @@ "zod": "^3.23.8" }, "devDependencies": { - "vite-imagetools": "^7.0.4", - "tailwindcss": "^4.0.0-alpha.26", "@eslint/compat": "^1.2.0", "@eslint/js": "^9.12.0", + "@tailwindcss/vite": "next", "@types/bun": "latest", + "@types/random-seed": "^0.3.5", "@types/react": "^18.3.11", "@types/react-dom": "^18.3.1", "@vitejs/plugin-react-swc": "^3.7.1", @@ -62,9 +63,10 @@ "eslint-plugin-react": "^7.37.1", "eslint-plugin-react-hooks": "5.0.0", "globals": "^15.11.0", + "tailwindcss": "^4.0.0-alpha.26", "typescript": "^5.6.3", "typescript-eslint": "^8.8.1", "vite": "^5.4.8", - "@tailwindcss/vite": "next" + "vite-imagetools": "^7.0.4" } } diff --git a/src/components/Board.tsx b/src/components/Board.tsx index cb0137e..e60a2c9 100644 --- a/src/components/Board.tsx +++ b/src/components/Board.tsx @@ -42,7 +42,8 @@ import "@pixi/canvas-sprite-tiling"; import "@pixi/canvas-sprite"; import "@pixi/canvas-text"; import { themes } from "../themes"; -import { hashStr, weightedPickRandom } from "../../shared/utils"; +import { weightedPickRandom } from "../../shared/utils"; +import gen from "random-seed"; interface BoardProps { className?: string; @@ -280,10 +281,11 @@ const Tile = ({ const resolveSprite = useCallback( (lt: LoadedTexture) => { if (Array.isArray(lt)) { + const rng = gen.create(game.uuid + ";" + x + ";" + y); return weightedPickRandom( lt, (i) => i.weight, - (tw) => hashStr(game.uuid + ";" + x + ";" + y) * tw, + (tw) => rng.floatBetween(0, tw), ).sprite; } return lt; From 0dca37f035e74a5055ab735665a0fd4a4c233319 Mon Sep 17 00:00:00 2001 From: MasterGordon Date: Fri, 18 Oct 2024 18:12:18 +0200 Subject: [PATCH 2/3] fixed hash shit --- shared/utils.ts | 15 --------------- 1 file changed, 15 deletions(-) diff --git a/shared/utils.ts b/shared/utils.ts index 9e99651..0df594c 100644 --- a/shared/utils.ts +++ b/shared/utils.ts @@ -3,21 +3,6 @@ export const pickRandom = (arr: T[]) => { return arr[index]; }; -function bashHashStr(str: string) { - let hash = 5381, - i = str.length; - - while (i) { - hash = (hash * 33) ^ str.charCodeAt(--i); - } - - return hash >>> 0; -} - -export const hashStr = (str: string) => { - return Number(`0.${bashHashStr(str)}`); -}; - export const weightedPickRandom = ( arr: T[], getWeight: (item: T) => number = () => 1, From ea3a3dd46f5c939842c1c65d0068d257dc8baa1b Mon Sep 17 00:00:00 2001 From: MasterGordon Date: Fri, 18 Oct 2024 18:17:30 +0200 Subject: [PATCH 3/3] improved rng --- src/themes/Theme.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/themes/Theme.ts b/src/themes/Theme.ts index 3454d68..a35adba 100644 --- a/src/themes/Theme.ts +++ b/src/themes/Theme.ts @@ -51,7 +51,7 @@ export const mainWithSpecials = ( const [main, ...specials] = sprites; return [ { weight: 1, sprite: main }, - ...specials.map((sprite) => ({ weight: 0.3, sprite })), + ...specials.map((sprite) => ({ weight: 0.05, sprite })), ]; };