Hello! My name is Marcus Dubreuil. I've been programming and enjoying games since I was 10 and I currently go to the University of Pittsburgh for a double major in both Computer Science and Music Composition. Click any of the tabs at the top to see some of the stuff I have done!
Some notable projects:
The Fervor of Ambition: This was a piece for full orchestra written over the course of a year under the mentorship of Roger Zahab at the University of Pittsburgh. This was my senior capstone project for by Bachelors of Science in Music Composition. The piece was premiered by the University of Pittsburgh Orchestra in the fall semester of 2019.
FlipFolderApp: An Electronic Flip Folder designed initially for marching bands. A mobile application and a website. The app is an electronic music viewer/electronic flip folder and group performance manager. You set up a musical group at flipfolder.app, upload music to an online cloud like Box or Google Drive or directly to the website, and then give other members of your group a "Connect ID". Members of your group are able to connect to your band using that ID and then view the music you upload. Band directors can then authenticate band leader devices, who can pick songs and they will automatically come up on every connected device in the band. This utilizes both the internet and Bluetooth with in-house protocols to make sure bands stay connected in all scenarios.
Many Cloud: An open source utility that creates an interface for many cloud platforms found online that, after authentication, abstracts out which cloud service you are manipulating for the sake of simplicity. The code for this is on Github and it’s also an NPM module.
RegionWars: An online game written in NodeJS and HTML5 that uses Voronoi Diagrams and Lloyds relaxation to generate polyginal maps for the players to play on. There can be 2 or more players who fight in 3 colored regions until there is a winner. Each region corresponds to an ability so the player must pay attention to what region the player is in to succeed. Original idea by Ethan Defrank
Bad Driver: Live the life of a Bad Driver! Bob and weave your way through traffic at high speeds in order to reach your destination the fastest..... please don't do this on an actual highway.
It's essentially a 2D top-down racing game where you have to click 1 of 3 lanes to continuously dodge vehicles you are trying to pass. It's very simple game made for all ages to be played at your leisure. There are currently 2 seasons of 10 levels, more may be added soon!
Java Game Tutorials: These were made while I was in my senior year of high school after many years of development using the java graphics library and during an internship I had helping out in the AP Computer Science class. The series is made for people who are at the end or have completed an AP Computer Science class in high school or something like it like an online alternative. The goal of the series is to give the viewer the tools required and the practices needed to create any game of their choosing in 2D using just CPU graphics.
Bowed: An online game written in NodeJS using the HTML5 browser graphics library. It's pretty much a crossbow war with friends where the map will move dependant on who is winning. The game gets progressively more fun the more players you add!
This is an Electronic Flip Folder designed initially for marching bands. A mobile application and a website. The app is an electronic music viewer/electronic flip folder and group performance manager. You set up a musical group at flipfolder.app, upload music to an online cloud like Box or Google Drive or directly to the website, and then give other members of your group a "Connect ID". Members of your group are able to connect to your band using that ID and then view the music you upload.
You can also define band leaders who are able to start and end performances. Performances are the key feature of this app. Whenever a band leader selects a song in the performance manager, that song will pop up on all of the individual player's devices using an in-house protocol of both Bluetooth and the internet. It will also pre-download all of the songs so during a performance there is no heavy lifting required.
This app was initially piloted by the University of Pittsburgh Marching Band but is now being used by 15+ musical organizations including 10+ universities.
Packageify is a small open source project that inserts files into Java package directories and adds imports for package-ified files that were previously all in the same package (in the same folder) based on a package definition file that contains a line for every class with the class name and target package (Ex: GameFrame;com.marcusman).
Live the life of a Bad Driver! Bob and weave your way through traffic at high speeds in order to reach your destination the fastest..... please don't do this on an actual highway. Bad Driver is a game made for Android and IOS.
Mercenary Management Simulator 2020 is a video game made in 72 hours for Ludum Dare 44 Jam with my friend Ethan DeFrank. Used a platform called Pixi.js and can be played in a browser. Uses vector math and ray casting for hit detection along with a physics engine and a working AI.
Many Cloud is an open source utility that creates an interface for many cloud platforms found online that, after authentication, abstracts out which cloud service you are manipulating for the sake of simplicity.
Program notes: Back in November of 2017, I had an idea for a software product, one that didn't exist yet and one that I thought I would be able to create. 2 years later, and that idea had jump-started a successful business. What I had experienced during that time was the beautiful and terrifying road from idea to creation. The Fervor of Ambition is the musical adaptation of that path, and the piece is designed as a musical and emotional journey aligned with what I believe are the phases of invention, which work in a cycle:
Idea -- Uncertain, Mysterious
Prototype -- Experimental, Curious
Demo -- Astute, Proud, Vigorous
Competition -- Nervousness, Anxiousness
Improvement & Development; Perfecting -- Smooth, Graceful, Determined
Creation -- Powerful, Grand, Magnificent
The piece written over the course of a year under the mentorship of Roger Zahab
Here is a tutorial series for making a 2D game using just Java and only the libraries included with java. I would recommend starting with Lesson 4 to avoid the tedious setup process of getting a graphical solution out of the java graphics libraries. If you are at all interested in how these libraries work you can still watch the first 3 lessons, just known that they are of worse quality since they are recorded in an actual classroom environment.
The only prerequisites needed is a basic knowledge of java (A hobbiest or high school class level of understanding) and a working copy of java JRE and java JDK (make sure your PATH is set up correctly and both the java and javac commands work in your terminal or console.
Intro Lessons (for an understanding of the Java graphics libraries) (it's recommended to skip to the Graphics Lessons):
Lesson 1 - Setup and Graphics Buffering
Lesson 2 - Handling Threads
Lesson 3 - Render/Update and accessing pixels.
Graphics Lessons (learn how to work with an array of pixels to render and manipulate objects on the screen) --First download the final workspace from the intro series--:
Lesson 4 - Rendering Images
Lesson 5 - Rectangles! Yep...Rectangles!
Lesson 6 - Sprites and Transparency
Input and Mapping Lessons (Mouse and Keyboard Input and mapping our sprites to specific maps layed out in files.) --First download the final workspace from the Graphics series if need be (i'd recommend going through the graphics series)--:
Lesson 7 - Tiles and Maps
Lesson 8 - Player and Input
Lesson 9 - Editing/Saving Map
Utilies (Great utilities to use selectively that provide some sort of functionality or make life easier) Each utility has a different requirement but it's recommended to complete the Input and Mapping series first. --If you must, download the final Input and Mapping workspace--:
Lesson 10 - Animated Sprite
Lesson 11 - Animated Player
Lesson 12 - Graphical User Interface and Tile Palette
What you can do! (Things you can do with the engine. How you can manipulate it to your own game) Lesson requirements are random.
Lesson 13 - Making a Platformer
Lesson 14 - Map Layers (Game Resizing, Faster map rendering [for large maps], and layers)
Lesson 15 - Advanced Map Layering and Collisions
...More coming soon!
Source Code for each lesson (Last Resort)
A video tutorial on how I created this online portfolio using just HTML and CSS
RegionWars is a game made in NodeJS and a HTML5 canvas in which 2 or more players fight to win in an arena where there are 3 regions each with their own bonus ability.
- In the green region you can fire a ball (left click)
- In the purple region you can deflect balls with a barrier (toggled with left click)
- In the blue region you move much faster
The game server and client is programmed in NodeJS and the map generation client is programmed in LibGDX. This Timelapse shows the course of the whole project took. I started with testing out a new type of map generation I'd been interested in called Voronoi diagrams. For those of you interested, the map generation also used Lloyd's relaxation and for a more realistic pseudo-randomization it used Perlin noise. I also anticipated writing the entire game with LibGDX but over the course of the game's development decided the project should be moved over to NodeJS since the most dominant feature of the project is networking and Socket.io is a fantastic, fast, and easy protocol. This also allows for a more wide range of devices to play the game.
Here is just a small collection of projects I made featuring Perl 6 and the Mojolicious Web Framework.Pollite:
A strawpoll clone that allows to user to enter a poll title and 4 options. Then a custom link is created for that poll.
Example of custom link: http://pollite.marcusman.com/poll?id=KEKSKTKGLR.
An item quiz based on all of the items in one of my favorite games, Old School Runescape.
This program finds a random item and then either creates an easy question with other random items or more likely creates a more challenging question by finding other items containing similar words.
Frequently Asked Questions. Just some more information about myself or questions I get asked a lot.
Why is your accent sometimes British and sometimes American:
One of my parents is British, the other is American. I was born in England and have spent about half of my life in one country and half of my life in the other. Even when I was spending time living in one country I would often visit the other for an extended period of time. Through my early language development I took on both accents instead of a mix or picking one. I used to subconsciously pick up the accent of whoever I was speaking to. So if I was speaking to an American, I would use my american accent. If I was speaking to a Brit, I would use my british accent. Subconsciously going back and forth between these accents every day has been quite tedious. Mostly because I've had to explain my situation to so many people who have heard me in both situations. So at some point I decided that in all scenarious I would try to stick to the British accent and once I start speaking to someone in a British accent who is American, I seem to subconsciously attach that accent to them. As in, every time I see them I no longer have to think about speaking in a British accent beyond a certain point. But in certain contexts (like with most of my YouTube videos) I still speak in an American accent since that's how I spoke on there originally. I'm not 100% on the psychology or linguistics behind this but I believe it to be a case of Bidialectalism.What got you into Software and Computer Science?
Curiosity. Always trying to figure out how stuff works. Creativity stemming from childhood experiences. Most of my toys as a kid consisted of train sets or legos. Things that I could build from top to bottom or bottom to top. With instructions or without instructions. I believe those experiences have built up a craving for understanding and figuring out the ins and outs of something. Learning about existing systems to build my own. I started programming in middleschool after being moderately addicted to the video game Runescape. I liked the game so much I wanted to figure out how I could make something like it. So my interest in Computer Science stemmed from video games. At this point it has broadened also to web development and anything else that piqued my interest.What got you into Music Composition?
My family is very musical. Both of my parents were actors and musicians. Living with and around them has given me the same tastes in music and a love for it that they have. I started playing trombone in Elementary school in the US and I still play it to this day. Composition stemmed from creating trombone arrangements of popular songs for my friends and I to play. I'm currently taking it as a Double Major along with Computer Science and Pitt so I can learn more about it. In the process of creating video games, I would love to create both the music and the code.