Matthew Weis
About:

Hello, World! My name is Matthew and I’m a software engineer, husband, animal lover, and a lifetime gamer. I have recently graduated from University of South Florida with a degree in computer science.

While working towards my education, I discovered a strong interest in game development, more specifically in game engines and how they work. The challenge of using only logic and syntax to solve a complex problem such as simulating physics in the context of real-time constraints is what drew my interest this subject.

I am a strong believer in that if you do what you love, then it doesn’t feel like work. I want my work to better the lives of others and surround myself with people that share the same passionate drive and vision.

Check out my project section or take a look at my Github to get a feel of my previous work. You can also contact me using any of the methods at the bottom of the page.

Imagination will often carry us to worlds that never were. But without it we go nowhere.
Carl Sagan
noneEducation
  • University of South Florida
  • Computer Science
    • Computer Graphics
    • Game Engine Design
    • Object Oriented Programming
noneGoals
  • Be considered an expert in my field
  • Never be complacent
  • Always be willing to try new things
  • Travel the world
noneInterests
  • Video Games
  • Rockets/Spaceflight
  • Aviation
  • Puzzles/Strategy Games
  • Fishing
  • Hiking/Outdoors
  • Basketball
Skills:
Languages
C/C++
  • Most experienced language
  • Used for many school projects
  • Used exclusively in Game Engine project
Python
  • Most experienced scripting language
  • TKinter & PyQt experience
  • Multithreading experience with GUI's
  • Used in programming competitions and school projects
C#
  • Used primarily with .NET and GUI work
  • Used for Turning Machine project
  • Less experienced than C++ and Python
HTML/CSS
  • Experience with NetBeans
  • Used to create this site!
Technical
Linux/Windows
  • Comfortable developing in both environments
  • Visual Studio preferred development environment for Windows
  • Basic text editor and VIM preferred development environment for Linux
Visual Studio
  • Most experienced IDE
  • Used for C++ and C# development
  • Experienced with debugging and testing
SCCM 2012
  • Maintained and set up SCCM server
  • Experience with application packaging and deployment
  • Experience with OS packaging and deployment
Zabbix
  • Maintained and set up Zabbix server for +200 host in virtual development lab
  • Compiled and deployed Zabbix agents for both Windows and Linux host, many of which were legacy support
  • Developed custom shutdown script with GUI (PyQt) for virtual development lab in case of power outage
Projects:
Game Engine

This was a multi-semester independent study where I researched and developed a simple game engine. Before I started this project, I had little experience with game development, but I was very interested in what goes on in the back end of a video game. To this end, I decided to make my own game engine from the ground up.


I started with the rendering engine and familiarized myself with the OpenGL pipeline. With the tools provided by OpenGL, I was able to make a simple rendering engine that has the capability to import basic .OBJ models, apply DDS textures to them through UV mapping, and provide basic ambient lighting to the scene. This process exposed me to all sorts of new rendering concepts such as:

  • Vertex, UV, and normal buffers.
  • Model, view, and projection matrices.
  • Basic shading algorithms.
  • Integration and testing of complex linear algebra concepts in a software environment.
  • Researching and understanding how models are represented within the OpenGl pipeline.

From there, I needed to get objects in my scene to start moving and behaving like objects in the real world. In order to accomplish this, I had to research and develop a physics engine and integrate it with the rendering engine. These are some of the concepts I learned and implemented while working on the physics engine.

  • Game loop design.
  • Decoupling physics calculations from render time.
  • Runge-Kutta method (RK4) integrator for physics calculations.
  • Integrating and interpolating object states.
  • Quaternion rotations.
  • World and body coordinates.

This project provided me a great opportunity to research higher level concepts and implement them in a codebase that is larger than any other school project I had previously worked on. While there were many game engine concepts that I was able to research in depth, I was unable to implement all of them into my game engine due to time constraints. Some of the unimplemented features I did extensive research on include:

  • Hitboxes: Axis-aligned, bounding spheres, etc.
  • Collision detection and handling.
  • Bounded volume hierarchy: KD-trees, octrees, etc.
  • Shadow mapping.
  • Scripting engine.
none

Testing an object fall due to gravity.

Enigma Machine

This was a group project for Advanced Discrete Structures in which I developed a working software replica of an enigma machine, the same type of encryption machine used during WWII. My contribution for this project was the creation and development of all the software and GUI components.


An enigma machine employs a relatively simple algorithm where plain text is fed into the machine one character at a time and is mapped to a different character through a system of rotors. The key to strong encryption in an enigma machine is to have the rotors change position and map a new set of character after every step, thus preventing attempts at frequency analysis. While programming a software replica of an enigma machine was relatively simple, developing an intuitive GUI for it proved to be an interesting challenge.


none

Example string encrypted.