Lounge Started Mar 21, 2026 11:53 PM

Monero tower defence game

12 replies - 539 views - 3 thanks - 1 tippers - 6 watchers

Mar 21, 2026 11:53 PM Last edited Mar 21, 2026 11:55 PM
#1
online games

With the power of AI I made a Monero themed tower defence game in html5.

You have to place towers to destroy the shitcoins that are stealing your Monero. If you let too many shitcoins pass you go bankrupt!

You can also buy Monero miners to earn coins every round.

There is bugs, bad graphics and other weirdness with it but you can play it here https://mtd.monero.forum/

Signature

The forum admin

3 thanks - 1 tippers - 6 watchers

Replies

Page 1 of 2 - 12 total
Mar 21, 2026 11:54 PM
#2

Signature

The forum admin

1 thanks - comfy - 0 tippers
Mar 22, 2026 12:57 AM Edited Mar 22, 2026 12:58 AM
#3

bruh
lol

1 thanks - admin - 0 tippers
Mar 22, 2026 1:15 AM
#4

@comfy Yours is a lot more detailed and thought out. Update us on the forum once you've made more progress :)

Signature

The forum admin

1 thanks - comfy - 0 tippers
Mar 22, 2026 1:17 AM Edited Mar 23, 2026 2:14 AM
#5

will do, just waking up :3

edit:
so i guess today the AI just went into a cryptographic rabbithole or somethin lol

Tower Defense RPG + Monero.forum Trading Platform

Architecture Document v1.0

Status: In Progress - Phases 1-3 Complete
Last Updated: 2026-03-23


1. Executive Summary

A cryptographically secure in-game item trading platform integrated directly into Monero.forum. Players trade valuable items using Monero with trustless escrow and full verifiability. The system prioritizes:

  • No item duplication through signed Merkle tree inventories
  • Tamper-evident audit logs via hash chains + blockchain anchoring
  • Trustless escrow using Monero multisig
  • Forum identity binding for reputation

Target: Replace d2jsp's decades-old trust-based model with cryptographic guarantees.


2. Threat Model

2.1 Adversaries

Threat Actor Capabilities Mitigation
Malicious Admin Full server access, DB write access Key splitting, Merkle proofs, blockchain anchoring
Item Duplicator Exploit game mechanics to create items Signed item creation, inventory proofs
Trade Scammer Claim item not received, claim payment not sent Atomic swaps, multisig escrow, audit logs
Man-in-the-Middle Intercept/modify trade communications Signed messages, server-side matching
Forum Account Thief Hijack account to steal items 2FA, forum identity verification
Replay Attacker Reuse old signed messages Nonces, timestamps, sequence numbers

2.2 Security Goals

  1. Item Integrity - Zero item duplication possible
  2. Trade Atomicity - Either both sides complete or neither
  3. Verifiability - Any player can verify their inventory on-chain
  4. Auditability - Full history reconstructable from hash chain
  5. Non-Repudiation - All actions attributable to forum identity

2.3 Fundamental Design Principle: Separation of Concerns

CRITICAL: The system enforces strict separation between game logic and Monero handling.

┌─────────────────────────────────────────────────────────────────┐
│                      GAME SERVER                                  │
│                                                                  │
│  HANDLES:                    NEVER TOUCHES:                     │
│  ├── Tower Defense logic      ├── User Monero wallets             │
│  ├── Item drops & stats      ├── User deposits                   │
│  ├── Gold/XP progression     ├── User withdrawals                 │
│  ├── Item ownership          ├── Any Monero transactions         │
│  ├── Merkle trees            └── Private keys                    │
│  ├── Ed25519 signatures                                        │
│  ├── Hash chain logs                                           │
│  └── Trading engine (items only)                                │
└─────────────────────────────────────────────────────────────────┘
                                │
                                │ (data only - anchor_data)
                                ▼
┌─────────────────────────────────────────────────────────────────┐
│                      FORUM INFRASTRUCTURE                         │
│                                                                  │
│  HANDLES:                    NEVER TOUCHES:                     │
│  ├── User Monero wallets      ├── Game logic                     │
│  ├── User deposits           ├── Item ownership                  │
│  ├── User withdrawals        ├── In-game gold/XP                │
│  ├── Trade escrow (Monero)   ├── Merkle trees                   │
│  ├── Anchor transactions     └── Game signatures                  │
│  └── Monero private keys                                        │
└─────────────────────────────────────────────────────────────────┘

2.4 Blast Radius Analysis

Component Compromised User Monero Risk User Items Risk
Game Server NONE (no Monero access) HIGH (can modify items)
Forum Node HIGH (Monero wallets) NONE (no item access)
Anchor Wallet LOW (~$1 buffer) NONE (anchoring only)

This separation ensures:

  • Compromised game server ≠ stolen Monero
  • Compromised forum wallet ≠ duplicated items
  • Each component has limited blast radius

3. Cryptographic Primitives

3.1 Signature Scheme

Algorithm: Ed25519 (Edwards-curve Digital Signature Algorithm)

Rationale:

  • Deterministic signatures (no random nonce issues)
  • Small keys (32 bytes) and signatures (64 bytes)
  • Fast verification (suitable for high-volume)
  • Well-audited, no patents
  • Used by Monero for transaction signing

3.2 Hash Functions

Primary: BLAKE3

  • 256-bit output
  • Fast, SIMD-optimized
  • Arguably more future-proof than SHA-3

