Winter 2021 CSS452: 2D Game Engine Development. Final Projects

These are the final projects we developed during the last two weeks of CSS452 in Winter Quarter 2021 as ways to demonstrate our understanding of game engines, specifically, the GTCS game engine we have learned built during this class.

NOTE: You should run the games using the Chrome web browser. Explore 11 does not support AudioContext and Mozilla Firefox (v 39.0) does not support GLSL shaders and thus will not allow the games to run.


Developers
Jason Dekema
Zach Hanneman

Grid System

Our Grid System supports the establishment of a grid-based coordinate system within games. Objects can be bound to the grid, managing all movement and interactions within the grid, or serve as a way of simplifying placement of some objects while maintaining unrestricted movement of other objects.

Project Process: Functionality Survey     Proposal Presentation     Proposal     Progress Demo    

Links to: Demo of API       API documentation.


Developers
Connor Goan
Weston Goggins
Stephen Swetonic

API Title: Window Support

Template: Our project adds support for windows similar to those you would find on Microsoft Windows. They can contain a viewport and are draggable and resizeable. Other renderables can be made draggable and resizeable as well.

Prject Process: Survey Presentation     Proposal Presentation     Github        

Links to: Demo of API       API documentation.


Developers
Satrya Pradana,
Nihal Sandadi,
Adhiesha Jayasinghe

Procedural Terrain Generator

Description: Our module provides users with the ability to generate procedural terrain, with a number of parameters affecting the shape and appearance of the terrain. We provide the ability for developers to define a terrain of layered tiles, with each tile layer comprised of tiles with a certain texture (defined by the developer). Furthermore, we include several presets for the developer to use, such as mountains, plateaus, and valleys, as well as functionality enabling developers to input their own, customized terrain structures, which then procedurally spawn in the generated world. Finally, we offer the ability for developers to input object textures and have those textures appear as objects on the surface of their terrain, such as trees and rocks.

Project Process: Functionality Survey     Proposal Presentation     Proposal     Progress Demo    

Links to: Demo of API       API documentation.


Developers
Brandon Vassion
Chris Wu
Kenneth Ven

Map Editor

Description: This map editor API will allow users to create various types of Map Editors. The API provides a Map class that utilizes sets of MapObjects and Terrain which can be freely modified by the user. The API supports Terrain traversability and Object passability to give a more realistic feel to the map.

Project Process: Functionality Survey     Proposal Presentation     Proposal     Progress Demo    

Links to: Demo of API       API documentation.


Developers
Victor Avelar
Daniel Lorentz
Noah Reiniger

Fog of War

Our module creates a fog of war effect that is rendered over the map. Users can select what image the overlay is, how big the field of view is for an object, and how many objects have fields of view.

Links to: Demo of API       API documentation.


Developers
Scott Shirley - @scottin3d
Kevin Blair - @MadArkadian
Nicholas Chambers - @SeleniumEclipse

UI Canvas API

The UI Canvas API provides centralized support for the game designer to access UI controls such as buttons, sliders, toggles, ect. Currently in gEngine, 'UI' objects need to be created using renderables and would need new individual behaviors for each different type of object. Our UI Canvas API allows for a modular and easy way to combine all UI into one simple package.

Prject Process: Functionality Survey     Proposal Presentation     Proposal     Progress Demo    

Links to: Demo of API       API documentation.


Developers
Sukeerth Vegaraju,
Nikhil Alapati,
Gabriel Oliver

API: Raycasting and Bounding Volume Hierarchy

Our module supports raycasting and a way to group game objects with bounding volume hierarchies (BVH).
Users can create objects and insert them into the heirarchial bounding volume manager. Which then, the user could create raycasts and detect hits in an efficient manner without a huge performance cost. Developers looking to use many raycasts for static objects would find this API very useful for cost efficiency.
Without BVH, checking raycasting collision is Big O(n), where n is all gameobjects that could possibly be collided. With all gameobjects grouped in a BVH, checking raycasting collisions at best is Big O(log(n)) and at worst it's O(log(n) * n).

Project Process: Functionality Survey     API Proposal Presentation     Proposal     Progress Demo    

Links to: Demo of API       SDK Documentation.       Tutorial


Developers
Yaniv Schwartz
Nick Soerens
Patrick Miles

Lighting System API

Template:This API supports the drawing of a lighting system relative to other lights and objects. Objects will cast a shadow behind them when lit from the front. This shadow can be cast from one of the types of lights that we implemented

Project Process: Functionality Survey     Proposal Presentation     Proposal     Progress Demo    

Links to: Demo of API       API documentation.


Developers
Leonardo Mota-Villaraldo
Cheuk-Hang Tse

TurnSystem API

Our module supports local turn system. Users can create a turn system that can adapt to different turn types (Timed, Conditional, Priority). Our module provides an Setting.Builder class that allow the user to set the turn type, max number of player allows, and required parameters based on the turn type. Our module supports a Setting object that can be built using the builder object. It is used get parameters setted by the Setting.Builder object. At last, our module supports the TurnSystem Object, which must be initialize by the setting object. Our module only supports 2 or more user in the turn system.

Prject Process: Functionality Survey     Proposal Presentation     Proposal     Progress Demo    

Links to: Demo of API       API documentation.