Platform: XNA (PC/360)
Language: C#
Technology: XNA
Development: 6 months
Team: 3 tech, 5 art
Role: Technical Director (Lead Engineer)
This was a dual-purpose project to create an XNA game engine for the USC GamePipe Lab, and to create a game to prove the engine.
Game - Artemis Chronicle: Journey into the Gaea, a fantasy world threatened by a looming dark force. Play the role of Aya, an expert archer who seeks the power of a divine artifact to fight the darkness that plagues her home village. Using your bow and arrow, strategically plan your attacks to defeat enemies from afar, and gather clues to solve puzzles.
Engine - NitroX: NitroX focuses on loosely coupled subsystems interacting primarily through messages. The engine aims to avoid monolithic class hierarchies by "decorating" game objects with functionality rather than relying on inheritance. It features powerful yet flexible graphics, real-time physics, complex AI, as well as integrated audio and UI. Gameplay programming is significantly accelerated by the features of the C# language and the programming patterns used to architect the engine.
My Responsibilities:
- Core Architecture
- Subsystem Infrastructure
- A/synchronous Messaging System
- Logic System - functionality 'decoration'
- State Manager
- Multi-threading
- Graphics
- Scene Graph
- Material Shaders - Characters, Skin (Fake SSS), Environment
- Post Processing - Bloom, Blur, Desatruation
- Shadows
- Parallel-Split Shadow Mapping
- Smoothing blending with baked level shadows
- Aya (Heroine) Texture
- Optimization
- Physics
- Integration and optimization of JibLibX physics library
- Character controller
- Synchronization between physics and graphics threads
- Input
- Polling and dispatching input events for gamepad, mouse, and keyboard
- Providing input events with useful data - relative values, previous state
- Player Mechanics
- First and third person locomotion
- Bow and arrow weapon mechanics - load, fire, reload, holster
- Coordinating input, gameplay, physics, and animation
- State management
- Input fine tuning
- Animation
- Integration of XNAnimation library
- Skeletal animation controller
- Skeletal transformation in the vertex shader
- Bone specific transform offsets (allows player lean up/down)
- Camera
- First/third person player camera w/ FOV transition
- Level overview camera w/ spline track
- Raycast check so cameras do not intersect level geomerty
- Smooth transition between cameras
- UI Design
- Main menu
- Pause menu
- Crosshair