Ever since we made the request for your ROBLOX “Top Three,” we’ve been combing through the feedback and responding to your most insightful comments and questions. This week, John Shedletsky, ROBLOX’s Creative Director and Content Lead, elaborates on a variety of topics, including camera properties, aerodynamics, new terrain, an “animation studio” and more. Check out v1 and v2 for more.
ErrorlessRBLX: Aerodynamics – I want to be able to build an airplane using certain shaped bricks, and when I apply force to it, the wings generate thrust. The more forward force, the greater the thrust (depending on wing types).
Of course, it’s possible to script this in ROBLOX today. The problem that you will encounter is that the mathematics for solving this realistically are gnarly. I haven’t seen a game outside of Flight Simulator that even attempts to do this generically for all physical objects (even flight sims only do it for the planes, which radically simplifies the math).
We’re doing some similar work with our bouyancy physics for water – boats with a wider cross-section will have greater drag than more narrow boats, but we’re not attempting to solve the generic case.
Users have built some flight simulators in ROBLOX using special-case physics for aircraft. This works reasonably well and is not too complicated. Check out Crazyman32’s Freeflight. It’s awesome.
[do action=”youtube-iframe” videoid=”NBWbxL2EdXQ”/]
James Mason: Dynamic destruction – Destruction would be a nice feature, especially if it were realistic. Optimally, each material will have its own list of destruction options. You get to choose what’s inside the wall or under the street. For example, I could use Concrete with a “wall” setting. When a rocket punches a hole in this wall, wires will dangle out, etc.
We want our physical materials to act in a predictable way – it would be weird, for instance, to have a “wall” setting on a concrete block. Instead, if you want to blow up a wall and see metal trusses when you blow it up, put metal trusses inside of your walls (a demo of this). In the future ROBLOX materials will get more realistic. That means that maybe concrete will be more likely to be powderized by a concussive explosion – so if you want a bomb-resistant wall, you actually need to reinforce it with metal.
Stealth Pilot In Da Wardrove!: New Terrain ”Textures” – Textures are really good. But what about new ones like Snow and Water? Water must be “Swim-able”.
Water will be swimable! The ultimate ROBLOX water will flow downhill and also be freezable, creating ice, or boilable, creating steam. This is our vision for ROBLOX: all materials interact in a physically realistic way. You should see our design docs for this. We envision wood that burns when it gets too hot. Ice that melts when you hit it with a flamethrower. Plutonium that is highly radioactive and damages unshielded characters…
RedDawg: I play a lot of Ro-Sports, which are sports on Roblox. It would be cool if we could upload our own stadium sounds, such as cheering when something happens, like in real life. It would also be cool to have the ability to add more sounds for various different objects, such as hitting a ball with a baseball bat or tackling an opponent in football. These sounds would be, of course, moderated for content, but the result would be more customized places.
Allowing builders to upload sounds to use in their games makes a ton of sense and it is something that we will definitely do at some point in the future.
Markairux: Have a “Mouse” property of the Player instance. I think that a “Mouse” property would be generally useful for scripters here on ROBLOX because it would increase efficiency, instead of having to use invisible Graphical User Interface instances to cover the user’s entire screen just to record events related to the Mouse instance. Also, HopperBin and Tool instances would no longer be necessary to get the player’s Mouse. A very good change, I think.
I’ve been thinking about global Mouse and KeyBoard services for a while. I agree that it would simplify a lot of coding tasks.
mat852: A sensitivity property to the Camera object. When the Field Of View is changed too high, so does your mouse sensitivity. You should implement some sort of control algorithm or just an easy property to set the sensitivity.
We noticed this too when we were scripting the sniper rifle for Base Wars. When you are zoomed in, it is hard to aim. We will add this feature at some point in the future.
mat852: Animation Studio. It’s really nice to animate with Welds and Motors today, but in the long run it gets annoying, like my orange. With the help of some sort of animation GUI or studio itself, we could create fast, smooth, and overall good looking animations. Rather than using a ‘for’ statement, or an algorithm, we could have an animation studio with key frames, rotation points, and easy editing. When a player is done from animating in this studio or GUI – once they hit ‘done’ or whatever clever key you programmers would like to use – it will create some sort of animation object, with all the key frames saved inside it. Insert this into a brick, add a :play(), :stop(), :resume() function, and sir, we have a fluid and smooth animation.
Agree. As previously discussed, the animation tools we have in-house right now are not adequate (which is why they haven’t been made public). We need to create a suite of animation-editing plugins for ROBLOX Studio that is both powerful and easy to use.
jobro13: Global data saving: You must index other players’ data, too. You can create REAL leaderboards then!
Yeah. This suggestion is a tiny fraction of all the things I want for data persistence. This is a story that we’ve recently been thinking a lot about. Serious upgrades to the data API are on the 2012 product roadmap. The main use case that we want to unlock is massive multi-level games with a common backend data store. This would be particularly useful for building RPGs, I think.
Markairux: Release some more dynamic properties for the Camera instance. Numerous people have been wanting to increase the content of their game and asking for this. (And before you tell me that HotThoth recently came out with some new properties for the Camera instance, I know already.) What I suggest is that the ROBLOX staff work together to release new applications for it, such as properties, methods, or even events. Doing this can give users more control over their experience, as well as enhancing it overall.
HotThoth’s recent improvements are mostly aimed at making it much easier to script cutscenes. We like to add functionality incrementally to ROBLOX, as we develop better understanding of the types of things ROBLOXians are trying to script. I don’t think anyone is pushing the limit on the current API yet, so gumming it up with extra stuff that we’re only guessing people need seems premature.
Markairux: Create a new method for ROBLOX Lua called GetRank. A lot of people who forum on Clans and Guilds have been asking for something like this, and although I personally don’t forum there, I believe it would be a nice addition to the game. This way, only people in a certain echelon or higher in a group could access certain areas in a place, or obtain items specifically designated for them. The way the method could work might be a little tedious, especially on the server, but it’s well worth it. One argument would be required for it to function, the identity integer of the group (for example, 100). The method would have to perform a check to see if the player is actually in the group in inquiry, perhaps calling IsInGroup. If the player in question isn’t part of the group, a value of nil is returned. Otherwise, the integer of the player’s current rank is returned. This way, one can check to see if someone is in a high rank in a group (or higher).
We have these APIs right now, but they may currently be marked “ROBLOX only” because they are still under development.
It’s a very safe bet that in the future it will be possible to access social APIs like this from within games.