All Projects
Beta Lead Systems Engineer

CyVerse

A browser-based, first-person cybersecurity training game. Walk a virtual security operations floor and practice the work, with no install.

Overview

Public WebGL beta for identity, defense, and forensics practice in a desktop browser, with captions and a reduce-motion option.

CyVerse is a desktop cybersecurity training game you play in the browser. Keyboard and mouse, no VR, and no install. I built the gameplay across every level, plus the walkable hub, the level doors, and the Mission Status board. Those levels cover orientation, identity and access, cyber defense, and digital forensics. Level 1 is the identity and access example: a briefing, badge enrollment, an MFA vault, data triage, an audit hunt, and a certification exam, with glossary entries that unlock once a station is reviewed.

It was a team project at San José State University, where I led systems engineering and wrote most of the gameplay code. The Security+ Prep Terminal uses practice question sets provided by Dr. San Nicolas-Rocca.

Development Process

1

Hub and level flow

The hub is the menu you walk around in. Hub doors take their open or locked state from LevelProgress. Orientation and Level 1 start open. A later story level opens when the one before it is complete, and digital forensics also waits until three SOC key items are stored. The Mission Status board refreshes from that same record: operative callsign, clearance out of 4, and each row ready, locked, or in development. A return door inside a level stays shut until that level's manager opens it.

2

Accessibility in the build

The live page and the Esc menu both cover captions with adjustable text size, Reduce Motion, look sensitivity, field of view, and status shown by shape and label rather than color alone. Volume splits into master, voice, and effects. In a WebGL build, a line without a recorded clip can be read with the browser Web Speech API. Captions stay on, recorded clips take priority, and TTS is skipped in the editor.

3

Procedural rooms and visual passes

Some levels exist twice: a procedural scene built at play time, and a hand-authored visual pass. SceneCatalog loads the visual pass when that scene is in the build, and falls back to the procedural room if it is missing. Art can live as prefabs under Assets/Resources/Props. If a prefab is absent, the builder uses a primitive, so a missing prop does not break the build.

Challenges

  • Level 1 finds its stations in the scene, so a procedural room and a hand-built room share one flow: briefing, four tasks, then the exam. Scenes from before that task rework fall back to the older review path, and both paths still have to finish the level.
  • The public page and the repo do not number every level the same way, and Level 4 is still in development.

What I Learned

  • Reduce Motion in this project freezes shader animation, hologram spin, HUD pulses, and screen fades. Captions stay on when speech is skipped. That is the bar I want on a first-person browser game, not a caption file added at the end.
  • I keep the hub doors and the Mission Status board on one progress record. Marking a level complete has to open the next door and update clearance together, including the extra keys digital forensics waits on.