BeamNG.Earth
BeamNG.drive용 1:1 비율 실시간 지구, 실제 고도·위성 이미지·부동 원점·보조 서버에서 LOD 스트리밍
Leaves of Blocks 광고·데이터 수집 없는 iOS 퍼즐 게임, 20종 이상 도형
Tired of Block Blast ads? Leaves of Blocks is the privacy-first block puzzle game for iOS with more than twenty unique shapes. Fill rows and columns to clear lines and score. Zero ads. Zero data. Free
게임Swift · ShellGitHub @timveil온라인운영자 미확인
써 보셨어요? 한 번만 눌러 주세요. 로그인은 필요 없어요.
개인 계정의 공개 저장소 소유자는 GitHub로 로그인해 운영자를 확인하고 소개를 직접 관리할 수 있습니다. 관리자 승인은 필요하지 않습니다.
로그인한 뒤 확인 파일을 만들어 이 저장소의 기본 브랜치에 30분 안에 커밋해 주세요. 다른 브랜치나 포크의 파일은 인정하지 않습니다. 파일을 올린 뒤 아래에서 확인하면 관리자 승인 없이 관리할 수 있습니다. 자격을 유지하려면 파일을 남겨 두세요.
로그인이 필요하면 로그인 화면으로 이동합니다. 로그인 후 이곳으로 돌아와 원하는 확인 버튼을 다시 눌러 주세요.
프로젝트 폴더에서 /nomorevibe verify를 실행하면 소유권을 확인하고 소개를 직접 관리할 수 있습니다.
1분 만에 확인하기A Whitman-inspired, privacy-first Block Blast alternative for iOS — zero ads, zero tracking, zero in-app purchases. Playable in English, German, Spanish, French, Japanese, Korean and Dutch.
저장소 README에서 가져옴
README 전체를 불러오는 중입니다. 아래는 저장된 발췌입니다.
A Whitman-inspired, privacy-first Block Blast alternative for iOS — zero ads, zero tracking, zero in-app purchases.
Players drag and drop block shapes onto an 8x8 grid to clear lines while the game adapts to their skill level
Intelligent Gameplay
• Smart Difficulty System: Advanced tiered block generation that responds to player skill
• Player Analytics: Comprehensive efficiency metrics and performance tracking
• Solvability Guarantee: Advanced algorithms ensure every puzzle is solvable
• Progressive Challenge: Consequence-based difficulty that maintains engagementREADME 전문 보기 ↗A Whitman-inspired, privacy-first Block Blast alternative for iOS — zero ads, zero tracking, zero in-app purchases.
Players drag and drop block shapes onto an 8x8 grid to clear lines while the game adapts to their skill level
Website · Play in browser · vs. Block Blast · Support · Instagram · X · Bluesky · Issues
.locales gets the interface, the App Store listing and the screenshots — not just the menusThe app, its App Store listing and its screenshots ship in every locale declared
in .locales. Whitman's verse is the deliberate exception: it is
quoted in the original English on every screen that cites it, because
translating a poem is authoring one.
Which locales ship is declared once in .locales and enforced by
scripts/check-locales.sh, which fails the build
if the string catalog, knownRegions, the screenshot languages and the App
Store metadata disagree. How translations are made and reviewed is written down
in conventions/translation.md.
Built as a privacy-respecting alternative to ad-heavy puzzle games in the same genre. The full pitch — including a try-it-now web build — lives at leavesofblocks.com. The headline:
Zero ads. Zero data collected. Zero in-app purchases. The puzzle is the puzzle.
| Leaves of Blocks | Block Blast | |
|---|---|---|
| Ads | ||
| In-app purchases | ||
| Data collection | ||
| Network required | ||
| Developer |
For the full side-by-side (and a less serious version of the comparison), see leavesofblocks.com/vs.
# Clone the repository
git clone https://github.com/timveil/leaves-of-blocks.git
cd leaves-of-blocks
# Use the interactive development menu (recommended)
./menu.sh
# Or build manually
xcodebuild -project "LeavesOfBlocks.xcodeproj" -scheme "LeavesOfBlocks" build
Or open LeavesOfBlocks.xcodeproj in Xcode and press ⌘+R.
The project includes a comprehensive development menu for streamlined workflow:
./menu.sh
Features:
All utility scripts are organized in the scripts/ directory for advanced users.
@Observable macro with @MainActor isolationLeavesOfBlocks/
├── App/ # Application entry and navigation
├── Views/ # SwiftUI screens and components
│ ├── Components/ # Cross-screen reusable UI
│ ├── Game/ # Board, overlays, game-specific UI
│ ├── History/ # Game history and analytics
│ ├── Statistics/ # Aggregate stats screens
│ ├── Home/, About/, HowToPlay/, Settings/
│ └── ViewModifiers/ # Shared style modifiers
├── Models/ # Game state and Core Data entities
├── Logic/ # Game algorithms, grid analysis, behavior tracking
├── Services/ # Configuration, Core Data, GameKit, gameplay services
├── SpriteKit/ # GameScene, nodes, particle effects
├── Extensions/ # Foundation, SwiftUI, UIKit extensions
├── Resources/ # Themes, Localizable.xcstrings, PrivacyInfo
└── Documentation/ # Coding standards and project docs
scripts/ # Development utilities
├── build.sh # Unified build/test entry point
├── cleanup-project.sh # Comprehensive project cleanup
└── generate_icons.sh # Icon generation and copying
menu.sh # Interactive development menu
Automated builds and testing via GitHub Actions (.github/workflows/ios.yml):
main and pull requestUse the interactive menu for streamlined deployment:
./menu.sh
# Select option 7: Deploy Beta (TestFlight)
# Select option 8: Deploy to App Store
For advanced users, direct Fastlane commands are available.
The Fastlane lanes that talk to App Store Connect (TestFlight, App Store, Game Center) need an API key. Set these env vars (typically in fastlane/.env — see .env.template):
LOCAL_APP_STORE_CONNECT_API_KEY_ID=...
LOCAL_APP_STORE_CONNECT_ISSUER_ID=...
LOCAL_APP_STORE_CONNECT_API_KEY_PATH=/abs/path/to/AuthKey_XXX.p8
The API key role must be App Manager or higher to manage Game Center entries.
bundle install # install fastlane + gems
bundle exec fastlane ios test_api_auth # smoke-test the API key
bundle exec fastlane ios setup_game_center # register Game Center leaderboards & achievements (idempotent)
setup_game_center reads from fastlane/GameCenterConfig.rb and POSTs any missing leaderboard or achievement entries to App Store Connect. Re-run it any time you add or rename entries in that file.
bundle exec fastlane ios preflight # read-only: can a release run right now?
bundle exec fastlane ios beta # TestFlight upload
bundle exec fastlane ios deploy # ship the version the project states
bundle exec fastlane ios deploy_and_submit # deploy and submit for review in one shot
bundle exec fastlane ios deploy version:minor # change train first, then ship
bundle exec fastlane ios submit # submit a previously-uploaded build for review
bundle exec fastlane ios metadata_only # listing changes only (no binary)
bundle exec fastlane ios screenshots_only # screenshots only
deploy and deploy_and_submit regenerate the changelog from your commits, ship the version the project already states, upload, then tag vX.Y.Z, attempt a matching GitHub Release, and move the project on to the next patch for development (best-effort — if gh is unavailable it logs the command to run by hand rather than failing a shipped release). The build number comes from App Store Connect at archive time rather than the project file, so one version string identifies the App Store submission, the tag and the release. For the daily TestFlight loop, beta is enough.
See CLAUDE.md for full lane internals and deployment procedures.
Build-time tuning lives in Services/Configuration/:
AppConfiguration — feature flags, performance constants (e.g. animation frame rate), and runtime flags driven by launch arguments (UI testing, screenshot mode)BuildConfiguration — compile-time DEBUG/RELEASE detectionGameCenterPreference — UserDefaults-backed opt-in toggle (gameCenter.enabled, default false)This project is licensed under the MIT License.
Tim Veil — @timveil