Games/Code

I like programming.

Diazo Prints

Demo showcasing the JavaScript module

It's an online node-based editor for writing code, inspired by Unreal Engine's Blueprints, that can be expanded to support any language.

Don't get me wrong, writing out the code is faster and more customizable in a lot of ways, but some problems are easier to solve when you can visualize it, some people prefer the node interface, and it makes it incredibly easy to start writing code in a language you've never used before.

You can add custom modules, giving you a node interface for any kind of text-writing

Documentation

Zack's CPU

I had been learning a bit about programming on a sega genesis and thought it would not only be fun but also a learning exercise to write my own computer in software.

It's best described as an emulator for my own theoretical computer. It runs a machine code that I created, and then I made both an assembly and BASIC language that compile into that machine code.

It runs a BIOS written in assembly that can read or write to values in memory through commands.

I've also written a code editor that makes writing programs much easier. I had to write my own text editor using JavaScript and a paragraph tag in order to implement syntax highlighting.

It's 16-bit, big-endian, and got a tile system for graphics, with sprites.

Documentation
Boot screen for my javascript computer

Z3dPy

After making a ray-caster for Crackers 3D, I wanted to try out bona fide 3D with rastering.

It started as a Python port of a C++ series on YouTube, but I not only expanded it with my own features, but had a lot of optimizing to do.

Z3dPy is a self-contained 3D game engine that runs entirely in Python, making it versatile and cross-platform. It's blazing fast for Python standards, rendering nearly 1000 triangles in a fraction of a second, and can draw all the pixels of those triangles in about a quarter of a second. The closest 'competitor' is Rendeer, which promises framerates measured in minutes, and is only built for Pillow

It needs something to drive the screen, as it's meant to be used on anything, from a 2D engine to a bitmap to a grid of LEDs.

This project taught me a lot of Python.

More about Z3dPy

Crackers 3D

For a college assignment, we were learning the basics of game creation with Phaser. I wanted to challenge myself and made my own raycaster.

This was a fun project, I tried to fit in as many features as I could before the deadline. I dusted off my sine knowledge and utilized Phaser's line intersection functions (that apparently have some issues in the cardinal directions) to get the distance to the walls for each pixel. Turning that distance into the wall height took forever, I just couldn't get it looking right, so I eventually decided to look online and I implemented a formula by 3DSage on YouTube, and after that the scaling issues were pretty much gone.

Once the basic rendering was complete I wanted to try out dynamic lighting. When a visual ray finds a wall, it'll then shoot another ray towards each light source, getting the distance from the light source to make it look like a point light. In order to add shadows, that ray can be tested for collisions to determine if that part of the wall reaches the light source. I even added reflective walls that as the name implies reflect the ray off the wall and do all the calculations on that ray instead, producing real-time ray-traced reflections. I removed this feature because it ended up making it look like there was another room you were supposed to be able to go to that was blocked off by an invisible wall.

I also built a level editor for fun, you can make your own level by placing walls, enemies, collectables, and lights, then export them as text which can be loaded into the main game.

Teaching AIs to Drive

Neural network in unreal engine being taught to drive

AI had an explosion in popularity recently, and wanting to learn more about it I built a neural network in Unreal Engine, in the hopes I could teach it to drive.

I built 2 AIs: The first is a simple evolution, and the second is proper neural evolution.

Built entirely out of unreal engine blueprints.

Simple Evolution

Neural Evolution

*Hosted on YouTube because they are both over a minute
The blueprint behind the car's brain.
The UI representation of the car's brain
The car's sensors

Road to Chaos

Crazy Tracks with Chaos

I wanted to learn as much as possible on the backend, so I used store assets and stuff for the visuals.

The premise was quite simple, I wanted to make a racing game with Flatout-like mania, focused on tracks that were as strange as they were completely drivable. I was inspired by Super Mario 64 Chaos Edition, and implemented items that would spawn around the track and when touched cause anything to change, from visuals, like swapping textures, to something that kinda mattered, like changing the scale of your vehicle, or setting the camera to orthographic. These effects would either stack or only remain temporarily, depending on what they were.

I made 3 maps, 2 gamemodes plus an "off" mode for serious racing, I even added network functionality to play LAN, or with port-forwarding could be played across the internet.

To reduce file size, I only included the City, so the other level options won't work.

Older version but has all maps included.

Controls

Up Arrow or W to Drive Foward

Left and Right or A and D to steer

Shift to Boost

E to turn sharply

Backspace once to reset car orientation, hold to reset position.

Y to start the race, because why

Known Issues

Physics collisions can be a bit buggy because the levels are too large and need an open world setup, but it should be rare.

Destructibles will be invisible until the player gets close, no idea why.

Horror 5

Horror game with the generic goal of collecting a key before escaping, but I wanted to flex my creativity with the enemy.

