Ongoing development!
[Warning, tech heavy post! Interest here to Unreal developers looking at downloadable content, User generated content, AWS]
Right now the focus is on getting Matchoo ready for content development. It's front end has taken on the look of an app store (free to play but lots of individual packages to download and play) and less like an arcade game.
To back this up lots of technology is getting integrated into the application, and a backend infrastructure is coming together.
The biggest piece added is integration of AWS or Amazon Web Services.
After some research AWS (Amazon Web Services) provided an easy starting point with good tutorials available online and lots of different tools available to provide an online presence.
Matchoo Data is now stored in their S3 or Simple Storage Service. This can easily get upgraded to a CDN (Content Delivery Network) by integrating Cloudfront if needed. It should also integrate well with their database services which I'm going to be approaching later today as it happens!
Integrating this was not without hurdles. There have been several iterations in my approach with more work to be done. The biggest stalling block was working out how to use their security signing process - see AWSS3HttpDownloader in this thread for some code that works (works, but is provided as a WIP and foundation to build on not as a final product).
The hurdles were caused by wanting a cross platform approach with little to no special casing for IOS vs MAC vs PC. Using Unreal's Http layer seems to do this though I have yet to look at the HTML5 and GooglePlay platforms.
Unreal Engine 4 is the base technology layer. This provides lots of amazing free functionality but comes with some restrictions to to the way data is managed that provide big hurdles in the ability to add UCG (User Generated Content). After a lot of poking around and trying to use common web data (wav files, jpgs etc) my end conclusion is that it needs to be converted to unreal's custom formats that the App can handle on every platform.
Raw text and images actually seem to work fairly directly, download from AWS with your handy HTTP code provided above. Audio however proved the stumbling block and forced my hand.
My solution: Building a server to bake unreal specific data from user content. This server will process incoming raw data (images and audio for now, animation later) and general platform specific unreal content,
However... there are other reasons for building this. The few times I'm had people take a look at Matchoo development they've been taken and for good reason. The entry curve is insanely steep. You have to download Unreal Engine, Visual Studio, Patches etc. You have to start learning the unreal editor and take steps like compiling code. This is a huge barrier of entry.
The work I'm doing now should slash that. The downsides are it needs to be built and will be a challenge to keep up to date. I'll have to contain cutting edge code / data development away from people who are developing content, make sure that the data pipeline is robust enough to survive app updates. There's a bunch of tenuously linked technologies that all provide tricky debugging situations.
But I'll be able to throw a small install app at a user that will update the exe (MAC or PC) and (PC only) a set of small tools that allow new content to be created.
Okay - back to the grindstone, I've built a content cooker that responds to requests over TCPIP, now to build a little C# app that manages the incoming requests and marshals the data between AWS and the Unreal Asset Cooker.
If you head down this path, and you have some understanding of networking, C# and Unreal you need to allow a couple of months development time, for the basics....
Right now the focus is on getting Matchoo ready for content development. It's front end has taken on the look of an app store (free to play but lots of individual packages to download and play) and less like an arcade game.
To back this up lots of technology is getting integrated into the application, and a backend infrastructure is coming together.
The biggest piece added is integration of AWS or Amazon Web Services.
After some research AWS (Amazon Web Services) provided an easy starting point with good tutorials available online and lots of different tools available to provide an online presence.
Matchoo Data is now stored in their S3 or Simple Storage Service. This can easily get upgraded to a CDN (Content Delivery Network) by integrating Cloudfront if needed. It should also integrate well with their database services which I'm going to be approaching later today as it happens!
Integrating this was not without hurdles. There have been several iterations in my approach with more work to be done. The biggest stalling block was working out how to use their security signing process - see AWSS3HttpDownloader in this thread for some code that works (works, but is provided as a WIP and foundation to build on not as a final product).
The hurdles were caused by wanting a cross platform approach with little to no special casing for IOS vs MAC vs PC. Using Unreal's Http layer seems to do this though I have yet to look at the HTML5 and GooglePlay platforms.
Unreal Engine 4 is the base technology layer. This provides lots of amazing free functionality but comes with some restrictions to to the way data is managed that provide big hurdles in the ability to add UCG (User Generated Content). After a lot of poking around and trying to use common web data (wav files, jpgs etc) my end conclusion is that it needs to be converted to unreal's custom formats that the App can handle on every platform.
Raw text and images actually seem to work fairly directly, download from AWS with your handy HTTP code provided above. Audio however proved the stumbling block and forced my hand.
- Note: While a first glance of the web had led me to believe that content could be downloaded and used on the fly I was only able to get this working with the engine on desktop platforms. This led me down a further path which basically means biting off a lot of work that I'd thought would be down the line.
My solution: Building a server to bake unreal specific data from user content. This server will process incoming raw data (images and audio for now, animation later) and general platform specific unreal content,
However... there are other reasons for building this. The few times I'm had people take a look at Matchoo development they've been taken and for good reason. The entry curve is insanely steep. You have to download Unreal Engine, Visual Studio, Patches etc. You have to start learning the unreal editor and take steps like compiling code. This is a huge barrier of entry.
The work I'm doing now should slash that. The downsides are it needs to be built and will be a challenge to keep up to date. I'll have to contain cutting edge code / data development away from people who are developing content, make sure that the data pipeline is robust enough to survive app updates. There's a bunch of tenuously linked technologies that all provide tricky debugging situations.
But I'll be able to throw a small install app at a user that will update the exe (MAC or PC) and (PC only) a set of small tools that allow new content to be created.
Okay - back to the grindstone, I've built a content cooker that responds to requests over TCPIP, now to build a little C# app that manages the incoming requests and marshals the data between AWS and the Unreal Asset Cooker.
If you head down this path, and you have some understanding of networking, C# and Unreal you need to allow a couple of months development time, for the basics....
AWS is pretty powerful and I'm still happy I chose it. The biggest hurdle I hit was security on the HTTP requests. These day's there's an open source C++ library that should do that for you.
ReplyDelete