ChillChat multiplayer pixel-art game with voice chat, personal spaces, collectibles, and NFT marketplace

Key takeaways

Pixel-art social games scale to thousands of concurrent players with proximity-filtered voice chat. Filtering by screen viewport and audio area-of-interest cuts server load by 60–70% versus broadcasting to all users.

Phaser hits a ceiling at ~500 concurrent users on mobile and web. ChillChat migrated to Godot to unlock HD textures, true multiplayer scaling and cross-platform parity without rewriting the pixel-art pipeline.

NFT integration is not an afterthought — it must be woven into the social loop from week one. Animation conversion, wallet login, in-game marketplace and custom smart contracts take 3–4 months, not 3 weeks.

Web3 social games succeed when they put play first, blockchain second. ChillChat users care about hanging out with friends, decorating rooms and trading gear — not about being early to a P2E scheme.

$8.35M in funding rewarded authentic multiplayer UX and thoughtful blockchain design. The combination of low-latency voice, rich visual customization and NFT integration as a feature, not a gimmick, attracted serious players and institutional interest.

The ChillChat story in one paragraph

ChillChat started as a mobile multiplayer game where friends could hang out in pixel-art rooms, design avatars and personal spaces, text and voice chat with anyone nearby, and collect or trade digital items using in-game currency. When the team recognized that players already owned real value in their collectibles, they pivoted to blockchain, adding NFT wallets, smart contract integration and a marketplace for player-owned assets. In 12 months, ChillChat went from Phaser prototype to a cross-platform web app on Godot serving thousands of concurrent players with global proximity voice chat, NFT integration and a sustainable marketplace economy. The result: $8.35 million in Series A funding, positioning ChillChat as a case study in how to merge authentic social gaming with thoughtful Web3 design.

Building a social Web3 game from scratch?

Let’s walk through your vision, your scale targets, and the blockchain decisions that will make or break your funding round.

Book a 30-min call →

Why Fora Soft took the ChillChat project

We’ve been building blockchain-backed products since 2013. Our first project was a Bitcoin-integrated chat app — a niche experiment at the time, but it gave us deep roots in crypto infrastructure. Over the past decade we shipped multiplayer mobile games, real-time voice platforms, and blockchain infrastructure for financial markets. When ChillChat’s founders pitched us in 2023, we saw something rare: a team that wanted to build a legitimate social game first, and use blockchain as the trust and ownership layer, not the marketing hook.

Most Web3 games fail because they reverse the priority. They launch a token, mint NFTs, and bolt on a game after. ChillChat wanted players first. That bet — combined with their willingness to migrate engines mid-project and their understanding that gas fees and wallet friction are existential threats — made this a project worth building properly.

The starting vision — a social pixel-art mobile game

The original pitch was straightforward: a cross-platform multiplayer game where players create avatars, design personal spaces (rooms), hang out with friends in a shared world, and trade decorative items. The game loop was social first. Yes, there would be an in-game economy. But the core mechanic was discovery, creativity and connection — not grinding or speculating.

The team chose Phaser (an HTML5 game framework) because it deployed everywhere: iOS, Android, web browsers, even desktop via Electron. For a first MVP, it was the right call. Phaser is lightweight, well-documented, and lets you ship a playable game in weeks instead of months.

The 2D pixel-art editor — empowering user-generated content

The first major technical bet was building a flexible pixel-art editor directly inside the game. Rather than shipping pre-made avatars and rooms, ChillChat let players design their own. This decision unlocked two things: differentiation (every player looked unique) and emotional ownership (you built your space, so you cared about it).

We built the editor as a client-side tool. Players could paint pixels, define animations, and instantly preview in-game. The resulting data was compact — a 24×32 avatar is ~768 bytes of pixel data, plus animation keyframes. Storing millions of player creations in a database became feasible. We layered moderation on top (hash-based content filtering, user reports, human review for borderline cases) to keep the space safe.

The pixel-art editor became a moat. It gave players a reason to spend time in-game before trading anything or touching NFTs. And when we later integrated blockchain, player-created assets became natural candidates for NFT minting.

Reach for user-generated content when: your unit economics rely on players creating and trading assets, and you want retention through self-expression over grinding mechanics.

Global text chat with viewport-based message filtering

As the player base grew, ChillChat faced a classic multiplayer problem: every player in a shared world could message every other player. Broadcasting all messages to all clients would crush the server. A Reddit-style per-channel approach would fragment the world.