The name of the monster is never told to the player. It's invisible but generates a lot of heat. Tracks are burned into the ground for a short period of time and players measure the temperature of the surrounding air with a thermal gun to get approximate distance. Using the termal gun comes with trade-offs to add risk and reward: The gun has a limited battery, so players are forced to limit checking the readings, and depth of field is used to draw the eyes toward the thermal reading, which decreases visibility of everything else in a very dark game.

All of the assets were custom-made in blender (with some default engine stuff). It was originally coded in blueprints but I've been making attempts to revive this game as a C++ project.

Controls

WASD to move, mouse to look around

F to toggle flashlight

Shift to Run

Right Click to check thermal gun

E to interact

Known Issues

The starting splashscreen is super compressed at first until it fully loads.

The Monster picks a random location to spawn, and despite my best efforts it sometimes spawns out of bounds.

The gate doesn't open after collecting the key, but it can be walked through

Because the gate never actually opens, the game will assume you cheated if you escape, and show a creepy ending title.

Amazon Stowing Simulator

I used to work at an Amazon warehouse, I had the idea for a horror game.

Players were tasked with stowing the rest of the packages in a what appears to be a deserted warehouse, with a killer snowman out to get the player.

Snowman might seem random but it was based off a real snowman that was set up around the holidays. I thought if it was remade to be creepy, it would make for a pretty good enemy.

Employees have a laundry list of rules about where items can be placed, and not following it will cause your scanner to make a loud beep, giving away your location to a nearby snowman.

This one isn't very complete, I hadn't gotten to making the snowman, but I programmed the bins and items in Unreal Engine before I couldn't decide wether I should make it in VR and/or switch to the Source 2 engine.

I utilized UE5's Nanite in order to render a warehouse worth of bins and shelves.

VR Projects

Ever since I got a quest 2 I've been wanting to make a VR game.

I started with a VR bloons demo where you're sitting at a desk with an SMG.

The drawers were actually a lot more difficult to program, making sure objects stay inside the drawer when the drawer snaps to the player's hand.

The balloons will path find directly to the player, so course design and spawn placement is completely adaptable.


Can you tell I don't know how to name games?

Extremely complicated horror game that was meant to give a real challenge to myself, and other people who are familiar with the mechanics.

You are being attacked by a drone army from all sides and must defend yourself while finding a way to call the police.

Inspired by Welcome To The Game, this is a brutally difficult survival game about juggling many different tasks, and keeping track of everything.

Controls

WASD to move, mouse to look around

E to interact

Space is a universal "back" so it gets off the desk, gets out of hiding, get out of menus, etc.

Backspace to abort camera restart

While on the PC, left and right switch between camera feed and secondary menu

Known Issues

Don't use the flashlight, after enough times the phone password gets a lot more complicated.

Sometimes a drone can appear while you are looking at the phone, causing an unfair death.

This game is intentionally super complicated, check the itch.io page's description to get a full explanation of the mechanics.

Javascript

Play Clicks

The clicker game that doesn't take very long to beat.

Clicker Game Image
Kirby Samurai Image

Play Samurai Kirby

Test your reflexes.

Play MyFirstJavascript

Shrek is blocking your way and you must defend yourself.

The first thing I made with JavaScript.

My First Javascript Image

Clickteam Fusion

For my 2D games.

Attack Box

The name creativity is going off the charts with this one.

This game was going to be very meta. The player starts in what appears to be a normal game about boxes, but during one of the levels you meet a suspicously aware NPC. This NPC shows you a glitch it discovered and this results in being released onto the creator's desktop. Chaos ensues.

This was such an ambitous idea, I was planning an entire storyline with a few chapters, and different visual styles to match the situation, like pixel art for the game, modern for the desktop, and command line for the final act.

I might come back to it some day.

-Not downloadable-

Rubix Cube Timer

One of my friends asked me to make a timer for rubix cube speedrunning.

The timer starts when you let go of the spacebar. Press space again to stop the timer.

Also keeps track of best and average times.

-Not Downloadable-

C#

My first step into programming.

ROT Creator/Finder

Tool for creating and decoding ROTs.

I made a ROT decoder as my first real application.

Treat the interface like a game, arrow keys to move, enter to proceed

View the Source Code Here

If the program doesn't start, you may need to download .NET 6 Runtime

Zacks ROT Finder Screenshot

Brutally Difficult Hangman

Hangman that seems to pick difficult words for some reason.

Zacks ROT Finder Screenshot

As an exercise I made a very simple game: Hangman. I gave it a massive list of words from the internet but it also supports 2-player.

Treat the interface like a game, arrow keys to move, enter to proceed

View the Source Code Here

If the program doesn't start, you may need to download .NET 3.0 Runtime

Restaurant Simulator (C#)

The most real simulator you'll ever play.

Another coding exercise where I made the most real restaurant simulator in the world: customers must wait in real time for their food.

Treat the interface like a game, arrow keys to move, enter to proceed

View the Source Code Here

The program is published as an installer, so prerequisites will be included.

Zacks Restaurant Simulator screenshot