Build Games Where Every NPC Feels Alive
Imagine your game:
A merchant who refuses to serve you because you robbed his brother three hours ago.
A village that evacuates before the raid because the scout saw the army and told everyone.
Nobody scripted these moments.
Your players will never stop talking about them.
Build the Game No One Else Can
The market is crowded. Better graphics won't make your game stand out, but a world that feels genuinely alive will. Games that offer true emergent narrative—where players share screenshots and stories of unscripted interactions—generate the deepest loyalty and the strongest organic growth. That word-of-mouth is your ultimate revenue engine.
CULTURE IS PHYSICS
Anthropologist Clifford Geertz wrote that "man is an animal suspended in webs of
significance he himself has spun."
In traditional games, those webs—culture, religion, laws, taboos—are just flavor text.
In Warweaver, Culture is Physics. It is an invisible field of gravity that
pulls
thousands of agents toward unique reactions and interpretations deterministically.
The Promise We've All Been Waiting For
This means players don't just clear dungeons; they interact with societies. They can introduce a heresy that fractures a kingdom. They can invent a technology that rewrites the moral code of a village. They can create, alter, or destroy entire cultures.
- Emergent NPC behavior driven by systemic culture. The word-of-mouth players share.
- 10,000+ autonomous agents with ECS-style composition. Populate entire cities, not just rooms.
- Fully deterministic, fully replayable. Ship bold gameplay mechanics safely.
10,000 Minds, One Living World
Most NPC systems cap out at a handful of "smart" characters. Warweaver lets you fill an entire world with thinking agents, and the more you add, the richer the emergent gameplay becomes. Factions form. Economies shift. Stories emerge that no designer scripted.
WHAT 10,000 THINKING AGENTS CREATE
Factions that ally and betray based on shared history.
Economies that respond to scarcity, hoarding, and trade routes.
Emergent stories your players will screenshot and share.
Built on an allocation-free kernel so your world stays smooth at any population.
Define Rules. Watch Worlds Come Alive.
Emergent gameplay doesn’t come from more scripts. It comes from better rules.
You define the sandbox vocabulary and constraints. Warweaver runs it deterministically at a tick
rate you choose.
When something surprising happens, you don’t “try to reproduce it.” You replay it from a seed
and
tick with a reasoning trace.
// Schema Definition (Before Simulation Starts)
// All schema definitions happen before Tick 0. The schema locks.
using Warweaver.UnityAdapter;
using UnityEngine;
public class GameController : MonoBehaviour
{
private WarweaverManager _manager;
private WarweaverAdapter _adapter;
void Awake()
{
_manager = FindObjectOfType<WarweaverManager>();
_adapter = _manager.Adapter;
var greedHandle = _adapter.CreateAttribute("Personality_Greed", 0f, 100f, 50f);
var reputationHandle = _adapter.CreateAttribute("Reputation_Player", -100f, 100f, 0f);
var goldHandle = _adapter.CreateAttribute("Resource_Gold", 0f, 9999f, 100f);
int scamOpId = _adapter.CreateOperator("Trade_Scam_Player");
int fairTradeOpId = _adapter.CreateOperator("Trade_Fair_Price");
int merchantId = _adapter.CreateArchetype("Merchant", new ArchetypeConfig
{
RequiredAttributes = new[] { greedHandle, reputationHandle, goldHandle },
AllowedOperators = new[] { scamOpId, fairTradeOpId }
});
// Schema is now locked. Start simulation.
_manager.StartSimulation();
}
}
// Signal Injection
// The kernel processes these deterministically in the next tick.
// No immediate side effects. No Unity callbacks from kernel.
void OnPlayerEnterShop(Vector3 shopPosition)
{
int playerProximitySignalId = _adapter.CreateSignal("Player_Proximity");
_adapter.InjectSignal(
signalId: playerProximitySignalId,
position: new System.Numerics.Vector3(shopPosition.x, 0f, shopPosition.z),
radius: 10f,
duration: 60 // ticks
);
var merchantId = GetMerchantAgentId();
var reputationHandle = GetReputationHandle();
_adapter.SetAttribute(merchantId, reputationHandle, playerReputation);
}
// Telemetry Reading
// Simulation runs at a fixed TPS you choose. Rendering runs at 144fps.
// They don't block each other. Zero allocations.
void Update()
{
_adapter.SwapTelemetryBuffers();
var snapshot = _adapter.GetTelemetrySnapshot();
for (int i = 0; i < snapshot.AgentCount; i++)
{
var agent = snapshot.Agents[i];
UpdateAgentPosition(agent.AgentId, agent.X, agent.Y);
UpdateAgentAnimation(agent.AgentId, agent.CurrentAction);
}
}
// Forensic Debugging
// Get the reasoning trace for any agent at any tick.
void DebugAgentDecision(ushort agentId, int tick)
{
var trace = _manager.Host.GetReasoningTrace(agentId, tick);
Debug.Log(trace.ToString());
/* OUTPUT:
[Agent 42 "Merchant"] Tick 1247 Decision: "Refuse_Service"
------------------------------------------------
> Candidate: "Trade_Fair_Price"
- Base Score: 0.50
- MODIFIER [Reputation_Player=-40]: -0.80
- Final: 0.0 (Pruned)
> Candidate: "Refuse_Service"
- Base Score: 0.20
- MODIFIER [Personality_Stubborn=80]: +0.60
- Final: 2.30 (WINNER)
*/
// Replay exact tick with same seed. Same result. Bit exact determinism.
_manager.ResetSimulation(seed: originalSeed);
_manager.StepSimulation();
}
Work With the Founder
I'm Ramon, a solo founder based in Tokyo, and I built every line of Warweaver.
When you evaluate the SDK, you work directly with me. Not a support queue. Not a ticketing
system.
Me.
I love game dev, and I love the people who do it.
Jump on the Discord and let's talk. Warweaver questions, architecture problems, game design
rabbit holes, whatever.
The door is open.