Underground 2 Revived
Play Need for Speed: Underground 2 (2004) in Chrome and Firefox with WebGPU graphics, Web Audio, up to 120 fps widescreen, controller support, free roam and Online races with friends. Fan project, not
아직 감지된 업데이트가 없습니다. GitHub 릴리스가 나오면 여기에 보입니다.
개인 계정의 공개 저장소 소유자는 GitHub로 로그인해 운영자를 확인하고 소개를 직접 관리할 수 있습니다. 관리자 승인은 필요하지 않습니다.
로그인한 뒤 확인 파일을 만들어 이 저장소의 기본 브랜치에 30분 안에 커밋해 주세요. 다른 브랜치나 포크의 파일은 인정하지 않습니다. 파일을 올린 뒤 아래에서 확인하면 관리자 승인 없이 관리할 수 있습니다. 자격을 유지하려면 파일을 남겨 두세요.
로그인이 필요하면 로그인 화면으로 이동합니다. 로그인 후 이곳으로 돌아와 원하는 확인 버튼을 다시 눌러 주세요.
프로젝트 폴더에서 /nomorevibe verify를 실행하면 소유권을 확인하고 소개를 직접 관리할 수 있습니다.
1분 만에 확인하기README 전체를 불러오는 중입니다. 아래는 저장된 발췌입니다.
A Hebrew word-guessing mobile game, Mastermind-style: guess the target word letter by letter and get בול (bullseye — right letter, right position) / פגיעה (hit — right letter, wrong position) feedback after each guess. Each level increases the target word length, starting at 2 letters. Built with Expo (React Native + TypeScript) — a single codebase for iOS, Android, and web, fast local iteration via Expo Go, and a straightforward Jest setup for testing pure game logic without a device or simulator.README 전문 보기 ↗
A Hebrew word-guessing mobile game, Mastermind-style: guess the target word letter by letter and get בול (bullseye — right letter, right position) / פגיעה (hit — right letter, wrong position) feedback after each guess. Each level increases the target word length, starting at 2 letters.
Built with Expo (React Native + TypeScript) — a single codebase for iOS, Android, and web, fast local iteration via Expo Go, and a straightforward Jest setup for testing pure game logic without a device or simulator.
src/logic/game.ts — scoring (bulls/hits) and win-check logic, fully
unit tested. Final-form ("sofit") letters (ך ם ן ף ץ) are normalized
to their regular form before comparing, so either form counts as a
match.src/logic/hebrew.ts — the sofit-letter normalization helper.src/data/wordBank.ts — generated Hebrew word bank (~23k words),
grouped by word length, covering lengths 2-10.src/data/words.ts — word-length helpers (getWordsForLevel,
getStageTarget, getStageCount) plus isValidWord, which checks a
guess against the dictionary (sofit-normalized) so only real words are
accepted.src/state/progress.ts — persists the player's selected word length and
completed-stage counts locally via
@react-native-async-storage/async-storage.src/screens/GameTypesScreen.tsx — lets the player pick how many
letters to play with.src/screens/StagesScreen.tsx — shows stage-by-stage progress for the
chosen word length.src/screens/GameScreen.tsx — the main game screen: guess input
(rejecting non-dictionary words with an inline error), guess history
with bull/hit feedback, and stage completion.src/components/GuessRow.tsx — renders one past guess as a letter
grid plus its score.npm install
npm start # opens Expo dev tools; press w/a/i for web/Android/iOS
npm test
The in-app report forms — "דיווח על באג" in Settings and "דיווח על מילה שגויה" in the game — submit to Web3Forms, which forwards them to your inbox.
The Access Key ships as the default in app.json (expo.extra.web3formsAccessKey).
It's meant to be public — Web3Forms is designed for the key to live in client-side
code, and protects against abuse with its own rate limiting plus the honeypot field
already sent by src/utils/web3forms.ts. This works out of the box in Expo Go, EAS
builds, and the Vercel web export with no extra setup.
To use a different key (e.g. after rotating it), get a free Access Key at https://web3forms.com and override the default without touching code:
.env.example to .env and set WEB3FORMS_ACCESS_KEY, then
restart the dev server.eas env:set --name WEB3FORMS_ACCESS_KEY --value <key> --environment productionWEB3FORMS_ACCESS_KEY under Project Settings →
Environment Variables.app.config.js checks the env var first and falls back to the app.json default.
This is an MVP covering level 1 (2-letter words) end-to-end, with the scoring engine and level progression generalized to any word length. The word bank now covers real Hebrew dictionary words for lengths 2-10, and guesses are validated against it. Remaining work: polish the win/level-transition UI.
app.json is "בול-מילה"; the slug
(bullseye-words) stays as-is since it's just the internal Expo
project identifier, not user-facing.https://github.com/yovelamirtech/bullseye-words/blob/main/PRIVACY.md
— when filling out App Store Connect / Play Console privacy fields).
It documents the real AdMob banner ad unit already wired in
app.json / src/ads/adUnitIds.ts.app.json has real ios.bundleIdentifier / android.package
(com.yovelsys.bullseyewords), starting build numbers, and an
ios.infoPlist.NSUserTrackingUsageDescription string (required by
Apple because the app links Google Mobile Ads / accesses IDFA).src/ads/adsInit.ts runs once on launch: it gathers GDPR consent via
AdMob's AdsConsent API (required by Google for EEA/UK/Switzerland
users regardless of where the publisher is based) and, on iOS, asks
for App Tracking Transparency permission before the SDK initializes.
Run npx expo install expo-tracking-transparency once to make sure
the version pinned in package.json matches your installed Expo SDK
exactly, then run a real build (not Expo Go) to see the consent/ATT
prompts — they don't appear in Expo Go.eas.json defines development, preview, and production build
profiles plus a submit.production target. Before the first build,
run eas init (requires an Expo account) to link the project and
populate extra.eas.projectId in app.json, and set the owner
field if building under an Expo organization account.