Satellite ground and real building footprints
- The ground is Esri World Imagery: ~1 m/pixel tiles around the city zone, the factory and 300 m either side of the drive between them, coarser tiles for the whole region. Tiles are hosted with the game (public/imagery, scripts/fetch-imagery.mjs), stream in near the camera, are cached by the service worker as visited, and replace the drawn roads and land areas - ~141,500 Microsoft building footprints (ODbL) join OSM's ~4,000 in a compact delta-encoded file (public/data/buildings.bin, built by scripts/build-buildings.mjs). Heights are estimated from footprint area and land use, with industrial halls outside the ring road. Buildings are built in 500 m blocks as the camera approaches - Caddy compresses the buildings file and caches map data for a week; the build targets ES2022 for top-level await - Tests for decoding, factory clearance, machine reachability and tile placement Imagery attribution: Esri, Maxar, Earthstar Geographics, and the GIS User Community. Commercial use requires a suitable Esri licence. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
@@ -159,6 +159,44 @@ node scripts/build-map-data.mjs --osm city.json zone-factory.json corridor.json
|
||||
|
||||
چهار خروجی OSM (محدودهٔ شهر، محدودهٔ کارخانه، کریدور مسیر و خیابانهای اصلی) با هم ادغام میشوند و عنصرهای تکراری حذف میشوند. خیابانها هم در مرز منطقه بریده میشوند. برای افزودن محدودهٔ جدید، یک خروجی دیگر به `--osm` اضافه کنید و در صورت نیاز `REGION` را در اسکریپت بزرگتر کنید.
|
||||
|
||||
### ساختمانها (Microsoft)
|
||||
|
||||
OSM فقط حدود ۴٬۰۰۰ ساختمان این منطقه را دارد. بقیه (حدود ۱۴۱٬۵۰۰ ساختمان) از مجموعهٔ ساختمانهای جهانی Microsoft (مجوز ODbL) میآیند و در `public/data/buildings.bin` ذخیره میشوند. این فایل ۳٫۵ مگابایت است و فشردهشده حدود ۲ مگابایت منتقل میشود.
|
||||
|
||||
```sh
|
||||
node scripts/build-buildings.mjs <فایل quadkey ایران، مثلاً 123012100 .csv.gz>
|
||||
```
|
||||
|
||||
فایل از [فهرست Microsoft](https://minedbuildings.z5.web.core.windows.net/global-buildings/dataset-links.csv) گرفته میشود (ردیف `Iran,123012100`). دادههای Microsoft برای ایران ارتفاع ندارند، پس ارتفاع تخمین زده میشود:
|
||||
|
||||
| موقعیت و مساحت | ارتفاع |
|
||||
|---|---|
|
||||
| پارک | یک طبقه |
|
||||
| صنعتی، یا بیرون از کمربندی پیامبر اعظم، بالای ۲۵۰ متر مربع | سوله، ۶ تا ۹ متر |
|
||||
| بیرون از کمربندی، کوچکتر | ۱ تا ۲ طبقه |
|
||||
| داخل شهر، زیر ۴۰ متر مربع | ۱ طبقه |
|
||||
| داخل شهر، زیر ۱۲۰ متر مربع | ۲ تا ۳ طبقه |
|
||||
| داخل شهر، زیر ۳۰۰ متر مربع | ۳ تا ۴ طبقه |
|
||||
| داخل شهر، زیر ۸۰۰ متر مربع | ۴ تا ۶ طبقه |
|
||||
| داخل شهر، بزرگتر | ۵ تا ۸ طبقه |
|
||||
|
||||
ساختمانهایی که OSM هم دارد، و ساختمانهای داخل محوطهٔ کارخانه (که بازی خودش میسازد) حذف میشوند. ساختمانها در بلوکهای ۵۰۰ متری و فقط وقتی بازیکن نزدیک میشود ساخته میشوند.
|
||||
|
||||
### تصویر ماهوارهای (Esri World Imagery)
|
||||
|
||||
زمین بازی تصویر ماهوارهای واقعی است و جادهها، لاینها، پارکها و حیاطها همانطور که در واقعیت هستند دیده میشوند. با وجود تصویر، جادهها و زمینهای رسمشده ساخته نمیشوند.
|
||||
|
||||
```sh
|
||||
node scripts/fetch-imagery.mjs
|
||||
```
|
||||
|
||||
- **زوم ۱۷ (حدود ۱ متر در هر پیکسل):** محدودهٔ شهر، محدودهٔ کارخانه و ۳۰۰ متر دو طرف مسیر کارخانه تا بوستان ملت
|
||||
- **زوم ۱۵:** کل منطقه، برای فاصلههای دور
|
||||
|
||||
کاشیها (حدود ۱۰۰۰ فایل، ۱۶ مگابایت) در `public/imagery` روی سرور خودمان هستند، پس در ایران و بهصورت آفلاین هم کار میکنند. Service Worker آنها را از قبل دانلود نمیکند و هر کاشی را وقتی بازیکن از کنارش رد شد نگه میدارد.
|
||||
|
||||
**مجوز:** استفادهٔ تجاری و میزبانی نسخهای از تصاویر Esri نیاز به مجوز مناسب از Esri دارد. شرایط را با Esri بررسی کنید. نام منبع در پایین صفحهٔ بازی نمایش داده میشود.
|
||||
|
||||
## ساختار
|
||||
|
||||
- `src/main.js`: صحنه، دوربین سومشخص، کنترلها، رابط کاربری (HUD)، نقشه، خرید و حلقهٔ بازی
|
||||
@@ -172,6 +210,8 @@ node scripts/build-map-data.mjs --osm city.json zone-factory.json corridor.json
|
||||
- `src/factory.js`: محوطهٔ کارخانه، شامل سالن تولید، خط مونتاژ، دفتر، حیاط و تابلوها
|
||||
- `src/pwa.js` و `public/manifest.webmanifest`: نصب، کار آفلاین و پیام بهروزرسانی
|
||||
- `src/realworld.js`: GPS، قطبنما، نرمسازی و حالت پایدار موقعیت، و شعاع رسیدن
|
||||
- `src/imagery.js`: زمین ماهوارهای که کاشیهایش با نزدیک شدن بارگذاری و با دور شدن آزاد میشوند
|
||||
- `src/buildings-data.js`: خواندن فایل ساختمانهای Microsoft
|
||||
- `src/ar.js`: نمای دوربین (AR)، شامل تصویر دوربین پشت گوشی، جهت گوشی و زاویهٔ دید
|
||||
- `src/vending.js`، `src/vehicle.js`، `src/traffic.js`: مدل دستگاه، فیزیک ماشین و ترافیک شهری
|
||||
- `src/geo.js`: تبدیل طول و عرض جغرافیایی به مختصات بازی
|
||||
@@ -182,4 +222,4 @@ node scripts/build-map-data.mjs --osm city.json zone-factory.json corridor.json
|
||||
- خیابانها یکطرفه و چراغ راهنمایی ندارند، و ترافیک فقط روی بلوارهای اصلی است.
|
||||
- پیشنهادهای بعدی: امتیاز ایمنی (خط عابر و چراغ قرمز)، تاکسی و قطار شهری، چرخهٔ روز و شب، ذخیرهٔ پیشرفت، جدول امتیاز آنلاین، و محلهها و شهرهای دیگر.
|
||||
|
||||
نقشه: © مشارکتکنندگان OpenStreetMap (ODbL). مرز استانها: Natural Earth.
|
||||
نقشه: © مشارکتکنندگان OpenStreetMap (ODbL). ساختمانها: © Microsoft (ODbL). تصویر ماهوارهای: Esri, Maxar, Earthstar Geographics, and the GIS User Community. مرز استانها: Natural Earth.
|
||||
|
||||
Reference in New Issue
Block a user