A personal zombie survival game composed of blocks
JZBlock is a top-down zombie survival game where players fight off waves of zombies using laser weapons. Version 0.5 represents a complete architectural rewrite, now featuring dual language implementations in both Java and Zig, giving developers the choice between JVM portability and native performance.
- ๐ซ Laser Combat System - Neon projectiles with glow effects and fire rate upgrades
- ๐ง Wave-Based Survival - Increasingly difficult zombie hordes (health scales per wave)
- ๐ Boss Tier System - Three boss tiers with unique pixel-art faces, HP bars, and scaling rewards
- ๐ข Basic Boss (wave 8+) โ green, angular eyes, jagged grin
- ๐ฃ Medium Boss (wave 15+) โ purple, diamond eyes, fanged mouth
- ๐ด Hard Boss (wave 20+) โ near-black skull with red X-eyes and glow border
- ๐ฐ Rando Racing - Gambling minigame accessible from the pause screen; bet currency on 8-lane rainbow races for multiplied payouts
- ๐ฉธ Blood Effects - Splatter particles on hit, persistent fading blood pools on death
- ๐ฏ Top-Down Tactical Gameplay - Strategic positioning matters
- ๐ Health & Ammo Management - Magazine reloading, periodic healing
- ๐ฎ Game States - Main menu, settings, in-game, paused, and game over
- ๐ฐ Economy & Upgrades - Earn currency from kills, upgrade fire rate and damage
- โก Speed Boost - Rechargeable speed boost system
- ๐ฅ๏ธ Full Resolution Scaling - All entities, UI, and effects scale to any monitor at runtime; launches fullscreen
- ๐จ Visual Effects - Entity shadows, ambient lighting, grid backgrounds, neon glow effects
- โก Dual Language Support - Choose between Zig (performance) or Java (portability)
- ๐จ Raylib Graphics (Zig) - Modern, lightweight graphics framework
- ๐ผ๏ธ Swing/AWT (Java) - Classic cross-platform windowing
- ๐งฉ Modular Design - Clean separation of concerns
- ๐ Cross-Platform - Windows, Linux, and more
The v0.5 release is a complete rewrite with:
- Zig + Raylib as the primary, fully playable implementation
- Java + Swing as a secondary implementation (currently a stub, in development)
- Clean, modular architecture with centralized configuration
- Archived original Java implementation preserved at
src/main/archived/
| Feature | Zig Implementation | Java Implementation |
|---|---|---|
| Status | Fully playable | Stub (in development) |
| Graphics | Raylib | Swing/AWT (planned) |
| Performance | Native, zero-cost abstractions | JVM runtime |
| Memory | Manual management | Automatic GC |
| Platform | Compiled binaries | Cross-platform JVM |
| Build | build.zig |
Standard javac |
For Java Build:
- Java Development Kit (JDK) 8 or later
- Any Java-compatible platform (Windows, Linux, macOS)
For Zig Build:
- Zig Compiler (latest version)
- Raylib (automatically managed by build.zig)
# Navigate to scripts directory
cd scripts
# Run the Windows build script (interactive menu)
winbuild.batThe script will prompt you to choose:
- Java - Build using Java/Swing
- Zig - Build using Zig/Raylib
# Navigate to scripts directory
cd scripts
# Make script executable (first time only)
chmod +x lxbuild.sh
# Run the Linux build script (interactive menu)
./lxbuild.shThe script will prompt you to choose:
- Java - Build using Java/Swing
- Zig - Build using Zig/Raylib
To run the original complete game (from archived source):
cd scripts/archived
# Windows
winbuild.bat
# Linux
chmod +x lxbuild.sh
./lxbuild.shZig Implementation (Fully Playable):
- Set up dual-language architecture
- Implement Zig build system with Raylib
- Establish build scripts for both implementations
- Core game loop with state management
- Entity system (Player, Zombie, Lazar)
- Raylib rendering pipeline with visual effects
- Input handling (WASD movement, arrow key shooting)
- Player mechanics with speed boost system
- Zombie AI with chase behavior and separation
- Laser weapon system with ammo and reloading
- Wave management with scaling difficulty
- UI and HUD (health, ammo, kills, wave, currency, upgrades)
- Menu system (main menu, settings, pause)
- Economy system (kill rewards, weapon upgrades)
- Countdown system between waves
- Three-tier boss system with unique faces, HP bars, and scaled rewards
- Blood particle and pool effects
- Rando Racing gambling minigame (pause screen)
- Full resolution scaling โ all entities, UI, and effects adapt to monitor size
- Fullscreen launch with
--logCLI debug flag
Java Implementation (Stub):
- Create modular Java foundation
- OS detection utilities
- Logging utility
- Port game loop from Zig
- Implement entity system
- Add Swing/AWT rendering pipeline
- Sound effects and music
- Settings screen implementation (currently placeholder)
- Java implementation feature parity with Zig
- Additional weapons and enemies
- Level system
- Save/load functionality
- Performance optimizations
- Language: Java 8+
- Graphics: Swing/AWT
- Build System: Standard Java compilation
- Focus: Cross-platform compatibility, ease of development
- Language: Pure Java
- Graphics: Custom Swing/AWT rendering
- Features: Complete game with all mechanics
// Main entry point - src/main/java/Main.java
public class Main {
public static void main(String[] args) {
//...
}
}// Main entry point - src/main/zig/src/main.zig
pub fn main() !void {
//...
}This is a personal project, but feedback and suggestions are welcome! If you'd like to contribute:
- Fork the repository
- Create a feature branch (
git checkout -b feature/AmazingFeature) - Commit your changes (
git commit -m 'Add some AmazingFeature') - Push to the branch (
git push origin feature/AmazingFeature) - Open a Pull Request
This project is licensed under the Apache License 2.0 - see the LICENSE file for details.
| Action | Key |
|---|---|
| Move Up | W |
| Move Down | S |
| Move Left | A |
| Move Right | D |
| Shoot Up | Up Arrow |
| Shoot Down | Down Arrow |
| Shoot Left | Left Arrow |
| Shoot Right | Right Arrow |
| Reload | CTRL |
| Upgrade Weapon | U |
| Speed Boost | SPACE |
| Pause / Resume | ESC |
| Restart (Game Over) | R |
| Open Rando Racing (Paused) | B |
- Java v0.5 implementation is a stub โ run the Zig version for the full game experience
- Settings screen is a placeholder (controls display only)
- Archived version may have platform-specific rendering quirks
--logflag must be passed at launch; there is no in-game toggle yet
Developer: cjRem44x Repository: github.com/cjRem44x/JZBlock
- Raylib - Amazing graphics library for Zig
- Zig Programming Language - Modern systems programming
- Java Community - For the robust JVM ecosystem
Status: ๐ฎ Zig version playable | Java version in development (v0.5) | Bosses, blood, and gambling added Language: Zig (primary) & Java (in progress) Platform: Cross-platform (Windows, Linux) Graphics: Raylib (Zig) | Swing/AWT (Java โ planned)
Enjoy playing JZBlock! ๐ฎ๐งโโ๏ธโก