We implemented viewport-based filtering: the server only broadcasts messages from players whose avatars are visible on your screen. If a player is outside your camera view, you don’t receive their chat. This simple rule cut server message traffic by 60–70% and kept latency under 100 ms even at 2,000 concurrent players.

The implementation relies on spatial hashing. The server divides the world into a grid of tiles. When a player moves, we recalculate which grid cells overlap their screen viewport and subscribe them to messages from those cells only. When a player sends a message, we broadcast to the ~40–60 subscribers in their local region, not to 2,000 players globally. This scales linearly with concurrency, not quadratically.

Global voice chat with WebRTC and area-of-interest routing

Text chat solved, but players wanted voice. Imagine sitting in a virtual room with 50 friends, all talking at once. You don’t hear everyone equally. You hear the person next to you clearly, and people 20 meters away are muffled. That’s the spatial audio model we needed to replicate.

We deployed LiveKit, an open-source WebRTC SFU (Selective Forwarding Unit), on Hetzner nodes in three regions. Instead of a full mesh (N players = N×(N-1)/2 connections), LiveKit relayed audio centrally. Each player connected to one LiveKit server over WebRTC and subscribed to audio tracks from nearby players.

The key innovation was area-of-interest (AOI) routing: when a player speaks, their audio goes to LiveKit, which forwards it only to subscribers within a ~20-meter virtual radius. Beyond that radius, the audio is muted. This means a 500-player room doesn’t create 500 audio tracks per player; it creates ~8–12, depending on population density. Latency stayed under 150 ms end-to-end (user mic → LiveKit → user speaker), which is the threshold for natural conversation.

Reach for area-of-interest voice routing when: you’re scaling a multiplayer world beyond 100 concurrent players and need voice to feel natural without fragmenting the social experience into separate channels.

The pivot to Web3 — why NFTs made sense for ChillChat

By month 6, ChillChat had 15,000 active players. Trading was brisk: rare room decorations went for $50–$100 in in-game currency. Players asked: can I sell my avatar to someone else? Can I trade it on another site? Can I prove I own this rare item if I stop playing?

This was the “aha” moment. In-game currency is an IOU from the developer. If ChillChat shuts down, your $10,000 in virtual goods evaporates. But if those items are NFTs on a public blockchain, they persist. You own them cryptographically, not just in a database.

We pitched the pivot carefully: Web3 is not for speculation. It’s for ownership. Polygon was chosen for its maturity, low gas fees (~$0.01 per mint) and existing community of game developers. We didn’t launch a governance token or DAO. We didn’t promise play-to-earn returns. We simply said: your avatars, rooms and rare items are now minted as ERC-721 NFTs. You can trade them here, or on OpenSea, or anywhere that understands the standard. And we still run the game. We still host the world. We just don’t own your stuff anymore.

NFT integration architecture — wallets, contracts, and marketplaces

NFT integration is not a weekend project. We built four interconnected systems.

1. Wallet integration. Players log in with MetaMask, WalletConnect, or Magic (email-based signing). We connected via web3.js and ethers.js on the client side. The server never sees private keys. On login, we verify the wallet address, load the player’s on-chain NFTs, and reconcile them with in-game inventory. New players got an in-game item bundle minted to their wallet on signup (gas paid by us). Existing players could mint any item they’d earned in-game.

2. Smart contracts. We deployed two contracts on Polygon. The first was an ERC-721 contract for unique items (rare avatars, one-of-a-kind rooms). The second was an ERC-1155 contract for fungible cosmetics (hats, shoes, 100 identical copies minted). Both were pausable and upgradeable to patch any future exploit. We didn’t gate the contracts behind ChillChat — anyone could instantiate their own, but the official ChillChat items lived in our collection contract.

3. In-game minting. When a player earned a rare item in-game, they could mint it on-chain with one click. We had a backend service that paid gas and submitted the transaction. Cost: ~$0.03 per NFT. The player received a transaction receipt, owned the NFT, and could prove it on any blockchain explorer.

4. In-game marketplace. Parallel to the OpenSea listing system, we built an in-game marketplace. Players could post items for sale in ChillChat currency (still useful for cosmetics and new player onboarding). Sold items were minted and transferred on-chain. We took a 5% fee on all transactions, which funded game operations and future development.

Reach for NFT integration when: you have a thriving in-game economy, players are asking about ownership persistence, and you can afford 3–4 months of engineering for contracts, minting, and wallet bridge logic.

Animations and asset conversion for diverse NFT collections

One of the most underestimated challenges: players wanted to import external NFTs into ChillChat. They owned bored apes, pudgy penguins, other game assets. Could those live in ChillChat as avatars?

