Into the Light

"Into The Light"

A third-person action adventure game which follows the story of Will as he follows his son, Elliot, in a realm that leads to paradise. You play as Will who wields a holy baseball bat that can vanquish evils spirits!

Course: CAPSTN2 (Thesis Project 2)
Type: Thesis Project
Term: Second Term, AY. 2016-2017
Genre: Action Adventure
Softwares:
     - Unreal 4
     - Photoshop CC
     - Illustrator CC
     - Maya 2016
     - ZBrush
     - Substance Painter
     - Substance Designer
     - Bitmap2Material
     - Microsoft Word
     - Streamframe 
Team:
     - Paul Anton Rae Aguilar: Lead Game Designer, Game Director, Level Designer, Texture Artist, 3D Animator, Co-Producer
     - John Alson Entuna: Project Lead, Technical Director, Lighting Artist, Character Artist, Gameplay Programmer, Co-Producer
     - Alexandra Arcega: Environment Artist, UI Artist, Marketing
     - Mario Joshua Ignacio: Lead Programmer, Game Designer, Script Writer
     - Jed Ralph Pascua: Art Director, Environment Artist, Texture Artist, Character Artist, Animator
     - David Jean-Robert Ramos: Adviser

Actual Contributions:

      • Game Design Document
      • In-Engine Level Design
      • Project Management
      • Level Visual Scripts
      • 3D Assets (Texture and Animations)

With both an initial thesis project and internship experiences, the team was given the goal to create a game based on an upped rubrics at the beginning of the term. 








Game Design Document

Same as the previous capstone project, we were required to have a theoretical framework for this one. What we decided to focus on this time is something psychology-related. In our research, we encountered the concept of: Life Course Theory

Life Course Theory was defined as "a sequence of socially defined events and roles that the individual enacts over time". This means that all events that happen to a person's life contributes to their actions in the future. This was applied in the game through flashbacks that happen to Will's son which unfold why he came to his fate.