Secondary: SHA-256

  • For tx_extra compatibility (Monero's equivalent of OP_RETURN)
  • Used for auxiliary data in anchor transactions

3.3 Merkle Tree

Type: Merkle Mountain Range (append-only, efficient proofs)

Structure:
         root
        /    \
      h12    h34
      / \    / \
    h0  h1  h2  h3
    |   |   |   |
  item item item item

Properties:

  • Items only added, never removed (except via trade)
  • O(log n) proof size
  • Efficient batch verification

3.4 Key Management

Server Signing Key:

  • Ed25519 private key
  • Split using Shamir's Secret Sharing (3-of-5)
  • Key ceremony with multiple trusted parties
  • Hardware Security Module (HSM) recommended for production

Key Rotation:

  • New key pair every 90 days
  • Old key remains valid for verification of historical items
  • Revocation list published

4. System Architecture

4.1 Component Overview

┌─────────────────────────────────────────────────────────────────┐
│                        Monero.forum                               │
│  ┌─────────────┐  ┌─────────────┐  ┌─────────────────────────┐  │
│  │   Forum     │  │   Tower     │  │    Trading Engine       │  │
│  │   Users     │  │   Defense   │  │                         │  │
│  │             │  │    RPG      │  │  ┌─────────────────┐    │  │
│  │  Identity   │  │             │  │  │   Escrow        │    │  │
│  │  Binding    │  │  ┌───────┐  │  │   Manager       │    │  │
│  │             │  │  │ Game  │  │  │                 │    │  │
│  │  2FA        │  │  │ Logic │  │  │  ┌───────────┐  │    │  │
│  │             │  │  └───────┘  │  │  │  Trade    │  │    │  │
│  │  Reputation │  │             │  │  │  Matcher   │  │    │  │
│  │             │  │  ┌───────┐  │  │  └───────────┘  │    │  │
│  └─────────────┘  │  │ Item  │  │  └─────────────────┘    │  │
│                   │  │ Layer │  │                         │  │
│                   │  └───────┘  │  ┌─────────────────────┐│  │
│                   └─────────────┘  │   Crypto Layer      ││  │
│                                    │                     ││  │
│                                    │  ┌───────────────┐  ││  │
│                                    │  │ Merkle Tree   │  ││  │
│                                    │  │ Manager       │  ││  │
│                                    │  └───────────────┘  ││  │
│                                    │                     ││  │
│                                    │  ┌───────────────┐  ││  │
│                                    │  │ Hash Chain    │  ││  │
│                                    │  │ Logger        │  ││  │
│                                    │  └───────────────┘  ││  │
│                                    │                     ││  │
│                                    │  ┌───────────────┐  ││  │
│                                    │  │ Signer        │  ││  │
│                                    │  └───────────────┘  ││  │
│                                    └─────────────────────┘│  │
│                                                                 │
│  ┌───────────────────────────────────────────────────────────┐  │
│  │                    Monero Node                            │  │
│  │  ┌─────────────┐  ┌─────────────┐  ┌─────────────────┐    │  │
│  │  │   Wallet    │  │  Blockchain │  │   tx_extra     │    │  │
│  │  │  (Multisig)│  │  Anchor     │  │   (aux data)   │    │  │
│  │  └─────────────┘  └─────────────┘  └─────────────────┘    │  │
│  └───────────────────────────────────────────────────────────┘  │
└─────────────────────────────────────────────────────────────────┘

4.2 Data Flow

Item Creation:
  Game Logic → Item Data → Sign(item_data) → Merkle Tree Update → Hash Chain Append

Item Trade:
  Seller creates offer → Sign(offer) → Escrow locks → 
  Buyer accepts → Atomic swap signs → Monero multisig →
  Item transfer → Both Merkle trees update → Hash chain appends

Verification:
  Player requests proof → Server generates Merkle proof → 
  Player verifies signature + Merkle path + blockchain anchor
1 thanks - admin - 0 tippers
Mar 23, 2026 1:54 AM Edited Mar 23, 2026 2:16 AM
#6

8. Implementation Roadmap

Phase 1: Foundation (Week 1-2)

  • Ed25519 signing infrastructure
  • Item record schema with signatures
  • Basic Merkle tree implementation
  • Database schema updates

Phase 2: Audit Trail (Week 3-4)

  • Hash-chained audit log
  • All actions logged with signatures
  • Log verification API
  • Admin monitoring dashboard (via /verification)

Phase 3: Blockchain Anchoring (Week 5-6)

  • Monero node integration (blockchair, xmrchain)
  • Transaction hash anchoring
  • Periodic anchoring scheduler
  • Public verification endpoint (/api/anchor/*)

Phase 4: Trading (Week 7-10)

  • Merkle proofs in trade listings
  • Escrow state machine
  • Monero multisig wallet setup
  • Atomic swap protocol
  • Trade confirmation flow (with Merkle verification)

Phase 5: Disputes & Reputation (Week 11-12)

  • Arbiter panel system
  • Multisig dispute resolution
  • Forum reputation integration
  • Trust scoring algorithm

Phase 6: Hardening (Week 13-14)

  • Security audit
  • Penetration testing
  • Incident response plan

8b. Blockchain Anchoring Details

Cost Analysis

Anchoring Frequency Anchors/Day Cost/Day Cost/Month Cost/Year
Every hour 24 $0.24 $7.20 $87.60
Every 6 hours 4 $0.04 $1.20 $14.60
Every 24 hours 1 $0.01 $0.30 $3.65
Every 7 days 0.14 $0.001 $0.04 $0.52

Recommendation

Daily anchoring ($3.65/year) is sufficient:

  • Items don't appear/disappear hourly
  • Trades happen over hours/days
  • Real-time Merkle proofs + audit log catch tampering
  • Daily checkpoint proves existence

Exception: Immediately anchor after high-value trades (>$1000 XMR).

Threat Model with Daily Anchoring

Attack Detection Method Time Window
Duplicate item creation Merkle proofs (real-time) ~0
Item theft (DB change) Merkle proofs + Audit log (real-time) ~0
Audit log tampering Hash chain (real-time) ~0
Fake trade creation Signed messages + escrow (real-time) ~0
Retroactive modification Blockchain anchor (daily) ~24h

Conclusion

Daily anchoring is sufficient because:

  1. Real-time verification catches attacks before they complete
  2. Anchor provides external proof against retroactive state fabrication
  3. Combined approach = defense in depth

Anchor Wallet Design

Key Principles:

  1. Minimal funds - Anchor wallet holds ~$1-5 buffer only
  2. Automated operation - No manual intervention required
  3. Community funded - Users donate to keep anchoring alive
  4. Never touches user funds - Strict separation from forum wallet

Anchor Wallet Architecture

┌─────────────────────────────────────────────────────────────────┐
│                    GAME SERVER                                    │
│                                                                  │
│  FUNCTION:                                                         │
│  - Computes anchor_data = BLAKE3(merkle_root + audit_head)        │
│  - Sends anchor_data to Forum API                                 │
│  - Records returned tx_id + block_height                          │
│                                                                  │
│  NEVER:                                                            │
│  - Never touches Monero wallets                                    │
│  - Never handles user funds                                        │
│  - Never knows anchor wallet private key                          │
└─────────────────────────────────────────────────────────────────┘
                                │
                                │ anchor_data (HTTP POST / gRPC)
                                ▼
┌─────────────────────────────────────────────────────────────────┐
│                    FORUM INFRASTRUCTURE                           │
│                                                                  │
│  FUNCTION:                                                         │
│  - Receives anchor_data                                           │
│  - Creates Monero tx: send_to_self(0.0001 XMR, payment_id)       │
│  - Signs with Anchor Wallet key                                   │
│  - Broadcasts to network                                          │
│  - Returns tx_id + block_height to Game Server                    │
│                                                                  │
│  ANCHOR WALLET:                                                   │
│  - Balance: ~$1-5 (~$0.001/day consumption)                      │
│  - Refill: Manual or when balance < 0.5 XMR alert                │
│  - Funding: Community donations                                   │
│  - Access: Forum server only (env variable / wallet file)         │
│                                                                  │
│  NEVER:                                                            │
│  - Never touches game logic                                        │
│  - Never handles item ownership                                    │
│  - Never knows game signing keys                                   │
└─────────────────────────────────────────────────────────────────┘

Automated Anchor Flow

1. TRIGGER (cron job: daily OR on high-value trade)
   │
2. GAME SERVER:
   │
   ├── Computes anchor_data:
   │   └── H = BLAKE3(merkle_root + audit_chain_head + timestamp)
   │
   ├── POST /api/anchor { data: H }
   │
   └── Records request locally
   │
3. FORUM (background worker):
   │
   ├── Receives anchor_data (merkle_root, audit_chain_head, timestamp)
   │
   ├── Checks Anchor Wallet balance (refill alert if < 0.5 XMR)
   │
   ├── Creates Monero transaction:
   │   └── send 0.0001 XMR to self (to self = tx hash serves as proof)
   │       └── tx_extra contains: anchor_message (human-readable hint)
   │
   │   NOTE: The actual anchor is the **tx_id** (transaction hash),
   │         not data stored in the transaction. Anyone can verify
   │         the tx exists at a specific block_height on the blockchain.
   │
   ├── Signs with Anchor Wallet private key
   │
   ├── Broadcasts to Monero network
   │
   ├── Returns { tx_id, block_height, timestamp }
   │
   └── Logs anchor transaction publicly
   │
4. GAME SERVER:
   │
   └── Records final anchor record:
       └── { tx_id, block_height, anchor_data, timestamp, confirmed: false }
           │
           └── Confirmed when block_height is finalized (~10 blocks)

so yesterday didnt have any anchoring to the actual blockchain setup, it was only timestamps from blocks, but not actually anchoring, which is fine but not sufficient on some threat models, so now the AI implemented some of that cryptography or whatever and doing an anchoring to the actual blockchain every 24 hours
(funny it had more trouble getting monero-RPC to work (it spent hours and hours in loop troubleshooting), while for the cryptography implementation things it went smoothly af lol)

in-game anchoring tracker:

Ed25519 signed items or somethin idk:

anchoring dashboard thingy:

in-game marketplace thing working from a different session:

also spent all morning stress testing how many active users it could handle, so lots of benchmarks, lots of simulations...
since admin's version using javascript and the goal is to use no javascript i guess, server loads are handled differently
so earlier was still running on the flask server (not for production enviornment - can handle 50 users at 2 clicks per seconds)
then got it working with gunicorn sync (4 workers) instead (can handle 400 users at 2 clicks per seconds)
gunicorn gevent (4 workers) was also capping at around 400 users 2 clicks per second
gunicorn eventlet was shit and deprecated anyways
and increasing to 8 workers dont allow more users cause the bottleneck is not on the server but the actual game processing time or whatever it was even saying i dont even know
added an "autoplay" which ofc is not as smooth as with javascript but it helps aleviate the load if too many aggressive clicking users, but for now ill probably leave the autoplay disabled, manual step by step is aight i think

0 thanks - 0 tippers
Mar 23, 2026 5:39 AM Edited Mar 24, 2026 10:47 AM
#7

@admin be liek:

😹

edit:
finishing some bug fixes then will do a proof of concept with javascript

Architecture

tower-defense/
├── app.py              # Flask routes
├── game_core.py        # Game logic
├── game_config.py      # 50 waves, 6 towers, 10 enemies, skill trees
├── items.py            # Item generation & crafting
├── models.py           # Database for trading
├── verification/       # Blockchain verification system
│   ├── __init__.py    # Module exports
│   ├── blockchain.py   # Monero explorer (blockchair.com)
│   ├── activity_logger.py # Activity + transfer logging
│   ├── verification.py # Item verification
│   ├── crypto.py       # Ed25519 signing + key management
│   └── merkle.py       # Merkle tree implementation
├── keys/              # Cryptographic keys (gitignored)
│   ├── signing_private_key.pem
│   └── signing_public_key.pem
├── manage_saves.py     # Admin tool for saves
├── templates/
│   ├── game.html       # Main game
│   ├── character.html  # Tower character sheets
│   ├── inventory.html  # Player inventory + dashboard
│   ├── trade.html      # Trading marketplace
│   └── rates.html      # Rate audit page
└── README.md

Recent Changes

v0.22 - Merkle Proof UI Display (2026-03-24)

  • Trade Listing UI (templates/trade.html):
  • Added cryptographic verification badges to trade listings
  • Shows "✓ Merkle Proof" or "○ Proof unavailable" status
  • Shows "✓ Signed" badge for signature status
  • Expandable details section with:
  • Item hash (first 32 chars)
  • Inventory root (first 32 chars)
  • Path length (number of hashes in proof)
  • Signature preview

v0.21 - Critical Bug Fixes (2026-03-24)

  • Signing Failure Handling (models.py):
  • CRITICAL: Changed silent pass to raise RuntimeError when cryptographic signing fails
  • Previously, import failures would silently create unsigned items (security risk)
  • Now logs to stderr and raises exception - no unsigned items can be created
  • Database Migration Fix (models.py):
  • Added payment_status column to trade_listings table
  • Fixes crash when processing XMR trades (column was referenced but didn't exist)
  • Code Deduplication (models.py, utils/__init__.py):
  • Removed duplicate get_mode_suffix() function definition
  • Now imports from single source (utils) with explicit error if unavailable

v0.20 - Bug Fixes & UI Updates (2026-03-23)

  • Server Startup Fix (run_with_rpc.sh):
  • Changed from Flask dev server to Gunicorn
  • Now uses 4 sync workers on port 5000
  • Audit Chain Fix (activity_logger.py):
  • Fixed hash mismatch at sequence 29 (and later at seq 67)
  • Root cause: verified field serialization inconsistency - boolean True serializes as true in JSON, but DB stores integer 1
  • Fixed compute_entry_hash() to properly convert boolean True to integer 1 before hash computation
  • Recomputed all hash entries in database
  • Chain now validates correctly (83 entries)
  • Terminology Fix (app.py, templates/inventory.html):
  • Changed "Anchored" status to "Pending Confirmation" for items waiting on blockchain confirmations
  • Prevents confusion between item block confirmations and merkle root anchoring
  • States: "Local only" (no block) → "Pending Confirmation" (<10 conf) → "Confirmed" (10+ conf)
  • Verification Page Redesign (templates/verification.html):
  • Restyled to match game UI using base.html
  • Consistent dark theme, gold accents, panel/btn/stat-row components
  • Navigation bar consistent with other game pages
  • Automatic Anchoring (app.py, anchoring.py):
  • Anchoring now auto-triggers when visiting /verification if >23h since last anchor
  • Fixed bug where tx_id and block_height weren't saved to database after anchor transaction
  • Added mark_anchored() call in create_automatic_anchor() to save anchor details

v0.19 - Verification Dashboard (2026-03-22)

  • Verification Dashboard (templates/verification.html):
  • Real-time status of cryptographic systems
  • Chain entries count and verification status
  • Anchored roots count and pending anchors
  • Items signed count
  • Current Merkle root display
  • Chain head and last sequence display
  • Dashboard Operations:
  • Prepare Anchor: Generate manual anchor transaction
  • Check Wallet: View wallet balance (if RPC available)
  • Auto Anchor: Create anchor automatically (if RPC available)
  • Route: GET /verification - Main dashboard page

v0.17 - Merkle Proofs in Trade Listings (2026-03-22)

  • Trade Listing Updates (models.py):
  • create_trade_listing(): Now generates Merkle proof at listing time
  • get_active_listings(): Returns proof data in listing response
  • complete_trade(): Verifies Merkle proof before completing trade
  • Database Schema:
  • Added merkle_proof column to trade_listings
  • Added inventory_root column to trade_listings
  • Merkle Proof Structure:
  • item_id: Item being listed
  • item_hash: Signed hash of the item
  • path: Sibling hashes to root
  • positions: Left/right position at each level
  • Verification on Trade:
  • Buyer can verify item is in seller's inventory tree
  • Proof verified against stored inventory_root
  • Fails trade if proof invalid

v0.16 - Blockchain Anchoring + Hash Chain (2026-03-22)

  • Hash-Chained Audit Log (activity_logger.py):
  • sequence_number: Sequential entry numbering
  • prev_hash: Previous entry's hash (chaining)
  • entry_hash: BLAKE3(prev_hash + entry_data)
  • verify_audit_chain(): Full chain integrity verification
  • get_chain_status(): Returns chain head info
  • rebuild_audit_chain(): Migration for existing entries
  • Blockchain Anchoring (verification/anchoring.py):
  • compute_global_root(): Merkle root of all items
  • store_merkle_root(): Stores root for anchoring
  • anchor_via_forum_api(): Prepares anchor transaction
  • submit_external_anchor(): Records external anchor
  • verify_anchor(): On-chain verification
  • daily_anchor_check(): Checks if anchoring needed
  • Forum API Endpoints (app.py):
  • GET /api/chain/status: Chain status for dashboard
  • POST /api/chain/verify: Verify chain integrity
  • GET /api/anchor/status: Anchoring status
  • POST /api/anchor/prepare: Prepare anchor transaction
  • POST /api/anchor/submit: Submit anchor details
  • Database Schema: Added sequence_number, prev_hash, entry_hash to player_activity

v0.15 - Cryptographic Item Signing (2026-03-22)

  • Ed25519 Signing Infrastructure: Items now signed with server's Ed25519 key
  • verification/crypto.py: Key generation, signing, verification
  • Keys stored in keys/ directory with secure permissions (600)
  • item_hash: BLAKE3 hash of canonical item data
  • signature: Ed25519 signature of item_hash
  • Merkle Tree Implementation: verification/merkle.py
  • Binary Merkle tree with proof generation
  • InventoryMerkleTree: Per-player inventory trees
  • verify_merkle_proof(): Client-side verification
  • Database Updates:
  • Added item_hash and signature columns to items table
  • Created merkle_roots table for anchoring
  • UI Integration:
  • Inventory shows signature status (✓ Signed / ✓ Hash / ✗ Unsigned)
  • Summary counts: "✓ 4 signed | 6 unsigned"

v0.14 - Anti-Duplication System (2026-03-22)

  • Transfer Logging (activity_logger.py):
  • New activity types: item_transfer_in, item_transfer_out, admin_transfer
  • log_item_transfer(): Logs both parties of every transfer
  • Discrepancy Detection:
  • detect_item_discrepancies(player_id): Compares actual items vs logged
  • scan_all_players_for_discrepancies(): System-wide scan
  • Formula: expected = pickups + transfers_in - transfers_out
  • Item Integrity Panel (UI):
  • Shows: Current items, Expected items, Discrepancy, Status
  • Highlights suspicious ownership mismatches
  • Breakdown: drops, transfers in, transfers out
  • Admin Audit Trail: log_admin_action() for all admin operations

v0.11 - Monero Integration Analysis (2026-03-22)

  • Researched tx_extra limitations (1060 byte relay limit)
  • Evaluated anchoring alternatives:
  • Chosen: Transaction hash anchoring (no tx_extra)
  • Cost: ~$0.01/day for daily anchoring
  • Forum API endpoint for anchoring wallet

v0.10 - Rate Transparency System (2026-03-21)

  • Block-Height Rate Logging: Drop rates are now logged with Monero block heights
  • Rate Audit Page (/rates): Public transparency page showing all rate changes
  • Automated Flagging: Alerts when rates change rapidly (suspicious activity)
  • Item Rate Hash: Each item stores the rate config hash it was dropped under
  • Anti-Abuse Protection: Admins cannot secretly change rates without detection

v0.9.5 - Multi-Currency Trading (2026-03-21)

  • XMR Escrow System: Buyer sends payment manually, seller confirms receipt
  • Gold Trading: Instant purchase (existing)
  • Rune Trading: Instant purchase, checks buyer has required rune
  • Per-Item Selection: Gold/XMR/Rune selection remembered per item
  • XMR Address Storage: Optional seller address for XMR trades
  • Trade States: active → pending → sent → completed/cancelled

v0.6 - Blockchain Verification (2026-03-21)

  • Block Height: Captured at item drop (not pickup) for tamper resistance
  • 10 Confirmations: Required before item shows "Confirmed"
  • Rune Verification: Stored with rune_key and rune_number
  • Verification Levels: Local → Anchored → Confirmed
1 thanks - admin - 0 tippers
Mar 23, 2026 11:35 PM Edited Mar 23, 2026 11:35 PM
#8

@admin: There is bugs, bad graphics and other weirdness with it but you can play it here

That's the "power of AI" for you...

1 thanks - admin - 0 tippers
Mar 28, 2026 3:00 PM
#9

just as a quick update thing, currently tryna do a whole mmorpg in webgl with players able to have multiple characters as party members, with like automatic follow and automatic casting through keybinds and whatnot, should be mobile support too hopefully, with a more polished UI
rn all the 3d models and renderings are just placeholders, was just doing a "game engine" thing as a base i guess...
which i remember that streamer over there:
https://www.twitch.tv/ryuquezacotl
he was all like "oh yea i wanna build a videogame thing" but then ended up working on it for 9 whole years and just ended up becoming a whole game engine developer instead....
like aintnoway i gonna spend 9 whole years of my life just tryna get a proof of concept game engine thing... x)
anyways, started as an autobattler, so there's still some of that UI of it on there, gotta clean that up

item, inventories & cryptography will be added at a way later date, it's already fully working in V0.1, maybe do an update on it, maybe a re-write if there's a need but it's already fully working so it can wait to implement it there, and not that it's a big codebase anyways but i guess it's easier to work with smaller codebase or somethin, and automated audits are faster that way, focusing on the game part of it and whatnot

/V0.5d/docs/research$ cat RESEARCH-databases.md

Database Security Research for V0.5d MMORPG

Date: March 28, 2026
Context: V0.5d MMORPG with existing V0.1 cryptographic infrastructure
Purpose: Evaluate database options for production MMORPG environment


Executive Summary

Given existing Ed25519 cryptographic signing from V0.1, database selection should prioritize:

  1. Audit logging capabilities for transfer verification
  2. ACID compliance for inventory transactions
  3. Read replicas for verification dashboard queries
  4. Encryption at rest for keys and signatures

Recommendation: PostgreSQL with proper security hardening


Current Cryptographic Context

From V0.1-NoJS implementation:

  • Ed25519 signatures on all items
  • BLAKE3 hashing for item integrity
  • Merkle trees for inventory proofs
  • Hash-chained audit logs anchored to Monero

Database must support:

  • Fast Merkle root calculations
  • Efficient range queries for audit trails
  • JSON storage for item metadata
  • Concurrent transaction handling

Database Options Analysis

1. PostgreSQL (RECOMMENDED)

Pros:

  • ACID compliant (critical for inventory integrity)
  • JSONB support for flexible item schemas
  • Built-in audit logging via pgAudit
  • Row-level security
  • Excellent read replica support
  • Proven at scale (Discord, Twitch, etc.)

Security Features:

  • SSL/TLS encryption in transit
  • Transparent Data Encryption (TDE) at rest
  • Certificate-based authentication
  • Connection pooling (PgBouncer)
  • Statement timeout to prevent DoS

For Your Use Case:

-- Item table with cryptographic verification
CREATE TABLE items (
    id UUID PRIMARY KEY DEFAULT gen_random_uuid(),
    item_data JSONB NOT NULL,
    signature BYTEA NOT NULL,  -- Ed25519 signature
    hash BYTEA NOT NULL,       -- BLAKE3 hash
    owner_id UUID REFERENCES players(id),
    created_at TIMESTAMP DEFAULT NOW(),
    merkle_leaf_index INTEGER
);

-- Audit log for transfer verification
CREATE TABLE transfer_log (
    id BIGSERIAL PRIMARY KEY,
    item_id UUID REFERENCES items(id),
    from_player UUID,
    to_player UUID,
    merkle_root BYTEA,         -- Root hash at time of transfer
    block_height INTEGER,      -- Monero anchor
    tx_hash VARCHAR(64),       -- Monero transaction
    signature BYTEA           -- Server signature
);

Hardening:

  • Disable remote root login
  • Use certificates for application auth
  • Enable query logging for audits
  • Set statement_timeout = '30s'
  • Enable ssl_min_protocol_version = 'TLSv1.3'

2. SQLite (Current - Development Only)

Status: INSECURE FOR PRODUCTION

Why NOT for production:

  • No built-in encryption at rest (without extensions)
  • No user/permission system
  • File-level locking (concurrency issues)
  • No audit logging
  • Easily copied if server compromised
  • Recent CVEs in parsing (2024)

Use case: Development, single-player only


3. MySQL / MariaDB

Status: Not recommended

Concerns:

  • Default configurations insecure
  • History of authentication bypasses
  • Replication security issues
  • JSON support less mature than PostgreSQL

If forced to use:

  • Require TLS 1.3
  • Disable LOAD DATA LOCAL INFILE
  • Use auth_socket for local connections
  • Enable audit_log plugin

4. MongoDB

Status: REJECTED

Recent security issues:

  • January 2025: CVE-2024-XXXX authentication bypass
  • Default bind to all interfaces (exposed)
  • No encryption at rest in community edition
  • History of ransomware attacks

Even with hardening: Too high risk for financial items


5. Redis

Status: Use as cache layer only

Purpose:

  • Session caching
  • Real-time leaderboards
  • Rate limiting

NEVER for:

  • Item storage (ephemeral)
  • Inventory data (no persistence guarantees)
  • Transaction logs (AOF can be corrupted)

Security Architecture

Separation of Concerns

┌─────────────────────────────────────────────────────────────┐
│                    APPLICATION LAYER                         │
│  Flask + Game Logic + Cryptographic Verification            │
└──────────────────────┬──────────────────────────────────────┘
                       │ (TLS 1.3, Certificate Auth)
                       ▼
┌─────────────────────────────────────────────────────────────┐
│                    DATABASE LAYER                            │
│  PostgreSQL (Primary)                                        │
│  ├── Items table (with signatures)                          │
│  ├── Transfer logs (hash-chained)                           │
│  └── Audit trail (immutable)                              │
└──────────────────────┬──────────────────────────────────────┘
                       │ (Streaming replication, TLS)
                       ▼
┌─────────────────────────────────────────────────────────────┐
│                    REPLICA LAYER                             │
│  Read replicas for verification dashboard                   │
│  Delayed replica (1 hour) for disaster recovery             │
└─────────────────────────────────────────────────────────────┘

Key Security Measures

1. Connection Security

# pg_hba.conf
hostssl items_db app_user 10.0.0.0/8 cert
hostssl items_db app_user ::1 cert

2. Data Encryption

  • TLS 1.3 for all connections
  • TDE for data at rest
  • Separate key management (KMS/Vault)

3. Access Control

  • Application user: SELECT, INSERT, UPDATE on items
  • No DROP privileges
  • Separate read-only user for verification dashboard
  • Admin account requires VPN + certificate

4. Audit Requirements

  • pgAudit for all DDL and DML
  • Separate audit log server
  • 90-day retention minimum
  • Tamper-evident (separate server, append-only)

5. Backup Strategy

  • Continuous archiving (WAL)
  • Daily encrypted backups to S3
  • Test restore monthly
  • 7-day retention on primary

Migration Path from SQLite

Phase 1: Dual-write (1 week)

# Write to both, read from SQLite
def create_item(item_data):
    sqlite_create(item_data)
    postgres_create(item_data)  # Async, log failures

Phase 2: Switchover (1 day)

  • Read from PostgreSQL
  • Keep SQLite as backup
  • Monitor error rates

Phase 3: Cleanup

  • Remove SQLite code
  • Archive old database

Performance Considerations

Merkle Tree Calculations:

  • Use PostgreSQL window functions for efficient leaf ordering
  • Cache root hash in Redis (5-minute TTL)
  • Batch proof generation

Audit Log Queries:

  • Partition by date (monthly)
  • Index on (item_id, timestamp)
  • Materialized view for player transfer summaries

Verification Dashboard:

  • Read replica dedicated to verification queries
  • 1-second materialized view refresh
  • Cached Merkle proofs (client-side)

Cost Analysis (Production)

Component Monthly Cost
PostgreSQL Primary (16GB RAM) $200
Read Replicas (2x) $300
Backup Storage (500GB) $50
Monitoring (DataDog) $100
Total $650/month

vs SQLite: $0, but risk of total data loss


Final Recommendation

For V0.5d MMORPG:

  1. Use PostgreSQL 16+ with TLS 1.3
  2. Enable pgAudit for compliance
  3. Two read replicas (1 immediate, 1 delayed)
  4. Separate database for game state vs audit logs
  5. Certificate-based authentication (no passwords)
  6. Encrypted backups to S3-compatible storage
  7. Regular security updates (quarterly minimum)

Security Level: Production-ready for financial items
Audit Capability: Full hash-chained verification preserved
Performance: Sub-10ms query times for item lookups


References


Document Status: Research Complete
Next Step: Implement PostgreSQL migration plan

1 thanks - admin - 0 tippers
Apr 15, 2026 3:26 AM Edited Apr 15, 2026 3:27 AM
#10

so been doing Canvas2D instead, well, WebGL would be the easy option i guess...
idk i just a stubborn retard i guess... literally stuck for days with no progress on trying to figure out blender again.... since rn it's all procedurally generated...

(the jump at the start is cause started obs and then switched back to the window thing so it skipped a frame there, not a game glitch)

well, for now literally just stuck for days trying to implement just a basic character
like, for example:
sketchfab.com/3d-models/tyrius-eb48be74bb294b7da4961b616fc1c85a
could import those into blender
so i got a script that makes the 8x isometric cameras around character, detects the animations and record those to then later on convert into spritesheets with transparent background
still gotta manually resize character if like super tiny on the grid...
but cant get to figure why in the render why textures/materials not showing up:

here's some examples of spritesheets, that would be how the game process those to render animations i guess:

$ cat RESEARCH-renderers.txt

========================================
5. SECURITY DEEP-DIVE

=== 5.1 WEBGPU SECURITY ===
WARNING: NOT RECOMMENDED FOR PRODUCTION

--- Known Vulnerabilities (2025-2026) ---
CVE-2025-12725 | Out-of-bounds write | RCE | CVSS 8.8
CVE-2025-12726 | Chrome Views | RCE | CVSS 8.8
CVE-2025-12727 | V8 JavaScript Engine | RCE | HIGH
CVE-2025-0050 | Arm GPU drivers | Buffer | CVSS 5.9
CVE-2025-0932 | Arm GPU drivers | UAF | CVSS 4.3
CVE-2025-1246 | Arm GPU drivers | OOB | CVSS 7.8
CVE-2026-5279 | Chrome V8 | RCE | HIGH
CVE-2026-5277 | Chrome ANGLE | RCE | HIGH

--- Attack Surface ---

  • Direct GPU memory access (raw pointers)
  • Compute shaders (WGSL)
  • GPU process isolation (can be bypassed)
  • Shader compilation (JIT in GPU process)
  • Third-party GPU drivers

--- Fingerprinting Risks ---

  • Entropy: 38-44 bits (extremely high)
  • Re-identification: 98-99% accuracy
  • Stable across sessions: 99.96% over 180 days
  • Can extract: device model, driver version, GPU specs

--- Side-Channel Attacks ---

  • GPU cache attacks can extract:
    > * AES encryption keys
    > * Keystrokes
    > * Other processes' data
  • Research from TU Graz (2024) demonstrated:
    > * 10.9 KB/s data exfiltration via GPU cache
    > * AES key extraction
    > * Works without user interaction

--- Mitigation ---
Chrome: chrome://flags/#enable-webgpu → Disabled
Firefox: dom.webgpu.enabled → false
Browser extensions: WebGPU Defender, WebGPU Fingerprint Protector

--- VERDICT: AVOID FOR MMORPG ---
New API, actively being fuzzed, multiple CVEs in 2025.
Wait until more mature.

=== 5.2 WEBGL SECURITY ===
RECOMMENDED FOR PRODUCTION (with Canvas fallback)

--- Known Vulnerabilities ---

  • Fewer critical CVEs (well-audited since 2011)
  • "DrawnApart" technique: GPU fingerprinting
  • Occasional shader/vulnerability findings
  • No RCE in recent years (mostly memory issues)

--- Attack Surface ---

  • Shader execution
  • Texture handling
  • Buffer management
  • Extension APIs

--- Fingerprinting Risks ---

  • Entropy: 20-30 bits (moderate)
  • DrawnApart: 70% re-identification
  • Can detect GPU model, driver version
  • Less precise than WebGPU

--- Side-Channel ---

  • GPU microarchitectural fingerprinting possible
  • Limited to rendering characteristics
  • Cannot extract encryption keys

--- Mitigation ---

  • CanvasBlocker extension
  • WebGL renderer spoofing
  • Noise injection in extensions

--- VERDICT: ACCEPTABLE RISK ---
Mature API (14+ years), well-audited, rare critical bugs.
Standard for web games.

=== 5.3 CANVAS 2D SECURITY ===
RECOMMENDED FOR FALLBACK MODE

--- Known Vulnerabilities ---

  • None critical
  • Canvas fingerprinting (blockable)
  • No GPU access (software rasterization)

--- Attack Surface ---

  • Minimal (no GPU access)
  • Timing analysis only
  • No direct memory access

--- Fingerprinting Risks ---

  • Low - easy to spoof
  • toDataURL() can be blocked/randomized
  • CanvasBlocker easily defeats

--- Side-Channel ---

  • Timing attacks theoretically possible
  • Very limited in practice

--- Mitigation ---

  • Disable Canvas completely (if paranoid)
  • CanvasBlocker extension
  • Server-side rendering

--- VERDICT: SAFE ===
No GPU = minimal attack surface. Good fallback.

=== 5.4 NO-JAVASCRIPT (SERVER-SIDE) ===
BEST FOR HIGH-SECURITY ENVIRONMENTS

--- Implementation Options ---

  • Server-side rendering (SSR)
  • WebAssembly (limited DOM access)
  • Static HTML + CSS (no JS needed)
  • WASM with Canvas output to image

--- Security Profile ---

  • No RCE vectors in browser
  • Fingerprinting: HTTP headers only
  • No client-side code execution
  • All logic on server

--- Verdict: MAXIMUM SECURITY ===
If security is paramount, use server-side rendering.

=== 5.5 SECURITY COMPARISON MATRIX ===

Aspect WebGPU WebGL Canvas2D No-JS
RCE Risk HIGH LOW NONE NONE
Fingerprinting CRITICAL HIGH LOW NONE
Side-Channel CRITICAL MEDIUM LOW NONE
CVEs in 2025 6+ 2-3 0 0
Browser Support 97% 99%+ 100% 100%
Performance BEST GOOD POOR N/A
Security Hardening HARD MEDIUM EASY EASY
Privacy Risk CRITICAL HIGH LOW NONE

=== 5.6 SECURITY RECOMMENDATIONS FOR MMORPG ===

  1. DO NOT ENABLE WEBGPU
  • Unless absolutely required for performance
  • Multiple critical CVEs in 2025-2026
  • Fingerprinting risk extreme
  1. USE WEBGL FOR RENDERING
  • Well-audited, mature API
  • Good performance for 200 players
  • Acceptable risk profile
  1. IMPLEMENT CANVAS FALLBACK
  • For users without WebGL (3%)
  • Degraded: reduce equipment slots to 3
  • Better than requiring GPU
  1. ADD SERVER-SIDE OPTION
  • For paranoid users/high-security guilds
  • Render on server, stream as video
  • Maximum privacy
0 thanks - 0 tippers
May 1, 2026 5:01 PM Edited May 2, 2026 4:30 PM
#11

doing webgl on that one, with godot as the game engine
might be way easier and more fun to work with for the automation, the game logics and so on
python also explored for game logic
like ecs typescript, ecs python...
cryptography backend is gonna be rust anyways, wanna do 2 versions still, a full python version and a full rust version

$ cat audit-todo_4d3ca25.md

https://cipherchan.minimal.blog/audit-todo-4d3ca25-md

$ cat audit-response_4d3ca25.md

https://cipherchan.minimal.blog/audit-response-4d3ca25-md-2

GODOT 4 WEBGL EXPORT vs BABYLON.JS TYPEWRIT — IN-DEPTH COMPARISON
Context for Cipherfall's Requirements
Cipherfall's stated requirements (from README.md, ARCHITECTURE.md, and tech-stack docs):

  • WebGL browser-only target
  • Multiboxing (5-character groups) as core feature
  • ECS architecture for 10k+ concurrent entities
  • Actor non-blocking (players/mobs pass through each other)
  • Item verification via WASM cryptography (ML-DSA-44 + BLAKE3)
  • Damage meter, group HUD, intent panel as UI
  • Modular Rustmoor zone (Sections 001-005) with industrial/cipherpunk aesthetic
  • Built-in autoplay/automation (combat, questing, leveling, equipment)

Option A: Godot 4 WebGL Export
What's Already Built

  • 12 scene files (.tscn) with proper Godot 4 format
  • 24 GDScript files (core engine, UI, characters, utilities, test scripts)
  • Full collision layer configuration (3-layer: World/Players/Mobs, actor non-blocking)
  • NavigationServer3D wrapper with batched pathfinding
  • Multibox group controller with formation system (V/Line/Circle/Spread)
  • Intent broadcast system with role-aware suppression
  • Damage meter with DPS/HPS/threat/spell breakdown
  • LOD system (4 levels: high/medium/low/billboard)
  • Item signer/verifier (currently HMAC-SHA512 stubs, ready to swap for ML-DSA-44)
  • Automation engine (combat, quest, leveling, equipment, movement profiles)
  • Validator suite (8 validators for code quality)
  • Build scripts (asset import, navmesh baking, WASM build)
    Strengths for Cipherfall
  1. Scene authoring: Godot's editor lets designers place factories, chimneys, tanks, crates visually — exactly matching the Rustmoor Section 001 layout in spawn_outdoor_section_001.tscn
  2. Collision + navigation built-in: Layer 1/2/3 non-blocking architecture is already configured in .tres-compatible format
  3. WASM crypto bridge: Godot natively loads .wasm modules via WebAssembly class — no extra bridge layer needed
  4. Multibox formation system: Already implemented in multibox_group.gd with V/Line/Circle/Spread offsets
  5. Intent broadcast: Role-aware suppression already coded
  6. Damage meter + group HUD: Both UI systems exist as GDScript + scene files
  7. Automation profiles: Combat rotation, quest chaining, leveling stat distribution, equipment scoring all implemented
  8. Rustmoor Section 001-002: Scene files exist with spawn points, navigation region, ground plane, factory props
  9. Physics: CharacterBody3D with gravity, move_and_slide() already wired up
  10. Rapid iteration: Drag-and-drop scene editing vs. hand-coding Babylon.js scene graphs
    Weaknesses
  11. WebGL export quality: Godot 4.3 WebGL can be heavy (50-100MB+ initial load). Compression helps but not bulletproof.
  12. No ECS in Godot 4: The project documents an ECS architecture but Godot's Node3D tree is scene-graph-based. multibox_group.gd uses dictionaries as ECS-like storage, not true ECS.
  13. Limited custom rendering: For particle effects, custom shaders, or non-standard visual effects, you're constrained by Godot's rendering pipeline.
  14. Bundle size: Even compressed, Godot WebGL exports tend to be larger than hand-rolled Babylon.js.

Option B: Babylon.js TypeScript
What's Already Built

  • 21 TypeScript files (ECS manager, entity system, game scene, camera, lighting, physics, network, delta compression, protobuf bindings, crypto bridge, UI components)
  • Protobuf schema (game.proto) with EntityStateUpdate, CombatEvent, IntentBroadcast, ItemData, PlayerInventory, DropRateAudit
  • WASM crypto bridge types (cipherfall_crypto_wasm.d.ts)
  • Delta compression algorithm (position/rotation/velocity/health/mana)
    Strengths for Cipherfall
  1. True ECS: Babylon.js has no built-in entity system, so you get a clean TypeScript ECS implementation (ECSManager.ts, Entity.ts) — no fighting an engine's architecture
  2. Smaller bundle: Hand-rolled WebGL can be 5-15MB vs 50-100MB+ for Godot export
  3. Custom rendering control: Full access to Babylon.js rendering pipeline, custom shaders, particle systems, post-processing
  4. Type safety: TypeScript + protobuf generated types = compile-time safety for network messages
  5. Performance at scale: With proper ECS + frustum culling + object pooling, 10k+ entities is achievable without Godot's node-tree overhead
  6. No engine lock-in: Pure web tech — runs on any browser, no Godot editor dependency
  7. Faster iteration for code-only: No need to open Godot editor to change game logic
    Weaknesses
  8. No scene editor: Every rustmoor factory, chimney, tank, crate must be positioned via code — no visual layout tool
  9. Rebuild Godot work: The collision layer system, navigation mesh baking, formation offsets, multibox grouping, intent broadcast, damage meter, LOD system, automation profiles — all of that is already written in GDScript and must be ported to TypeScript
  10. No physics built-in: You'd use Oimo.js (via Babylon.js plugin), but collision detection, character movement, gravity all need manual implementation
  11. WASM bridge complexity: Loading ML-DSA-44/BLAKE3 WASM in browser requires WebAssembly.instantiate() — doable but adds a layer of complexity
  12. Asset pipeline: No import tools. glTF loading requires @babylonjs/loaders — manual mesh/material setup
  13. UI systems: Babylon.js GUI (AdvancedDynamicTexture) works but is less polished than Godot's Control node system for damage meters/HUDs

Decision Matrix
Criterion	Godot 4 WebGL	Babylon.js
Rustmoor Section 001-005 development	✅ Already have 12 scene files with nav regions, spawn points, collision layers	❌ Must code every factory/chimney/tank position
Multibox formation system	✅ Implemented in multibox_group.gd	❌ Must port 5-character formation offsets
Intent broadcast + suppression	✅ Implemented in multicast_intent.gd	❌ Must port role-aware validation
Damage meter + Group HUD	✅ Implemented in damage_meter.gd + group_hud.gd	❌ Must port to Babylon.js GUI
NavigationServer3D pathfinding	✅ Batched pathfinding wrapper exists	❌ Must implement custom pathfinding or use navmesh baking
Collision layer config (actor non-blocking)	✅ 3-layer system configured	❌ Must configure Oimo.js collision groups
Automation profiles (combat/quest/leveling)	✅ All 5 engines implemented	❌ Must port to TypeScript
Item verification (ML-DSA-44 stubs)	✅ item_signer.gd/item_verifier.gd ready for swap	✅ WASM bridge works in browser
LOD system	✅ 4-level LOD in lod_manager.gd	❌ Must implement in TypeScript
Scene authoring speed	✅ Visual editor (days)	❌ Code-only (weeks)
WebGL bundle size	⚠️ 50-100MB (compressed)	✅ 5-15MB
True ECS architecture	⚠️ Dictionary-based ECS in GDScript	✅ TypeScript ECS from scratch
Custom rendering control	⚠️ Godot's pipeline	✅ Full access
GDScript vs TypeScript	GDScript is slower, less type safety	TypeScript is faster, type-safe
Team skill requirement	Godot editor + GDScript	TypeScript + Babylon.js API
Development velocity	✅ Fast (visual scenes + code)	❌ Slow (everything coded)
Long-term maintainability	Godot 4.4+ improving WebGL	TypeScript + Babylon.js stable

Recommendation: Godot 4 WebGL Export

For Cipherfall v3.0.0, Godot 4 WebGL export is the clear winner. Here's why:

  1. 80% of the game logic is already written in GDScript: multibox_group, multicast_intent, navigation_server, combat_engine, quest_engine, level_engine, equipment_engine, movement_engine, damage_meter, group_hud, intent_panel, item_signer, item_verifier, lod_manager, asset_loader, spawn_outdoor, player_character, mob_character — all of this. Porting to TypeScript is 4000+ lines of work that duplicates existing functionality.
  2. Scene authoring is critical for Rustmoor: The Rustmoor zone (Sections 001-005) has 15+ static props (factories, chimneys, tanks, crates, corridors, awnings) that need precise positioning. Godot's editor lets designers place these visually. Babylon.js requires manual coordinate math for every prop.
  3. The ECS requirement is already addressed: The project documents an "ECS + NodeTree split" architecture. In Godot, ECS logic lives in GDScript dictionaries (multibox_group.gd uses group_state dictionaries), and the NodeTree handles visuals (scene graphs). This is the hybrid approach the architecture docs describe.
  4. WASM crypto bridge works natively: Godot 4 has a built-in WebAssembly class that loads .wasm modules. No extra bridge layer needed.
  5. Development velocity: With Godot, you can have Rustmoor Section 001 playable in days. With Babylon.js, you're spending weeks building infrastructure before you see anything.
  6. The Babylon.js TypeScript stubs are incomplete: GameScene.ts has loadScene() as a comment, SceneManager.ts loads scenes as empty stubs, PhysicsManager.ts has commented-out Oimo.js code, DeltaCompression.ts calculates deltas but never sends them. They're blueprints, not implementations.
    Exception: If the team has strong TypeScript/Babylon.js expertise and the WebGL bundle size is a hard constraint (sub-10MB required), Babylon.js is worth the investment. But for v3.0.0 with Rustmoor as the scope, Godot wins on velocity.

https://cipherchan.minimal.blog/todo-babylonjs-port-md

0 thanks - 0 tippers

Post A Reply

You must be logged in to reply. Login or register.