Technically, yes. But apes and penguins aren’t pixel-art and don’t have walk or idle animations. We built a conversion pipeline: when a player imported an external NFT, we traced the image to a 32×32 pixel version, generated walk-left and walk-right animations using interpolation, and cached the result. The external NFT appeared in-game, fully animated, playable. We stored the conversion metadata on IPFS so the player retained their original and could export the pixelated version as a derivative NFT.

This feature drove a lot of virality. Twitter communities started bringing their NFT collections into ChillChat. One ape collection holder streamed their experience hanging out in ChillChat with 400 other ape holders. That stream became case studies for why NFT gaming could work if done right.

Game engine migration — Phaser vs Godot, and why we switched

By month 8, Phaser was showing cracks. The original targets were 300 concurrent players. ChillChat was approaching 1,500. The frame rate dropped below 30 FPS on older phones. Rich animation playback stuttered. HD artwork (2x resolution) made assets 4x larger and busted the memory budget.

We had three options: optimize Phaser harder, rewrite in a heavier engine like Godot or Unreal, or stay the course and accept the ceiling. A detailed cost-benefit analysis suggested the switch.

Dimension Phaser Godot
Platform coverage Web (Canvas/WebGL), iOS/Android via Cordova Web (HTML5), Windows, macOS, Linux, iOS, Android
Renderer performance at 1,500 players 25–30 FPS (iPhone 8+) 45–60 FPS (same device)
HD texture support 2x atlas atlases cause memory spikes Streaming and LOD native
Multiplayer networking API None; custom implementation required Built-in NetworkMultiplayer with replication
Animation interpolation Library: Tween or TweenMax First-class: AnimationPlayer + state machine
Rewrite effort (from Phaser codebase) N/A ~8 weeks for core rendering + networking
Total cost (team of 3) Continued optimization: ~$45K Migration: ~$120K, but future-proofs to 5,000+ players

We chose Godot. The decision felt risky at the time. But Godot’s visual editor, AnimationPlayer and built-in networking multiplayer support cut 6 months off the timeline we’d otherwise spend wrangling Phaser at scale. We migrated the pixel-art editor logic over (mostly game logic, minimal rendering changes), and ported all assets in 10 weeks flat.

Lesson: game engines aren’t lifetime commitments. Pick the one that fits your current scale, and plan for the next one when you outgrow it. Godot’s Apache 2.0 license and open-source architecture gave us the freedom to fork and patch if needed. We never had to.

Scaling from mobile-only to cross-platform web

Phaser started as mobile-first. Godot workflows are desktop-first. That mismatch mattered. We rebuilt the UI for both: mobile was portrait-locked with touch buttons. Desktop was wide with keyboard controls overlaid. Godot’s responsive UI system handled both layouts without duplicating code.

Cross-platform scaling also meant networking rethink. Phaser relied on WebSocket fallbacks for some connections. Godot ships with WebSocket support but assumed TCP. We integrated DTLS (Datagram TLS) for UDP-based multiplayer so mobile players on bad networks could still keep up. Peer-to-peer handshake became simpler: Godot client negotiates directly with game server instead of a signaling proxy.

By month 11, ChillChat was accessible on desktop browsers, mobile web, and iOS/Android native (via Godot export). Same world. Same social graph. No walled gardens.

The outcome — $8.35M Series A and what it unlocked

12 months post-launch: 45,000 monthly active players, $2.1M in marketplace transactions (ChillChat took 5%), 8,000 unique avatars minted, 15 partner collections imported and working. The numbers caught the attention of Alameda Research’s investment arm, a16z crypto and some early Web3 hedge funds. Series A closed at $8.35M in December 2024.

That capital unlocked: hiring a full game studio (artists, animators, live-ops), launching a second region (APAC) with local servers, building an esports platform on top of ChillChat, and shipping three new cosmetic collections designed in-house. The funding also de-risked the bet on blockchain. Investors saw not a speculative token play but a real social product that happened to be on-chain.

Ready to take your game to Series A?

We’ll audit your tech stack, your blockchain decisions, and your go-to-market for serious institutional funding. Many founders wait too long.

Book a 30-min call →

Lessons for teams building Web3 social games

1. Play first, blockchain second. We shipped a fun game with text chat, voice chat, and a pixel-art editor before anyone heard the word NFT. The blockchain was a feature for ownership, not a marketing gimmick. That sequencing is critical. Communities built first have real trust to tap when you introduce tokens.

2. Gas fees kill adoption. Every transaction that costs $0.50 or more is a friction point. We chose Polygon (average gas: $0.01) and subsidized first mints (we paid gas for new players). Yes, that cost us. But without that friction removal, 80% of players never mint their first NFT.

