A Cloud That Makes Sense
I had a random idea, something that probably would not help me anytime soon but I’m sure there is someone out there who might be in need of this exact thing. Cloud Funding.
Sure it sounds like Crowd Funding and the idea is very similar. Cloud computing is something that is expensive to do, especially for small studios. Some cloud computing services charge by the cluster allocations or by some other arbitrary set of parameters. The dynamic nature of this approach can lead for fairly hefty invoices at the end of the month. But what if you could cloud compute for free? “Free?!” you say? Well, kind of.
The premise is simple. Users agree to give you their idle clock cycles and bandwidth in exchange for credits. Those credits are just as good as money in your companies line of products. Those products may be in-game purchases or maybe flat-out purchase of products in your company store. Much like the Torrent mentality, the more you give the more you get.
Games and other products like terrain processors. large compute projects, or distributed rendering have always been heavily dependent on resource allocation. Cloud funding might be an interesting approach to getting free resources for a developer in exchange for exclusive products or product accessories and expansions.
There’s always the concern that data being sent to an unsecured machine for processing could be intercepted, but I think it would be up to the developer to decide what to distribute. Is it worth risking someone snooping packets and extracting a crate model in exchange for a chance at infinite resources? Maybe. Another approach might be to pre-process the assets server-side and send the chewed data off to the cluster for any heavy compute operations.
If security is a concern this may not be the answer for you, but if you are that tight lipped about your game or product you are also probably rich enough to afford your own cluster. Small and more transparent developers might be more open to a system that cuts down on their cost and leverages resources that other people are paying for and not using.
How Does It Work?
Okay so what could be done and how to people earn credits? Simple, the time a user puts in is converted to a value amount. Whether that be $0.10 per compute hour or whatever is probably specific to the developer and their needs. A couple examples of tasks might be as follows..
Light Baking / Ray Tracing / Data Compilation
- General Download Size: < 100MB in environment and emitter data. The data is likely pre-processed by the server to be little more than occlusion geometry and some special material information for translucent/transparent surfaces.
- General Upload Size: Variable, based on number of results processed by the user machine. Results are likely small; <= 4Kb chunks. For example, a 16×16 HDR image block is 3Kb-4Kb or 1Kb if compressed using RGBE.
- Compute Time: Variable, based on idle cycles. A machine left idle while the user is away is making more “money” for the user than a machine actively in use. Distributing the effort using only idle cycles can still be faster than 100% CPU utilization on a single developer machine, especially for processes that may otherwise take hours to complete on a single machine.
AI Planning / Drivatar! / Natural Selection & Organic Networks
- General Download Size: < 50MB in environment data. Minimal collision and occlusion data is needed.
- General Upload Size: Variable. If AI planning is being pre-computed then each machine in the cluster can be asked to compute a solution for all possible paths.
- Compute Time: Variable. Scene complexity and solution set. This same system might be used to organically nurture an AI using other approaches like complex neural networks or generic algorithms.
- General Download Size: 4 byte seed =).
- General Upload Size: nxnxn subset of the NxNxN world.
- Compute Time: Variable. Since the world is constructed discretely based on a random seed then the same seed can be distributed to many machines and subsets can be computed independently.