The innovative features that we have for this game are:













  • Outburst - An ability that allows the player to inflict AOE damage to surrounding enemies. All enemies will be knocked back which can make this totally turn the tables.
  • Aging System - As an effect of interacting with several scripted objects (or performing an Outburst), the Will can turn into either a child or an elder. Aging due to scripted objects will be permanent until another objects is interacted with in contrast with aging due to Outburst- which is temporary. A child version of Will is more nimble and can crawl through small spaces while the elder version is slower in both movement and attack speed.
  • Time Flow - Will also gains the skill of manipulating time flow. The player can speed up or slow down time based on the situation. Sometimes, quick moving platforms or an obstacle can kill Will on its normal speed. Using the time flow allows Will to pass through these types of obstacles.


  • In-Engine Level Design

    For this project, I'm the one assigned to setup the levels using the Unreal Editor. I get to script and setup more gameplay related objects this time. I was able to create gating objects that requires the player to kill the necessary enemies to open the gates and implement several other obstacles.


    Level Layout

    Using UE4's Level Editor, I laid out the map's different areas. With the Landscape Tool, I sculpted the outdoor and painted the environment's land. Then, I proceeded with the placement of several foliage around the area.




    Triggers

    Throughout the level, there are several Triggers which give feedback to the player when the Player Character reaches its bounds. These includes Animation Triggers which I used to play specific character animations.


    There were also Tutorial Triggers which flashes a GUI information regarding certain mechanics that they recently had access to. Here, I was able to create and animate the screen movement of the GUI using UE4's UMG.




    Other triggers are as simple as Walk Triggers. These locks the Player Character on the Walk state. This is usually used on safe areas to slow down the pacing and sometimes match with the monologues.




    Obstacles

    Aside from placing obstacles throughout the game, I've also implemented most of them. I used UE4's visual scripting tool, Blueprint, to implement these.

    Pendulum
    One of the first obstacles I've created for the game is the Wrecking Ball/Pendulum. This obstacles initially swings too quick for the player to get through. Using the Time Flow Mechanics, the current time state should be set to Slow.

    In my implementation, I used a reference to the Player Character which I used to get the current state of the Time Flow Controller. From there, I used the current state to set the speed of the Pendulum. Also, this won't kill the character when it's on the slow state.



    Moving Platform
    The Moving Platform is a simple obstacle that moves from one point to another. However, some platforms are either too quick or too slow. This requires the player to utilize the Time Flow Mechanics in order to progress successfully.

    Like the pendulum, I used a reference to the Player Character to get the current state of the Time Flow Controller. I used the state to set the movement speed and the wait time of this Platform.




    Gates
    This Gates or Blockages are used to restrict access to a certain area. Each gate has a requirement to be open. One of the first few gates I've implemented is the TimeFlowDependentBlockage. This gate requires the player to set the current Time Flow to a specific state in order to open.
    The implementation of this obstacle was more complex than the others. Since this obstacle has a single behavior, which is to open and close, but has different requirements to trigger that behavior, I've decided to ask the gameplay programmers to implement a parent blueprint that does the action when it's unlocked.

    After the implementation of the parent blueprint, I've created child blueprints using that to implement the conditions that I want to set. For this instance, I just again took a reference of the current state of the Time Flow Controller and just tick the isUnlocked bool when the current state is the required state.




    Enemies

    Balancing
    For easy data tweaking of the Player and Enemy stats, I've requested the gameplay programmers to create a Data Table containing all the data I need to tweak.



    Enemy Spawners
    As part of the level pacing, I've placed several enemy spawners throughout the level. In this process, I first place a Spawn Trigger which activates when the player enters its bounds. Then I place Spawn Points which indicates the spawn position of the enemy and the type of enemy that will spawn.


    Combat Blockage
    During enemy encounters, I lock the player with the area- making sure that all enemies are defeated before the progress. The gates/blockages here also inherits from the parent blueprint. This time, I took a reference on a Combat Detector implemented by the gameplay programmers to know when to lock and unlock the blockages.




    Additional Gameplay Footage








    Project Website

    Ragnarok Protocol

    "Ragnarok Protocol"

    An Action Role-Playing Third Person Shooter game with elements of Platforming. You, as the player, will control the Valkyrie. She's a cyborg equipped with a gun that can contain different types of bullets which are useful in most situations.

    Course: CAPSTN1 (Thesis Project 1)
    Type: Thesis Project
    Term: Third Term, AY. 2015-2016
    Genre: Action Role-Playing Third Person Shooter
    Softwares:
         - Unreal 4
         - Photoshop CC
         - Illustrator CC
         - Maya 2016
         - ZBrush
         - Substance Painter
         - Substance Designer
         - Bitmap2Material
         - Microsoft Word
         - Trello
    Team:
         - Paul Anton Rae Aguilar: Project Lead, Lead Game Designer, Level Designer, 3D Artist, Co-Producer
         - John Alson Entuna: Lead Programmer, 3D Character Artist, Co-Producer
         - Alexandra Arcega: Environment Artist, UI Artist
         - Mario Joshua Ignacio: Programmer, Game Designer
         - Jed Ralph Pascua: Environment Artist, Texture Artist, Character Artist, Animator
         - David Jean-Robert Ramos: Adviser

    Actual Contributions:

          • Game Design Document
          • In-Engine Level Design
          • Project Management
          • Minor Level Visual Scripts
          • Minor Props

    This is a thesis project where we create a game based on a rubrics given to us at the beginning of the term. We went on a production with an adviser guiding us on the process from pre-production to the end.






    Game Design Document

     Since this is an academic project, we first did some research to decide our approach or framework for the game. As a group, we decided to focus on the Learning process of an individual. Eventually, we encountered one of the well-known concepts of teaching: Transfer of Learning.

        According to D. Perkins, Transfer of Learning is the ability to apply skills, knowledge, and/or attitudes that were initially learned from one situation to a different situation. Basically, the context of learning is different from actual application.

    The innovative features that we have for this game are:

















  • Bifrost System - aside from the Valkyrie's combat bullet, she will have special bullet that can connect two objects and create a bridge between them. Areas that are too far can be accessed using this. Also, objects can be pulled towards each other. (This was later changed into a different system called 'Tether System')
  • Body Parts System - enemies will have weakpoints. Some of them will have their weakpoints placed on hidden areas of their body. Utilizing the Bifrost System's Pulling Capabilities (Now, 'Tether System') will allow the Valkyrie to reveal the parts of the enemy and shoot at it.
  • Einherjar System - throughout levels, dead people can be discovered. The Valkyrie has a special ability to scan a dead person and obtain its cognitive functions. In a way, the Valkyrie can see the person's last moments. As a reaction to extreme emotions, special abilities can be unlocked which can help change the tides of battles.


  • In-Engine Level Design

    For this project, I was assigned to setup the levels using the Unreal Editor. For me, this was a great experience as it enabled me to discover alot of tools that can make game development faster. Though I know that there are still several tools to be discovered, I believe that my experience in this production is still significant.


    Bifrost Platforms
    One of the key features of the game is the Bifrost system. Throughout the levels, I've placed several Bifrost Platforms for the player to connect in order to progress. These platforms should be within the minimum distance for them to connect with each other.





    Tether Platforms
    Similar to the Bifrost platform, I've also placed several Tether Platforms in different areas of the levels. The Tether platforms are slightly different as it must be set to Rooted or Movable.
    Movable Tether Platforms are pulled towards the other tethered object and Rooted Tether Platforms stay as is when tethered. Also, minimum distance between the two platforms can also be set.






    Enemy Spawners
    I've also placed several Enemy Spawners to set conflict areas. In this process, I place the Spawner in the level and set the minimum distance for it to activate. Then, I place Spawn Points within the area to set the initial position of the enemy and the enemy type. Then, I connect the Spawn Points to the Spawner.







    Cover System
    Part of the Conflict Areas are setting up walls and barricades for cover. In this process, I first setup meshes the a plan to use for covers. Then, I place a Cover Trigger on it.
    The Cover Triggers are color coded to correspond to the cover position. We used blue for the middle part of the barricade. This makes the player character crouch when hiding in the middle of the barricade and stand when shooting. Then, we used red for the edge of the barricade. Still, this makes the player either crouch (for lower barricades) or stand (for higher barricades) while hiding and peak on the side when shooting.






    Additional Gameplay Footages




    Project Website

    PKYU Engine

    "PKYU Engine"

    PKYU Engine is created to demonstrate how Scene Graphs would work in a component based architecture game engine. Inspired by Unity’s gameobjects, the different classes would revolve around the engine’s own GameObject class. Components such as MeshRenderer and Transform would be present to manipulate the creation of objects. GLEW is also used inside the engine.






    Course: G-ENGN2
    Type: Final Project
    Term: First Term, AY. 2015-2016
    Softwares:
         - Visual Studio
         - Microsoft Word

    Team:
         John Alson Entuna: Engine and Systems Programmer
         - Paul Anton Rae Aguilar: Engine Designer, Game Programmer, and Documentation
         - Justine Maurice Orprecio: Engine and Systems Programmer

    Actual Contributions:
          • Technical Design Document
          • Doxygen API Documentation
          • Engine Demo (Tic Tac Toe Game and Sliding Game)


    For this project, we were tasked to create a game engine that uses the GLEW library to render the objects inside the scene. Also, we need to have a kind of scene management for us to use.


    Technical Design Document

    The engine contains several features that will allow users to focus on the game's content more instead of optimizing the engine.

    Features:

    • Scene Management System
    • GameObject System
    • Input Management System
    • Network Management System
    • Prefab System
    • Tag Systems
    • Vertex System

    Component System:

    • Transform
    • Collider
    • MeshRenderer
    • BoxRenderer
    • ModelRenderer
    • Shaders
    • Audio
    • TextRenderer
    • Textures

    As the one responsible for the Technical Design Document, I was also able to help in forming the actual flow of the engine. I was involved in laying out different coding decisions.



    Doxygen API Documentation


    Aside from the TDD, I was also responsible to create an API Documentation using Doxygen. Along with the development, I was maintaining the API Documentation.






    Engine Demo • Tic Tac Toe • Sliding Game


    After the development of the engine, we were required to create a game that would apply every component of the engine produced. I was assigned to create both game for the team.



    For the Tic Tac Toe game, we were required to apply networking to it. Thus, it was made to play with two players from two different computers. My buddy, Alson, helped me in using the networking feature as he was the one to developed it. On the gameplay side, my friend, Gymmy (Justine Orprecio) helped me create the win-lose condition for the game.







    As for the Sliding Game, we were tasked to create a game similar to one of the Pokemon Gyms where you need to slide through ice. On this part, I created a physics system utilizing the vector feature of the engine. Concepts such as velocity and acceleration was used for this game.