PROGRAMMING

LONG-TERM EXPERIENCE

  • Midflight Interactive (Lead Programmer, 2023—)
  • Risk Universalis (Auxiliary Programmer, 2024–2025)

PORTFOLIO

RISK UNIVERSALIS III SPRITE SYSTEM (2025)

The sprite system was a proposed addition to Risk Universalis III. It would have replaced the very out-of-date textbox system and introduced a new textbox system alongside a comprehensive system that allows a user to place a custom model, for more immersive roleplay. Models were supplied by NotoriousUser1.

Below is a snippet of code from the server logic, and a demo. It interprets the action taken when you choose to modify or delete a sprite.

TooltipSignal.OnServerEvent:Connect(function(player, owner, signal, sprite)
  assert({signal == "Delete" or "Edit"}, `[SpriteService] Invalid signal: {signal}`)
  if signal == "Delete" then
    SpriteService_ServerModule.Delete(sprite)

    if Players[table.unpack(owner)] then
      Subtract:FireClient(Players[table.unpack(owner)])
    end
  elseif signal == "Edit" then
    EditPlacement:InvokeClient(player, owner, sprite)
  end
end)

MIDFLIGHT INTERACTIVE (2022—)

Since our inception, I have done all of the programming. Over time, I have used less and less external assets, and made more things myself.

STATE LINE CITY (2023) – comprehensiveUI v3 & HOUSING

I did all of the animation and frontend work, as well as the backend. In this work and all my others, I use a Tween module by Collect1ve, which makes it a bit simpler to do tweens (it just shortens what you end up typing).

Below are walkthroughs of two houses I scripted. You can view more photos on my building page.

MISCELLANEOUS PROJECTS

I made this system that sets railroad switches remotely. Good for use in dispatching. Below is a snippet of code that handles changing back to the Enter button from the "Normal / Realigned" button set. This system is currently for sale! 750 Robux. DM to purchase a copy.

local Reset = function()
    if EnterButton.Visible == true then return
    else
        EnterButton.Visible = true

        Tween({NButton, RButton}, 0.2, "Sine", "InOut", {BackgroundTransparency = 1, TextTransparency = 1})
        Tween({NButton.UIStroke, RButton.UIStroke}, 0.2, "Sine", "InOut", {Transparency = 1})

        Tween(EnterButton, 0.2, "Sine", "InOut", {BackgroundTransparency = 0, TextTransparency = 0})
        Tween(EnterButton.UIStroke, 0.2, "Sine", "InOut", {Transparency = 0})

        task.wait(0.2)
        NButton.Visible = false
        RButton.Visible = false
    end
end