arielshemesh1999@gmail.com · ישראל
← כל הפרויקטים

CLAUDE WORLD

בניתי עולם ווקסלים תלת-ממדי מלא בסגנון Minecraft שרץ כולו ב-Vanilla JS עם Three.js מ-CDN - בלי build ובלי engine מסחרי, קובץ מנוע אחד. מעל שכבת ההישרדות יושב מטא-משחק שבו מגייסים צוות של פרסונות Claude, והמכניקה החתומה: לוחצים P, מדברים אל העולם, והוא עונה.

50
מילים שהעולם מבין
22
משימות בשרשרת
6
פרסונות Claude לגיוס
מאחורי הקלעים

מהקלט של השחקן ועד השמירה

קלט שחקןתנועה, כרייה ובנייה - או מקש P למילה
mc.js Engineקובץ אחד: chunks, תאורה, פיזיקה ומפלצות
Agent Arenaגיוס פרסונות Claude, גלים ומשימות Dispatch
The Wordמילה מזוהה וממופה לאפקט קיים במנוע
Persistenceשמירה ב-localStorage וגשר __mc לבדיקות

כל גל תוכן חדש עובר אימות headless מלא, והגל האחרון אומת מחדש גם מול ה-URL החי אחרי deploy

המערכת במספרים
מילים ב-Codex שהעולם מבין50
משימות בשרשרת ה-quest22
פרסונות Claude לגיוס6

החלק החכם הוא שהמשחק בנוי מראש להיות ניתן להוכחה: גשר debug בשם window.__mc חושף את כל ה-state, וכל מכניקה תלוית-זמן נחשפת גם כ-hook דטרמיניסטי, כי rAF נחנק בסביבה headless - כך עשרות בדיקות Playwright רצות על SwiftShader בלי אקראיות ובלי המתנות. The Word בנוי על אותו עיקרון של מינוף: 50 מילים לא מוסיפות מנוע חדש אלא ממופות לפרימיטיבים קיימים במנוע (give, weather, conjure, pacify, teleport), כך שמילה חדשה היא שורת מיפוי ולא מערכת שלמה, ומילים אסורות דורשות התאמה מדויקת ונחסמות בתוך שרשרת כדי שאי אפשר להבריח אותן. שלל נשמר לפי conservation by construction: כל הפקדה מתפצלת בשארית יורדת אחת כך ש-toPack ועוד toBank ועוד dropped שווה בדיוק לכמות המקורית, ופריט לא יכול להיעלם בשקט - כולל property test על 40 הפקדות אקראיות. גם התאורה הוכללה: כל emitter, מלפיד ועד Data Core, מציף אור באותו flood fill עם העוצמה שלו, אז מערכת אחת משרתת כל מקור אור עתידי.

מה זה

עולם ווקסלים תלת-ממדי בסגנון Minecraft שבניתי ב-Vanilla JS עם Three.js שנטען ישירות מ-CDN - בלי bundler ובלי build step, כשקובץ מנוע אחד בשם mc.js מריץ הכל: כריית בלוקים ובנייה, crafting, מחזור יום ולילה, ביומות ומפלצות. מעל שכבת ההישרדות יושב מטא-משחק של Agent Arena: מגייסים צוות של פרסונות Claude, נלחמים בגלים של Rival Swarm ושולחים סוכנים למשימות אוטונומיות.

המכניקה החתומה היא The Word - לוחצים P, מקלידים מילה, והעולם עונה. 50 מילים שכל אחת ממופה לאפקט אמיתי במנוע, עם Codex לאיסוף ומילים סודיות נדירות לגילוי. זה הניסוי כולו: איך נראית מכניקת משחק שרק עולם של מודל שפה יכול להציע.

הבעיה

רציתי לבדוק כמה רחוק אפשר למתוח משחק רציני בדפדפן בלי engine מסחרי: מנוע ווקסלים מלא - chunk streaming, תאורת שמיים ובלוקים, פיזיקה, AI של מפלצות, inventory ו-crafting - הכל בקובץ JavaScript אחד שרץ כמו שהוא.

