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

These are the final projects we developed during the last two weeks of CSS452 in Winter Quarter 2022 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
Dane Ojala,
Pavel Peev

API: Raycaster Rendering

Our API implements several classes that will be used together to allow users of the game engine to create 3D gameplay using a Raycasting engine. This API allows users of the game engine to quickly implement a retro-3D look, complete with texture support, camera movement, and more. Users can use a RCCamera in conjunction with a GridMap object of textured Tiles to implement basic games with raycast graphics. RCSpriteRenderable objects allow the user to add enemies, pickups, etc. that are rendered by the RCCamera as well.

Project Process: Functionality Survey     API Proposal Presentation     Progress Demo    

Links to: Demo of API       SDK Documentation.       Tutorial


Developers
Ayrton Muniz,
Vicent Allen

API: Terrain Generation

Our module supports generating a 2D top-down terrain generation via using gradient noise. This terrain will consist of a grid of renderables that are called tiles. These tiles can be any texture to form the look of a terrain. A terrain consists of multiple layers to allow for more than one pass in the terrain. For example, the first pass can be the ground (like grass) and the second pass can determine where trees are placed. Basic functions are used to manipulate or gather information about the terrain. For example, the position (0,0) can contain a tile that is user defined as “Water” and you can manipulate this “Water” tile to instead become “Ice” using the API.

Project Process: Functionality Survey     API Proposal Presentation     Progress Demo    

Links to: Demo of API       SDK Documentation.


Developers
Elygh Thao,
Yohanes Koeswono

API: Real Time Pause

Our API supports Real Time Pause functionality that strategy games tend to have. Gives developers access to RTP Game Objects that have certain states that they enter depending on the situation. RTP Game Objects work with RTP States to work with whatever states users want to currently be in. For example: RTP Game Objects can enter a freeze state where the Game Object would be frozen or enter an attack state. Currently supports 3 kinds of inputs: Key Pressed, Key Clicked, and Commands.

Project Process: Functionality Survey     API Proposal Presentation     Progress Demo     Final Presentation    

Links to: Demo of API       SDK Documentation.      


Developers
Jesse Sterchi,
Nick Ryan,

API: Dialog System and Textboxes

Our module supports the display of customizable textboxes and the ability to control the flow of dialog. Game developers are able to create TextRenderable objects, upload sets of dialog and display instructions as an array of Text objects, and manipulation the flow of the dialog using an instance of the Dialog class. Alternatively, game developers can implement their own conditions for triggering the dialog/moving forward in the dialog prompts. Without the addition of our module, the only way to show dialog was using the FontRenderable class. This did not allow for a way to display the desired text in a fitted box, keep track of which text should be displayed, set up a character image to go with the dialog, or easily change the flow of the dialog.

Project Process: Functionality Survey     API Proposal Presentation     Proposal     Progress Demo    


Images and some dialog from Resident Evil 4 by Capcom and Resident Evil VIllage
Links to: Demo of API       SDK Documentation.       Tutorial


Developers
Aman Swaroop
Kuzey Gok
Myles Dalton

API Title: Projectile Systems

Our module supports the creation of and general implementation of projectile systems.Our projectile system will be an extension of the Game.Object class found in the game_objects file of the engine. Our current game engine uses the Game.Object class to create projectiles. While this is possible, it is a very lackluster and barebones implementation of a projectile. The game objects class was created as a main class for any game object made in the game and cannot be considered a specialized solution for projectile objects.

Prject Process: Functionality Survey     Proposal Presentation     Proposal     Progress Demo    

Links to: Demo of API       API documentation.


Developers
Nathan Miller
Tyler Miller

Runtime Game UI

This application allows users to edit, run, and save game objects. Game object attributes that can be manipulated is size and position within a scene. Users can also load their own game scenes to be edited in the window.

Project Process: Functionality Survey         Proposal Presentation         Progress Demo         Final Demo        

Links to: Demo of API         API documentation        

Developers
Khushaal Kurswani,
Jino Chai

Turn-Based Engine

Our module provides the ability to support a game which has a turn-based system, where players take turns making decisions and seeing how said decisions impact the overall state of the game. It allows game developers to set up a turn manager that manages the turns for a set of players.

Project Process: Functionality Survey     API Proposal Presentation     Proposal     Progress Demo    

Links to: Shooter Demo       Tic-Tac-Toe Demo       SDK Documentation & Tutorial


Developers
Nicholas Martin,
Brendan Frye,
Antoinette Calkins

API: API: Particle System Improvements

Our improvement to the game engine’s particle system is to abstract the particle emitter into preset classes which support particle behaviors without requiring complex particle functions to be passed in to define behavior.
Users of this engine can define ambient and emitter based particles which have customizable features which make sense within the context of the particle type. Particles additionally can support hit based interactions such as termination upon impact with other objects.

Project Process: Functionality Survey     API Proposal Presentation     Proposal     Progress Demo     Final Demo    

Links to: Demo 1: Simon Says       Demo 2: General API Demo       SDK Documentation.