Hack Week Sneak Peek: A Few Fascinating Projects
As we mentioned on the blog earlier in the week, Hack Week is an opportunity for ROBLOX staff to explore and prototype their pet projects, and ultimately present them Friday during a company meeting. We thought today would be a great opportunity to take a sneak peak at what our developers have hacked together this year. Remember, these are all purely hypothetical projects — we’re not making any promises here, we’re kicking around ideas in order to form a collective understanding of what projects we could potentially pursue in the future. That being said, we did some really exciting and innovative work in the last week. Check it out!
Arseny Kapoulkine (zeuxcg): Complex Voxel Functions
As you probably know, I’ve recently modified terrain to significantly extend the available range of voxels. This left me wondering: are we implementing terrain in the right way? Is there a fundamentally different approach that can simultaneously produce better visual results close-by and scale nicely to large draw distances and/or old hardware?
While streaming solves the performance problem nicely by severely restricting the distance, streaming does not work in Studio, and sometimes you want to see mountains that are really far away. I decided to try to go in that direction — take the existing voxel data and try to render it in a different way, ultimately producing a terrain surface that is not blocky and edgy, but smooth.
This involves a different approach to generating triangles from voxel data, as well as a different approach to shading those triangles. On a high level, instead of generating a few triangles for every voxel, I treat our voxel data as a very complex function that can tell you if any point in space is solid, water or uninhabited.
One key thing that this enables is high levels of detail — I’ve set up our system so I can generate anywhere from 16x more triangles than our current terrain is capable of generating. As you can imagine, it makes sense to generate more triangles up close and less triangles far away. This means that close-by terrain surfaces can look very appealing and smooth, while still consuming less processing power when far away.
When I thought about the kinds of effects that could further enhance the look of the terrain, I opted for rendering highly detailed 3D grass close by, and enhancing our water effects to include reflection and refraction. Both are implemented in the fastest way possible given the current state of computer graphics, which means that things may not always look correct, but they usually look great.
There are a lot of questions left unanswered, a lot of bugs left to fix and features to add — I feel that the visual results speak for themselves, and I’ve been able to answer the question, “Is there a better approach to rendering terrain?” with a resounding “Yes!”
Jason Roth (jmargh): Tween Animation Part Library
For my hack week project I’m working on a tween animation library for parts. I love to see things move around, rotate and fade on the screen. This has been on my to-do list for a long time, so I figured Hack Week was as good a time as any to start working on it. As I’ve been working on games, I found myself rewriting the same scripts over and over. So I wanted to take this week to write something that can be re-used in the future by myself and other builders. So far I have all the basics — translation, rotation, scale, fading transparency — but I’m hoping to get spline curves in so I can do some curved path animations. The challenge so far has been making sure the library is easy to use by anyone, and that it can easily be extended later without having to go back and fix code. It’s been a fun project so far — it’s satisfying to watch all these parts move about.
Vince D’amelio (CodeWriter): Particle Effects Emitter
For Hack Week, I’ve decided to work on a generic particle effect object that would give builders more control over the effects that appear in their places. Currently, builders are limited to existing effects, with set textures and very limited control of other various attributes. This new effect will allow creators the ability to set the angle, speed, emit rate, lifetime, colors, rotation and even the textures for their particles. Implementing this control has allowed me to dig deeper into the assets, effects and rendering systems. In order to allow builders to specify the textures for the particles, like a decal, I modified the code to allow these images to be loaded while the game is running and tweaked the graphics shader code to draw the particles properly using this new texture. Then I hooked the new effect object’s properties to the particle effect system to allow these settings to adjust the look of the particles as they are modified. The combination of all of these changes create a new object that would allow unprecedented new effects for builders to use within ROBLOX.
Ben Tkacheff (jeditkacheff): iOS Mobile Development App
I worked on adding a mobile developer app for iOS, to be used in conjunction with Studio. When the Games team started developing games that would work well on iPad, it was a tedious process to test. First you had to make a new place, then upload the place, then navigate to your place on the mobile app, then launch the place. What I’ve done is allowed you to pair devices to studio, then do a one-touch deploy to your connected device, which makes the iteration time go from three to four minutes to about 10 seconds. This may seem like a trivial time change, but when you are tightly iterating on a particular piece of code, three to four minutes can feel like a long time.
Kabriel Robichaux (inventx) and Simon Kozlov (gemlocker): ROBLOX on the Oculus Rift
ROBLOX is already a great toolkit for physically simulated multiplayer 3D world. The next logical step is to allow players to fully enter those worlds, and thanks to the Oculus Rift, now we can! Several of us at ROBLOX have a real passion and interest in virtual reality and already have our own Oculus development kits. Since it’s Hack Week, we finally had the time carved out to sit down and get the two sets working together. It is still early — there are things we would need to clean up for full production use — but I’m happy to report that we have the initial working prototype humming away in the office and it looks incredible!
We have already spent some time in several of the games on the site and with the full immersion things feel more real and even more interesting (falling from a tall building in ROBLOX has never felt so scary). I hope we will have everything wrapped up and out for production use before consumer VR kits start hitting the stores in the later half of 2014.
Brad Justus (chiefjustus): ROBLOX University & Daily Video Streaming
Not content to let Hack Week be the exclusive province of our Engineering Team, the Communications Team (Andrew, Alan, Michael, with design from Miguel, and support from Luke, with me coaching) tackled not one but two projects. First, we decided to try a daily livestream from ROBLOX HQ — which we thought would be fun for the community, but also instructive for us as we plan a more extensive slate of video offerings for 2014 (live and otherwise). Now we know what it takes to do a daily show (even a brief one)–and we’re full of ideas for what we’ll do in the New Year!
Our second project was to create a prototype “ROBLOX University” — a mash-up of Khan Academy, LuaLearners, and the recent proliferation of MOOCs (massive open online courses). What would RU look like? Offering basic, intermediate, and advanced courses (video-based, with supplementary material) in building, scripting, designing, and marketing a game, RU would also permit community-contributed material (like a wiki). Our test lesson features how to use dynamic lighting. We’re intrigued to know if there is community interest in such such course offerings–RU ready for this?