Skip navigation

Monthly Archives: May 2016

Final project for my Game Development program. A three week Game Jam to show off as a tech demo.

Topics I bravely attempted, and successfully pulled off for this project are:

Procedurally generated texture (Fire)
– Rendered a procedurally generated flame using a noise, and game time to change the value over time, to a framebuffer.

Omnidirectional cubemap shadows
– Using the same technique ofshadows, but having to render the entire scene 6 times for each direction of a cubemap, and saving the depth. There are 4 flames, so there are 4×6 render passes to calculate the depth values for all of the shadows before the final render pass.

Character Animation
– Loaded multiple .FBX character models, and successfully rendered them with smooth transitioning with current states.

Multithreading

Job Queue

HTML5, Javascript, Phaser, Team of 3

Developed a simple bubble popping browser game. Connection between game client and server using Javascript, and a TCP connection.

Used Vagrant Box for consistent development across multiple development machines.

Communicated to Facebook Graph API for player authentication. REDIS was used for high scores server.

C++98, MySQL, Team of 3

Developed an Authentication Server that is connected to a MySQL database where user credentials are stored, and accessed. The Authentication server communicates directly with the chat server.

When an authentication message is received by the chat server, it saves the port number, and sends a message to the authentication server. When a message is returned, it will relay that message to the chat client appropriately.

Passwords stored in the MySQL database are stored with SHA-256 hash and a random SALT value for strong protection.
Communication between the chat client, chat server, and authentication server uses TCP.

C++98, Team of 3

Developed a chat client and chat server to run on Windows using WinSock2. Client takes commands from the user through a console window to connect to a server with specified ip, and port number. join chat rooms, send messages, leave chat rooms, and disconnect.

Developed a chat server which is non-blocking and allows multiple clients to connect and communicate to each other. When a chat message is received, the server relays that message to all other clients within that chat room. Client disconnections and interruptions are handled, and does not interrupt the execution of the server.

Packets are serialized using Google Protocol Buffers, and prepended with the packet length. Which is stored as 4 byte in Little Endian format.

Communication between the chat server, and client uses TCP.

C++98, OpenGL, GLM, and Assimp

Loaded bones of the character into a bone hierarchy with a root bone node. Called an update bone hierarchy method to update the bones transformations to be sent to the shader. Animations are smooth using interpolation. Connected a weapon to a bone id of the character.

C++98, OpenGL, GLM, and Assimp

Extracted data from .FBX models loaded with Assimp loader into mesh files.  Created a shader to be provided all of the bones of a mesh, and be supplied bone ids, and bone weights per vertex.  Calculating the position of the vertex from the bone position, ids, and weights.

C#, C++98, OpenGL, and GLM, no other external libraries used

Used C# to create a simple GUI for a script editor to generate scripts. These scripts were outputed into a simple .txt file to be read into a program, and generate commands. Created scripting commands such as: Move To, Orient To, and Follow at specified max velocity or max time. Each command is able to set a specific easing type; Ease In, Ease Out, Ease In and Out, or No Easing. Easing types are quadratic.

Programmed a simple ascii space invader type game where the user is able to play three different difficulties: Easy, medium, or hard. Each difficulty has data saved in .xml files. The player is able to save the game state to be loaded at a later time. The state saves positions of all objects, health, speed, remaining time, lives, and more.

Wrote an xml file containing multiple languages for specific phrases to be used in a program when a language is chosen.

Wrote a NSIS installer for a deployed program which features a

.zip, registry, uninstaller, components,