TerminalCraft
- 2 Devlogs
- 13 Total hours
A Minecraft-inspired sandbox game that runs entirely in your terminal
A Minecraft-inspired sandbox game that runs entirely in your terminal
This is a bigger update than usual, so here’s a quick look at how TerminalCraft started and where it is now.
Starting from nothing
TerminalCraft started as a simple idea: make a 2D Minecraft-style game that runs inside a Windows terminal, using text characters instead of graphics.
The first version only had a game loop, basic input, and a debug screen. I also made one important rule: game logic should never depend on curses. This made testing much easier.
Getting the game to work
Getting everything running on Windows was harder than expected.
At first, I thought the renderer was broken because the screen was mostly black. It turned out there simply wasn’t a world yet.
Then I ran into Python compatibility issues with windows-curses. After fixing that, I found another problem: arrow keys worked in some terminals but not in Windows Terminal or VS Code.
These terminals handled arrow keys differently, so I had to add extra key mappings.
Adding the world and player
The next step was creating the world. It now has 10 different block types and a basic terrain generator.
I also improved rendering so blocks with the same colour are drawn together instead of one at a time.
After that, I added the player. You can now:
Walk and jump.
Break and place blocks.
Move the camera.
Select blocks using a 9-slot hotbar.
There were also plenty of physics bugs along the way, especially when walking into walls and jumping immediately after spawning.
Adding mouse controls
I added left-click mining and right-click block placement.
This required converting mouse positions into world coordinates, so the game knows which block was clicked.
Mouse support still needs more testing in Windows Terminal, but keyboard controls work normally.
Fixing more bugs
After testing the game, I found several smaller problems.
Holding movement keys sometimes stopped working.
Holding the place key could place two blocks.
Mining blocks outside the player’s reach failed without explaining why.
Some actions failed without telling the player what went wrong.
These are now fixed. The game also displays short messages explaining why an action cannot be performed.
The project currently has 342 passing tests.
What still needs work
There are still quite a few problems:
Many blocks look almost identical.
The debug panel takes up too much screen space.
Some keys are bound but don’t do anything.
A full inventory can become a problem.
The terrain generator is still very basic.
The world is currently 512 × 128 tiles, mostly filled with stone. It works, but it doesn’t look much like Minecraft yet.
What’s next
My next priorities are:
Improve block appearances.
Make the debug panel optional.
Add a way to drop items.
Improve terrain generation with caves, ores, and better landscapes.
Start working on crafting and tools.
There’s still a lot to do, but the game has come a long way from an empty folder.