Third-year Computer Science student and experienced Roblox Scripter with 12+years of Lua expertise.
BX

Technical Expertise

Systems Architecture
OOP Design Patterns
Full-stack Development
TypeScript
Roblox-TS
Performance Optimization
Memory Management

Frameworks & Libraries

Architecture & State

Knit
Rodux
Matter
ProfileService
ReplicaService
DataStore2

Core Systems

ByteNet
NetworkOwnership
Trove
Janitor
Promise
PID Controllers

Featured Projects

Liberty Heights NYC

Liberty Heights NYC

A thriving NYC-based roleplay experience with over 660,000 visits and 100+ concurrent users. Features detailed city environments, comprehensive roleplay systems, and persistent player progression.

Roleplay
City Life
Persistent Data
Social Systems
Economy
TENEMENT TERROR

TENEMENT TERROR

A PS1-style survival horror game featuring sophisticated AI pathfinding, atmospheric lighting, and environmental storytelling. Includes custom character mechanics, inventory system, and cinematic elements for an immersive horror experience.

Horror
AI Systems
Character Controllers
Dynamic Lighting
Environmental Puzzles
Puzzle Collection

Puzzle Collection

A collection of UI-based puzzles implemented using React-Lua, demonstrating modern web development practices in Roblox. Features multiple puzzle types with progressive difficulty scaling.

React-Lua
UI/UX
State Management
Puzzle Design

Code Samples

NPC Dialogue System

A sophisticated dialogue system with branching conversations, state management, and interactive UI.

local NPCDialogue = {}
NPCDialogue.__index = NPCDialogue

local TweenService = game:GetService("TweenService")
local Players = game:GetService("Players")

function NPCDialogue.new(dialogueData)
    local self = setmetatable({}, NPCDialogue)
    self.dialogueData = dialogueData
    self.currentNode = nil
    self.isActive = false
    self.ui = nil
    return self
end

function NPCDialogue:Start(player, startNode)
    if self.isActive then return end
    self.isActive = true
    self.currentNode = startNode or self.dialogueData.startNode
    self:ShowDialogue(player)
end

function NPCDialogue:ShowDialogue(player)
    -- Create and show UI
    self.ui = self:CreateDialogueUI()
    self:UpdateDialogueContent()
    self:AnimateUI()
end

function NPCDialogue:HandleChoice(choice)
    if not self.currentNode.choices then return end
    
    local nextNode = self.dialogueData.nodes[choice.nextNode]
    if nextNode then
        self.currentNode = nextNode
        self:UpdateDialogueContent()
    else
        self:End()
    end
end

function NPCDialogue:End()
    self.isActive = false
    if self.ui then
        self.ui:Destroy()
        self.ui = nil
    end
end

return NPCDialogue

Chain Reaction Puzzle

A React-Lua implementation of a 'Lights Out' style puzzle game with progressive difficulty.

local ChainReaction = {}
ChainReaction.__index = ChainReaction

local React = require(game.ReplicatedStorage.Packages.React)
local e = React.createElement

function ChainReaction.new(props)
    local self = setmetatable({}, ChainReaction)
    self.size = props.size or 5
    self.grid = {}
    self.moves = 0
    self:InitializeGrid()
    return self
end

function ChainReaction:InitializeGrid()
    for i = 1, self.size do
        self.grid[i] = {}
        for j = 1, self.size do
            self.grid[i][j] = false
        end
    end
end

function ChainReaction:ToggleCell(x, y)
    -- Toggle clicked cell and adjacent cells
    self:SetCell(x, y, not self.grid[x][y])
    self:SetCell(x+1, y, not self.grid[x+1][y])
    self:SetCell(x-1, y, not self.grid[x-1][y])
    self:SetCell(x, y+1, not self.grid[x][y+1])
    self:SetCell(x, y-1, not self.grid[x][y-1])
    
    self.moves = self.moves + 1
    self:CheckWinCondition()
end

function ChainReaction:SetCell(x, y, value)
    if x >= 1 and x <= self.size and y >= 1 and y <= self.size then
        self.grid[x][y] = value
    end
end

function ChainReaction:CheckWinCondition()
    for i = 1, self.size do
        for j = 1, self.size do
            if self.grid[i][j] then
                return false
            end
        end
    end
    return true
end

return ChainReaction

Door Service (Knit)

A Knit service managing door interactions, animations, and state synchronization.

local DoorService = {}
DoorService.__index = DoorService

local Knit = require(game:GetService("ReplicatedStorage").Packages.Knit)
local Promise = require(game:GetService("ReplicatedStorage").Packages.Promise)

function DoorService:KnitStart()
    self.doors = {}
    self:InitializeDoors()
end

function DoorService:InitializeDoors()
    for _, door in ipairs(workspace.Doors:GetChildren()) do
        if door:IsA("Model") then
            self.doors[door.Name] = {
                instance = door,
                isLocked = door:GetAttribute("Locked") or false,
                isOpen = false,
                animation = door:FindFirstChild("AnimationController")
            }
        end
    end
end

function DoorService.Client:InteractWithDoor(player, doorName)
    return Promise.new(function(resolve, reject)
        local door = self.Server.doors[doorName]
        if not door then
            return reject("Door not found")
        end
        
        if door.isLocked then
            return reject("Door is locked")
        end
        
        -- Toggle door state
        door.isOpen = not door.isOpen
        self.Server:AnimateDoor(door)
        resolve(door.isOpen)
    end)
end

function DoorService:AnimateDoor(door)
    if door.animation then
        local track = door.animation:LoadAnimation(
            door.isOpen and self.openAnim or self.closeAnim
        )
        track:Play()
    end
end

return DoorService

Experience Highlights

Project Scale

• Liberty Heights NYC: 660k+ visits
• 100+ concurrent users
• Active community management

Team Experience

• Lead Developer
• Systems Architecture
• Community Management

Work With Me

Available for Roblox development projects. Experienced in rapid adaptation to existing codebases and team workflows. Strong focus on code quality, performance optimization, and scalable architecture.