Generic Shooter is a released marketplace asset is an ongoing project that allows customers to quickly start up a fully blueprint first and third person shooter with much of the scaffolding already built. It is currently one of the best selling Unreal Engine Marketplace Assets with more than 1000 units sold.
Lazyploy is an open-source suite of tools designed to replace a plethora of custom batch files and deployment setups that I make for generally every project I work on. I wanted an incredibly simple way of cooking a new build of a UE4 project and have it automatically deployed to my test machines on my LAN without having to maintain batch files or a Jenkins server any time a hostname, project build rules, or when any other factor in scripted deployment changes.
A WIP video of the system is available here on my YouTube.
Lazyploy Server is the central server component of the Lazyploy suite of tools. It is a Node.js Feathers REST API backend server as well as a web frontend server. Lazyploy Server can govern, recieve, distribute, and monitor builds of UE4 projects. The only limit to how much it can store is the size of the storage device it is installed on.
Lazyploy Launcher is the ‘engineer’ component of Lazyploy. Instead of creating and maintaining a set of batch files per project, Lazyploy Launcher aims to consolidate batch operations such as launching clients, cooking, and deploying of builds. It runs as a standalone program built against your UE4 Engine source and runs on Slate. It also contains a Session Frontend tab for easy remote-monitoring of other UE4 instances.
Lazyploy Watcher is the remote ‘build runner’ component of Lazyploy. Its goal is to automate build updating on targets to avoid manually copying development builds to test servers through Samba Shares, SMB, FTP, or pushing builds through the Steam Pipe. When working with Server code, it can be really convienent to spin up local tests for cooked builds outside of any pre-existing build pipeline, for example, relying on Steam Pipe builds to test minor changes in code just so test servers an pull down a patch can take a lot of time if you have the storage and the speed for simply downloading whole new builds over a LAN. Its designed to keep WindowsServer and LinuxServer builds always online and restart them in-case of a crash, but it could also be used to keep client builds running as well.
One Sunday I got fed up with the lack of usability updates regarding the UE4 Marketplace within the Epic Launcher. It has since then improved but there is still a lot more that could be done. I wanted to address its sluggishness, navigation issues, and add a few ‘nice to haves’. The result of this was a fully working Marketplace browser that worked across Windows, OSX, and Linux. At the time of this writing the Epic Launcher still doesn’t run on Linux and Linux users have to use another OS to get their marketplace purchases.
The only missing features making it from being usable is the downloading of assets you own. I have achieved this but have not posted code due to what I foresee as a possible security risk.
It ended up turning out really nice. Nice enough to get a good comment from Tim Sweeney and kick off a job interview process for a position at Epic.
These playthrough streams on average last around 16 continuous hours. They are great fun as the game jam teams tend to join in on the stream and we get to hear from the developers of the game jam entries while playing through their submissions.
I used to do a lot of game jams early in my game dev career but after my time became eaten up with more and more client work, I took a break from them. After several months of my Game Jam playthrough streaming, many people kept asking me when I am going to submit an entry.
I happened to have two days free during the December 2015 UE4 Game Jam and figured that it was as good a time as any to see if I still got the chops for a game jam. The theme of the December 2015 UE4 Game Jam was “The End Is The Beginning”, which naturally inspired the thought of mobius loops. I ended up playing with the idea of a track that folded on itself yet still had a continuous path with the ability to flip between ‘top and bottom sides’ even though if you never flipped you would traverse both sides. The end result ended up being a game I called Fundamental, a ‘fill in the track while avoiding obstacles’ game that ended up winning one of the three winner slots of the Game Jam.
I do a lot of work at various VR, Film and FX houses. When I work on-site, I grew steadily envious of all the custom keyboards for various 3D software packages and film editing tools, so I said to myself, why not make one for UE4?
So I made one. Ended up being pretty cool and pretty popular. It also serves as a keyboard shortcut reference guide. You can check it out here.
The initial draft of the tutorial proved to be a little too technical for many people, so to reduce the barrier of entry to using Perforce, I created an automatic Perforce setup script that has gained quite a bit of traction. Once I did this, a large number of people started telling me they’ve adopted Perforce thanks to my guides.
I will keep fighting the good fight of getting people to use Source Control, whether Perforce or otherwise.
One day a friend of mind asked if there was a way to export a sequence of Cubemap Render Targets suitable for making a 360 degree video. After some experimentation, I ended up with a plugin that would allow exporting of any Unreal asset through Blueprint, including Cubemap Render Targets. Combine this export ability and some additional blueprint, I was able to create a 360 Panoramic Video on YouTube.
This ended up getting pretty popular and I gained a few clients because of it.
For more information, check out the GitHub repo for my ExportObjectPlugin.
Working with Master of Shapes for Castrol, I created the UE4 side of the Mustang to UE4 code used to drive input of a virtual car inside UE4 that would have its controls synced to a real world Mustang. I also was responsible for getting the Oculus Rift tracking working within a moving reference frame (a car) using an external 9DOF tracker.
There is nothing quite like driving a Mustang in Venice at night blind with vision replaced by an instance of UE4 running inside an Oculus Rift.
While the end result was ‘prettied up’ by Castrol Marketing, the underlying tech that allowed the driver to drive safely while blind is real. I know this because not only did I help create it, I drove with it.
A lot of people asked me if its possible to pipe the output of UE4 to another app. A lot of Video Jockeys wanted support for Spout from UE4, and one weekend I decided to give it a go to see if it was possible.
I ended up with a proof of concept which you can view on my YouTube.
I have since abandoned this project but there are a few continuing where I left off. Source code for this is available on my Github.
Early on in a UE4 project I felt that my pipeline for collecting feedback from testers was clunky and inconsistent. I came up with a proof of concept for a system that would allow players to send feedback in-game and have that feedback routed directly to a JIRA server for logging.
During the development of Generic Shooter, I got many requests to do something like ‘a care package system’. I quickly turned around this asset live on my Twitch stream so that others could see what goes into making a Marketplace Asset and generally what the whole process is.
If you want to know more about this, visit the Generic Air Drop UE4 Forum Thread.