“House of End” First Person Game Built with Unreal Development Kit

Standard

As part of Video Game design class I enjoyed learning and working with Epic’s Unreal Development Kit which is a game engine used in many blockbuster games today. We explored various topics in game development including texturing, materials, sound cues, 3D modelling, soft body meshes, rigid meshes, user interactivity , Kismet triggered actions, Matinee sequence events, additive and subtractive brush techniques, and surface lighting. I also gained experience with a wide range of software utilized in game development such as 3D Maya, Photoshop, GIMP , and sound editing programs. The semester project include teaming up with another classmate and developing a standalone game. My teammate Ivan and I decided to create a survival horror themed game called “House of End”. Here is a link to the game’s website including a full download of our final game: https://houseofend.wordpress.com/

Embedded Systems Utilizing PIC32 Microcontrollers

Standard

In my Hardware/Software Interfacing class, I practiced embedded system configuration and programming using the C programming language. I was able to work with both a Cerebot robot and Mikromedia LCD touch display that both contained the PIC32 processor built by Microchip. In this class, we explored the functions and operation of microcontroller components such as system clocks, peripherals, data buses, control registers, flash memory, cache memory, and much more. We also practiced basic embedded system concepts including interrupt service routines, state machines, and communication to other devices through both synchronized and unsynchronized connections.

With the Cerebot robot, I wrote programs that operated the motors to drive the bot as well as a standalone interactive Simon Says game.

CAM00161[1]

The next piece of hardware I got to play with was the Mikromedia LCD touch screen. This little guy ran on the PIC32 processor allowing users to display full images and intercept touch events using a resistive touch screen. Using the Mikromedia my partner and I develop one program to display original and manipulated images based on user touch input. The second program was an interactive game of tic-tac-toe utilizing user input through a USB mouse.

CAM00158[1]

CAM00160[1]

CAM00159[1]

Basic Cellular Automatons Application for Android

Standard

One of my first application development projects was a practice application I developed for Android smartphones that created and displayed Cellular Automatons and allowed the user to create their own.

I named the project “Thundersnow” (I know it sounds really corny) and began learning my way through Android’s various API’s. I spent much of time learning how to programmatically develop user interfaces and process user events. The very first feature of the app allows a user to view 17 of the most interesting Cellular Automatons and interactively alter the color and resolution of the automaton.

cellular automatons

The application also allows the user to choose and select the automaton rules to be active and generate their own automaton.

automaton generator

Overall, developing this app was a fun and creative experience where I had the chance to learn about and use Java, XML, Android operating system, Linux, user interface elements, image editing software such as GIMP 2, and animations just to name a few.

Here is a link to a Github repository containing the source code:

https://github.com/MattLamont/Project-Thundersnow.git

Marvel Universe Character Analysis using Ada

Standard

To diversify my knowledge of programming languages, a small group and I wrote an Ada program that parses a text file containing all of Marvel’s characters, collaborations, and comic books.

Ada was initially commissioned by the United States Department of Defense to become the primary programming language used by the government. Ada is highly structured and provides support for object oriented and concurrent programming. Also because Ada is strongly and statically typed, it works very well with embedded devices.

We developed an Ada program that performed some statistical analysis on the data such as most popular character, most collaborations with other characters, and mean collaborations. Here is a sample of our statistical output:

Number of vertices =  19428

Number of characters =  6486

Creating the vertex name vector and edge matrix.

Reading the vertex names.

Reading the edge matrix.

The number of characters is  6486.

The number of comic books is  12942.

The minimum comic books per character is  1 (24-HOUR MAN/EMMANUEL).

The maximum comic books per character is  1625 (SPIDER-MAN/PETER PAR).

The average comic books per character is 14.90.

The standard deviation of the comic books per character is 59.88.

The minimum characters per comic book is  1 (M/PRM 35).

The maximum characters per comic book is  111 (COC 1).

The average characters per comic book is 7.47.

The standard deviation of the characters per comic book is 6.30.

The total number of collaborations is  569770.

The total number of collaboration pairs is  168267.

The mean collaborations per character is 51.89.

Here is a Github repository with source code:

https://github.com/MattLamont/Marvel_Universe_Analysis_with_Ada.git

L.E.D. Light Strips Controlled Wirelessly using Arduino and Android

Standard

For my very first dive into embedded systems, I decided to purchase and practice programming an Arduino Uno micro controller. This little guy has a 16 MHz Atmega328 processor and only 32 KB of flash memory to hold programs. After writing and uploading some very basic test programs to the Uno, I decided to utilize the microcontroller’s flexible modularity with other add-on components. I purchased a JY-MCU bluetooth module that is easily controlled by the Uno.

Arduino Bluetooth

The Uno was also rigged up to digital L.E.D. light strips that can vary in colors determined by the amount of supplied voltage provided to the RGB leds through MOSFET transistors. The next goal was allow the Arduino Uno to control the color of the LED’s by manipulating voltages based on the inputs received from the Bluetooth module.

CAM00164

The next phase involved writing an application targeted towards Bluetooth enabled Android phones. This application allows users to select values between 0 and 255 for the RGB components of the LED strips. Every time the user alters a color value, all of the color values are transmitted as bytes through Bluetooth to the Arduino Uno. The Uno then adjusts LED voltages as necessary.

Here is a Github repository with source code for the Android application and the Arduino program:

https://github.com/MattLamont/LED-Remote.git

ARM Processor and Mobile Computing

Standard

As part of my studies of microprocessor architecture, I had the opportunity to research the history and design of ARM processors and their staggering presence in today’s mobile hardware and embedded systems. I’ve included links to my formal report on the ARM processors and the presentation slides if you enjoy succinct language accompanied by pictures.

Github Repository:

https://github.com/MattLamont/ARM-Processor-and-Mobile-Computing.git

Popular N-Grams of Shakespeare’s Complete Works using Hash Tables and Hashing Algorithms

Standard

A group of teammates and I utilized hash table data structures and hashing functions to parse and extract the most popular n-grams within all of Shakespeare’s works. N-grams were characterized by all found “n” consecutive words uninterrupted by punctuation. For example, the 3-gram “i pray you” is the most popular three words in a row that was discovered 249 times within Shakespeare’s complete works.

The very specific n-gram strings that we were searching for made perfect keys for hash maps. Therefore, all implemented algorithms and data structures in this program were based on hash tables. The following is a list of Shakespeare’s “Top Ten” 1-grams, 2-grams, 3-grams, and 4-grams.

There are 26982 unique 1-grams.

The 10 most common ones are:
the  [26851]
and  [24077]
i  [20535]
to  [18561]
of  [16013]
you  [13856]
a  [13840]
my  [12282]
that  [10761]
in  [10537]

There are 273439 unique 2-grams.

The 10 most common ones are:
i am  [1858]
my lord  [1685]
i have  [1628]
i will  [1582]
in the  [1578]
to the  [1517]
of the  [1378]
it is  [1079]
to be  [968]
that i  [910]

There are 520199 unique 3-grams.

The 10 most common ones are:
i pray you  [249]
i will not  [214]
i know not  [162]
i do not  [160]
i am a  [141]
i am not  [139]
my good lord  [132]
and i will  [129]
i would not  [126]
this is the  [122]

There are 546088 unique 4-grams.

The 10 most common ones are:
with all my heart  [47]
i know not what  [39]
give me your hand  [34]
i do beseech you  [33]
give me thy hand  [31]
i do not know  [29]
i would not have  [26]
ay my good lord  [25]
what is the matter  [25]
give me leave to  [24]

Github Repository

https://github.com/MattLamont/Shakespeare-N-Grams.git