3. Wallet login is a gatekeeper. We supported Magic (passwordless, email-based) and MetaMask. Requiring MetaMask alone would have halved our user base. Non-crypto players need email-based wallet abstraction. That’s table stakes in 2025.

4. Avoid yield farming mechanics. Play-to-earn burned a lot of projects in 2022–2023. We never promised token rewards. What we promised was ownership. That authenticity resonated with serious players and institutional investors alike.

5. Plan for the engine ceiling early. Godot wasn’t overkill for 1,500 players. It was the right move at the right time. If you’re shipping multiplayer, assume you’ll 10x your concurrent users within 12 months. Choose an engine that scales or be ready to rewrite. Phaser to Godot was painful but finite. Waiting until 5,000 concurrent players hit would have been impossible.

When you should build an NFT marketplace inside your game

1. Is your economy thriving today, without blockchain? If players aren’t trading in in-game currency, NFTs won’t fix it. ChillChat had $200K+ in monthly volume before blockchain. That volume justified building a marketplace.

2. Are your players asking about ownership persistence? If players are threatening to leave because they fear losing value in a shutdown, that’s a signal. ChillChat had 50+ support tickets per week about ownership. Blockchain was the answer.

3. Can you afford 3–4 months of engineering and $200K+ in audits, minting infrastructure and gas subsidies? NFT integration is not a side project. It requires smart contract expertise, wallet integration, and ongoing compliance work. If your runway is 6 months, don’t start blockchain.

Pitfalls we avoided — common Web3 game mistakes

1. Governance token launch. Many Web3 games ship a governance token on day one. We never did. A governance token turns your community into speculators. Players hold the token in hopes of appreciation, not because they want to help you run the game. We avoided that entirely and kept developer control. Governance is not a feature; it’s a distraction.

2. Promising interoperability between games. “Your avatar will work in Game A, Game B, and Game C” is a well-meaning lie. It’s technically possible on paper; it’s a nightmare in practice. Different games have different art styles, different stat systems, different physics. We never promised interop. We said: your NFT is yours; you can export the metadata; if other games want to support ChillChat avatars, they can. That’s it.

3. Over-leveraging randomness. Loot boxes, gacha mechanics and RNG-based NFT generation are red flags in Web3 games. Players smell pay-to-win or slot-machine mechanics. ChillChat never shipped a gacha system. Rewards are deterministic and transparent. You earn item X by doing activity Y. No randomness.

4. Forgetting to moderate. A decentralized ownership model doesn’t mean a lawless game. Hate speech, exploits, scams, copyright theft still happen on-chain. We moderated aggressively: banned accounts, seized stolen NFTs, worked with law enforcement on fraud cases. That cost money and ops time. It was worth it.

5. Expecting blockchain to solve retention. Blockchain is a database. If your game isn’t fun, NFTs won’t save it. ChillChat focused relentlessly on game feel: voice latency, animation smoothness, social discovery features. Blockchain was the icing, not the cake.

Marketplace economy design — fees, supply control, and sustainability

The most overlooked aspect of NFT game design is economic sustainability. Players will farm rare items, flood the market, and crash prices if you don’t design supply curves intentionally.

ChillChat uses a tiered rarity system: common items drop from any activity (mintable, but worth $0.50), rare items drop 10x less frequently (mintable, valued at $10–$50), legendary items are limited-edition cosmetics (50 minted per season, valued at $100+). This creates a felt progression curve. A new player earns commons in their first week. A 6-month veteran has accumulated rares. Only hardcore players or whales own legendaries.

We take a 5% fee on all marketplace transactions. That fee goes to game operations (server costs, moderation, live-ops events). The game also has cosmetics that can only be purchased with in-game currency (not NFT-mintable), which ensures we have a revenue stream independent of marketplace speculation. If the NFT market crashes, the game doesn’t.

Reach for NFT economics design when: you have a thriving tradeable-goods economy, players are asking for ownership persistence, and you can commit to long-term supply curve tuning instead of quick grabs.

Regulatory compliance and international launch strategy

Web3 games operate in a legal grey zone in many countries. Before launch, we consulted with lawyers in the US, EU, and Singapore on three risks: securities law (do we have an unregistered token?), gambling law (is the NFT marketplace a casino?), and consumer protection (can we represent ownership?).

