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

These are the final projects we developed during the last two weeks of CSS452 in Winter Quarter 2023 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
Abdul Naveed,
Trent Lucas

API: Projectiles

Our module supports the creation of easily implementable projectiles for the user to create. The definition of the projectiles of this API is they are moving objects which are bounded by a lifetime or a collision(supports multiple objects). The API provides an efficient method for users to implement projectiles into their games without sacrificing their ability to achieve completely personalized projectile behavior. Each projectile supports the ability to use sprite animation, object collisions, a lifetime, and end events by basic set functions available to the user. Every projectile is also defined by basic movement variables: position, gravity constant, point direction, velocity, acceleration, and rotational acceleration. All of these variables can be changed for the user to achieve the behavior they desire out of a projectile object. Our projectiles API was created using chapter 10.3 from the book Build Your Own 2D Game Engine, Second Edition.

Project Process: Functionality Survey     API Proposal Presentation     Progress Demo    

Links to: Demo of API       SDK Documentation.

Assets Used: Background 1, Background 2, Blue Fireball, Explosion, Weapons, Character


Developers
Parth Gupta,
Chandra Pandian

API: Normal Mapping + Lighting

This module supports functionality for a developer to incorporate normal maps and lighting to textures, which enhances the illusion of depth and detail for the texture. In order to simplify the development process for the user, this module provides two classes which include LightSource and NormalMapRenderable. Users can manipulate a variety of attributes of a LightSource such as position, color, intensity, and falloff. Users can create NormalMapRenderables and attach a texture, a normal map, and a set of lights to illuminate the renderable.

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

Links to:   Demo 1     Cops & Robbers Demo     SDK Documentation & Tutorial


Developers
Peter Chen,
Martin Matsudaira,
Jonathan Robinson

API: Dialogue System

Our module supports the generation of moddable, RPG like, dialogue text boxes similarly seen in games such as Fire Emblem. Developers using our API will be able to create text, characters, and custom text boxes. Along with those features, the developer will also have the ability to modify text scrolling, text color, text audio, and sprite animation.

Project Process: Functionality Survey     API Proposal Presentation     Progress Demo    

Links to: Demo of API       Demo 2 of API       SDK Documentation.


Developers
Brandon DeGuia,
Pranshu Bhardwaj,
Tony Le

API: (Multi) Controller Support

Our module supports the use of 1-4 controllers as an alternate input system for game engine inputs. The user can query the game engine for boolean inputs of all buttons on the controller, plus a coordinate map for each of the two joysticks, describing its position from (-1, -1) to (1, 1). Queries are also based on a given index, so the user can query for button A on controller 2, for example. This allows the user to create local multiplayer games using controller inputs. NOTE: ONLY standard XBox controller layout is supported for this API.

Project Process: Functionality Survey     API Proposal Presentation     Progress Demo    

Links to: Demo of API (Single Controller)       Demo of API (4-Player Pong)       SDK Documentation.


Developers
Justin Seo,
Po-Lin Tu

API: Weather System

Our module is an API that helps the game developers to create weather systems in their 2D games. Specifically, our module allows the developers to define certain weathers and then activate them later to create visual effects on the screen for their games. The weather effects that appear have defined behaviors, which the developers can alter in certain ways. The parameters that define behaviors can be adjusted by setter methods of our API. The textures that are used to create these weather effects, such as sunshine and clouds, are given by the developers upon weather creation.

Project Process: Functionality Survey     API Proposal    

Links to: Demo of API       SDK Documentation.


Developers
Trevor Nguyen,
Mikhail Ermolenko,
Ani Rao

API: Map Editor

Our API supports creating a map based editor scene. The map supports storing textures in each coordinate as a tile or an object, and allows the user to manipulate the map through adding, removing, or moving objects or tiles. Our module utilizes 2 new classes: MapGrid and Tile. MapGrid allows the user to initialize and create a data structure to store the map, while tile extends texture renderable to allow manipulation of tiles. The current game engine doesn’t support an easy way to create a map. While the user can create texture renderables to create a map grid, the user doesn’t have a way to manipulate specific texture objects, or have each object interact with each other without extensive coding. Our module allows ease of use on defining a space to manipulate, storing and placing objects, and interactions between objects in the map. Below describes a diagram of our current API.

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

Links to: SDK Documentation.       Demo1       Demo2


Developers
Jason Nguyen,
Gerel Pasag,
Noa Uritsky

API: Automatic Scrolling Landscape

Our API project supports the creation of an illusion of an infinite moving background using multiple layers of images and/or assets. Each layer is independent from others in the way that the scrolling speed is unique and creates an immersive and interactive imagery of a moving content. Images/assets that are moving slower and layered further back will appear as though they are far from the viewer, while those moving faster and layered more front will appear closer. Some of the functionality that our API supports includes the ability (for the user) to set the image/assets, scrolling speed, direction, and size of any image/assets. There is also the freedom for the user to be able to create as many layers as they want. This is done by creating a new Background class that allows the user to create multiple layers of automatically moving objects. The current engine has some support for parallax effects, but does not have implementation or support for automatic scrolling effects.

Project Process: Functionality Survey     API Proposal Presentation     Progress Demo    

Links to: Demo of API       SDK Documentation.