Forgot your password?
typodupeerror
PC Games (Games) Entertainment Games

Torque Network Gaming Library Released Open Source 183

Posted by simoniker
from the ping-marvellous dept.
An anonymous user writes "GarageGames launched the Torque Networking Library under the GPL today - this is the PC game networking technology behind Tribes and Tribes 2. It's also available under indie and commercial licenses for closed source projects, but OpenTNL.org is the home for the open source release, which also has an official FAQ online. Along with the library itself is a master server implementation for game tracking, a graphical test app, Zap and a retro-styled space shooter."
This discussion has been archived. No new comments can be posted.

Torque Network Gaming Library Released Open Source

Comments Filter:
  • Awesome news! (Score:5, Interesting)

    by TempusMagus (723668) * on Tuesday April 20, 2004 @06:29PM (#8922946) Homepage Journal
    I've been using the Torque engine for sometime. And I gotta say, these guys are doing it right! People still play Tribes 2 and it can handle 60 (yes six-zero) players on a beefy box with little lag. Props out to them.
    • That's pretty impressive. I haven't tried Tribes, but I think I will look into it.

      -WS
    • However, Torque is not the engine behind tribes as the article title says, that engine I believe would be shared with starsieg and is called the darkstar engine.
      • Re:Awesome news! (Score:2, Informative)

        by Anonymous Coward
        Darkstar was the original engine; it later was used in Tribes 1, 2, and then became V12 and thence Torque.
    • Fellow Torque developer here.

      Amen Brother!
    • Re:Awesome news! (Score:5, Interesting)

      by Lux (49200) on Tuesday April 20, 2004 @07:01PM (#8923246)
      That's certainly impressive, and it is related to the network, but in a kind of round-about way. The box being beefy helps, because processors scale so well. But the reason MMORPGs charge per month isn't processor consumption. Network bandwidth is much costlier, and doesn't scale as swiftly.

      If you take the naive approach to implementing state synchronization in a real-time system (like a video game) your server consumes upstream bandwidth proportional to the number of updates per second, times the number of participants, times the number of items synchronized. In a game, you have to synchronize each player at least, so we're talking quadratic bandwidth in just the players. That's how I did it when I had to, and we scaled to at least six players with plenty of breathing room. (Our dev team had six players. I don't think we ever brought in more testers to push it harder. :)

      If you take a less naive approach, you can get that from quadratic to n*log(n). And you can get a lot of constant-time and common-case improvements (the above is all worst-case.) You can find that approach somewhere in "Game Programming Gems," IIRC.

      I don't know if that has been proven as a lower bound, but I'd squint hard at anything that claims to be faster.

      Can it handle 60 players who all have line of site to each other? That's a tough stress test. :) I'd be blown away if they can do that over the Internet, and probably still impressed on a LAN. (I'm feeling too lazy to break out my calculation-envelopes. :)
      • Re:Awesome news! (Score:1, Insightful)

        by Anonymous Coward
        Tribes and Tribes 2 were both focused around gameplay in large outdoor areas.

        So indeed, 60 players all who have line of site with eachother (or who are constantly moving in and out of LOS).
      • Re:Awesome news! (Score:5, Informative)

        by Mark Frohnmayer (691498) on Tuesday April 20, 2004 @07:27PM (#8923470)
        Yes, TNL can easily handle 60 players who all have line of sight to each other. TNL takes a different approach - for most simulations the TNL server allots a fixed amount of bandwidth per client (Tribes 2 was 3K per second), regardless of how many objects are visible to that client. For each packet the server sends, it proritizes objects based on relevance to the client and then writes updates based on that priority. TNL performs a bunch of other tricks to reduce bandwidth usage as well. Take a look at the design fundamentals [sourceforge.net] for more in depth info.
        • by Lux (49200) on Tuesday April 20, 2004 @07:49PM (#8923603)
          This stuff beats the everloving snot out of DirectX networking. Thanks for the link. :)

          To think... if this package were out two years ago, I could have totally slacked off through, and hence missed out on, one of the best learning experiences of my college career.

          "*Ahem* yeah... network stuff's coming along okay... you know... work smarter, not harder. Bob, I know you're pretty busy writing that graphics engine single-handed, but can you get me that scopeing stuff from your scene graph by Friday so I can decide what to send? About licensing... I'm thinking GPL..."

          That would have been awful. :)
          • Re:Awesome news! (Score:3, Informative)

            by eison (56778)
            That's the really impressive stuff - it *was* out two years ago. It became available back in 2001 for $99 + some contract terms regarding publishing if you go over $250k in sales.

            These guys just rule.
    • Quake was doing 60+ people on a server back in 1997, and it has been GPL for years now!
    • I must say though, it would have been a lot nicer if they released the Torque Engine and not the Torque Networking Engine. For when I read the title, I almost glued my pants, and then got let down by one simple word.
  • Cool. Maybe other gaming companies will follow suit and do similar things. Anything released by large companies under the company deserves a loud applause and two thumbs up.
    • Under the GPL even. Durn, my brains fried. Musta been the pleasant thought of games that blew it.
    • Re:Two thumbs Up (Score:2, Informative)

      by abandonment (739466)
      We have had our entire game engine available under an MIT license for 5 years - alot longer than Torque has existed.

      Plus we beat torque feature-for-feature for graphical rendering quality and ease-of-use.

      The rest of the game industry IS doing similar things - just no one on slashdot seems to be inclined to check anything out outside the familiar box of 'garage games == everything indie'
  • I wish one of the more Linux friendly games (ahem Quake 3 or UT2004) would have its code opened! :)
    • Re:Linux Games (Score:5, Insightful)

      by Anonymous Coward on Tuesday April 20, 2004 @06:34PM (#8923000)
      It's quite likely ID Software is going to release the Quake 3 source under the GPL once Doom III is out, but only time will tell.
      • Re:Linux Games (Score:5, Insightful)

        by wideBlueSkies (618979) on Tuesday April 20, 2004 @06:46PM (#8923109) Journal
        This is one of a couple of reasons why ID should be respected not only in the Gaming Industry, but in the Software Industry in general.

        They create awesome games, awesome software. The technology rocks and is generally the cutting edge for their market.

        Then a couple of years later they open up the whole thing and give it away. "Here community, take this and learn." Classy setup they have there.

        Also, don't forget they started this with Wolfenstein. I think this was 1995. So they've been doing it for a while. They were one of the first commercial game houses to do so, if not THE first.

        wbs.
        • by AHumbleOpinion (546848) on Tuesday April 20, 2004 @07:06PM (#8923287) Homepage
          They create awesome games, awesome software. The technology rocks and is generally the cutting edge for their market. Then a couple of years later they open up the whole thing and give it away. "Here community, take this and learn." Classy setup they have there.

          Id is not being selfless or altruistic, they are being self serving. They are doing the right thing for their business. That OSS advocates like this is a coincidence. You need to keep in mind id's business. It is not necessarily to sell games but to license their engine to other developers. That is why they can afford to be cutting edge. Their games don't have to run on typical systems, their games are in part proof of concepts and demos for the engines. By the time some other developer licenses the engine and has a game ready to release typical systems have caught up. They can afford to open the previous generation's source because they want a large body of programmers familiar with their engines. This puts pressure on developers to chose an id engine over someone else's.

          Again, I am not saying id is doing anything wrong, quite the contrary. However don't have silly thoughts that they are doing this purely out of the kindness of their hearts.
          • by king-manic (409855) on Tuesday April 20, 2004 @07:14PM (#8923357)
            Carmac is a believer in OSS. although it's good business to ensure your engine has good penetration, by the time ID releases the code, the next generation looks nothing like the code GPL'ed. The benifit is much smaller then you imply.

            Quake 2 c code looks nothing like Quake which both look incredibly different from Doom.
            • >Quake 2 c code looks nothing like Quake

              That's not quite right. Some things, like the alias models, are identical*, either because there was no need for change, or because they were introduced while Quake 2 was still the same code base. Lots of other things, like the game dll/QuakeC, share very similar designs such that the differences are mostly just the changes from QuakeC to C dll, or those needed for the different monsters and maps.

              *GLQuake read the MDL format and dumped it into something similar t
            • Carmac is a believer in OSS.

              If so, his belief in open source is less than his belief that he should make money selling closed source software, because he's not open sourcing his newest stuff. If open source was his first priority, then the Doom III engine would be on sourceforge where a thousand eyes can help him debug.

              This takes nothing away from id Software. They should be lauded for open sourcing code that they feel they can. I'm sure this benefits students of 3-D graphics and game design. However, b

              • If so, his belief in open source is less than his belief that he should make money selling closed source software, because he's not open sourcing his newest stuff. If open source was his first priority, then the Doom III engine would be on sourceforge where a thousand eyes can help him debug.

                Personally, I rather think it would a bad idea financially to write the engine in an open source manner. Think of the hoopla behind the leaked HL2 src, etc... The game engine market is pretty competitive... There a
          • by thryllkill (52874) on Tuesday April 20, 2004 @07:18PM (#8923393) Homepage Journal
            That doesn't make a whole lot of sense since Id wants you to license their new engine. Iirc they write a completely new one every time, not just incremental upgrades to previous engines. So having developers familiar with technology from 3-4 years ago does them no good.

            It probably went more along the lines of:

            Id employee 1: "Hey why don't we open the source from our last engine."
            Id employee 2: shrugs "Sure, why not?"
            • That doesn't make a whole lot of sense since Id wants you to license their new engine. Iirc they write a completely new one every time, not just incremental upgrades to previous engines. So having developers familiar with technology from 3-4 years ago does them no good.

              No one is saying they are incremental upgrades. Even when rearchitecting to take into account newer hardware capabilities and old lessons learned there will be some familiarity going from one generation to the next, the learning curve is
            • Maybe this has to do with selling licenses for the latest engine? Give the old engine the GPL or a similar license so A) everyone has it and a game based off it isn't new and hip, and B) you can't use that engine in a closed-source game.
          • Read anything Carmack has had to say about the open source world and you'll see that your cynicism may be a bit misplaced here.

            I'm not some fanboy, but I appreciate the fact that id will always release their games on Linux, despite the fact that it's not cost-effective to do so.

            It isn't entirely "out of the kindness of their hearts," but more like "it's the right thing to do."

            They know that, and act accordingly. Your points are valid, but they're not the entire picture.
            • I'm not trying to be cynical. The original post seemed to suggest that id was being completely altuistic, that was naive. That's all I wanted to say. As far as your suggestion of "it's the right thing to do" that is not quite right either. In an old Game Developer Magazine article id was quoted as saying that Linux versions make no sense from a business perspective, that they just do it "because it is cool". Well, they can afford to be cool. Other developers can't.
          • They can afford to open the previous generation's source because they want a large body of programmers familiar with their engines. This puts pressure on developers to chose an id engine over someone else's.

            Would be good in theory - if each different generation of theirs engines where similiar. For better or worse, they are often not. The obvious case here being the jump from Doom to Quake, but even each iteration of the Quake engine has had significant changes that would make a change over far from trivi

            • Unfortunately, as they found out, the differences between the two were enough so that large sections of Daikatana had to be thrown away

              No one is saying that the next engine is dropin replacement for the previous. The next engine is going to contain some re-engineering to take advantage of additional hardware support, to take into account lessons learned, etc. However there will be common concepts and ideas found in both engines. Picking a scenario where the develop changes engines midstream is not a ver
              • My point is that a bunch of programmers familiar with the Q3 engine will aclimate themselves to the D3 engine more quickly. You have to understand an engine before you start writing code for it.

                I agree with the latter part of this, but not so much the former. Largely because I believe, primarily through experience, that having intimate knowledge of a system (or, in this case, engine) can often lead to a slower understanding of a new system. Why? Because you'll go into working on the new system with a good

          • Why is it that when somebody mentions "company X" is doing this, it's a good thing... somebody else always has to say "they're not doing it to be good, they're doing it to serve themselves."

            Of course, anything that helps the community is self-serving at least in the perspective of PR, but it's not always done with that intent. I doubt they're thinking directly that "Action X = Result Y = More $$$ for us"." Carmac likes open source, and he's a great developer. By OS'ing previous engines, it helps the devel
            • You misunderstand/misrepresent my point. I am not saying id's focus is completely on profit. I am merely countering the original post that seemed to suggest they are being completely altruistic. Many people fail to realize that selling retail games is only a part, possibly the smaller, part of ids business. They are also in the business of licensing engines. You have to consider this licensing when they release older engines, publish articles about how the new engine works, offers sample source code, etc.
        • by bonch (38532)
          Well, since we like them so much, how do Slashdotters feel about the fact that people pirate the fuck out of their games on eMule? Are they "sampling" those games? Or is it "free advertising?" And why does that philosophy apply to music in the minds of Slashdotters but somehow break down when it comes to software?

          I wonder how many people will sample the free advertising of Doom 3. Enough to make a dent in sales, that's for sure.
          • These multiplayer games aren't copied near as much as singleplayer games though. The phone-home-keycheck makes that kind of difficult, and the hacked-versions aren't nearly as numerous and stick out like sore thumbs.

            --

      • They already did....

        Either that or the guy who runs their ftp server is in REALLY big trouble.
      • I gotta just say though I think the Quake III engine might have some more steam left in it before they decide to open it up.

        Call of Duty used Q3 as a base, then heavily modified it, but if one of the most recent Game of the Years used it I think they might want to get a few more licsences out of it before they open it all up.

        I'm sure they will, but I think it'll be a bit later than the first couple.

        Just my $0.02.

    • Re:Linux Games (Score:3, Interesting)

      by TwistedSquare (650445)
      Given that Doom, Quake and Quake II have all been GPLed, presumably it literally is a matter of time until Quake 3 goes the same way.
    • Re:Linux Games (Score:3, Informative)

      by Anonymous Coward
      Tribes 2 was as Linux Friendly as Quake 3 and UT2004: I have the linux client and it works very nicely.

      Nice try though
      • Re:Linux Games (Score:3, Informative)

        by bman08 (239376)
        That's just not true. The difference is that my windows copy of Tribes 2 was useless in linux, instead I had to buy the loki version for another 40 bucks. Both quake and ut have linux binaries for the windows game that are free. To me that amounts to a wallet-load less linux friendly.
        • So why did you buy the Windows version if you were intending to play it on Linux? If both the Windows and Linux versions cost money, that doesn't magically make the Windows version any more unfriendly as the Linux version (actually IIRC, the Windows version used to cost more than the Linux version.)
    • Re:Linux Games (Score:2, Informative)

      by Anonymous Coward
      Torque is Linux friendly, and Mac OS X friendly as well. Most Torque Games have been released for all 3 platforms (with the exception of the old tribes series, which were made before the engine became publicly available). Just look at Marble Blast, Think Tanks and Orbz! All Torque games, all available multi-platform.
    • Unreal Tournament (the original) got the GPL treatment.
  • OSS MMORPG (Score:4, Interesting)

    by 7Ghent (115876) on Tuesday April 20, 2004 @06:32PM (#8922983) Homepage
    Great! Now, who's gonna extend this and built a P2P open-source MMORPG?

    Anyone? Anyone? Bueller?
    • Re:OSS MMORPG (Score:2, Interesting)

      by ShadeARG (306487)
      Actually, if it can handle high-speed gaming with an assload of players really well, I bet it would make a beefy P2P backend. (P2P + TNL) * Users * Bandwidth = Extremely beefy high-speed file distribution.
      • by QuasiCoLtd (727325) on Tuesday April 20, 2004 @07:08PM (#8923308)
        Hey... lets combine the two! See, heres the idea, you want to download something but instead of the search bar you literally have to go out and search for what you want. Perhaps you can bribe the drunk at the bar for some information as to the wereabouts of that song you wanted. Sercheth thou for pr0n? You ust first complete the task given to you by the local flower girl and she will present you with many naughty pictures of her and her sister (who she claims is 18). Watch out though, along the way you must fight many foul creatures such as leechers, corrupt files, viruses, and RIAA lawyers.
        • Re:OSS MMORPG (Score:3, Informative)

          by ultranova (717540)

          Mod parent funny all you like, but there was a post [slashdot.org] on Slashdot recently bitching about how he couldn't get funding to develop this kind of user interface...

          Hmm... I feel an inspiration coming in. An adventure web browser ! It reads HTML pages and renders rooms based on them, with links as doors (and one for "back"), shaped by keywords (so for each occurence of the string "troll" in the page, make one troll appear in the room). Bigger pages make bigger rooms, and the general theme and shape of he room are

          • You mean like VRML? [vrmlsite.com]
            • No, for VRML is a language of it's own. What I was thinking about was an algorithm to generate rooms (levels) from perfectly normal HTML pages.

              Bit like the old game File Fighter, which generated character stats from files. Just take two random files, feed them to it, and watch them fight. Great fun for all of five minutes.

      • Yeah, but usually high-speed gaming with an assload of players is client-to-server, and the majority of the tricks it employs is stuff (which should be obvious) like giving priority to more important game packets. In P2P the only thing you really care about which should get priority is search results, which doesn't impact your download efficiency, and once the downloads are started you shouldn't care which one you want to prefer as long as it uses up the maximum bandwidth available.
    • I'm researching into P2P MMOG networking! You can get your fix at http://freemmg.sf.net :-) It even has a small RTS demo game (warning: the game SUCKS and requires Java run-time)
    • so people can change the code to give themselves whatever power they want? no thanks.

      it's open source, so you can't accuse them of being hackers. you'll have to accuse them of being "OSS customizers", which doesn't quite have the same charge.
      • Security is on the server, not the client. If a person hacks their client they won't be able to do much of interest except make bots.

        And incidentally, if the bot is written in a quick and dirty yet eerily skillful fashion, it is still a hack, regardless of whether the library used was open source or not.

    • Two out of three ain't bad. [planeshift.it] (Open-source, MMORPG) Doesn't use this Torque thing, but it looks impressive.
      • SIG:
        There is a trivial way to save one character by deleting the c++ and adding a ++ infront of c<0.

        Note that I will insert an extra space before each printf below to prevent slashdot from inserting one randomly.

        A rewrite can save a total of two characters like this:
        main(r,c){for(r=0,c=39;39-r;) printf(!c--?c=39,++r,"\n":c>r?" ":~r&c?" `":" #");}

        We can save a total of four characters like this:
        main(r,c){for(r=31,c=0;r;) printf(++c>31?c=0,--r,"\n":c<r?" ":~c&r?" `":" #");}
        But note tha
    • P2P!

      Why in the hell is everyone spouting stupid crap like parent here. Explain to me what good would P2P do for a MMOG?
      And I'm not merely flaming parent here, but you people in general who generate instant karma from likely minded slashbots who have no clue of how networking or software works.

      Imagine this:
      Really Smart Software Engineer: What you observe here is a higly optimized algorithm for generic cryptoanalysis.
      Point to Point Idiot: *has no clue but nods*
      RSSE: And this is the networking core. It

  • by oskillator (670034) on Tuesday April 20, 2004 @06:36PM (#8923018)
    I've been working with the Torque engine for a while, and my assessment is that it's very solid where it counts (assuming you want to make a tribes-like game), but surprisingly flimsy in areas like extensibility and documentation.

    I imagine it's par for the course in the game industry, where code is written to be abandoned within a few years.

    • but surprisingly flimsy in areas like extensibility and documentation.

      Well now that it's been released open source anyone can do that, right? :)

    • Also working with torque, and definitely second those comments. Its high-quality, fantastic code for FPS gaming, but if you try to extend it too far you run into all kinds of problems, presumably since the designers never had intentions of extending the engine for anything other than Tribes2. I, for instance, am trying to make a small, fps-ish MMORPG, and the hardcoding of their terrain management and rendering code is driving me around in circles because its only designed for the very small Tribes2 maps.
  • by apachetoolbox (456499) on Tuesday April 20, 2004 @06:37PM (#8923030) Homepage
    Great! 100 sourceforge game project leaders just jumped for joy. Then went right back to not writing and linux games.
  • by ezavada (91752) on Tuesday April 20, 2004 @06:43PM (#8923078)
    I've looked at the torque network layer while it was still part of the torque engine. It's well suited for developers who want a small scale (32 players or so) network game, particularly if its a first person shooter.

    I wouldn't even consider it for a mid-size or larger multiplayer game, as it lacks important security features and IMO doesn't give enough control over the actual network protocol due to the emphasis on RMI.

    Other network layers to look at are OpenPlay [sourceforge.net] and , both of which are also also free and OpenSource. [libsdl.org]

    Disclaimer -- I contribute to OpenPlay.
    • by ezavada (91752) on Tuesday April 20, 2004 @06:47PM (#8923113)
      Hmm... I guess I really should have hit preview.

      I meant to say:

      Other network layers to look at are OpenPlay [sourceforge.net] and SDL net [libsdl.org], both of which are also also free and OpenSource.
    • by Anonymous Coward
      Small to mid-sized??

      I think not. T2 could handle 128 players, and I'm sure they've made even more improvements over the past 3 years.

      And the part about weak security... maybe you haven't checked out their page yet, but from what I can see, it looks like they've put a lot of work into making it very secure. Check out the sections on encryption and client puzzles.

      I'm impressed they'd actually GPL this. Cool stuff.
      • While 128 players is a great achievement, it's not all about the network model.

        The reason why most FPSs do not have such large numbers of players is less to do with the network bandwidth and more to do with a) the CPU cycles devoted to rendering and/or running collision models for N detailed player characters in complex environments, and b) the content generation: maps are specifically designed to be good for a smallish range of players, and it's usually not worth it to design 128-player maps.

        This is clea
        • But as a general-purpose engine (Torque) and general purpose network layer (TNL) wouldn't you say that is handy to be *able* to support lots of players if you need to? Developers can limit the number of players they allow on their maps, but at least they have the option of more if they need them.
    • After downloading the package and looking at their current feature set, it seems like they've addressed most of my security concerns since the last time I'd looked at it.

      Overall I'd say the libray looks pretty good.
  • by yack0 (2832)
    But what about Volity? [volity.org]

  • by gringo_john (680811) on Tuesday April 20, 2004 @06:51PM (#8923150) Journal
    This is definately a step in the right direction.

    This, along with the recent announcement [slashdot.org] that Tribes 1 and Tribes 2 will be given away for free, I wonder what kind of cool mods / enhanced will be possible?

  • Anyone know how easy it would be to use their API from another language? (Assuming some header translation and an IDE that can make compatable calls.)
    • by Vaevictis666 (680137) on Tuesday April 20, 2004 @07:20PM (#8923414)
      I was actually thinking about this very thing - how hard would it be to write a wrapper for this using Ruby?

      With a cursory look at the docs, it looks like it wouldn't be too bad - it looks to be fairly OO at the moment, so you're just looking at a translation layer implementation. OTOH, it might be tricky to get all the efficiency on it, since it will do ints and floats to *bit* precision, and I don't know how well Ruby would interface with that...

    • The only tricky part of getting TNL to work with other languages would be the RPC framework, which does all kinds of macro trickery, inline assembly and worse in order to get clean-looking, high performance RPC out of C++. But then, if you're using TNL from another language, you don't need the C++ RPC functionality - you could implement RPC for that language using the NetEvent code, which is the base for the C++ RPC as well.
  • Game based on torque (Score:3, Informative)

    by zerocool^ (112121) on Tuesday April 20, 2004 @07:46PM (#8923586) Homepage Journal
    The entire torque engine is doing very well for it's self, and I just wanted to chime in and say:

    Legends: The Comming of a New Age is comming along nicely. It's free, and can be downloaded from here [tribalwar.com]. It's made with torque's entire engine, and is enjoying a moderately good following so far.

    Good game, but, I've been too distracted by UT2004 to play. I need to make a point to play legends more.

    ~Will
  • Didn't Dynamix give a talk on the Tribes 1 netcode at a GDC long, long ago?
  • by billcopc (196330) <vrillco@yahoo.com> on Tuesday April 20, 2004 @11:28PM (#8925225) Homepage
    If I remember correctly, they used to charge a ridiculously small fee for this SDK, like 99$. It's not much, but considering the typical indie game developer will spend enough time coding and developing content that he won't have time left to hold a steady, bread-winning rent-paying job, releasing Torque as GPL is a wise move. Besides, they probably have something even better up their sleeve, a revamped engine that will replace Torque as the 'commercial' SDK.
    • This is NOT the full Torque Game Engine (TGE), but TNL the Torque Network Library as a stand alone API. This netcode is still at the core of the TGE architecture, but now can be leveraged by other applications and game engines. For those not wanting to or able to publish their source we also provide our trademark 'indie' license for $295 and a full commercial license at $995 a programmer seat. Jay Moore GarageGames Evangelist
  • by bruthasj (175228) <bruthasj AT yahoo DOT com> on Wednesday April 21, 2004 @02:42AM (#8926224) Homepage Journal
    Can give me a triple punch of an architecture including the best of:

    * Twisted [twistedmatrix.com]
    * ACE [wustl.edu]
    * OpenTNL [opentnl.org]

    Any other neat ones you can think of?

Real programs don't eat cache.

Working...