# Gaming: PermisionlessRPG

The PermisionlessRPG Engine makes fully onchain game development easier. It solves three major problems: (1) Interoperability between arbitrary nfts and tokens (2) Asset transfers between players in game (3) Hacks and exploits by unrestricted wallet to wallet transfers of assets. The Permisionless engine solves these problems through virtual Location smart contracts that have full privilges to all assets controlled by NFT game entities at the current Location. This means that Locations can be added by anyone permisionlessly, since only a game entity's current Location has access to the entity's controlled assets. So users must be careful to only travel to Locations that are safe; but the advantage is that Locations can fully control asset transfers between game entitys and can define arbitraty rules defining how assets engage with each other. For instance, a Location might define rules for how an NFT Game Entity can equip or unequip certain item NFTs, while a different Location might grant bonuses to the Game Entity based on which items are equipped to determine the chance of winning assets from other players at the same Location. An additional benefit is if a Game Entity is transferred between different wallets, its in game state is retained.

The PermisionlessRPG Engine is a smart contract virtual location based rpg engine designed to run on EVM blockchain networks. It has 3 main components: (1) A singleton LocationController, storing Entity NFT locations and allows anyone to add new Locations to the game world (2) Storage vaults for both IERC20 and IERC721 tokens, which define which in game NFT entities control which assets, and (3) Interfaces for Locations which guide developers on which methods must be implemented for their Location to be compatible with the LocationController. Additionally, sample implementations of Entitys and Locations demonstrate common use cases such as restriction which Locations Entitys can travel to and from a Location, spawning new Entitys, and utility libraries for using Chainlink VRF to generate rolls for in game outcomes.


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://docs.czodiac.com/czodiac-litepaper/technologies/gaming-permisionlessrpg.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
