Inspiration

We wanted to play Minecraft.

But Minecraft is $29.99, way too expensive for our budget.

So we made our own.

We didn't have any hardware to run Minecraft on.

So we made our own.

What is KennyCraft?

KennyCraft is a Voxel-based game ran entirely on a single FPGA. We have implemented

Tracks Entered

  • NVIDIA Track
  • CapitalOne Track
  • Hardware Track
  • MLH Best Use of Solana

How we built it

Using an ARTY A7-100T FPGA, we implemented a System on a Chip (SoC) which executes CPU-like and GPU-like instructions. Using this hardware, we built a custom Voxel-based engine with a, b, and c.

We implemented mobs, specifically the Villager, Chicken, and Zombie. They each have unique mechanics, like pigs wandering around or zombies chasing the player. Each mob is a NVIDIA Nemotron XXXXXXX agent running.....

Villagers have two roles; a Banker and a Contractor. The player can exchange Solana with the Banker for Kenny Coin (KCN), which can then be spent with a Contractor to open contracts to construct buildings.

The ledger system is implemented using Capital One's Nellie API. This is also being visualized in a local dashboard....

Challenges we ran into

  • Hardware limitations: The FPGA only has 256 Megabytes of DDR3 RAM with an additional ~192 KB of on chip memory. Minecraft's minimum requirement is 8 Gigabytes.
  • The clock speed of the FPGA is maxed out at 100 MHz compared to modern PCs that run at GHz.
  • There was no prior implementation of a rendering pipeline on the chip. Rendering pixel by pixel gave us <1 frames per second.

Accomplishments that we're proud of

  • Taking a basic rendering pipeline that ran at ~0.8 fps at 160 x 120 resolution and improving it to a much more robust pipeline through hardware-software codesign to reach ~100 fps on 320 x 240 resolution.
  • Fitting a voxel engine and game on an incredibly resource limited device.
  • c

What's next for KennyCraft

Separate the TPU into a CPU and a GPU, then make it Turing Complete.

Built With

  • arty-a7-100t-fpga
  • assembly
  • c
  • python
  • systemverilog
  • tcl
Share this project:

Updates

Submission history