והיתה בעיה שנייה, קשה יותר: איך מוודאים שמשחק WebGL בזמן אמת באמת עובד. בדיקה ידנית לא מחזיקה כשכל שבוע נכנס גל תוכן חדש, ומשחק עם אקראיות, טיימרים ואנימציה רציפה הוא סיוט לאוטומציה - במיוחד בסביבה headless שבה אין GPU ואין frame rate יציב.

מה בניתי

שכבת הישרדות שלמה: כרייה ובנייה, crafting של 2x2 ו-3x3, Furnace עם התכה, קשת וחיצים עם מסלול בליסטי, TNT עם תגובות שרשרת, יהלומים, שריון, מיטות שקובעות נקודת respawn ביתית, Night Siege עם שלדים שיורים באמת, ו-4 ביומות בהשראת AI - מ-Latent Meadow ועד Datafield עשיר ביהלומים. שרשרת quests מודרכת מלמדת את כל זה צעד אחר צעד.

מעל זה - ה-Agent Arena: שישה NPCs של פרסונות Claude עם תפקידים כמו Strategist, Tank, Medic ו-Scout, גלים מסלימים מול Rival Swarm עם בוס כל גל חמישי, ומערכת Dispatch ששולחת סוכנים למשימות שמחזירות משאבים וטוקנים - המטבע של העולם. הטוקנים נשפכים לעץ שדרוגים של 5 יכולות מודל, מ-Fine-Tuning ועד Context Window, ל-Data Cores שמייצרים טוקנים פסיביים, ול-Memory Bank של 27 משבצות שסוכנים חוזרים וממלאים אוטומטית.

ואז The Listening World: 50 מילים שהעולם מקשיב להן, מד Lucidity שנטען באור יום וליד Data Cores, 12 לחשים שהעולם לוחש ומצפה לתשובה במילה מתאימה, Litanies של שלושה צעדים, 6 מילים אסורות שעוקפות את השער אבל גובות מחיר, ו-Incantations שמשרשרות כמה מילים במשפט אחד. מקש K פותח Codex of Words - שכבת האיסוף והגילוי של כל זה.

איך זה עובד

הכל חי בקובץ מנוע אחד, mc.js - IIFE צפוף שמריץ chunk streaming, תאורה שמתפשטת ב-flood fill מכל emitter, מערכת projectiles עם תיוג בעלים כך שחץ של שלד פוגע רק בשחקן ולעולם לא בשלדים אחרים, ושמירה מלאה ב-localStorage: עולם, שחקן, roster, quests ו-Codex שורדים ריענון.

The Word לא מוסיף מנוע שני - כל מילה ממופה לאפקט שעושה שימוש חוזר בפרימיטיבים קיימים: give, weather, conjure של blueprint, pacify, teleport. מילים אסורות דורשות הקלדה מדויקת ומכוונת, ונחסמות בתוך שרשרת כדי שלא יופעלו בטעות.

והחלק שאני הכי גאה בו: גשר debug בשם window.__mc חושף את כל state המשחק, כך ש-Playwright עם SwiftShader מריץ את המשחק headless ובודק אותו דטרמיניסטית - עשרות בדיקות ב-14 חבילות, כולל property test של שימור פריטים על פני 40 הפקדות אקראיות ובדיקת קצה-לקצה של משימה שמסתיימת בהפקדה ל-Memory Bank.

התוצאה

המשחק חי ב-Vercel וכל עשרות הבדיקות ירוקות, והגל האחרון אומת מחדש 20/20 מול ה-URL החי אחרי deploy. צוותים אדברסריים של סוכנים עברו על הקוד: fleet של 15 סוכנים מצא 10 בעיות אמיתיות בשכבת The Word וכולן תוקנו, ו-audit רב-סוכני מוקדם יותר אישר 73 ממצאים והחמורים שבהם תוקנו.

מעבר למספרים, יצא משחק עם רגעי סיום אמיתיים: ניצחון בגל 10 מדליק כתובת ALIGNMENT ACHIEVED, והשלמת שרשרת המשימות מסתיימת ב-SINGULARITY REACHED. ובעיקר - הוכחה שמכניקה שנולדה ממודל שפה, עולם שמקשיב למילים, יכולה לעמוד על רגליים של מנוע ווקסלים אמיתי בקובץ אחד.