FEATURED PROJECT
BattleGroundsWWII
Full-time UI Designer & Scripter • Roblox WWII Game Development
Project Overview
As a full-time UI designer and scripter for BattleGroundsWWII, I created immersive WWII gaming experiences on the Roblox platform. This ongoing project involves developing comprehensive user interfaces, combat systems, and backend architecture for a large-scale multiplayer war game.




Click images to view full size • More development screenshots available upon request
Key Responsibilities
- Designed and implemented polished loading screens with real-time asset tracking
- Developed complex damage calculation and kill tracking systems
- Created weapon spawning and management logic for multiple weapon types
- Built comprehensive player progression systems with XP and leveling
- Implemented DataStore integration for persistent player data
- Designed intuitive user interfaces for combat and gameplay
Technical Implementation
The project required sophisticated backend systems to handle combat mechanics, player progression, and data persistence.
Combat System Example
local function onPlayerDamaged(victim, attacker, weaponName)
if victim and attacker and victim ~= attacker then
local attackerPosition = attacker.Character and attacker.Character:FindFirstChild("HumanoidRootPart")
local victimPosition = victim.Character and victim.Character:FindFirstChild("HumanoidRootPart")
lastDamageDealer[victim.UserId] = {
killer = attacker,
weapon = weaponName or "Unknown Weapon",
timestamp = os.clock(),
attackerPos = attackerPosition and attackerPosition.Position,
victimPos = victimPosition and victimPosition.Position
}
end
end
DataStore Integration
local ok, saved = pcall(function()
return store:GetAsync(player.UserId)
end)
if ok then
lvl.Value = math.clamp(saved, 1, LevelService.MaxLevel)
end
-- Save player data on disconnect
Players.PlayerRemoving:Connect(function(player)
local lvl = player:FindFirstChild("leaderstats")
and player.leaderstats:FindFirstChild("Level")
if lvl then
pcall(function()
store:SetAsync(player.UserId, lvl.Value)
end)
end
end)