Project Categories

Project Setting Personal
Team Size 1
Role(s) Creator / Developer
Languages C#
Software/Tools Used Unity (engine), Visual Studio (code), GIMP (texturing), Blender (modeling), LMMS (music/sound), Git/GitHub Desktop (source control)
Status Early Alpha, temporary hiatus

About

Unknown Entity 2 takes place aboard a Resurvatarian space station in orbit around the Shanem's second moon. Contact with the lunar bases on the moon have gone dark. In the scramble to re-establish contact, the station soon went dark. A bio-mechanical race has taken over the station.
You are a security officer working aboard the station. You got separated from your team while sealing off a safety zone for numerous Resurvatarians. You make way to your shuttle to grab what you can in order to restore the station and find out why these "entities" are here.

Description from the official game page

Unknown Entity 2 is the sci-fi first-person-shooter sequal to Unknown Entity. It is in early alpha, with a focus on improving AI from the previous game, implementing world-based interactable UI, and utilizing hierarchical prefabbing to create detailed, sophisticated space-station-themed levels. Work on this project started the summer of 2018. This essentially was a take on Unknown Entity from newfound knowledge I learned about OOP and C# and combining it with my pre-existing experience and skill with Unity. As the game is still very early in its progress, much of what is on this page will be expanded upon as the game is developed. The game is currently on a hiatus as of July 2020. UE2's open-station level design is inspired from Prey/System Shock.

My Work

Modeling

  • Panel-based interior design that overlays primitive planes created using ProBuilder and fits the theme of the game
  • Numerous decorative objects that are designed to accent interiors
  • Equipment such as computer terminals and large-panel screens that keep in mind the potential for the player to interact with them
  • Clean meshes with optimized import and prefab settings
  • Animations for individual entities for different AI states (stationary, wandering, hostile)

Graphics / Level Design

  • Hierarchical prefabbing that allows for snapping different rooms together easily and quickly
  • Interconnecting rooms that create a cyclical, cohesive layout (as opposed to linear) to fit the theme of the game
  • Clean sci-fi aesthetic paying careful attention to subtle normal mapping and material specular/metallic properties

Code / Testing

  • Utilized grayboxing method for prototyping stage of AI
  • Developers console to be used for prototyping and testing assistance
  • Awareness in AI - none, partial (player nearby, but not close enough, moves to and updates position more slowly), and full (actively firing on player, moving around to various spots), along with line-of-sight for entities with ranged attacks and room awareness for intelligent movement and extending stationary entity range.
  • Independent code - improvement from tangled interdependencies in original Unknown Entity, highlighted with organization using assembly definitions and namespaces
  • Clean player code using overloads for different cases of incoming damage
  • Use of inheritance/polymorphism/interfacing for AI and player to allow for less direct class awareness and cleaner, simplified code (e.g. damage contribution toward ICharacter interface rather than handling each type of AI)
  • Component-oriented code - e.g., Player / AI both can use a WeaponController class, which in turn has Weapons that both can use; allows for modularity and prevents against unecessary amounts of re-implementation of similar code / functions
  • Clean, self-commenting, organized code following a formatting guideline with XML documentation

UI/UX

  • Physically-based world UI for interacting with objects, such as those for completing objectives or upgrading player stats
  • Use of Unity's new Input System for all controls to allow for multiple inputs and event-based input
  • Controls menu which provides a visual interface to rebinding controls for the Input System
    • Translation of control names useful to Input System to meaningful characters and custom symbols for keyboard, mouse, and gamepad
    • Data structure for saving control preferences and loading them into Input System
    • Additional settings for controller-based preferences such as headbobbing and FOV shifting
  • Settings menu which provides options for various audio levels, graphics settings, and post-processing; uses a data structure for saving and loading preferences
  • UI navigation using keyboard or gamepad, functional for both main menus and in-game windows

Samples

These are some screenshots, videos, and code snippets that come from the game. Note that these come from different stages of its development (noted in captions)

Screenshots

Code

Places

Home Page Goldenwere
IndieDB Game Page
Source Code GitHub Repo