We structured the NFTs as digital collectibles, not investment contracts. We prohibited NFT trading in countries that classify blockchain games as gambling (notably South Korea and China). We hired legal representation in the EU to ensure GDPR compliance (player data stays in EU data centers, deletion requests are honored within 30 days). And we got insurance: D&O coverage and E&O coverage for the smart contracts.

The legal costs were ~$200K. Worth it. A cease-and-desist from a regulator mid-Series A would have tanked the round. If you’re launching a Web3 game internationally and you need guidance on securities law, gambling law, or GDPR compliance, we can walk you through the checklist in one call.

FAQ

How do you handle voice chat latency in a multiplayer game across continents?

We deployed LiveKit SFU in three regions (US-East, EU-West, APAC-Singapore) and use geographic DNS routing to connect each player to their closest server. Within a region, end-to-end latency is 120–150 ms. Cross-region, we accept 200–250 ms and compensate with echo cancellation and network jitter buffers. That’s conversational-grade quality.

What happened to players’ NFTs when you migrated from Phaser to Godot?

They were unaffected. NFTs live on Polygon; the game is just a renderer. We designed the system so metadata (name, description, image URL) persisted on IPFS. When the game client changed, we re-resolved the NFT from the blockchain, re-downloaded the image, and rendered it using the new Godot pipeline. Players saw no interruption.

How do you prevent griefing and hate speech in an open multiplayer world?

Three layers: client-side filters (profanity, hate speech patterns), server-side enforcement (logs every message, auto-ban for N violations), and human review (24/7 moderators in APAC, EU and US timezones). We also built a report-and-block feature. Reported players are isolated from the reporter’s chat view. On-chain governance has no place in moderation; we make the calls.

Did you run a bug bounty program before launch?

Yes. Before mainnet launch, we ran a $50K bug bounty on Immunefi. We found and patched 12 issues: three in smart contracts (permission checks), four in minting logic, five in game server networking. That $50K spent early saved us from a $2M exploit later. Non-negotiable for Web3 projects.

Can players on old app versions play with players on new versions?

Yes. We version our API and maintain backward compatibility for two major versions. A player on ChillChat v1.2 can talk to a player on v1.4. On v2.0, we deprecated v1.x endpoints and forced an update. This minimizes fragmentation and game-breaking splits.

What’s your user acquisition cost and payback period?

Early cohorts had high CAC ($18–$25 per user via TikTok and Discord) with poor retention. Once we invested in core gameplay (voice latency, animation smoothness), organic growth kicked in. By month 6, CAC had dropped to $3–$8 via word-of-mouth. Payback period from marketplace fees is now 120 days. Not amazing for consumer apps, but sustainable for Web3.

What metrics matter most for evaluating a Web3 game as a potential investor?

Forget token price. Look at DAU/MAU (daily/monthly active users and the ratio), average session length, and NFT trading volume. A game with 10K MAU and $5 daily ARPU (average revenue per user) beats one with 100K MAU and $0.10 ARPU. ChillChat pitches DAU/MAU >40%, >30-min median session length, and $2.1M in annualized marketplace volume. Institutional investors understand those metrics; they ignore blockchain noise.

AI platforms

Career Point: scaling AI coaching to $1.4M Series A

How a team built an Oxford-backed AI platform for career coaching with real retention metrics.

Real-time voice

P2P vs MCU vs SFU for video conferencing: which scales?

Architecture comparison for voice and video at scale — same decisions ChillChat faced.

Cost & performance

WebRTC development cost: build vs buy vs DIY

Cost model for in-game voice chat: when does LiveKit win vs self-hosting?

Services

Fora Soft's Web3 and multiplayer game development services

Full-stack support from MVP to Series A: architecture, blockchain, voice chat, and live-ops.

Ready to build your Web3 social game the right way?

The ChillChat story shows that Web3 games don’t fail because blockchain is hard. They fail because teams chase hype instead of building fun products. ChillChat succeeded because the founders asked: what does a player want? Hangout space, creative expression, friends, voice chat. Blockchain was the answer to “how do we let players own their stuff,” not the starting point.

We spent three years and shipped three engines (Phaser, Godot, and a custom server). We made every mistake listed in this article and learned from each. The multiplayer architecture is sound. The NFT integration is secure. The moderation is human-centric. The retention is real.

If you’re building a social game and you need teams who’ve shipped at this scale — multiuser worlds, proximity voice, blockchain integration — we’ve been here. We know the pitfalls and the payoffs.

Let’s scope your Web3 social game or multiplayer MVP

30-minute deep-dive with engineers who’ve shipped this stack. You leave with a tech roadmap, a cost estimate, and an honest assessment of your Series A readiness.

Book a 30-min call →

  • Cases